From ff480a3a724032465b8a6fb47caa700da42786a3 Mon Sep 17 00:00:00 2001 From: Microsoft GitHub User Date: Wed, 30 Aug 2017 15:49:52 -0700 Subject: [PATCH 001/289] Initial commit --- .gitignore | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..00cbbdf53f6c --- /dev/null +++ b/.gitignore @@ -0,0 +1,59 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + From a2308a8f1aa97fe6b15034e53fc3c8809c379bc5 Mon Sep 17 00:00:00 2001 From: Microsoft Open Source Date: Wed, 30 Aug 2017 15:49:58 -0700 Subject: [PATCH 002/289] Initial commit --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000000..21071075c245 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ + 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 From b4bcc337c8b51d7be88161160938fb7f9bdfb412 Mon Sep 17 00:00:00 2001 From: Microsoft Open Source Date: Wed, 30 Aug 2017 15:49:59 -0700 Subject: [PATCH 003/289] Initial commit --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 000000000000..72f1506a93b5 --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ + +# Contributing + +This project welcomes contributions and suggestions. Most contributions require you to agree to a +Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us +the rights to use your contribution. For details, visit https://cla.microsoft.com. + +When you submit a pull request, a CLA-bot will automatically determine whether you need to provide +a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions +provided by the bot. You will only need to do this once across all repos using our CLA. + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or +contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. From 6b1866d1021a87090bb0a3c856acd2d1f47e3c23 Mon Sep 17 00:00:00 2001 From: Amar Zavery Date: Wed, 13 Sep 2017 12:30:50 -0700 Subject: [PATCH 004/289] initial commit --- .gitattributes | 37 + .gitignore | 111 +- .npmignore | 7 + .travis.yml | 5 + LICENSE | 34 +- README.md | 20 + dist/lib/azureServiceClient.js | 306 +++ dist/lib/azureServiceClient.js.map | 1 + dist/lib/baseResource.js | 14 + dist/lib/baseResource.js.map | 1 + dist/lib/cloudError.js | 51 + dist/lib/cloudError.js.map | 1 + dist/lib/msRestAzure.js | 13 + dist/lib/msRestAzure.js.map | 1 + dist/lib/pollingState.js | 149 ++ dist/lib/pollingState.js.map | 1 + dist/lib/util/constants.js | 33 + dist/lib/util/constants.js.map | 1 + gulpfile.js | 30 + lib/azureServiceClient.ts | 314 +++ lib/baseResource.ts | 19 + lib/cloudError.ts | 72 + lib/msRestAzure.ts | 8 + lib/pollingState.ts | 190 ++ lib/util/constants.ts | 34 + msRestAzureBundle.js | 677 +++++ msRestAzureBundle.js.map | 1 + msRestAzureBundle.min.js | 1 + msRestAzureBundle.min.js.map | 1 + package-lock.json | 3837 +++++++++++++++++++++++++++ package.json | 54 + samples/index.html | 26 + samples/node-sample.js | 73 + samples/node-sample.js.map | 1 + samples/node-sample.ts | 64 + tsconfig.json | 40 + tslint.json | 55 + typings/lib/azureServiceClient.d.ts | 84 + typings/lib/baseResource.d.ts | 15 + typings/lib/cloudError.d.ts | 68 + typings/lib/msRestAzure.d.ts | 5 + typings/lib/pollingState.d.ts | 69 + typings/lib/util/constants.d.ts | 11 + webpack.config.js | 44 + 44 files changed, 6520 insertions(+), 59 deletions(-) create mode 100644 .gitattributes create mode 100644 .npmignore create mode 100644 .travis.yml create mode 100644 dist/lib/azureServiceClient.js create mode 100644 dist/lib/azureServiceClient.js.map create mode 100644 dist/lib/baseResource.js create mode 100644 dist/lib/baseResource.js.map create mode 100644 dist/lib/cloudError.js create mode 100644 dist/lib/cloudError.js.map create mode 100644 dist/lib/msRestAzure.js create mode 100644 dist/lib/msRestAzure.js.map create mode 100644 dist/lib/pollingState.js create mode 100644 dist/lib/pollingState.js.map create mode 100644 dist/lib/util/constants.js create mode 100644 dist/lib/util/constants.js.map create mode 100644 gulpfile.js create mode 100644 lib/azureServiceClient.ts create mode 100644 lib/baseResource.ts create mode 100644 lib/cloudError.ts create mode 100644 lib/msRestAzure.ts create mode 100644 lib/pollingState.ts create mode 100644 lib/util/constants.ts create mode 100644 msRestAzureBundle.js create mode 100644 msRestAzureBundle.js.map create mode 100644 msRestAzureBundle.min.js create mode 100644 msRestAzureBundle.min.js.map create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 samples/index.html create mode 100644 samples/node-sample.js create mode 100644 samples/node-sample.js.map create mode 100644 samples/node-sample.ts create mode 100644 tsconfig.json create mode 100644 tslint.json create mode 100644 typings/lib/azureServiceClient.d.ts create mode 100644 typings/lib/baseResource.d.ts create mode 100644 typings/lib/cloudError.d.ts create mode 100644 typings/lib/msRestAzure.d.ts create mode 100644 typings/lib/pollingState.d.ts create mode 100644 typings/lib/util/constants.d.ts create mode 100644 webpack.config.js diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000000..2e9b3037cd30 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,37 @@ +*.bmp binary +*.dll binary +*.gif binary +*.jpg binary +*.png binary +*.snk binary +*.exe binary +*.wmv binary +*.mp4 binary +*.ismv binary +*.isma binary + +*.ascx text +*.cmd text +*.config text +*.cs text diff=csharp +*.csproj text merge=union +*.edmx text + +*.htm text +*.html text + +*.json text eol=lf +*.ts text eol=lf +*.js text eol=lf + +*.msbuild text +*.nuspec text + +*.resx text +*.ruleset text +*.StyleCop text +*.targets text +*.txt text +*.xml text + +*.sln text eol=crlf merge=union \ No newline at end of file diff --git a/.gitignore b/.gitignore index 00cbbdf53f6c..9d3ac0b878cf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,59 +1,86 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* +#### linux gitignore -# Runtime data -pids -*.pid -*.seed -*.pid.lock +*~ -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov +# KDE directory preferences +.directory -# Coverage directory used by tools like istanbul -coverage +# Linux trash folder which might appear on any partition or disk +.Trash-* -# nyc test coverage -.nyc_output +/obj/* +/node_modules +.ntvs_analysis.dat +.ntvs_analysis.* +npm-debug.log +tmp/* +packages/* +*.njsperf +.vs/ +bin/* +/.vscode/* +ValidationTool.njsproj +ValidationTool.sln +.vscode/launch.json -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt +#### win gitignore -# Bower dependency directory (https://bower.io/) -bower_components +# Windows image file caches +Thumbs.db +ehthumbs.db -# node-waf configuration -.lock-wscript +# Folder config file +Desktop.ini -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release +# Recycle Bin used on file shares +$RECYCLE.BIN/ -# Dependency directories -node_modules/ -jspm_packages/ +# Windows Installer files +*.cab +*.msi +*.msm +*.msp -# Typescript v1 declaration files -typings/ +# Windows shortcuts +*.lnk -# Optional npm cache directory -.npm -# Optional eslint cache -.eslintcache +#### osx gitignore -# Optional REPL history -.node_repl_history +.DS_Store +.AppleDouble +.LSOverride -# Output of 'npm pack' -*.tgz +# Icon must end with two \r +Icon -# Yarn Integrity file -.yarn-integrity -# dotenv environment variables file -.env +# Thumbnails +._* +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +node_modules + +#### JetBrains +.idea + +# ignore code gen virtual env folder +SdkCodeGen + +output/* +# Typescript output +dist/ms-rest/* diff --git a/.npmignore b/.npmignore new file mode 100644 index 000000000000..00da80495d7e --- /dev/null +++ b/.npmignore @@ -0,0 +1,7 @@ +.vscode/ +node_modules/ +samples/ +test/ +.travis.yml +gulpfile.js +.gitignore \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000000..13ae1c310784 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +sudo: false +node_js: + - "6" + - "8" \ No newline at end of file diff --git a/LICENSE b/LICENSE index 21071075c245..c91f149f838d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,21 @@ - MIT License +MIT License - Copyright (c) Microsoft Corporation. All rights reserved. +Copyright (c) 2017 MIT - 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: +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 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 +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/README.md b/README.md index 72f1506a93b5..928f43aa691e 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,23 @@ +# ms-rest-azure-js + +Azure Runtime for isomorphic javascript libraries (that work in the browser and node.js environemnt) generated via [Autorest](https://github.com/Azure/Autorest). + +## Requirements +- node.js version > 6.x +- npm install -g typescript + +## Installation +- After cloning the repo, execute `npm install` + +## Execution + +### node.js +- Set the subscriptionId and token +- Run `node samples/node-sample.js` + +### In the browser +- Set the subscriptionId and token and then run +- Open index.html file in the browser. It should show the response from GET request on the storage account. From Chrome type Ctrl + Shift + I and you can see the logs in console. # Contributing diff --git a/dist/lib/azureServiceClient.js b/dist/lib/azureServiceClient.js new file mode 100644 index 000000000000..75f41927897a --- /dev/null +++ b/dist/lib/azureServiceClient.js @@ -0,0 +1,306 @@ +"use strict"; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const msRest = require("ms-rest-js"); +const constants_1 = require("./util/constants"); +const pollingState_1 = require("./pollingState"); +const LroStates = constants_1.default.LongRunningOperationStates; +/** + * @class + * Initializes a new instance of the AzureServiceClient class. + * @constructor + * + * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or + * UserTokenCredentials object used for authentication. + * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient + */ +class AzureServiceClient extends msRest.ServiceClient { + constructor(credentials, options) { + super(credentials, options); + this.acceptLanguage = constants_1.default.DEFAULT_LANGUAGE; + this.generateClientRequestId = true; + this.longRunningOperationRetryTimeout = 30; + this.rpRegistrationRetryTimeout = 30; + this.acceptLanguage = constants_1.default.DEFAULT_LANGUAGE; + this.generateClientRequestId = true; + this.longRunningOperationRetryTimeout = 30; + if (!options) + options = {}; + if (options.acceptLanguage !== null && options.acceptLanguage !== undefined) { + this.acceptLanguage = options.acceptLanguage; + } + if (options.generateClientRequestId !== null && options.generateClientRequestId !== undefined) { + this.generateClientRequestId = options.generateClientRequestId; + } + if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) { + this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout; + } + if (options.rpRegistrationRetryTimeout !== null && options.rpRegistrationRetryTimeout !== undefined) { + this.rpRegistrationRetryTimeout = options.rpRegistrationRetryTimeout; + } + try { + const moduleName = "ms-rest-azure"; + const moduleVersion = constants_1.default.msRestAzureVersion; + this.addUserAgentInfo(`${moduleName}/${moduleVersion}`); + } + catch (err) { + // do nothing + } + } + /** + * Provides a mechanism to make a request that will poll and provide the final result. + * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object + * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request + * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody. + */ + sendLongRunningRequest(request, options) { + return __awaiter(this, void 0, void 0, function* () { + const self = this; + let initialResponse; + try { + initialResponse = yield self.sendRequest(request); + } + catch (err) { + return Promise.reject(err); + } + let finalResponse; + try { + finalResponse = yield self.getLongRunningOperationResult(initialResponse, options); + } + catch (err) { + return Promise.reject(err); + } + return Promise.resolve(finalResponse); + }); + } + /** + * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request. + * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation. + */ + checkResponseStatusCodeFailed(initialResponse) { + const statusCode = initialResponse.response.status; + const method = initialResponse.request.method; + if (statusCode === 200 || statusCode === 202 || + (statusCode === 201 && method === "PUT") || + (statusCode === 204 && (method === "DELETE" || method === "POST"))) { + return false; + } + else { + return true; + } + } + /** + * Poll Azure long running PUT, PATCH, POST or DELETE operations. + * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation. + * @param {msRest.RequestOptionsBase} [options] - custom request options. + * @returns {Promise} result - The final response after polling is complete. + */ + getLongRunningOperationResult(resultOfInitialRequest, options) { + return __awaiter(this, void 0, void 0, function* () { + const self = this; + const initialRequestMethod = resultOfInitialRequest.request.method; + if (self.checkResponseStatusCodeFailed(resultOfInitialRequest)) { + return Promise.reject(`Unexpected polling status code from long running operation ` + + `"${resultOfInitialRequest.response.status}" for method "${initialRequestMethod}".`); + } + let pollingState; + try { + pollingState = new pollingState_1.default(resultOfInitialRequest, self.longRunningOperationRetryTimeout); + pollingState.optionsOfInitialRequest = options; + } + catch (error) { + return Promise.reject(error); + } + const resourceUrl = resultOfInitialRequest.request.url; + while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) { + yield msRest.delay(pollingState.getTimeout()); + if (pollingState.azureAsyncOperationHeaderLink) { + yield self.updateStateFromAzureAsyncOperationHeader(pollingState, true); + } + else if (pollingState.locationHeaderLink) { + yield self.updateStateFromLocationHeader(initialRequestMethod, pollingState); + } + else if (initialRequestMethod === "PUT") { + yield self.updateStateFromGetResourceOperation(resourceUrl, pollingState); + } + else { + return Promise.reject(new Error("Location header is missing from long running operation.")); + } + } + if (pollingState.status === LroStates.Succeeded) { + if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) && + (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH")) { + yield self.updateStateFromGetResourceOperation(resourceUrl, pollingState); + return Promise.resolve(pollingState.getOperationResponse()); + } + else { + return Promise.resolve(pollingState.getOperationResponse()); + } + } + else { + return Promise.reject(pollingState.getRestError()); + } + }); + } + /** + * Retrieve operation status by polling from "azure-asyncoperation" header. + * @param {PollingState} pollingState - The object to persist current operation state. + * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation. + */ + updateStateFromAzureAsyncOperationHeader(pollingState, inPostOrDelete = false) { + return __awaiter(this, void 0, void 0, function* () { + let result; + try { + result = yield this.getStatus(pollingState.azureAsyncOperationHeaderLink, pollingState.optionsOfInitialRequest); + } + catch (err) { + return Promise.reject(err); + } + const parsedResponse = result.bodyAsJson; + if (!parsedResponse) { + return Promise.reject(new Error("The response from long running operation does not contain a body.")); + } + else if (parsedResponse && !parsedResponse.status) { + return Promise.reject(new Error(`The response "${result.bodyAsText}" from long running operation does not contain the status property.`)); + } + pollingState.status = parsedResponse.status; + pollingState.error = parsedResponse.error; + pollingState.updateResponse(result.response); + pollingState.request = result.request; + pollingState.resource = undefined; + if (inPostOrDelete) { + pollingState.resource = result.bodyAsJson; + } + return Promise.resolve(); + }); + } + /** + * Retrieve PUT operation status by polling from "location" header. + * @param {string} method - The HTTP method. + * @param {PollingState} pollingState - The object to persist current operation state. + */ + updateStateFromLocationHeader(method, pollingState) { + return __awaiter(this, void 0, void 0, function* () { + let result; + try { + result = yield this.getStatus(pollingState.locationHeaderLink, pollingState.optionsOfInitialRequest); + } + catch (err) { + return Promise.reject(err); + } + const parsedResponse = result.bodyAsJson; + pollingState.updateResponse(result.response); + pollingState.request = result.request; + const statusCode = result.response.status; + if (statusCode === 202) { + pollingState.status = LroStates.InProgress; + } + else if (statusCode === 200 || + (statusCode === 201 && (method === "PUT" || method === "PATCH")) || + (statusCode === 204 && (method === "DELETE" || method === "POST"))) { + pollingState.status = LroStates.Succeeded; + pollingState.resource = parsedResponse; + // we might not throw an error, but initialize here just in case. + pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); + pollingState.error.code = pollingState.status; + } + else { + return Promise.reject(new Error(`The response with status code ${statusCode} from polling for ` + + `long running operation url "${pollingState.locationHeaderLink}" is not valid.`)); + } + }); + } + /** + * Polling for resource status. + * @param {string} resourceUrl - The url of resource. + * @param {PollingState} pollingState - The object to persist current operation state. + */ + updateStateFromGetResourceOperation(resourceUrl, pollingState) { + return __awaiter(this, void 0, void 0, function* () { + let result; + try { + result = yield this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest); + } + catch (err) { + return Promise.reject(err); + } + if (!result.bodyAsJson) { + return Promise.reject(new Error("The response from long running operation does not contain a body.")); + } + const parsedResponse = result.bodyAsJson; + pollingState.status = LroStates.Succeeded; + if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) { + pollingState.status = parsedResponse.properties.provisioningState; + } + pollingState.updateResponse(result.response); + pollingState.request = result.request; + pollingState.resource = parsedResponse; + // we might not throw an error, but initialize here just in case. + pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); + pollingState.error.code = pollingState.status; + return Promise.resolve(); + }); + } + /** + * Retrieves operation status by querying the operation URL. + * @param {string} operationUrl - URL used to poll operation result. + * @param {object} options - Options that can be set on the request object + */ + getStatus(operationUrl, options) { + return __awaiter(this, void 0, void 0, function* () { + const self = this; + // Construct URL + const requestUrl = operationUrl.replace(" ", "%20"); + // Create HTTP request object + const httpRequest = { + method: "GET", + url: requestUrl, + headers: {} + }; + if (options) { + const customHeaders = options.customHeaders; + for (const headerName in customHeaders) { + if (customHeaders.hasOwnProperty(headerName)) { + httpRequest.headers[headerName] = customHeaders[headerName]; + } + } + } + let operationResponse; + try { + operationResponse = yield self.sendRequest(httpRequest); + } + catch (err) { + return Promise.reject(err); + } + const statusCode = operationResponse.response.status; + const responseBody = operationResponse.bodyAsJson; + if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { + const error = new msRest.RestError(`Invalid status code with response body "${operationResponse.bodyAsText}" occurred ` + + `when polling for operation status.`); + error.statusCode = statusCode; + error.request = msRest.stripRequest(operationResponse.request); + error.response = operationResponse.response; + try { + error.body = responseBody; + } + catch (badResponse) { + error.message += ` Error "${badResponse}" occured while deserializing the response body - "${operationResponse.bodyAsText}".`; + error.body = operationResponse.bodyAsText; + } + return Promise.reject(error); + } + return Promise.resolve(operationResponse); + }); + } +} +exports.AzureServiceClient = AzureServiceClient; +//# sourceMappingURL=azureServiceClient.js.map \ No newline at end of file diff --git a/dist/lib/azureServiceClient.js.map b/dist/lib/azureServiceClient.js.map new file mode 100644 index 000000000000..d89cde316841 --- /dev/null +++ b/dist/lib/azureServiceClient.js.map @@ -0,0 +1 @@ +{"version":3,"file":"azureServiceClient.js","sourceRoot":"","sources":["../../lib/azureServiceClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/lib/baseResource.js b/dist/lib/baseResource.js new file mode 100644 index 000000000000..81291d596ba2 --- /dev/null +++ b/dist/lib/baseResource.js @@ -0,0 +1,14 @@ +"use strict"; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BaseResourceMapper = { + required: false, + serializedName: "BaseResource", + type: { + name: "Composite", + className: "BaseResource", + modelProperties: {} + } +}; +//# sourceMappingURL=baseResource.js.map \ No newline at end of file diff --git a/dist/lib/baseResource.js.map b/dist/lib/baseResource.js.map new file mode 100644 index 000000000000..aa76b0cb1350 --- /dev/null +++ b/dist/lib/baseResource.js.map @@ -0,0 +1 @@ +{"version":3,"file":"baseResource.js","sourceRoot":"","sources":["../../lib/baseResource.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,+FAA+F;;AAQlF,QAAA,kBAAkB,GAAG;IAChC,QAAQ,EAAE,KAAK;IACf,cAAc,EAAE,cAAc;IAC9B,IAAI,EAAE;QACJ,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,cAAc;QACzB,eAAe,EAAE,EAChB;KACF;CACF,CAAC"} \ No newline at end of file diff --git a/dist/lib/cloudError.js b/dist/lib/cloudError.js new file mode 100644 index 000000000000..fc138ac46af8 --- /dev/null +++ b/dist/lib/cloudError.js @@ -0,0 +1,51 @@ +"use strict"; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CloudErrorMapper = { + required: false, + serializedName: "CloudError", + type: { + name: "Composite", + className: "CloudError", + modelProperties: { + code: { + required: true, + serializedName: "code", + type: { + name: "String" + } + }, + message: { + required: true, + serializedName: "message", + type: { + name: "String" + } + }, + target: { + required: false, + serializedName: "target", + type: { + name: "String" + } + }, + details: { + required: false, + serializedName: "details", + type: { + name: "Sequence", + element: { + required: false, + serializedName: "CloudErrorElementType", + type: { + name: "Composite", + className: "CloudError" + } + } + } + } + } + } +}; +//# sourceMappingURL=cloudError.js.map \ No newline at end of file diff --git a/dist/lib/cloudError.js.map b/dist/lib/cloudError.js.map new file mode 100644 index 000000000000..016f1c95dd71 --- /dev/null +++ b/dist/lib/cloudError.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cloudError.js","sourceRoot":"","sources":["../../lib/cloudError.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,+FAA+F;;AAyBlF,QAAA,gBAAgB,GAAG;IAC9B,QAAQ,EAAE,KAAK;IACf,cAAc,EAAE,YAAY;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,YAAY;QACvB,eAAe,EAAE;YACf,IAAI,EAAE;gBACJ,QAAQ,EAAE,IAAI;gBACd,cAAc,EAAE,MAAM;gBACtB,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;iBACf;aACF;YACD,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI;gBACd,cAAc,EAAE,SAAS;gBACzB,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;iBACf;aACF;YACD,MAAM,EAAE;gBACN,QAAQ,EAAE,KAAK;gBACf,cAAc,EAAE,QAAQ;gBACxB,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;iBACf;aACF;YACD,OAAO,EAAE;gBACP,QAAQ,EAAE,KAAK;gBACf,cAAc,EAAE,SAAS;gBACzB,IAAI,EAAE;oBACJ,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE;wBACP,QAAQ,EAAE,KAAK;wBACf,cAAc,EAAE,uBAAuB;wBACvC,IAAI,EAAE;4BACJ,IAAI,EAAE,WAAW;4BACjB,SAAS,EAAE,YAAY;yBACxB;qBACF;iBACF;aACF;SACF;KACF;CACF,CAAC"} \ No newline at end of file diff --git a/dist/lib/msRestAzure.js b/dist/lib/msRestAzure.js new file mode 100644 index 000000000000..004265d1305d --- /dev/null +++ b/dist/lib/msRestAzure.js @@ -0,0 +1,13 @@ +"use strict"; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +Object.defineProperty(exports, "__esModule", { value: true }); +const azureServiceClient_1 = require("./azureServiceClient"); +exports.AzureServiceClient = azureServiceClient_1.AzureServiceClient; +const constants_1 = require("./util/constants"); +exports.Constants = constants_1.default; +const cloudError_1 = require("./cloudError"); +exports.CloudErrorMapper = cloudError_1.CloudErrorMapper; +const baseResource_1 = require("./baseResource"); +exports.BaseResourceMapper = baseResource_1.BaseResourceMapper; +//# sourceMappingURL=msRestAzure.js.map \ No newline at end of file diff --git a/dist/lib/msRestAzure.js.map b/dist/lib/msRestAzure.js.map new file mode 100644 index 000000000000..dfe3b356fd41 --- /dev/null +++ b/dist/lib/msRestAzure.js.map @@ -0,0 +1 @@ +{"version":3,"file":"msRestAzure.js","sourceRoot":"","sources":["../../lib/msRestAzure.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,+FAA+F;;AAE/F,6DAAqF;AAI5E,6BAJ2B,uCAAkB,CAI3B;AAH3B,gDAAyC;AAGe,oBAHjD,mBAAS,CAGiD;AAFjE,6CAA4D;AAEmB,2BAF1D,6BAAgB,CAE0D;AAD/F,iDAAkE;AAC6C,6BADxF,iCAAkB,CACwF"} \ No newline at end of file diff --git a/dist/lib/pollingState.js b/dist/lib/pollingState.js new file mode 100644 index 000000000000..0288b2739875 --- /dev/null +++ b/dist/lib/pollingState.js @@ -0,0 +1,149 @@ +"use strict"; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +Object.defineProperty(exports, "__esModule", { value: true }); +const constants_1 = require("./util/constants"); +const msRest = require("ms-rest-js"); +const LroStates = constants_1.default.LongRunningOperationStates; +/** + * @class + * Initializes a new instance of the PollingState class. + */ +class PollingState { + constructor(resultOfInitialRequest, retryTimeout = 30) { + /** + * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30. + */ + this.retryTimeout = 30; + this.resultOfInitialRequest = resultOfInitialRequest; + this.retryTimeout = retryTimeout; + this.updateResponse(resultOfInitialRequest.response); + this.request = resultOfInitialRequest.request; + // Parse response.body & assign it as the resource. + try { + if (resultOfInitialRequest.bodyAsText && resultOfInitialRequest.bodyAsText.length > 0) { + this.resource = JSON.parse(resultOfInitialRequest.bodyAsText); + } + else { + this.resource = resultOfInitialRequest.bodyAsJson; + } + } + catch (error) { + const deserializationError = new msRest.RestError(`Error "${error}" occurred in parsing the responseBody " + + "while creating the PollingState for Long Running Operation- "${resultOfInitialRequest.bodyAsText}"`); + deserializationError.request = resultOfInitialRequest.request; + deserializationError.response = resultOfInitialRequest.response; + throw deserializationError; + } + switch (this.response.status) { + case 202: + this.status = LroStates.InProgress; + break; + case 204: + this.status = LroStates.Succeeded; + break; + case 201: + if (this.resource && this.resource.properties && this.resource.properties.provisioningState) { + this.status = this.resource.properties.provisioningState; + } + else { + this.status = LroStates.InProgress; + } + break; + case 200: + if (this.resource && this.resource.properties && this.resource.properties.provisioningState) { + this.status = this.resource.properties.provisioningState; + } + else { + this.status = LroStates.Succeeded; + } + break; + default: + this.status = LroStates.Failed; + break; + } + } + /** + * Update cached data using the provided response object + * @param {Response} [response] - provider response object. + */ + updateResponse(response) { + this.response = response; + if (response && response.headers) { + const asyncOperationHeader = response.headers.get("azure-asyncoperation"); + const locationHeader = response.headers.get("location"); + if (asyncOperationHeader) { + this.azureAsyncOperationHeaderLink = asyncOperationHeader; + } + if (locationHeader) { + this.locationHeaderLink = locationHeader; + } + } + } + /** + * Gets timeout in milliseconds. + * @returns {number} timeout + */ + getTimeout() { + if (this.retryTimeout || this.retryTimeout === 0) { + return this.retryTimeout * 1000; + } + if (this.response) { + const retryAfter = this.response.headers.get("retry-after"); + if (retryAfter) { + return parseInt(retryAfter) * 1000; + } + } + return 30 * 1000; + } + /** + * Returns long running operation result. + * @returns {msRest.HttpOperationResponse} HttpOperationResponse + */ + getOperationResponse() { + const result = new msRest.HttpOperationResponse(this.request, this.response, this.response.body); + if (this.resource && typeof this.resource.valueOf() === "string") { + result.bodyAsText = this.resource; + result.bodyAsJson = JSON.parse(this.resource); + } + else { + result.bodyAsJson = this.resource; + result.bodyAsText = JSON.stringify(this.resource); + } + return result; + } + /** + * Returns an Error on operation failure. + * @param {Error} err - The error object. + * @returns {msRest.RestError} The RestError defined in the runtime. + */ + getRestError(err) { + let errMsg; + let errCode = undefined; + const error = new msRest.RestError(""); + error.request = msRest.stripRequest(this.request); + error.response = this.response; + const parsedResponse = this.resource; + if (err && err.message) { + errMsg = `Long running operation failed with error: "${err.message}".`; + } + else { + errMsg = `Long running operation failed with status: "${this.status}".`; + } + if (parsedResponse) { + if (parsedResponse.error && parsedResponse.error.message) { + errMsg = `Long running operation failed with error: "${parsedResponse.error.message}".`; + } + if (parsedResponse.error && parsedResponse.error.code) { + errCode = parsedResponse.error.code; + } + } + error.message = errMsg; + if (errCode) + error.code = errCode; + error.body = parsedResponse; + return error; + } +} +exports.default = PollingState; +//# sourceMappingURL=pollingState.js.map \ No newline at end of file diff --git a/dist/lib/pollingState.js.map b/dist/lib/pollingState.js.map new file mode 100644 index 000000000000..363d92c202de --- /dev/null +++ b/dist/lib/pollingState.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pollingState.js","sourceRoot":"","sources":["../../lib/pollingState.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/lib/util/constants.js b/dist/lib/util/constants.js new file mode 100644 index 000000000000..3d5bb0014d4d --- /dev/null +++ b/dist/lib/util/constants.js @@ -0,0 +1,33 @@ +"use strict"; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +Object.defineProperty(exports, "__esModule", { value: true }); +const Constants = { + /** + * Defines constants for long running operation states. + * + * @const + * @type {string} + */ + LongRunningOperationStates: { + InProgress: "InProgress", + Succeeded: "Succeeded", + Failed: "Failed", + Canceled: "Canceled" + }, + /** + * The default language in the request header. + * + * @const + * @type {string} + */ + DEFAULT_LANGUAGE: "en-us", + /** + * The ms-rest-azure version. + * @const + * @type {string} + */ + msRestAzureVersion: "0.1.0" +}; +exports.default = Constants; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/dist/lib/util/constants.js.map b/dist/lib/util/constants.js.map new file mode 100644 index 000000000000..4125e3154908 --- /dev/null +++ b/dist/lib/util/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../lib/util/constants.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,+FAA+F;;AAE/F,MAAM,SAAS,GAAG;IAChB;;;;;OAKG;IACH,0BAA0B,EAAE;QAC1B,UAAU,EAAE,YAAY;QACxB,SAAS,EAAE,WAAW;QACtB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,UAAU;KACrB;IAED;;;;;OAKG;IACH,gBAAgB,EAAE,OAAO;IAEzB;;;;OAIG;IACH,kBAAkB,EAAE,OAAO;CAC5B,CAAC;AAEF,kBAAe,SAAS,CAAC"} \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 000000000000..d6dc9342364d --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,30 @@ +var gulp = require("gulp"), + tslint = require("gulp-tslint"), + tsc = require("gulp-typescript"), + sourcemaps = require("gulp-sourcemaps"), + runSequence = require("run-sequence"), + mocha = require("gulp-mocha"); + +gulp.task('default', function () { + console.log("run gulp -T to see all available tasks.\n"); +}); + +gulp.task("lint", () => + gulp.src([ + "lib/**/**.ts", + "test/**/**.ts" + ]) + .pipe(tslint({ + formatter: "verbose" + })) + .pipe(tslint.report()) +); + +// TODO: Doesn't yet confirm to folder structure +gulp.task("build", () => + gulp.src([ + "lib/**/**.ts" + ]) + .pipe(tsc(tsc.createProject("tsconfig.json"))) + .js.pipe(gulp.dest("dist/lib/")) +); diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts new file mode 100644 index 000000000000..cb9cd9eddbd7 --- /dev/null +++ b/lib/azureServiceClient.ts @@ -0,0 +1,314 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +import * as msRest from "ms-rest-js"; +import Constants from "./util/constants"; +import PollingState from "./pollingState"; +const LroStates = Constants.LongRunningOperationStates; + +/** + * Options to be provided while creating the client. + */ +export interface AzureServiceClientOptions extends msRest.ServiceClientOptions { + /** + * @property {string} [options.acceptLanguage] - Gets or sets the preferred language for the response. Default value is: "en-US". + */ + acceptLanguage?: string; + + /** + * @property {boolean} [options.generateClientRequestId] - When set to true a unique x-ms-client-request-id value + * is generated and included in each request. Default is true. + */ + generateClientRequestId?: boolean; + + /** + * @property {number} [options.longRunningOperationRetryTimeout] - Gets or sets the retry timeout in seconds for + * Long Running Operations. Default value is 30. + */ + longRunningOperationRetryTimeout?: number; + + /** + * @property {number} [rpRegistrationRetryTimeout] - Gets or sets the retry timeout in seconds for + * AutomaticRPRegistration. Default value is 30 seconds. + */ + rpRegistrationRetryTimeout?: number; +} + +/** + * @class + * Initializes a new instance of the AzureServiceClient class. + * @constructor + * + * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or + * UserTokenCredentials object used for authentication. + * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient + */ +export class AzureServiceClient extends msRest.ServiceClient { + acceptLanguage: string = Constants.DEFAULT_LANGUAGE; + generateClientRequestId = true; + longRunningOperationRetryTimeout = 30; + rpRegistrationRetryTimeout = 30; + + constructor(credentials: msRest.ServiceClientCredentials, options?: AzureServiceClientOptions) { + super(credentials, options); + this.acceptLanguage = Constants.DEFAULT_LANGUAGE; + this.generateClientRequestId = true; + this.longRunningOperationRetryTimeout = 30; + if (!options) options = {}; + + if (options.acceptLanguage !== null && options.acceptLanguage !== undefined) { + this.acceptLanguage = options.acceptLanguage; + } + + if (options.generateClientRequestId !== null && options.generateClientRequestId !== undefined) { + this.generateClientRequestId = options.generateClientRequestId; + } + + if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) { + this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout; + } + + if (options.rpRegistrationRetryTimeout !== null && options.rpRegistrationRetryTimeout !== undefined) { + this.rpRegistrationRetryTimeout = options.rpRegistrationRetryTimeout; + } + + try { + const moduleName = "ms-rest-azure"; + const moduleVersion = Constants.msRestAzureVersion; + this.addUserAgentInfo(`${moduleName}/${moduleVersion}`); + } catch (err) { + // do nothing + } + } + + /** + * Provides a mechanism to make a request that will poll and provide the final result. + * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object + * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request + * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody. + */ + async sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise { + const self = this; + let initialResponse: msRest.HttpOperationResponse; + try { + initialResponse = await self.sendRequest(request); + } catch (err) { + return Promise.reject(err); + } + let finalResponse: msRest.HttpOperationResponse; + try { + finalResponse = await self.getLongRunningOperationResult(initialResponse, options); + } catch (err) { + return Promise.reject(err); + } + return Promise.resolve(finalResponse); + } + + /** + * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request. + * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation. + */ + private checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResponse): boolean { + const statusCode = initialResponse.response.status; + const method = initialResponse.request.method; + if (statusCode === 200 || statusCode === 202 || + (statusCode === 201 && method === "PUT") || + (statusCode === 204 && (method === "DELETE" || method === "POST"))) { + return false; + } else { + return true; + } + } + + /** + * Poll Azure long running PUT, PATCH, POST or DELETE operations. + * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation. + * @param {msRest.RequestOptionsBase} [options] - custom request options. + * @returns {Promise} result - The final response after polling is complete. + */ + async getLongRunningOperationResult(resultOfInitialRequest: msRest.HttpOperationResponse, options?: msRest.RequestOptionsBase): Promise { + const self = this; + const initialRequestMethod: string = resultOfInitialRequest.request.method as msRest.HttpMethods; + + if (self.checkResponseStatusCodeFailed(resultOfInitialRequest)) { + return Promise.reject(`Unexpected polling status code from long running operation ` + + `"${resultOfInitialRequest.response.status}" for method "${initialRequestMethod}".`); + } + let pollingState: PollingState; + try { + pollingState = new PollingState(resultOfInitialRequest, self.longRunningOperationRetryTimeout); + pollingState.optionsOfInitialRequest = options as msRest.RequestOptionsBase; + } catch (error) { + return Promise.reject(error); + } + const resourceUrl: string = resultOfInitialRequest.request.url; + while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) { + await msRest.delay(pollingState.getTimeout()); + if (pollingState.azureAsyncOperationHeaderLink) { + await self.updateStateFromAzureAsyncOperationHeader(pollingState, true); + } else if (pollingState.locationHeaderLink) { + await self.updateStateFromLocationHeader(initialRequestMethod, pollingState); + } else if (initialRequestMethod === "PUT") { + await self.updateStateFromGetResourceOperation(resourceUrl, pollingState); + } else { + return Promise.reject(new Error("Location header is missing from long running operation.")); + } + } + + if (pollingState.status === LroStates.Succeeded) { + if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) && + (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH")) { + await self.updateStateFromGetResourceOperation(resourceUrl, pollingState); + return Promise.resolve(pollingState.getOperationResponse()); + } else { + return Promise.resolve(pollingState.getOperationResponse()); + } + } else { + return Promise.reject(pollingState.getRestError()); + } + } + + /** + * Retrieve operation status by polling from "azure-asyncoperation" header. + * @param {PollingState} pollingState - The object to persist current operation state. + * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation. + */ + private async updateStateFromAzureAsyncOperationHeader(pollingState: PollingState, inPostOrDelete = false): Promise { + let result: msRest.HttpOperationResponse; + + try { + result = await this.getStatus(pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest); + } catch (err) { + return Promise.reject(err); + } + + const parsedResponse = result.bodyAsJson as { [key: string]: any }; + + if (!parsedResponse) { + return Promise.reject(new Error("The response from long running operation does not contain a body.")); + } else if (parsedResponse && !parsedResponse.status) { + return Promise.reject(new Error(`The response "${result.bodyAsText}" from long running operation does not contain the status property.`)); + } + pollingState.status = parsedResponse.status; + pollingState.error = parsedResponse.error; + pollingState.updateResponse(result.response); + pollingState.request = result.request; + pollingState.resource = undefined; + if (inPostOrDelete) { + pollingState.resource = result.bodyAsJson; + } + return Promise.resolve(); + } + + /** + * Retrieve PUT operation status by polling from "location" header. + * @param {string} method - The HTTP method. + * @param {PollingState} pollingState - The object to persist current operation state. + */ + private async updateStateFromLocationHeader(method: string, pollingState: PollingState): Promise { + let result: msRest.HttpOperationResponse; + try { + result = await this.getStatus(pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest); + } catch (err) { + return Promise.reject(err); + } + + const parsedResponse = result.bodyAsJson as { [key: string]: any }; + pollingState.updateResponse(result.response); + pollingState.request = result.request; + const statusCode = result.response.status; + if (statusCode === 202) { + pollingState.status = LroStates.InProgress; + } else if (statusCode === 200 || + (statusCode === 201 && (method === "PUT" || method === "PATCH")) || + (statusCode === 204 && (method === "DELETE" || method === "POST"))) { + pollingState.status = LroStates.Succeeded; + pollingState.resource = parsedResponse; + // we might not throw an error, but initialize here just in case. + pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); + pollingState.error.code = pollingState.status; + } else { + return Promise.reject(new Error(`The response with status code ${statusCode} from polling for ` + + `long running operation url "${pollingState.locationHeaderLink}" is not valid.`)); + } + } + + /** + * Polling for resource status. + * @param {string} resourceUrl - The url of resource. + * @param {PollingState} pollingState - The object to persist current operation state. + */ + private async updateStateFromGetResourceOperation(resourceUrl: string, pollingState: PollingState): Promise { + let result: msRest.HttpOperationResponse; + try { + result = await this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest); + } catch (err) { + return Promise.reject(err); + } + if (!result.bodyAsJson) { + return Promise.reject(new Error("The response from long running operation does not contain a body.")); + } + + const parsedResponse = result.bodyAsJson as { [key: string]: any }; + pollingState.status = LroStates.Succeeded; + if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) { + pollingState.status = parsedResponse.properties.provisioningState; + } + pollingState.updateResponse(result.response); + pollingState.request = result.request; + pollingState.resource = parsedResponse; + // we might not throw an error, but initialize here just in case. + pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); + pollingState.error.code = pollingState.status; + return Promise.resolve(); + } + + /** + * Retrieves operation status by querying the operation URL. + * @param {string} operationUrl - URL used to poll operation result. + * @param {object} options - Options that can be set on the request object + */ + private async getStatus(operationUrl: string, options?: msRest.RequestOptionsBase): Promise { + const self = this; + // Construct URL + const requestUrl = operationUrl.replace(" ", "%20"); + // Create HTTP request object + const httpRequest: msRest.RequestPrepareOptions = { + method: "GET", + url: requestUrl, + headers: {} + }; + if (options) { + const customHeaders: { [key: string]: string } = (options.customHeaders as { [key: string]: string }); + for (const headerName in customHeaders) { + if (customHeaders.hasOwnProperty(headerName)) { + (httpRequest.headers as { [key: string]: string })[headerName] = customHeaders[headerName]; + } + } + } + let operationResponse: msRest.HttpOperationResponse; + try { + operationResponse = await self.sendRequest(httpRequest); + } catch (err) { + return Promise.reject(err); + } + const statusCode = operationResponse.response.status; + const responseBody = operationResponse.bodyAsJson; + if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { + const error = new msRest.RestError(`Invalid status code with response body "${operationResponse.bodyAsText}" occurred ` + + `when polling for operation status.`); + error.statusCode = statusCode; + error.request = msRest.stripRequest(operationResponse.request); + error.response = operationResponse.response; + try { + error.body = responseBody; + } catch (badResponse) { + error.message += ` Error "${badResponse}" occured while deserializing the response body - "${operationResponse.bodyAsText}".`; + error.body = operationResponse.bodyAsText; + } + return Promise.reject(error); + } + + return Promise.resolve(operationResponse); + } +} \ No newline at end of file diff --git a/lib/baseResource.ts b/lib/baseResource.ts new file mode 100644 index 000000000000..69f41d601cdf --- /dev/null +++ b/lib/baseResource.ts @@ -0,0 +1,19 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +/** + * @class + * An empty interface. + */ +export interface BaseResource { } + +export const BaseResourceMapper = { + required: false, + serializedName: "BaseResource", + type: { + name: "Composite", + className: "BaseResource", + modelProperties: { + } + } +}; \ No newline at end of file diff --git a/lib/cloudError.ts b/lib/cloudError.ts new file mode 100644 index 000000000000..ffdea53ad3ba --- /dev/null +++ b/lib/cloudError.ts @@ -0,0 +1,72 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +/** + * @class + * Provides additional information about an http error response returned from a Microsoft Azure service. + */ +export interface CloudError extends Error { + /** + * @property {string} code The error code parsed from the body of the http error response. + */ + code: string; + /** + * @property {string} message The error message parsed from the body of the http error response. + */ + message: string; + /** + * @property {string} [target] The target of the error. + */ + target?: string; + /** + * @property {Array} [details] An array of CloudError objects specifying the details. + */ + details?: Array; +} + +export const CloudErrorMapper = { + required: false, + serializedName: "CloudError", + type: { + name: "Composite", + className: "CloudError", + modelProperties: { + code: { + required: true, + serializedName: "code", + type: { + name: "String" + } + }, + message: { + required: true, + serializedName: "message", + type: { + name: "String" + } + }, + target: { + required: false, + serializedName: "target", + type: { + name: "String" + } + }, + details: { + required: false, + serializedName: "details", + type: { + name: "Sequence", + element: { + required: false, + serializedName: "CloudErrorElementType", + type: { + name: "Composite", + className: "CloudError" + } + } + } + } + } + } +}; \ No newline at end of file diff --git a/lib/msRestAzure.ts b/lib/msRestAzure.ts new file mode 100644 index 000000000000..8f3d7fbb1979 --- /dev/null +++ b/lib/msRestAzure.ts @@ -0,0 +1,8 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +import { AzureServiceClientOptions, AzureServiceClient } from "./azureServiceClient"; +import Constants from "./util/constants"; +import { CloudError, CloudErrorMapper } from "./cloudError"; +import { BaseResource, BaseResourceMapper } from "./baseResource"; +export { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper }; \ No newline at end of file diff --git a/lib/pollingState.ts b/lib/pollingState.ts new file mode 100644 index 000000000000..1fb2d9d2446f --- /dev/null +++ b/lib/pollingState.ts @@ -0,0 +1,190 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +import Constants from "./util/constants"; +import * as msRest from "ms-rest-js"; +const LroStates = Constants.LongRunningOperationStates; + +/** + * @class + * Initializes a new instance of the PollingState class. + */ +export default class PollingState { + /** + * @param {msRest.HttpOperationResponse} [response] - Response of the initial request that was made as a part of the asynchronous operation. + */ + resultOfInitialRequest: msRest.HttpOperationResponse; + /** + * @param {msRest.RequestOptionsBase} [optionsOfInitialRequest] - Request options that were provided as a part of the initial request. + */ + optionsOfInitialRequest: msRest.RequestOptionsBase; + /** + * @param {msRest.WebResource} [request] - provides information about the request made for polling. + */ + request: msRest.WebResource; + /** + * @param {Response} [response] - The response object to extract longrunning operation status. + */ + response: Response; + /** + * @param {any} [resource] - Provides information about the response body received in the polling request. Particularly useful when polling via provisioningState. + */ + resource: any; + /** + * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30. + */ + retryTimeout = 30; + /** + * @param {string} [azureAsyncOperationHeaderLink] - The url that is present in "azure-asyncoperation" response header. + */ + azureAsyncOperationHeaderLink?: string; + /** + * @param {string} [locationHeaderLink] - The url that is present in "Location" response header. + */ + locationHeaderLink?: string; + /** + * @param {string} [status] - The status of polling. "Succeeded, Failed, Cancelled, Updating, Creating, etc." + */ + status?: string; + /** + * @param {msRest.RestError} [error] - Provides information about the error that happened while polling. + */ + error?: msRest.RestError; + + constructor(resultOfInitialRequest: msRest.HttpOperationResponse, retryTimeout = 30) { + this.resultOfInitialRequest = resultOfInitialRequest; + this.retryTimeout = retryTimeout; + this.updateResponse(resultOfInitialRequest.response); + this.request = resultOfInitialRequest.request; + // Parse response.body & assign it as the resource. + try { + if (resultOfInitialRequest.bodyAsText && resultOfInitialRequest.bodyAsText.length > 0) { + this.resource = JSON.parse(resultOfInitialRequest.bodyAsText); + } else { + this.resource = resultOfInitialRequest.bodyAsJson; + } + } catch (error) { + const deserializationError = new msRest.RestError(`Error "${error}" occurred in parsing the responseBody " + + "while creating the PollingState for Long Running Operation- "${resultOfInitialRequest.bodyAsText}"`); + deserializationError.request = resultOfInitialRequest.request; + deserializationError.response = resultOfInitialRequest.response; + throw deserializationError; + } + switch (this.response.status) { + case 202: + this.status = LroStates.InProgress; + break; + + case 204: + this.status = LroStates.Succeeded; + break; + + case 201: + if (this.resource && this.resource.properties && this.resource.properties.provisioningState) { + this.status = this.resource.properties.provisioningState; + } else { + this.status = LroStates.InProgress; + } + break; + + case 200: + if (this.resource && this.resource.properties && this.resource.properties.provisioningState) { + this.status = this.resource.properties.provisioningState; + } else { + this.status = LroStates.Succeeded; + } + break; + + default: + this.status = LroStates.Failed; + break; + } + } + + /** + * Update cached data using the provided response object + * @param {Response} [response] - provider response object. + */ + updateResponse(response: Response) { + this.response = response; + if (response && response.headers) { + const asyncOperationHeader: string | null | undefined = response.headers.get("azure-asyncoperation"); + const locationHeader: string | null | undefined = response.headers.get("location"); + if (asyncOperationHeader) { + this.azureAsyncOperationHeaderLink = asyncOperationHeader; + } + + if (locationHeader) { + this.locationHeaderLink = locationHeader; + } + } + } + + /** + * Gets timeout in milliseconds. + * @returns {number} timeout + */ + getTimeout() { + if (this.retryTimeout || this.retryTimeout === 0) { + return this.retryTimeout * 1000; + } + if (this.response) { + const retryAfter: string | null | undefined = this.response.headers.get("retry-after"); + if (retryAfter) { + return parseInt(retryAfter) * 1000; + } + } + return 30 * 1000; + } + + /** + * Returns long running operation result. + * @returns {msRest.HttpOperationResponse} HttpOperationResponse + */ + getOperationResponse(): msRest.HttpOperationResponse { + const result = new msRest.HttpOperationResponse(this.request, this.response, this.response.body); + if (this.resource && typeof this.resource.valueOf() === "string") { + result.bodyAsText = this.resource; + result.bodyAsJson = JSON.parse(this.resource); + } else { + result.bodyAsJson = this.resource; + result.bodyAsText = JSON.stringify(this.resource); + } + return result; + } + + /** + * Returns an Error on operation failure. + * @param {Error} err - The error object. + * @returns {msRest.RestError} The RestError defined in the runtime. + */ + getRestError(err?: Error): msRest.RestError { + let errMsg: string; + let errCode: string | undefined = undefined; + + const error = new msRest.RestError(""); + error.request = msRest.stripRequest(this.request); + error.response = this.response; + const parsedResponse = this.resource as { [key: string]: any }; + + if (err && err.message) { + errMsg = `Long running operation failed with error: "${err.message}".`; + } else { + errMsg = `Long running operation failed with status: "${this.status}".`; + } + + if (parsedResponse) { + if (parsedResponse.error && parsedResponse.error.message) { + errMsg = `Long running operation failed with error: "${parsedResponse.error.message}".`; + } + if (parsedResponse.error && parsedResponse.error.code) { + errCode = parsedResponse.error.code as string; + } + } + + error.message = errMsg; + if (errCode) error.code = errCode; + error.body = parsedResponse; + return error; + } +} \ No newline at end of file diff --git a/lib/util/constants.ts b/lib/util/constants.ts new file mode 100644 index 000000000000..812404f1900f --- /dev/null +++ b/lib/util/constants.ts @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +const Constants = { + /** + * Defines constants for long running operation states. + * + * @const + * @type {string} + */ + LongRunningOperationStates: { + InProgress: "InProgress", + Succeeded: "Succeeded", + Failed: "Failed", + Canceled: "Canceled" + }, + + /** + * The default language in the request header. + * + * @const + * @type {string} + */ + DEFAULT_LANGUAGE: "en-us", + + /** + * The ms-rest-azure version. + * @const + * @type {string} + */ + msRestAzureVersion: "0.1.0" +}; + +export default Constants; diff --git a/msRestAzureBundle.js b/msRestAzureBundle.js new file mode 100644 index 000000000000..843ae59b53e2 --- /dev/null +++ b/msRestAzureBundle.js @@ -0,0 +1,677 @@ +var msRestAzure = +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 2); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +Object.defineProperty(exports, "__esModule", { value: true }); +const Constants = { + /** + * Defines constants for long running operation states. + * + * @const + * @type {string} + */ + LongRunningOperationStates: { + InProgress: "InProgress", + Succeeded: "Succeeded", + Failed: "Failed", + Canceled: "Canceled" + }, + /** + * The default language in the request header. + * + * @const + * @type {string} + */ + DEFAULT_LANGUAGE: "en-us", + /** + * The ms-rest-azure version. + * @const + * @type {string} + */ + msRestAzureVersion: "0.1.0" +}; +exports.default = Constants; + + +/***/ }), +/* 1 */ +/***/ (function(module, exports) { + +module.exports = msRest; + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +Object.defineProperty(exports, "__esModule", { value: true }); +const azureServiceClient_1 = __webpack_require__(3); +exports.AzureServiceClient = azureServiceClient_1.AzureServiceClient; +const constants_1 = __webpack_require__(0); +exports.Constants = constants_1.default; +const cloudError_1 = __webpack_require__(5); +exports.CloudErrorMapper = cloudError_1.CloudErrorMapper; +const baseResource_1 = __webpack_require__(6); +exports.BaseResourceMapper = baseResource_1.BaseResourceMapper; + + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const msRest = __webpack_require__(1); +const constants_1 = __webpack_require__(0); +const pollingState_1 = __webpack_require__(4); +const LroStates = constants_1.default.LongRunningOperationStates; +/** + * @class + * Initializes a new instance of the AzureServiceClient class. + * @constructor + * + * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or + * UserTokenCredentials object used for authentication. + * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient + */ +class AzureServiceClient extends msRest.ServiceClient { + constructor(credentials, options) { + super(credentials, options); + this.acceptLanguage = constants_1.default.DEFAULT_LANGUAGE; + this.generateClientRequestId = true; + this.longRunningOperationRetryTimeout = 30; + this.rpRegistrationRetryTimeout = 30; + this.acceptLanguage = constants_1.default.DEFAULT_LANGUAGE; + this.generateClientRequestId = true; + this.longRunningOperationRetryTimeout = 30; + if (!options) + options = {}; + if (options.acceptLanguage !== null && options.acceptLanguage !== undefined) { + this.acceptLanguage = options.acceptLanguage; + } + if (options.generateClientRequestId !== null && options.generateClientRequestId !== undefined) { + this.generateClientRequestId = options.generateClientRequestId; + } + if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) { + this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout; + } + if (options.rpRegistrationRetryTimeout !== null && options.rpRegistrationRetryTimeout !== undefined) { + this.rpRegistrationRetryTimeout = options.rpRegistrationRetryTimeout; + } + try { + const moduleName = "ms-rest-azure"; + const moduleVersion = constants_1.default.msRestAzureVersion; + this.addUserAgentInfo(`${moduleName}/${moduleVersion}`); + } + catch (err) { + // do nothing + } + } + /** + * Provides a mechanism to make a request that will poll and provide the final result. + * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object + * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request + * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody. + */ + sendLongRunningRequest(request, options) { + return __awaiter(this, void 0, void 0, function* () { + const self = this; + let initialResponse; + try { + initialResponse = yield self.sendRequest(request); + } + catch (err) { + return Promise.reject(err); + } + let finalResponse; + try { + finalResponse = yield self.getLongRunningOperationResult(initialResponse, options); + } + catch (err) { + return Promise.reject(err); + } + return Promise.resolve(finalResponse); + }); + } + /** + * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request. + * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation. + */ + checkResponseStatusCodeFailed(initialResponse) { + const statusCode = initialResponse.response.status; + const method = initialResponse.request.method; + if (statusCode === 200 || statusCode === 202 || + (statusCode === 201 && method === "PUT") || + (statusCode === 204 && (method === "DELETE" || method === "POST"))) { + return false; + } + else { + return true; + } + } + /** + * Poll Azure long running PUT, PATCH, POST or DELETE operations. + * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation. + * @param {msRest.RequestOptionsBase} [options] - custom request options. + * @returns {Promise} result - The final response after polling is complete. + */ + getLongRunningOperationResult(resultOfInitialRequest, options) { + return __awaiter(this, void 0, void 0, function* () { + const self = this; + const initialRequestMethod = resultOfInitialRequest.request.method; + if (self.checkResponseStatusCodeFailed(resultOfInitialRequest)) { + return Promise.reject(`Unexpected polling status code from long running operation ` + + `"${resultOfInitialRequest.response.status}" for method "${initialRequestMethod}".`); + } + let pollingState; + try { + pollingState = new pollingState_1.default(resultOfInitialRequest, self.longRunningOperationRetryTimeout); + pollingState.optionsOfInitialRequest = options; + } + catch (error) { + return Promise.reject(error); + } + const resourceUrl = resultOfInitialRequest.request.url; + while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) { + yield msRest.delay(pollingState.getTimeout()); + if (pollingState.azureAsyncOperationHeaderLink) { + yield self.updateStateFromAzureAsyncOperationHeader(pollingState, true); + } + else if (pollingState.locationHeaderLink) { + yield self.updateStateFromLocationHeader(initialRequestMethod, pollingState); + } + else if (initialRequestMethod === "PUT") { + yield self.updateStateFromGetResourceOperation(resourceUrl, pollingState); + } + else { + return Promise.reject(new Error("Location header is missing from long running operation.")); + } + } + if (pollingState.status === LroStates.Succeeded) { + if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) && + (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH")) { + yield self.updateStateFromGetResourceOperation(resourceUrl, pollingState); + return Promise.resolve(pollingState.getOperationResponse()); + } + else { + return Promise.resolve(pollingState.getOperationResponse()); + } + } + else { + return Promise.reject(pollingState.getRestError()); + } + }); + } + /** + * Retrieve operation status by polling from "azure-asyncoperation" header. + * @param {PollingState} pollingState - The object to persist current operation state. + * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation. + */ + updateStateFromAzureAsyncOperationHeader(pollingState, inPostOrDelete = false) { + return __awaiter(this, void 0, void 0, function* () { + let result; + try { + result = yield this.getStatus(pollingState.azureAsyncOperationHeaderLink, pollingState.optionsOfInitialRequest); + } + catch (err) { + return Promise.reject(err); + } + const parsedResponse = result.bodyAsJson; + if (!parsedResponse) { + return Promise.reject(new Error("The response from long running operation does not contain a body.")); + } + else if (parsedResponse && !parsedResponse.status) { + return Promise.reject(new Error(`The response "${result.bodyAsText}" from long running operation does not contain the status property.`)); + } + pollingState.status = parsedResponse.status; + pollingState.error = parsedResponse.error; + pollingState.updateResponse(result.response); + pollingState.request = result.request; + pollingState.resource = undefined; + if (inPostOrDelete) { + pollingState.resource = result.bodyAsJson; + } + return Promise.resolve(); + }); + } + /** + * Retrieve PUT operation status by polling from "location" header. + * @param {string} method - The HTTP method. + * @param {PollingState} pollingState - The object to persist current operation state. + */ + updateStateFromLocationHeader(method, pollingState) { + return __awaiter(this, void 0, void 0, function* () { + let result; + try { + result = yield this.getStatus(pollingState.locationHeaderLink, pollingState.optionsOfInitialRequest); + } + catch (err) { + return Promise.reject(err); + } + const parsedResponse = result.bodyAsJson; + pollingState.updateResponse(result.response); + pollingState.request = result.request; + const statusCode = result.response.status; + if (statusCode === 202) { + pollingState.status = LroStates.InProgress; + } + else if (statusCode === 200 || + (statusCode === 201 && (method === "PUT" || method === "PATCH")) || + (statusCode === 204 && (method === "DELETE" || method === "POST"))) { + pollingState.status = LroStates.Succeeded; + pollingState.resource = parsedResponse; + // we might not throw an error, but initialize here just in case. + pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); + pollingState.error.code = pollingState.status; + } + else { + return Promise.reject(new Error(`The response with status code ${statusCode} from polling for ` + + `long running operation url "${pollingState.locationHeaderLink}" is not valid.`)); + } + }); + } + /** + * Polling for resource status. + * @param {string} resourceUrl - The url of resource. + * @param {PollingState} pollingState - The object to persist current operation state. + */ + updateStateFromGetResourceOperation(resourceUrl, pollingState) { + return __awaiter(this, void 0, void 0, function* () { + let result; + try { + result = yield this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest); + } + catch (err) { + return Promise.reject(err); + } + if (!result.bodyAsJson) { + return Promise.reject(new Error("The response from long running operation does not contain a body.")); + } + const parsedResponse = result.bodyAsJson; + pollingState.status = LroStates.Succeeded; + if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) { + pollingState.status = parsedResponse.properties.provisioningState; + } + pollingState.updateResponse(result.response); + pollingState.request = result.request; + pollingState.resource = parsedResponse; + // we might not throw an error, but initialize here just in case. + pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); + pollingState.error.code = pollingState.status; + return Promise.resolve(); + }); + } + /** + * Retrieves operation status by querying the operation URL. + * @param {string} operationUrl - URL used to poll operation result. + * @param {object} options - Options that can be set on the request object + */ + getStatus(operationUrl, options) { + return __awaiter(this, void 0, void 0, function* () { + const self = this; + // Construct URL + const requestUrl = operationUrl.replace(" ", "%20"); + // Create HTTP request object + const httpRequest = { + method: "GET", + url: requestUrl, + headers: {} + }; + if (options) { + const customHeaders = options.customHeaders; + for (const headerName in customHeaders) { + if (customHeaders.hasOwnProperty(headerName)) { + httpRequest.headers[headerName] = customHeaders[headerName]; + } + } + } + let operationResponse; + try { + operationResponse = yield self.sendRequest(httpRequest); + } + catch (err) { + return Promise.reject(err); + } + const statusCode = operationResponse.response.status; + const responseBody = operationResponse.bodyAsJson; + if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { + const error = new msRest.RestError(`Invalid status code with response body "${operationResponse.bodyAsText}" occurred ` + + `when polling for operation status.`); + error.statusCode = statusCode; + error.request = msRest.stripRequest(operationResponse.request); + error.response = operationResponse.response; + try { + error.body = responseBody; + } + catch (badResponse) { + error.message += ` Error "${badResponse}" occured while deserializing the response body - "${operationResponse.bodyAsText}".`; + error.body = operationResponse.bodyAsText; + } + return Promise.reject(error); + } + return Promise.resolve(operationResponse); + }); + } +} +exports.AzureServiceClient = AzureServiceClient; + + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +Object.defineProperty(exports, "__esModule", { value: true }); +const constants_1 = __webpack_require__(0); +const msRest = __webpack_require__(1); +const LroStates = constants_1.default.LongRunningOperationStates; +/** + * @class + * Initializes a new instance of the PollingState class. + */ +class PollingState { + constructor(resultOfInitialRequest, retryTimeout = 30) { + /** + * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30. + */ + this.retryTimeout = 30; + this.resultOfInitialRequest = resultOfInitialRequest; + this.retryTimeout = retryTimeout; + this.updateResponse(resultOfInitialRequest.response); + this.request = resultOfInitialRequest.request; + // Parse response.body & assign it as the resource. + try { + if (resultOfInitialRequest.bodyAsText && resultOfInitialRequest.bodyAsText.length > 0) { + this.resource = JSON.parse(resultOfInitialRequest.bodyAsText); + } + else { + this.resource = resultOfInitialRequest.bodyAsJson; + } + } + catch (error) { + const deserializationError = new msRest.RestError(`Error "${error}" occurred in parsing the responseBody " + + "while creating the PollingState for Long Running Operation- "${resultOfInitialRequest.bodyAsText}"`); + deserializationError.request = resultOfInitialRequest.request; + deserializationError.response = resultOfInitialRequest.response; + throw deserializationError; + } + switch (this.response.status) { + case 202: + this.status = LroStates.InProgress; + break; + case 204: + this.status = LroStates.Succeeded; + break; + case 201: + if (this.resource && this.resource.properties && this.resource.properties.provisioningState) { + this.status = this.resource.properties.provisioningState; + } + else { + this.status = LroStates.InProgress; + } + break; + case 200: + if (this.resource && this.resource.properties && this.resource.properties.provisioningState) { + this.status = this.resource.properties.provisioningState; + } + else { + this.status = LroStates.Succeeded; + } + break; + default: + this.status = LroStates.Failed; + break; + } + } + /** + * Update cached data using the provided response object + * @param {Response} [response] - provider response object. + */ + updateResponse(response) { + this.response = response; + if (response && response.headers) { + const asyncOperationHeader = response.headers.get("azure-asyncoperation"); + const locationHeader = response.headers.get("location"); + if (asyncOperationHeader) { + this.azureAsyncOperationHeaderLink = asyncOperationHeader; + } + if (locationHeader) { + this.locationHeaderLink = locationHeader; + } + } + } + /** + * Gets timeout in milliseconds. + * @returns {number} timeout + */ + getTimeout() { + if (this.retryTimeout || this.retryTimeout === 0) { + return this.retryTimeout * 1000; + } + if (this.response) { + const retryAfter = this.response.headers.get("retry-after"); + if (retryAfter) { + return parseInt(retryAfter) * 1000; + } + } + return 30 * 1000; + } + /** + * Returns long running operation result. + * @returns {msRest.HttpOperationResponse} HttpOperationResponse + */ + getOperationResponse() { + const result = new msRest.HttpOperationResponse(this.request, this.response, this.response.body); + if (this.resource && typeof this.resource.valueOf() === "string") { + result.bodyAsText = this.resource; + result.bodyAsJson = JSON.parse(this.resource); + } + else { + result.bodyAsJson = this.resource; + result.bodyAsText = JSON.stringify(this.resource); + } + return result; + } + /** + * Returns an Error on operation failure. + * @param {Error} err - The error object. + * @returns {msRest.RestError} The RestError defined in the runtime. + */ + getRestError(err) { + let errMsg; + let errCode = undefined; + const error = new msRest.RestError(""); + error.request = msRest.stripRequest(this.request); + error.response = this.response; + const parsedResponse = this.resource; + if (err && err.message) { + errMsg = `Long running operation failed with error: "${err.message}".`; + } + else { + errMsg = `Long running operation failed with status: "${this.status}".`; + } + if (parsedResponse) { + if (parsedResponse.error && parsedResponse.error.message) { + errMsg = `Long running operation failed with error: "${parsedResponse.error.message}".`; + } + if (parsedResponse.error && parsedResponse.error.code) { + errCode = parsedResponse.error.code; + } + } + error.message = errMsg; + if (errCode) + error.code = errCode; + error.body = parsedResponse; + return error; + } +} +exports.default = PollingState; + + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CloudErrorMapper = { + required: false, + serializedName: "CloudError", + type: { + name: "Composite", + className: "CloudError", + modelProperties: { + code: { + required: true, + serializedName: "code", + type: { + name: "String" + } + }, + message: { + required: true, + serializedName: "message", + type: { + name: "String" + } + }, + target: { + required: false, + serializedName: "target", + type: { + name: "String" + } + }, + details: { + required: false, + serializedName: "details", + type: { + name: "Sequence", + element: { + required: false, + serializedName: "CloudErrorElementType", + type: { + name: "Composite", + className: "CloudError" + } + } + } + } + } + } +}; + + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BaseResourceMapper = { + required: false, + serializedName: "BaseResource", + type: { + name: "Composite", + className: "BaseResource", + modelProperties: {} + } +}; + + +/***/ }) +/******/ ]); +//# sourceMappingURL=msRestAzureBundle.js.map \ No newline at end of file diff --git a/msRestAzureBundle.js.map b/msRestAzureBundle.js.map new file mode 100644 index 000000000000..9582fb138781 --- /dev/null +++ b/msRestAzureBundle.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap 8bfc02d6f28e04661756","webpack:///./lib/util/constants.ts","webpack:///external \"msRest\"","webpack:///./lib/msRestAzure.ts","webpack:///./lib/azureServiceClient.ts","webpack:///./lib/pollingState.ts","webpack:///./lib/cloudError.ts","webpack:///./lib/baseResource.ts"],"names":[],"mappings":"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","file":"msRestAzureBundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 8bfc02d6f28e04661756","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nconst Constants = {\n /**\n * Defines constants for long running operation states.\n *\n * @const\n * @type {string}\n */\n LongRunningOperationStates: {\n InProgress: \"InProgress\",\n Succeeded: \"Succeeded\",\n Failed: \"Failed\",\n Canceled: \"Canceled\"\n },\n\n /**\n * The default language in the request header.\n *\n * @const\n * @type {string}\n */\n DEFAULT_LANGUAGE: \"en-us\",\n\n /**\n * The ms-rest-azure version.\n * @const\n * @type {string}\n */\n msRestAzureVersion: \"0.1.0\"\n};\n\nexport default Constants;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/util/constants.ts","module.exports = msRest;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"msRest\"\n// module id = 1\n// module chunks = 0","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport { AzureServiceClientOptions, AzureServiceClient } from \"./azureServiceClient\";\nimport Constants from \"./util/constants\";\nimport { CloudError, CloudErrorMapper } from \"./cloudError\";\nimport { BaseResource, BaseResourceMapper } from \"./baseResource\";\nexport { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper };\n\n\n// WEBPACK FOOTER //\n// ./lib/msRestAzure.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport * as msRest from \"ms-rest-js\";\nimport Constants from \"./util/constants\";\nimport PollingState from \"./pollingState\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * Options to be provided while creating the client.\n */\nexport interface AzureServiceClientOptions extends msRest.ServiceClientOptions {\n /**\n * @property {string} [options.acceptLanguage] - Gets or sets the preferred language for the response. Default value is: \"en-US\".\n */\n acceptLanguage?: string;\n\n /**\n * @property {boolean} [options.generateClientRequestId] - When set to true a unique x-ms-client-request-id value\n * is generated and included in each request. Default is true.\n */\n generateClientRequestId?: boolean;\n\n /**\n * @property {number} [options.longRunningOperationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * Long Running Operations. Default value is 30.\n */\n longRunningOperationRetryTimeout?: number;\n\n /**\n * @property {number} [rpRegistrationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * AutomaticRPRegistration. Default value is 30 seconds.\n */\n rpRegistrationRetryTimeout?: number;\n}\n\n/**\n * @class\n * Initializes a new instance of the AzureServiceClient class.\n * @constructor\n *\n * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or\n * UserTokenCredentials object used for authentication.\n * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient\n */\nexport class AzureServiceClient extends msRest.ServiceClient {\n acceptLanguage: string = Constants.DEFAULT_LANGUAGE;\n generateClientRequestId = true;\n longRunningOperationRetryTimeout = 30;\n rpRegistrationRetryTimeout = 30;\n\n constructor(credentials: msRest.ServiceClientCredentials, options?: AzureServiceClientOptions) {\n super(credentials, options);\n this.acceptLanguage = Constants.DEFAULT_LANGUAGE;\n this.generateClientRequestId = true;\n this.longRunningOperationRetryTimeout = 30;\n if (!options) options = {};\n\n if (options.acceptLanguage !== null && options.acceptLanguage !== undefined) {\n this.acceptLanguage = options.acceptLanguage;\n }\n\n if (options.generateClientRequestId !== null && options.generateClientRequestId !== undefined) {\n this.generateClientRequestId = options.generateClientRequestId;\n }\n\n if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) {\n this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout;\n }\n\n if (options.rpRegistrationRetryTimeout !== null && options.rpRegistrationRetryTimeout !== undefined) {\n this.rpRegistrationRetryTimeout = options.rpRegistrationRetryTimeout;\n }\n\n try {\n const moduleName = \"ms-rest-azure\";\n const moduleVersion = Constants.msRestAzureVersion;\n this.addUserAgentInfo(`${moduleName}/${moduleVersion}`);\n } catch (err) {\n // do nothing\n }\n }\n\n /**\n * Provides a mechanism to make a request that will poll and provide the final result.\n * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object\n * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request\n * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody.\n */\n async sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n let initialResponse: msRest.HttpOperationResponse;\n try {\n initialResponse = await self.sendRequest(request);\n } catch (err) {\n return Promise.reject(err);\n }\n let finalResponse: msRest.HttpOperationResponse;\n try {\n finalResponse = await self.getLongRunningOperationResult(initialResponse, options);\n } catch (err) {\n return Promise.reject(err);\n }\n return Promise.resolve(finalResponse);\n }\n\n /**\n * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request.\n * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation.\n */\n private checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResponse): boolean {\n const statusCode = initialResponse.response.status;\n const method = initialResponse.request.method;\n if (statusCode === 200 || statusCode === 202 ||\n (statusCode === 201 && method === \"PUT\") ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n return false;\n } else {\n return true;\n }\n }\n\n /**\n * Poll Azure long running PUT, PATCH, POST or DELETE operations.\n * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation.\n * @param {msRest.RequestOptionsBase} [options] - custom request options.\n * @returns {Promise} result - The final response after polling is complete.\n */\n async getLongRunningOperationResult(resultOfInitialRequest: msRest.HttpOperationResponse, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n const initialRequestMethod: string = resultOfInitialRequest.request.method as msRest.HttpMethods;\n\n if (self.checkResponseStatusCodeFailed(resultOfInitialRequest)) {\n return Promise.reject(`Unexpected polling status code from long running operation ` +\n `\"${resultOfInitialRequest.response.status}\" for method \"${initialRequestMethod}\".`);\n }\n let pollingState: PollingState;\n try {\n pollingState = new PollingState(resultOfInitialRequest, self.longRunningOperationRetryTimeout);\n pollingState.optionsOfInitialRequest = options as msRest.RequestOptionsBase;\n } catch (error) {\n return Promise.reject(error);\n }\n const resourceUrl: string = resultOfInitialRequest.request.url;\n while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) {\n await msRest.delay(pollingState.getTimeout());\n if (pollingState.azureAsyncOperationHeaderLink) {\n await self.updateStateFromAzureAsyncOperationHeader(pollingState, true);\n } else if (pollingState.locationHeaderLink) {\n await self.updateStateFromLocationHeader(initialRequestMethod, pollingState);\n } else if (initialRequestMethod === \"PUT\") {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n } else {\n return Promise.reject(new Error(\"Location header is missing from long running operation.\"));\n }\n }\n\n if (pollingState.status === LroStates.Succeeded) {\n if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) &&\n (initialRequestMethod === \"PUT\" || initialRequestMethod === \"PATCH\")) {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n return Promise.resolve(pollingState.getOperationResponse());\n } else {\n return Promise.resolve(pollingState.getOperationResponse());\n }\n } else {\n return Promise.reject(pollingState.getRestError());\n }\n }\n\n /**\n * Retrieve operation status by polling from \"azure-asyncoperation\" header.\n * @param {PollingState} pollingState - The object to persist current operation state.\n * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation.\n */\n private async updateStateFromAzureAsyncOperationHeader(pollingState: PollingState, inPostOrDelete = false): Promise {\n let result: msRest.HttpOperationResponse;\n\n try {\n result = await this.getStatus(pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n\n if (!parsedResponse) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n } else if (parsedResponse && !parsedResponse.status) {\n return Promise.reject(new Error(`The response \"${result.bodyAsText}\" from long running operation does not contain the status property.`));\n }\n pollingState.status = parsedResponse.status;\n pollingState.error = parsedResponse.error;\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = undefined;\n if (inPostOrDelete) {\n pollingState.resource = result.bodyAsJson;\n }\n return Promise.resolve();\n }\n\n /**\n * Retrieve PUT operation status by polling from \"location\" header.\n * @param {string} method - The HTTP method.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromLocationHeader(method: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n const statusCode = result.response.status;\n if (statusCode === 202) {\n pollingState.status = LroStates.InProgress;\n } else if (statusCode === 200 ||\n (statusCode === 201 && (method === \"PUT\" || method === \"PATCH\")) ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n pollingState.status = LroStates.Succeeded;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n } else {\n return Promise.reject(new Error(`The response with status code ${statusCode} from polling for ` +\n `long running operation url \"${pollingState.locationHeaderLink}\" is not valid.`));\n }\n }\n\n /**\n * Polling for resource status.\n * @param {string} resourceUrl - The url of resource.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromGetResourceOperation(resourceUrl: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n if (!result.bodyAsJson) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n pollingState.status = LroStates.Succeeded;\n if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) {\n pollingState.status = parsedResponse.properties.provisioningState;\n }\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n return Promise.resolve();\n }\n\n /**\n * Retrieves operation status by querying the operation URL.\n * @param {string} operationUrl - URL used to poll operation result.\n * @param {object} options - Options that can be set on the request object\n */\n private async getStatus(operationUrl: string, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n // Construct URL\n const requestUrl = operationUrl.replace(\" \", \"%20\");\n // Create HTTP request object\n const httpRequest: msRest.RequestPrepareOptions = {\n method: \"GET\",\n url: requestUrl,\n headers: {}\n };\n if (options) {\n const customHeaders: { [key: string]: string } = (options.customHeaders as { [key: string]: string });\n for (const headerName in customHeaders) {\n if (customHeaders.hasOwnProperty(headerName)) {\n (httpRequest.headers as { [key: string]: string })[headerName] = customHeaders[headerName];\n }\n }\n }\n let operationResponse: msRest.HttpOperationResponse;\n try {\n operationResponse = await self.sendRequest(httpRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n const statusCode = operationResponse.response.status;\n const responseBody = operationResponse.bodyAsJson;\n if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) {\n const error = new msRest.RestError(`Invalid status code with response body \"${operationResponse.bodyAsText}\" occurred ` +\n `when polling for operation status.`);\n error.statusCode = statusCode;\n error.request = msRest.stripRequest(operationResponse.request);\n error.response = operationResponse.response;\n try {\n error.body = responseBody;\n } catch (badResponse) {\n error.message += ` Error \"${badResponse}\" occured while deserializing the response body - \"${operationResponse.bodyAsText}\".`;\n error.body = operationResponse.bodyAsText;\n }\n return Promise.reject(error);\n }\n\n return Promise.resolve(operationResponse);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/azureServiceClient.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport Constants from \"./util/constants\";\nimport * as msRest from \"ms-rest-js\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * @class\n * Initializes a new instance of the PollingState class.\n */\nexport default class PollingState {\n /**\n * @param {msRest.HttpOperationResponse} [response] - Response of the initial request that was made as a part of the asynchronous operation.\n */\n resultOfInitialRequest: msRest.HttpOperationResponse;\n /**\n * @param {msRest.RequestOptionsBase} [optionsOfInitialRequest] - Request options that were provided as a part of the initial request.\n */\n optionsOfInitialRequest: msRest.RequestOptionsBase;\n /**\n * @param {msRest.WebResource} [request] - provides information about the request made for polling.\n */\n request: msRest.WebResource;\n /**\n * @param {Response} [response] - The response object to extract longrunning operation status.\n */\n response: Response;\n /**\n * @param {any} [resource] - Provides information about the response body received in the polling request. Particularly useful when polling via provisioningState.\n */\n resource: any;\n /**\n * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30.\n */\n retryTimeout = 30;\n /**\n * @param {string} [azureAsyncOperationHeaderLink] - The url that is present in \"azure-asyncoperation\" response header.\n */\n azureAsyncOperationHeaderLink?: string;\n /**\n * @param {string} [locationHeaderLink] - The url that is present in \"Location\" response header.\n */\n locationHeaderLink?: string;\n /**\n * @param {string} [status] - The status of polling. \"Succeeded, Failed, Cancelled, Updating, Creating, etc.\"\n */\n status?: string;\n /**\n * @param {msRest.RestError} [error] - Provides information about the error that happened while polling.\n */\n error?: msRest.RestError;\n\n constructor(resultOfInitialRequest: msRest.HttpOperationResponse, retryTimeout = 30) {\n this.resultOfInitialRequest = resultOfInitialRequest;\n this.retryTimeout = retryTimeout;\n this.updateResponse(resultOfInitialRequest.response);\n this.request = resultOfInitialRequest.request;\n // Parse response.body & assign it as the resource.\n try {\n if (resultOfInitialRequest.bodyAsText && resultOfInitialRequest.bodyAsText.length > 0) {\n this.resource = JSON.parse(resultOfInitialRequest.bodyAsText);\n } else {\n this.resource = resultOfInitialRequest.bodyAsJson;\n }\n } catch (error) {\n const deserializationError = new msRest.RestError(`Error \"${error}\" occurred in parsing the responseBody \" +\n \"while creating the PollingState for Long Running Operation- \"${resultOfInitialRequest.bodyAsText}\"`);\n deserializationError.request = resultOfInitialRequest.request;\n deserializationError.response = resultOfInitialRequest.response;\n throw deserializationError;\n }\n switch (this.response.status) {\n case 202:\n this.status = LroStates.InProgress;\n break;\n\n case 204:\n this.status = LroStates.Succeeded;\n break;\n\n case 201:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.InProgress;\n }\n break;\n\n case 200:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.Succeeded;\n }\n break;\n\n default:\n this.status = LroStates.Failed;\n break;\n }\n }\n\n /**\n * Update cached data using the provided response object\n * @param {Response} [response] - provider response object.\n */\n updateResponse(response: Response) {\n this.response = response;\n if (response && response.headers) {\n const asyncOperationHeader: string | null | undefined = response.headers.get(\"azure-asyncoperation\");\n const locationHeader: string | null | undefined = response.headers.get(\"location\");\n if (asyncOperationHeader) {\n this.azureAsyncOperationHeaderLink = asyncOperationHeader;\n }\n\n if (locationHeader) {\n this.locationHeaderLink = locationHeader;\n }\n }\n }\n\n /**\n * Gets timeout in milliseconds.\n * @returns {number} timeout\n */\n getTimeout() {\n if (this.retryTimeout || this.retryTimeout === 0) {\n return this.retryTimeout * 1000;\n }\n if (this.response) {\n const retryAfter: string | null | undefined = this.response.headers.get(\"retry-after\");\n if (retryAfter) {\n return parseInt(retryAfter) * 1000;\n }\n }\n return 30 * 1000;\n }\n\n /**\n * Returns long running operation result.\n * @returns {msRest.HttpOperationResponse} HttpOperationResponse\n */\n getOperationResponse(): msRest.HttpOperationResponse {\n const result = new msRest.HttpOperationResponse(this.request, this.response, this.response.body);\n if (this.resource && typeof this.resource.valueOf() === \"string\") {\n result.bodyAsText = this.resource;\n result.bodyAsJson = JSON.parse(this.resource);\n } else {\n result.bodyAsJson = this.resource;\n result.bodyAsText = JSON.stringify(this.resource);\n }\n return result;\n }\n\n /**\n * Returns an Error on operation failure.\n * @param {Error} err - The error object.\n * @returns {msRest.RestError} The RestError defined in the runtime.\n */\n getRestError(err?: Error): msRest.RestError {\n let errMsg: string;\n let errCode: string | undefined = undefined;\n\n const error = new msRest.RestError(\"\");\n error.request = msRest.stripRequest(this.request);\n error.response = this.response;\n const parsedResponse = this.resource as { [key: string]: any };\n\n if (err && err.message) {\n errMsg = `Long running operation failed with error: \"${err.message}\".`;\n } else {\n errMsg = `Long running operation failed with status: \"${this.status}\".`;\n }\n\n if (parsedResponse) {\n if (parsedResponse.error && parsedResponse.error.message) {\n errMsg = `Long running operation failed with error: \"${parsedResponse.error.message}\".`;\n }\n if (parsedResponse.error && parsedResponse.error.code) {\n errCode = parsedResponse.error.code as string;\n }\n }\n\n error.message = errMsg;\n if (errCode) error.code = errCode;\n error.body = parsedResponse;\n return error;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/pollingState.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * Provides additional information about an http error response returned from a Microsoft Azure service.\n */\nexport interface CloudError extends Error {\n /**\n * @property {string} code The error code parsed from the body of the http error response.\n */\n code: string;\n /**\n * @property {string} message The error message parsed from the body of the http error response.\n */\n message: string;\n /**\n * @property {string} [target] The target of the error.\n */\n target?: string;\n /**\n * @property {Array} [details] An array of CloudError objects specifying the details.\n */\n details?: Array;\n}\n\nexport const CloudErrorMapper = {\n required: false,\n serializedName: \"CloudError\",\n type: {\n name: \"Composite\",\n className: \"CloudError\",\n modelProperties: {\n code: {\n required: true,\n serializedName: \"code\",\n type: {\n name: \"String\"\n }\n },\n message: {\n required: true,\n serializedName: \"message\",\n type: {\n name: \"String\"\n }\n },\n target: {\n required: false,\n serializedName: \"target\",\n type: {\n name: \"String\"\n }\n },\n details: {\n required: false,\n serializedName: \"details\",\n type: {\n name: \"Sequence\",\n element: {\n required: false,\n serializedName: \"CloudErrorElementType\",\n type: {\n name: \"Composite\",\n className: \"CloudError\"\n }\n }\n }\n }\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/cloudError.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * An empty interface.\n */\nexport interface BaseResource { }\n\nexport const BaseResourceMapper = {\n required: false,\n serializedName: \"BaseResource\",\n type: {\n name: \"Composite\",\n className: \"BaseResource\",\n modelProperties: {\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/baseResource.ts"],"sourceRoot":""} \ No newline at end of file diff --git a/msRestAzureBundle.min.js b/msRestAzureBundle.min.js new file mode 100644 index 000000000000..81e77a7e13e3 --- /dev/null +++ b/msRestAzureBundle.min.js @@ -0,0 +1 @@ +var msRestAzure=function(e){function t(s){if(r[s])return r[s].exports;var o=r[s]={i:s,l:!1,exports:{}};return e[s].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,s){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:s})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=2)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s={LongRunningOperationStates:{InProgress:"InProgress",Succeeded:"Succeeded",Failed:"Failed",Canceled:"Canceled"},DEFAULT_LANGUAGE:"en-us",msRestAzureVersion:"0.1.0"};t.default=s},function(e,t){e.exports=msRest},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=r(3);t.AzureServiceClient=s.AzureServiceClient;const o=r(0);t.Constants=o.default;const n=r(5);t.CloudErrorMapper=n.CloudErrorMapper;const i=r(6);t.BaseResourceMapper=i.BaseResourceMapper},function(e,t,r){"use strict";var s=this&&this.__awaiter||function(e,t,r,s){return new(r||(r=Promise))(function(o,n){function i(e){try{a(s.next(e))}catch(e){n(e)}}function u(e){try{a(s.throw(e))}catch(e){n(e)}}function a(e){e.done?o(e.value):new r(function(t){t(e.value)}).then(i,u)}a((s=s.apply(e,t||[])).next())})};Object.defineProperty(t,"__esModule",{value:!0});const o=r(1),n=r(0),i=r(4),u=n.default.LongRunningOperationStates;class a extends o.ServiceClient{constructor(e,t){super(e,t),this.acceptLanguage=n.default.DEFAULT_LANGUAGE,this.generateClientRequestId=!0,this.longRunningOperationRetryTimeout=30,this.rpRegistrationRetryTimeout=30,this.acceptLanguage=n.default.DEFAULT_LANGUAGE,this.generateClientRequestId=!0,this.longRunningOperationRetryTimeout=30,t||(t={}),null!==t.acceptLanguage&&void 0!==t.acceptLanguage&&(this.acceptLanguage=t.acceptLanguage),null!==t.generateClientRequestId&&void 0!==t.generateClientRequestId&&(this.generateClientRequestId=t.generateClientRequestId),null!==t.longRunningOperationRetryTimeout&&void 0!==t.longRunningOperationRetryTimeout&&(this.longRunningOperationRetryTimeout=t.longRunningOperationRetryTimeout),null!==t.rpRegistrationRetryTimeout&&void 0!==t.rpRegistrationRetryTimeout&&(this.rpRegistrationRetryTimeout=t.rpRegistrationRetryTimeout);try{const e=n.default.msRestAzureVersion;this.addUserAgentInfo(`ms-rest-azure/${e}`)}catch(e){}}sendLongRunningRequest(e,t){return s(this,void 0,void 0,function*(){const r=this;let s;try{s=yield r.sendRequest(e)}catch(e){return Promise.reject(e)}let o;try{o=yield r.getLongRunningOperationResult(s,t)}catch(e){return Promise.reject(e)}return Promise.resolve(o)})}checkResponseStatusCodeFailed(e){const t=e.response.status,r=e.request.method;return 200!==t&&202!==t&&(201!==t||"PUT"!==r)&&(204!==t||"DELETE"!==r&&"POST"!==r)}getLongRunningOperationResult(e,t){return s(this,void 0,void 0,function*(){const r=this,s=e.request.method;if(r.checkResponseStatusCodeFailed(e))return Promise.reject(`Unexpected polling status code from long running operation `+`"${e.response.status}" for method "${s}".`);let n;try{(n=new i.default(e,r.longRunningOperationRetryTimeout)).optionsOfInitialRequest=t}catch(e){return Promise.reject(e)}const a=e.request.url;for(;![u.Succeeded,u.Failed,u.Canceled].some(e=>e===n.status);)if(yield o.delay(n.getTimeout()),n.azureAsyncOperationHeaderLink)yield r.updateStateFromAzureAsyncOperationHeader(n,!0);else if(n.locationHeaderLink)yield r.updateStateFromLocationHeader(s,n);else{if("PUT"!==s)return Promise.reject(new Error("Location header is missing from long running operation."));yield r.updateStateFromGetResourceOperation(a,n)}return n.status===u.Succeeded?!n.azureAsyncOperationHeaderLink&&n.resource||"PUT"!==s&&"PATCH"!==s?Promise.resolve(n.getOperationResponse()):(yield r.updateStateFromGetResourceOperation(a,n),Promise.resolve(n.getOperationResponse())):Promise.reject(n.getRestError())})}updateStateFromAzureAsyncOperationHeader(e,t=!1){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(e.azureAsyncOperationHeaderLink,e.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}const s=r.bodyAsJson;return s?s&&!s.status?Promise.reject(new Error(`The response "${r.bodyAsText}" from long running operation does not contain the status property.`)):(e.status=s.status,e.error=s.error,e.updateResponse(r.response),e.request=r.request,e.resource=void 0,t&&(e.resource=r.bodyAsJson),Promise.resolve()):Promise.reject(new Error("The response from long running operation does not contain a body."))})}updateStateFromLocationHeader(e,t){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(t.locationHeaderLink,t.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}const s=r.bodyAsJson;t.updateResponse(r.response),t.request=r.request;const n=r.response.status;if(202===n)t.status=u.InProgress;else{if(200!==n&&(201!==n||"PUT"!==e&&"PATCH"!==e)&&(204!==n||"DELETE"!==e&&"POST"!==e))return Promise.reject(new Error(`The response with status code ${n} from polling for `+`long running operation url "${t.locationHeaderLink}" is not valid.`));t.status=u.Succeeded,t.resource=s,t.error=new o.RestError(`Long running operation failed with status "${t.status}".`),t.error.code=t.status}})}updateStateFromGetResourceOperation(e,t){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(e,t.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}if(!r.bodyAsJson)return Promise.reject(new Error("The response from long running operation does not contain a body."));const s=r.bodyAsJson;return t.status=u.Succeeded,s&&s.properties&&s.properties.provisioningState&&(t.status=s.properties.provisioningState),t.updateResponse(r.response),t.request=r.request,t.resource=s,t.error=new o.RestError(`Long running operation failed with status "${t.status}".`),t.error.code=t.status,Promise.resolve()})}getStatus(e,t){return s(this,void 0,void 0,function*(){const r=this,s={method:"GET",url:e.replace(" ","%20"),headers:{}};if(t){const e=t.customHeaders;for(const t in e)e.hasOwnProperty(t)&&(s.headers[t]=e[t])}let n;try{n=yield r.sendRequest(s)}catch(e){return Promise.reject(e)}const i=n.response.status,u=n.bodyAsJson;if(200!==i&&201!==i&&202!==i&&204!==i){const e=new o.RestError(`Invalid status code with response body "${n.bodyAsText}" occurred `+`when polling for operation status.`);e.statusCode=i,e.request=o.stripRequest(n.request),e.response=n.response;try{e.body=u}catch(t){e.message+=` Error "${t}" occured while deserializing the response body - "${n.bodyAsText}".`,e.body=n.bodyAsText}return Promise.reject(e)}return Promise.resolve(n)})}}t.AzureServiceClient=a},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=r(0),o=r(1),n=s.default.LongRunningOperationStates;class i{constructor(e,t=30){this.retryTimeout=30,this.resultOfInitialRequest=e,this.retryTimeout=t,this.updateResponse(e.response),this.request=e.request;try{e.bodyAsText&&e.bodyAsText.length>0?this.resource=JSON.parse(e.bodyAsText):this.resource=e.bodyAsJson}catch(t){const r=new o.RestError(`Error "${t}" occurred in parsing the responseBody " +\n "while creating the PollingState for Long Running Operation- "${e.bodyAsText}"`);throw r.request=e.request,r.response=e.response,r}switch(this.response.status){case 202:this.status=n.InProgress;break;case 204:this.status=n.Succeeded;break;case 201:this.resource&&this.resource.properties&&this.resource.properties.provisioningState?this.status=this.resource.properties.provisioningState:this.status=n.InProgress;break;case 200:this.resource&&this.resource.properties&&this.resource.properties.provisioningState?this.status=this.resource.properties.provisioningState:this.status=n.Succeeded;break;default:this.status=n.Failed}}updateResponse(e){if(this.response=e,e&&e.headers){const t=e.headers.get("azure-asyncoperation"),r=e.headers.get("location");t&&(this.azureAsyncOperationHeaderLink=t),r&&(this.locationHeaderLink=r)}}getTimeout(){if(this.retryTimeout||0===this.retryTimeout)return 1e3*this.retryTimeout;if(this.response){const e=this.response.headers.get("retry-after");if(e)return 1e3*parseInt(e)}return 3e4}getOperationResponse(){const e=new o.HttpOperationResponse(this.request,this.response,this.response.body);return this.resource&&"string"==typeof this.resource.valueOf()?(e.bodyAsText=this.resource,e.bodyAsJson=JSON.parse(this.resource)):(e.bodyAsJson=this.resource,e.bodyAsText=JSON.stringify(this.resource)),e}getRestError(e){let t,r=void 0;const s=new o.RestError("");s.request=o.stripRequest(this.request),s.response=this.response;const n=this.resource;return t=e&&e.message?`Long running operation failed with error: "${e.message}".`:`Long running operation failed with status: "${this.status}".`,n&&(n.error&&n.error.message&&(t=`Long running operation failed with error: "${n.error.message}".`),n.error&&n.error.code&&(r=n.error.code)),s.message=t,r&&(s.code=r),s.body=n,s}}t.default=i},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CloudErrorMapper={required:!1,serializedName:"CloudError",type:{name:"Composite",className:"CloudError",modelProperties:{code:{required:!0,serializedName:"code",type:{name:"String"}},message:{required:!0,serializedName:"message",type:{name:"String"}},target:{required:!1,serializedName:"target",type:{name:"String"}},details:{required:!1,serializedName:"details",type:{name:"Sequence",element:{required:!1,serializedName:"CloudErrorElementType",type:{name:"Composite",className:"CloudError"}}}}}}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseResourceMapper={required:!1,serializedName:"BaseResource",type:{name:"Composite",className:"BaseResource",modelProperties:{}}}}]); \ No newline at end of file diff --git a/msRestAzureBundle.min.js.map b/msRestAzureBundle.min.js.map new file mode 100644 index 000000000000..132d89610ce3 --- /dev/null +++ b/msRestAzureBundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["msRestAzureBundle.js"],"names":["msRestAzure","modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","value","Constants","LongRunningOperationStates","InProgress","Succeeded","Failed","Canceled","DEFAULT_LANGUAGE","msRestAzureVersion","default","msRest","azureServiceClient_1","AzureServiceClient","constants_1","cloudError_1","CloudErrorMapper","baseResource_1","BaseResourceMapper","__awaiter","this","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","result","done","then","apply","pollingState_1","LroStates","ServiceClient","[object Object]","credentials","options","super","acceptLanguage","generateClientRequestId","longRunningOperationRetryTimeout","rpRegistrationRetryTimeout","undefined","moduleVersion","addUserAgentInfo","err","request","self","initialResponse","sendRequest","finalResponse","getLongRunningOperationResult","statusCode","response","status","method","resultOfInitialRequest","initialRequestMethod","checkResponseStatusCodeFailed","pollingState","optionsOfInitialRequest","error","resourceUrl","url","some","delay","getTimeout","azureAsyncOperationHeaderLink","updateStateFromAzureAsyncOperationHeader","locationHeaderLink","updateStateFromLocationHeader","Error","updateStateFromGetResourceOperation","resource","getOperationResponse","getRestError","inPostOrDelete","getStatus","parsedResponse","bodyAsJson","bodyAsText","updateResponse","RestError","code","properties","provisioningState","operationUrl","httpRequest","replace","headers","customHeaders","headerName","operationResponse","responseBody","stripRequest","body","badResponse","message","PollingState","retryTimeout","length","JSON","parse","deserializationError","asyncOperationHeader","locationHeader","retryAfter","parseInt","HttpOperationResponse","valueOf","stringify","errMsg","errCode","required","serializedName","type","className","modelProperties","target","details","element"],"mappings":"AAAA,IAAIA,YACK,SAAUC,GAKT,SAASC,EAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,OAAOC,EAAiBD,GAAUE,QAGnC,IAAIC,EAASF,EAAiBD,IAC7BI,EAAGJ,EACHK,GAAG,EACHH,YAUD,OANAJ,EAAQE,GAAUM,KAAKH,EAAOD,QAASC,EAAQA,EAAOD,QAASH,GAG/DI,EAAOE,GAAI,EAGJF,EAAOD,QAvBf,IAAID,KA4DJ,OAhCAF,EAAoBQ,EAAIT,EAGxBC,EAAoBS,EAAIP,EAGxBF,EAAoBU,EAAI,SAASP,EAASQ,EAAMC,GAC3CZ,EAAoBa,EAAEV,EAASQ,IAClCG,OAAOC,eAAeZ,EAASQ,GAC9BK,cAAc,EACdC,YAAY,EACZC,IAAKN,KAMRZ,EAAoBmB,EAAI,SAASf,GAChC,IAAIQ,EAASR,GAAUA,EAAOgB,WAC7B,WAAwB,OAAOhB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAJ,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASQ,EAAQC,GAAY,OAAOR,OAAOS,UAAUC,eAAejB,KAAKc,EAAQC,IAGzGtB,EAAoByB,EAAI,GAGjBzB,EAAoBA,EAAoB0B,EAAI,GA9DpD,EAmEH,SAAUtB,EAAQD,EAASH,GAEjC,aAIAc,OAAOC,eAAeZ,EAAS,cAAgBwB,OAAO,IACtD,MAAMC,GAOFC,4BACIC,WAAY,aACZC,UAAW,YACXC,OAAQ,SACRC,SAAU,YAQdC,iBAAkB,QAMlBC,mBAAoB,SAExBhC,EAAQiC,QAAUR,GAKZ,SAAUxB,EAAQD,GAExBC,EAAOD,QAAUkC,QAIX,SAAUjC,EAAQD,EAASH,GAEjC,aAIAc,OAAOC,eAAeZ,EAAS,cAAgBwB,OAAO,IACtD,MAAMW,EAAuBtC,EAAoB,GACjDG,EAAQoC,mBAAqBD,EAAqBC,mBAClD,MAAMC,EAAcxC,EAAoB,GACxCG,EAAQyB,UAAYY,EAAYJ,QAChC,MAAMK,EAAezC,EAAoB,GACzCG,EAAQuC,iBAAmBD,EAAaC,iBACxC,MAAMC,EAAiB3C,EAAoB,GAC3CG,EAAQyC,mBAAqBD,EAAeC,oBAKtC,SAAUxC,EAAQD,EAASH,GAEjC,aAIA,IAAI6C,EAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAASC,EAAYC,EAAGC,GAC1E,OAAO,IAAKD,IAAMA,EAAIE,UAAU,SAAUC,EAASC,GAC/C,SAASC,EAAU3B,GAAS,IAAM4B,EAAKL,EAAUM,KAAK7B,IAAW,MAAO8B,GAAKJ,EAAOI,IACpF,SAASC,EAAS/B,GAAS,IAAM4B,EAAKL,EAAiB,MAAEvB,IAAW,MAAO8B,GAAKJ,EAAOI,IACvF,SAASF,EAAKI,GAAUA,EAAOC,KAAOR,EAAQO,EAAOhC,OAAS,IAAIsB,EAAE,SAAUG,GAAWA,EAAQO,EAAOhC,SAAWkC,KAAKP,EAAWI,GACnIH,GAAML,EAAYA,EAAUY,MAAMf,EAASC,QAAmBQ,WAGtE1C,OAAOC,eAAeZ,EAAS,cAAgBwB,OAAO,IACtD,MAAMU,EAASrC,EAAoB,GAC7BwC,EAAcxC,EAAoB,GAClC+D,EAAiB/D,EAAoB,GACrCgE,EAAYxB,EAAYJ,QAAQP,iCAUhCU,UAA2BF,EAAO4B,cACpCC,YAAYC,EAAaC,GACrBC,MAAMF,EAAaC,GACnBtB,KAAKwB,eAAiB9B,EAAYJ,QAAQF,iBAC1CY,KAAKyB,yBAA0B,EAC/BzB,KAAK0B,iCAAmC,GACxC1B,KAAK2B,2BAA6B,GAClC3B,KAAKwB,eAAiB9B,EAAYJ,QAAQF,iBAC1CY,KAAKyB,yBAA0B,EAC/BzB,KAAK0B,iCAAmC,GACnCJ,IACDA,MAC2B,OAA3BA,EAAQE,qBAAsDI,IAA3BN,EAAQE,iBAC3CxB,KAAKwB,eAAiBF,EAAQE,gBAEM,OAApCF,EAAQG,8BAAwEG,IAApCN,EAAQG,0BACpDzB,KAAKyB,wBAA0BH,EAAQG,yBAEM,OAA7CH,EAAQI,uCAA0FE,IAA7CN,EAAQI,mCAC7D1B,KAAK0B,iCAAmCJ,EAAQI,kCAET,OAAvCJ,EAAQK,iCAA8EC,IAAvCN,EAAQK,6BACvD3B,KAAK2B,2BAA6BL,EAAQK,4BAE9C,IACI,MACME,EAAgBnC,EAAYJ,QAAQD,mBAC1CW,KAAK8B,kCAAkCD,KAE3C,MAAOE,KAUXX,uBAAuBY,EAASV,GAC5B,OAAOvB,EAAUC,UAAM,OAAQ,EAAQ,YACnC,MAAMiC,EAAOjC,KACb,IAAIkC,EACJ,IACIA,QAAwBD,EAAKE,YAAYH,GAE7C,MAAOD,GACH,OAAO1B,QAAQE,OAAOwB,GAE1B,IAAIK,EACJ,IACIA,QAAsBH,EAAKI,8BAA8BH,EAAiBZ,GAE9E,MAAOS,GACH,OAAO1B,QAAQE,OAAOwB,GAE1B,OAAO1B,QAAQC,QAAQ8B,KAO/BhB,8BAA8Bc,GAC1B,MAAMI,EAAaJ,EAAgBK,SAASC,OACtCC,EAASP,EAAgBF,QAAQS,OACvC,OAAmB,MAAfH,GAAqC,MAAfA,IACN,MAAfA,GAAiC,QAAXG,KACP,MAAfH,GAAkC,WAAXG,GAAkC,SAAXA,GAavDrB,8BAA8BsB,EAAwBpB,GAClD,OAAOvB,EAAUC,UAAM,OAAQ,EAAQ,YACnC,MAAMiC,EAAOjC,KACP2C,EAAuBD,EAAuBV,QAAQS,OAC5D,GAAIR,EAAKW,8BAA8BF,GACnC,OAAOrC,QAAQE,yEACPmC,EAAuBH,SAASC,uBAAuBG,OAEnE,IAAIE,EACJ,KACIA,EAAe,IAAI5B,EAAe3B,QAAQoD,EAAwBT,EAAKP,mCAC1DoB,wBAA0BxB,EAE3C,MAAOyB,GACH,OAAO1C,QAAQE,OAAOwC,GAE1B,MAAMC,EAAcN,EAAuBV,QAAQiB,IACnD,OAAS/B,EAAUjC,UAAWiC,EAAUhC,OAAQgC,EAAU/B,UAAU+D,KAAMvC,GAAeA,IAAMkC,EAAaL,SAExG,SADMjD,EAAO4D,MAAMN,EAAaO,cAC5BP,EAAaQ,oCACPpB,EAAKqB,yCAAyCT,GAAc,QAEjE,GAAIA,EAAaU,yBACZtB,EAAKuB,8BAA8Bb,EAAsBE,OAE9D,CAAA,GAA6B,QAAzBF,EAIL,OAAOtC,QAAQE,OAAO,IAAIkD,MAAM,kEAH1BxB,EAAKyB,oCAAoCV,EAAaH,GAMpE,OAAIA,EAAaL,SAAWtB,EAAUjC,WAC7B4D,EAAaQ,+BAAkCR,EAAac,UACnC,QAAzBhB,GAA2D,UAAzBA,EAK5BtC,QAAQC,QAAQuC,EAAae,+BAJ9B3B,EAAKyB,oCAAoCV,EAAaH,GACrDxC,QAAQC,QAAQuC,EAAae,yBAOjCvD,QAAQE,OAAOsC,EAAagB,kBAS/CzC,yCAAyCyB,EAAciB,GAAiB,GACpE,OAAO/D,EAAUC,UAAM,OAAQ,EAAQ,YACnC,IAAIa,EACJ,IACIA,QAAeb,KAAK+D,UAAUlB,EAAaQ,8BAA+BR,EAAaC,yBAE3F,MAAOf,GACH,OAAO1B,QAAQE,OAAOwB,GAE1B,MAAMiC,EAAiBnD,EAAOoD,WAC9B,OAAKD,EAGIA,IAAmBA,EAAexB,OAChCnC,QAAQE,OAAO,IAAIkD,uBAAuB5C,EAAOqD,mFAE5DrB,EAAaL,OAASwB,EAAexB,OACrCK,EAAaE,MAAQiB,EAAejB,MACpCF,EAAasB,eAAetD,EAAO0B,UACnCM,EAAab,QAAUnB,EAAOmB,QAC9Ba,EAAac,cAAW/B,EACpBkC,IACAjB,EAAac,SAAW9C,EAAOoD,YAE5B5D,QAAQC,WAbJD,QAAQE,OAAO,IAAIkD,MAAM,wEAqB5CrC,8BAA8BqB,EAAQI,GAClC,OAAO9C,EAAUC,UAAM,OAAQ,EAAQ,YACnC,IAAIa,EACJ,IACIA,QAAeb,KAAK+D,UAAUlB,EAAaU,mBAAoBV,EAAaC,yBAEhF,MAAOf,GACH,OAAO1B,QAAQE,OAAOwB,GAE1B,MAAMiC,EAAiBnD,EAAOoD,WAC9BpB,EAAasB,eAAetD,EAAO0B,UACnCM,EAAab,QAAUnB,EAAOmB,QAC9B,MAAMM,EAAazB,EAAO0B,SAASC,OACnC,GAAmB,MAAfF,EACAO,EAAaL,OAAStB,EAAUlC,eAE/B,CAAA,GAAmB,MAAfsD,IACW,MAAfA,GAAkC,QAAXG,GAA+B,UAAXA,KAC5B,MAAfH,GAAkC,WAAXG,GAAkC,SAAXA,GAQ/C,OAAOpC,QAAQE,OAAO,IAAIkD,uCAAuCnB,qDAC9BO,EAAaU,sCARhDV,EAAaL,OAAStB,EAAUjC,UAChC4D,EAAac,SAAWK,EAExBnB,EAAaE,MAAQ,IAAIxD,EAAO6E,wDAAwDvB,EAAaL,YACrGK,EAAaE,MAAMsB,KAAOxB,EAAaL,UAanDpB,oCAAoC4B,EAAaH,GAC7C,OAAO9C,EAAUC,UAAM,OAAQ,EAAQ,YACnC,IAAIa,EACJ,IACIA,QAAeb,KAAK+D,UAAUf,EAAaH,EAAaC,yBAE5D,MAAOf,GACH,OAAO1B,QAAQE,OAAOwB,GAE1B,IAAKlB,EAAOoD,WACR,OAAO5D,QAAQE,OAAO,IAAIkD,MAAM,sEAEpC,MAAMO,EAAiBnD,EAAOoD,WAW9B,OAVApB,EAAaL,OAAStB,EAAUjC,UAC5B+E,GAAkBA,EAAeM,YAAcN,EAAeM,WAAWC,oBACzE1B,EAAaL,OAASwB,EAAeM,WAAWC,mBAEpD1B,EAAasB,eAAetD,EAAO0B,UACnCM,EAAab,QAAUnB,EAAOmB,QAC9Ba,EAAac,SAAWK,EAExBnB,EAAaE,MAAQ,IAAIxD,EAAO6E,wDAAwDvB,EAAaL,YACrGK,EAAaE,MAAMsB,KAAOxB,EAAaL,OAChCnC,QAAQC,YAQvBc,UAAUoD,EAAclD,GACpB,OAAOvB,EAAUC,UAAM,OAAQ,EAAQ,YACnC,MAAMiC,EAAOjC,KAIPyE,GACFhC,OAAQ,MACRQ,IAJeuB,EAAaE,QAAQ,IAAK,OAKzCC,YAEJ,GAAIrD,EAAS,CACT,MAAMsD,EAAgBtD,EAAQsD,cAC9B,IAAK,MAAMC,KAAcD,EACjBA,EAAclG,eAAemG,KAC7BJ,EAAYE,QAAQE,GAAcD,EAAcC,IAI5D,IAAIC,EACJ,IACIA,QAA0B7C,EAAKE,YAAYsC,GAE/C,MAAO1C,GACH,OAAO1B,QAAQE,OAAOwB,GAE1B,MAAMO,EAAawC,EAAkBvC,SAASC,OACxCuC,EAAeD,EAAkBb,WACvC,GAAmB,MAAf3B,GAAqC,MAAfA,GAAqC,MAAfA,GAAqC,MAAfA,EAAoB,CACtF,MAAMS,EAAQ,IAAIxD,EAAO6E,qDAAqDU,EAAkBZ,8DAEhGnB,EAAMT,WAAaA,EACnBS,EAAMf,QAAUzC,EAAOyF,aAAaF,EAAkB9C,SACtDe,EAAMR,SAAWuC,EAAkBvC,SACnC,IACIQ,EAAMkC,KAAOF,EAEjB,MAAOG,GACHnC,EAAMoC,oBAAsBD,uDAAiEJ,EAAkBZ,eAC/GnB,EAAMkC,KAAOH,EAAkBZ,WAEnC,OAAO7D,QAAQE,OAAOwC,GAE1B,OAAO1C,QAAQC,QAAQwE,MAInCzH,EAAQoC,mBAAqBA,GAKvB,SAAUnC,EAAQD,EAASH,GAEjC,aAIAc,OAAOC,eAAeZ,EAAS,cAAgBwB,OAAO,IACtD,MAAMa,EAAcxC,EAAoB,GAClCqC,EAASrC,EAAoB,GAC7BgE,EAAYxB,EAAYJ,QAAQP,iCAKhCqG,EACFhE,YAAYsB,EAAwB2C,EAAe,IAI/CrF,KAAKqF,aAAe,GACpBrF,KAAK0C,uBAAyBA,EAC9B1C,KAAKqF,aAAeA,EACpBrF,KAAKmE,eAAezB,EAAuBH,UAC3CvC,KAAKgC,QAAUU,EAAuBV,QAEtC,IACQU,EAAuBwB,YAAcxB,EAAuBwB,WAAWoB,OAAS,EAChFtF,KAAK2D,SAAW4B,KAAKC,MAAM9C,EAAuBwB,YAGlDlE,KAAK2D,SAAWjB,EAAuBuB,WAG/C,MAAOlB,GACH,MAAM0C,EAAuB,IAAIlG,EAAO6E,oBAAoBrB,sHACAL,EAAuBwB,eAGnF,MAFAuB,EAAqBzD,QAAUU,EAAuBV,QACtDyD,EAAqBlD,SAAWG,EAAuBH,SACjDkD,EAEV,OAAQzF,KAAKuC,SAASC,QAClB,KAAK,IACDxC,KAAKwC,OAAStB,EAAUlC,WACxB,MACJ,KAAK,IACDgB,KAAKwC,OAAStB,EAAUjC,UACxB,MACJ,KAAK,IACGe,KAAK2D,UAAY3D,KAAK2D,SAASW,YAActE,KAAK2D,SAASW,WAAWC,kBACtEvE,KAAKwC,OAASxC,KAAK2D,SAASW,WAAWC,kBAGvCvE,KAAKwC,OAAStB,EAAUlC,WAE5B,MACJ,KAAK,IACGgB,KAAK2D,UAAY3D,KAAK2D,SAASW,YAActE,KAAK2D,SAASW,WAAWC,kBACtEvE,KAAKwC,OAASxC,KAAK2D,SAASW,WAAWC,kBAGvCvE,KAAKwC,OAAStB,EAAUjC,UAE5B,MACJ,QACIe,KAAKwC,OAAStB,EAAUhC,QAQpCkC,eAAemB,GAEX,GADAvC,KAAKuC,SAAWA,EACZA,GAAYA,EAASoC,QAAS,CAC9B,MAAMe,EAAuBnD,EAASoC,QAAQvG,IAAI,wBAC5CuH,EAAiBpD,EAASoC,QAAQvG,IAAI,YACxCsH,IACA1F,KAAKqD,8BAAgCqC,GAErCC,IACA3F,KAAKuD,mBAAqBoC,IAQtCvE,aACI,GAAIpB,KAAKqF,cAAsC,IAAtBrF,KAAKqF,aAC1B,OAA2B,IAApBrF,KAAKqF,aAEhB,GAAIrF,KAAKuC,SAAU,CACf,MAAMqD,EAAa5F,KAAKuC,SAASoC,QAAQvG,IAAI,eAC7C,GAAIwH,EACA,OAA8B,IAAvBC,SAASD,GAGxB,OAAO,IAMXxE,uBACI,MAAMP,EAAS,IAAItB,EAAOuG,sBAAsB9F,KAAKgC,QAAShC,KAAKuC,SAAUvC,KAAKuC,SAAS0C,MAS3F,OARIjF,KAAK2D,UAA+C,iBAA5B3D,KAAK2D,SAASoC,WACtClF,EAAOqD,WAAalE,KAAK2D,SACzB9C,EAAOoD,WAAasB,KAAKC,MAAMxF,KAAK2D,YAGpC9C,EAAOoD,WAAajE,KAAK2D,SACzB9C,EAAOqD,WAAaqB,KAAKS,UAAUhG,KAAK2D,WAErC9C,EAOXO,aAAaW,GACT,IAAIkE,EACAC,OAAUtE,EACd,MAAMmB,EAAQ,IAAIxD,EAAO6E,UAAU,IACnCrB,EAAMf,QAAUzC,EAAOyF,aAAahF,KAAKgC,SACzCe,EAAMR,SAAWvC,KAAKuC,SACtB,MAAMyB,EAAiBhE,KAAK2D,SAmB5B,OAjBIsC,EADAlE,GAAOA,EAAIoD,sDAC4CpD,EAAIoD,2DAGHnF,KAAKwC,WAE7DwB,IACIA,EAAejB,OAASiB,EAAejB,MAAMoC,UAC7Cc,gDAAuDjC,EAAejB,MAAMoC,aAE5EnB,EAAejB,OAASiB,EAAejB,MAAMsB,OAC7C6B,EAAUlC,EAAejB,MAAMsB,OAGvCtB,EAAMoC,QAAUc,EACZC,IACAnD,EAAMsB,KAAO6B,GACjBnD,EAAMkC,KAAOjB,EACNjB,GAGf1F,EAAQiC,QAAU8F,GAKZ,SAAU9H,EAAQD,EAASH,GAEjC,aAIAc,OAAOC,eAAeZ,EAAS,cAAgBwB,OAAO,IACtDxB,EAAQuC,kBACJuG,UAAU,EACVC,eAAgB,aAChBC,MACIxI,KAAM,YACNyI,UAAW,aACXC,iBACIlC,MACI8B,UAAU,EACVC,eAAgB,OAChBC,MACIxI,KAAM,WAGdsH,SACIgB,UAAU,EACVC,eAAgB,UAChBC,MACIxI,KAAM,WAGd2I,QACIL,UAAU,EACVC,eAAgB,SAChBC,MACIxI,KAAM,WAGd4I,SACIN,UAAU,EACVC,eAAgB,UAChBC,MACIxI,KAAM,WACN6I,SACIP,UAAU,EACVC,eAAgB,wBAChBC,MACIxI,KAAM,YACNyI,UAAW,qBAYjC,SAAUhJ,EAAQD,EAASH,GAEjC,aAIAc,OAAOC,eAAeZ,EAAS,cAAgBwB,OAAO,IACtDxB,EAAQyC,oBACJqG,UAAU,EACVC,eAAgB,eAChBC,MACIxI,KAAM,YACNyI,UAAW,eACXC"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000000..6285b1b20e4f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3837 @@ +{ + "name": "ms-rest-azure-js", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/form-data": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.0.tgz", + "integrity": "sha512-vm5OGsKc61Sx/GTRMQ9d0H0PYCDebT78/bdIBPCoPEHdgp0etaH1RzMmkDygymUmyXTj3rdWQn0sRUpYKZzljA==", + "requires": { + "@types/node": "8.0.28" + } + }, + "@types/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@types/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==", + "requires": { + "@types/node": "8.0.28" + } + }, + "@types/mocha": { + "version": "2.2.43", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.43.tgz", + "integrity": "sha512-xNlAmH+lRJdUMXClMTI9Y0pRqIojdxfm7DHsIxoB2iTzu3fnPmSMEN8SsSx0cdwV36d02PWCWaDUoZPDSln+xw==", + "dev": true + }, + "@types/node": { + "version": "8.0.28", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.28.tgz", + "integrity": "sha512-HupkFXEv3O3KSzcr3Ylfajg0kaerBg1DyaZzRBBQfrU3NN1mTBRE7sCveqHwXLS5Yrjvww8qFzkzYQQakG9FuQ==" + }, + "@types/node-fetch": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-1.6.7.tgz", + "integrity": "sha1-UhB46PDGmhWOUCIAWsqS0mIPbVc=", + "requires": { + "@types/node": "8.0.28" + } + }, + "@types/should": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@types/should/-/should-8.3.0.tgz", + "integrity": "sha1-4rRgJDaF2+N3GC857zjTf00Veto=", + "dev": true + }, + "@types/uuid": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.2.tgz", + "integrity": "sha512-fXrYo81BZgbz6KhHU3+dNUSdca35FwbfTMQvSnIIX6qOCsymSmFAjPDSfr4Q/Pt9abjt04kBi4+7FinVPdyEpg==", + "requires": { + "@types/node": "8.0.28" + } + }, + "acorn": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", + "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "dev": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "ajv": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz", + "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "json-schema-traverse": "0.3.1", + "json-stable-stringify": "1.0.1" + } + }, + "ajv-keywords": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.0.tgz", + "integrity": "sha1-opbhf3v658HOT34N5T0pyzIWLfA=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "asn1.js": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", + "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, + "async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base64-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", + "dev": true + }, + "big.js": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", + "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=", + "dev": true + }, + "binary-extensions": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", + "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "browserify-aes": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.8.tgz", + "integrity": "sha512-WYCMOT/PtGTlpOKFht0YJFYcPy6pLCR98CtWfzK13zoynLlBMvAdEMSRGmgnJCw2M2j/5qxBkinZQFobieM8dQ==", + "dev": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "dev": true, + "requires": { + "browserify-aes": "1.0.8", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.5" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "dev": true, + "requires": { + "pako": "0.2.9" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "1.2.1", + "ieee754": "1.1.8", + "isarray": "1.0.0" + } + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", + "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.4.0" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "supports-color": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", + "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.2", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "color-convert": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.8" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "dev": true, + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.8" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "crypto-browserify": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", + "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", + "dev": true, + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5" + } + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.30" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "detect-node": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=" + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.0", + "randombytes": "2.0.5" + } + }, + "domain-browser": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "0.4.19" + } + }, + "enhanced-resolve": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" + } + }, + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "dev": true, + "requires": { + "prr": "0.0.0" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es5-ext": { + "version": "0.10.30", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.30.tgz", + "integrity": "sha1-cUGhaDZpfbq/qq7uQUlc4p9SyTk=", + "dev": true, + "requires": { + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } + }, + "es6-denodeify": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-denodeify/-/es6-denodeify-0.1.5.tgz", + "integrity": "sha1-MdTV/pxVA+ElRgQ5MQ4WoqPznB8=" + }, + "es6-iterator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", + "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30" + } + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true + }, + "fetch-cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.6.0.tgz", + "integrity": "sha1-T+xOQIzAAH9sBOVTYYr0s97jf2k=", + "requires": { + "es6-denodeify": "0.1.5", + "tough-cookie": "2.3.2" + } + }, + "fetch-ponyfill": { + "version": "github:amarzavery/fetch-ponyfill#40a67a8e63587bb24f9b3cfbc18eab60d8b38e59", + "requires": { + "fetch-cookie": "0.6.0", + "node-fetch": "1.7.3" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", + "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.7.0", + "node-pre-gyp": "0.6.36" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "aproba": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", + "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", + "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.36", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz", + "integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=", + "dev": true, + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", + "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", + "dev": true + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "optional": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", + "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + }, + "string_decoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", + "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", + "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", + "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "https-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "interpret": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", + "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.10.0" + } + }, + "is-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._basecreate": "3.0.3", + "lodash._isiterateecall": "3.0.9" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.4", + "readable-stream": "2.3.3" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "miller-rabin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", + "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "requires": { + "mime-db": "1.30.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", + "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "he": "1.1.1", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + } + }, + "moment": { + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", + "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "ms-rest-js": { + "version": "github:azure/ms-rest-js#cda898bb3a1531889e6578680d1f68418906df6c", + "requires": { + "@types/form-data": "2.2.0", + "@types/is-stream": "1.1.0", + "@types/node": "8.0.28", + "@types/node-fetch": "1.6.7", + "@types/uuid": "3.4.2", + "detect-node": "2.0.3", + "fetch-cookie": "0.6.0", + "fetch-ponyfill": "github:amarzavery/fetch-ponyfill#40a67a8e63587bb24f9b3cfbc18eab60d8b38e59", + "form-data": "2.3.1", + "is-buffer": "1.1.5", + "is-stream": "1.1.0", + "moment": "2.18.1", + "url-parse": "1.1.9", + "uuid": "3.1.0" + } + }, + "nan": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.7.0.tgz", + "integrity": "sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=", + "dev": true, + "optional": true + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } + }, + "node-libs-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", + "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", + "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.1.4", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.11.1", + "domain-browser": "1.1.7", + "events": "1.1.1", + "https-browserify": "0.0.1", + "os-browserify": "0.2.1", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.3", + "stream-browserify": "2.0.1", + "stream-http": "2.7.2", + "string_decoder": "0.10.31", + "timers-browserify": "2.0.4", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-browserify": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", + "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "dev": true, + "requires": { + "asn1.js": "4.9.1", + "browserify-aes": "1.0.8", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "dev": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.8" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=" + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "randombytes": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "resolve": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", + "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "0.1.4" + } + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true, + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "sha.js": { + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", + "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "should": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/should/-/should-5.2.0.tgz", + "integrity": "sha1-mkUZtEe4te7c6e7ZavNCDUUaVAs=", + "dev": true, + "requires": { + "should-equal": "0.3.1", + "should-format": "0.0.7", + "should-type": "0.0.4" + } + }, + "should-equal": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-0.3.1.tgz", + "integrity": "sha1-vY6pemdI45+tR2o75v1y68LnK/A=", + "dev": true, + "requires": { + "should-type": "0.0.4" + } + }, + "should-format": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/should-format/-/should-format-0.0.7.tgz", + "integrity": "sha1-Hi74a9kdqcLgQSM1tWq6vZov3hI=", + "dev": true, + "requires": { + "should-type": "0.0.4" + } + }, + "should-type": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/should-type/-/should-type-0.0.4.tgz", + "integrity": "sha1-ATKgVBemEmhmQmrPEW8e1WI6XNA=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "stream-http": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", + "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", + "dev": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + }, + "tapable": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", + "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", + "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", + "dev": true, + "requires": { + "setimmediate": "1.0.5" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "requires": { + "punycode": "1.4.1" + } + }, + "ts-loader": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-2.3.7.tgz", + "integrity": "sha512-8t3bu2FcEkXb+D4L+Cn8qiK2E2C6Ms4/GQChvz6IMbVurcFHLXrhW4EMtfaol1a1ASQACZGDUGit4NHnX9g7hQ==", + "dev": true, + "requires": { + "chalk": "2.1.0", + "enhanced-resolve": "3.4.1", + "loader-utils": "1.1.0", + "semver": "5.4.1" + } + }, + "tslib": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz", + "integrity": "sha1-vIAEFkaRkjp5/oN4u+s9ogF1OOw=", + "dev": true + }, + "tslint": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.7.0.tgz", + "integrity": "sha1-wl4NDJL6EgHCvDDoROCOaCtPNVI=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "colors": "1.1.2", + "commander": "2.9.0", + "diff": "3.2.0", + "glob": "7.1.1", + "minimatch": "3.0.4", + "resolve": "1.4.0", + "semver": "5.4.1", + "tslib": "1.7.1", + "tsutils": "2.8.2" + } + }, + "tsutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.8.2.tgz", + "integrity": "sha1-LBSGukMSYIRbCsb5Aq/Z1wio6mo=", + "dev": true, + "requires": { + "tslib": "1.7.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "typescript": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.5.2.tgz", + "integrity": "sha1-A4qV99m7tCCxvzW6MdTFwd0//jQ=", + "dev": true + }, + "uglify-es": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.1.0.tgz", + "integrity": "sha512-368gRJ/ww3e9c8eJLAFM6sco4ndsg7d2MskNusejep0kvd7VCqNj/q/zrDG/1KwS+EWfTxJKTj7UyLN+zz+gyg==", + "dev": true, + "requires": { + "commander": "2.11.0", + "source-map": "0.5.7" + }, + "dependencies": { + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.0.1" + }, + "dependencies": { + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + } + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.1.9.tgz", + "integrity": "sha1-xn8dd11R8KGJEd17P/rSe7nlvRk=", + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "watchpack": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", + "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "dev": true, + "requires": { + "async": "2.5.0", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + } + }, + "webpack": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.5.6.tgz", + "integrity": "sha512-sXnxfx6KoZVrFAGLjdhCCwDtDwkYMfwm8mJjkQv3thr5pjTlbxopVlr/kJwc9Bz317gL+gNjvz++ir9TgG1MDg==", + "dev": true, + "requires": { + "acorn": "5.1.2", + "acorn-dynamic-import": "2.0.2", + "ajv": "5.2.2", + "ajv-keywords": "2.1.0", + "async": "2.5.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.0.4", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.0.0", + "source-map": "0.5.7", + "supports-color": "4.4.0", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.4.0", + "webpack-sources": "1.0.1", + "yargs": "8.0.2" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "supports-color": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", + "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "webpack-sources": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", + "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==", + "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.5.7" + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + } + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000000..f73cfb17a92e --- /dev/null +++ b/package.json @@ -0,0 +1,54 @@ +{ + "name": "ms-rest-azure-js", + "author": { + "name": "Microsoft Corporation", + "email": "azsdkteam@microsoft.com", + "url": "https://github.com/Azure/azure-sdk-for-node" + }, + "version": "0.1.0", + "description": "Client Runtime for Node.js client libraries generated using AutoRest", + "tags": [ + "node", + "microsoft", + "autorest", + "clientruntime" + ], + "keywords": [ + "node", + "microsoft", + "autorest", + "clientruntime" + ], + "main": "./dist/lib/msRestAzure.js", + "types": "./typings/lib/msRestAzure.d.ts", + "license": "MIT", + "dependencies": { + "ms-rest-js": "azure/ms-rest-js#master" + }, + "devDependencies": { + "@types/mocha": "^2.2.40", + "@types/should": "^8.1.30", + "mocha": "^3.2.0", + "should": "5.2.0", + "ts-loader": "^2.3.7", + "tslint": "^5.7.0", + "typescript": "^2.5.2", + "webpack": "^3.5.6", + "uglify-es": "^3.0.28" + }, + "homepage": "https://github.com/Azure/azure-sdk-for-node/runtime/ms-rest", + "repository": { + "type": "git", + "url": "git@github.com:Azure/azure-sdk-for-node.git" + }, + "bugs": { + "url": "http://github.com/Azure/azure-sdk-for-node/issues" + }, + "scripts": { + "tsc": "tsc -p tsconfig.json", + "test": "npm install && npm -s run-script unit", + "unit": "mocha -t 50000 dist/test", + "build": "npm -s run-script tsc && webpack && node node_modules/uglify-es/bin/uglifyjs --source-map -c -m -o msRestAzureBundle.min.js msRestAzureBundle.js", + "tsLint": "tslint -p . -c tslint.json --exclude test/**/*.ts" + } +} diff --git a/samples/index.html b/samples/index.html new file mode 100644 index 000000000000..8b2bb3a6e2cc --- /dev/null +++ b/samples/index.html @@ -0,0 +1,26 @@ + + + + + My Todos + + + + + + + + + + \ No newline at end of file diff --git a/samples/node-sample.js b/samples/node-sample.js new file mode 100644 index 000000000000..e7de65e5342f --- /dev/null +++ b/samples/node-sample.js @@ -0,0 +1,73 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const msRest = require("ms-rest-js"); +const msRestAzure = require("../lib/msRestAzure"); +const clientOptions = { + filters: [new msRest.LogFilter()] +}; +const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"] || "00977cdb-163f-435f-9c32-39ec8ae61f4d"; +const resourceGroupName = "foozap002"; +const accountName = "foozy894"; +const location = "westus"; +const apiVersion = "2017-06-01"; +// An easy way to get the token +// 1. Go to this test drive link https://azure.github.io/projects/apis and authenticate by clicking on Authorize. Check the user impersoantion checkbox in the popup. +// 1.1 select a subscription of your choice +// 1.2 select the storage-2015-06-15 option from the first drop down list +// 1.3 expand the url to list storage accounts in a subscription +// 1.4 click on try it out button. +// 1.5 in the curl tab you will see the actual curl request that has the bearer token in it +// 1.6 copy paste that token here. That token is valid for 1 hour +const token = "token"; +const creds = new msRest.TokenCredentials(token); +const client = new msRestAzure.AzureServiceClient(creds, clientOptions); +const req = { + url: `https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.Storage/storageAccounts/${accountName}?api-version=${apiVersion}`, + method: "PUT", + body: { + location: location, + sku: { + name: "Standard_GRS" + }, + kind: "Storage", + tags: { + key1: "value1", + key2: "value2" + } + } +}; +function execute(req) { + return __awaiter(this, void 0, void 0, function* () { + let res; + try { + res = yield client.sendLongRunningRequest(req); + console.dir(res); + document.write(JSON.stringify(res)); + return Promise.resolve(res); + } + catch (err) { + return Promise.reject(err); + } + }); +} +console.log("Hi There!!"); +// client.sendLongRunningRequest(req).then((res: msRest.HttpOperationResponse) => { +// console.log(res.body as string); +// }).catch((err) => { +// console.dir(err); +// }); +execute(req).catch((err) => { console.dir(err); }); +for (var i = 1; i <= 20; i++) { + console.log("Hello World " + i); + setTimeout(function (x) { return function () { console.log(x); }; }(i), 1000 * i); + // 1 2 3 4 5 +} +//# sourceMappingURL=sample.js.map \ No newline at end of file diff --git a/samples/node-sample.js.map b/samples/node-sample.js.map new file mode 100644 index 000000000000..29d78d460cc2 --- /dev/null +++ b/samples/node-sample.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sample.js","sourceRoot":"","sources":["../../samples/sample.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;AAEb,qCAAqC;AACrC,kDAAkD;AAClD,MAAM,aAAa,GAA0C;IAC3D,OAAO,EAAE,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;CAClC,CAAC;AAEF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,sCAAsC,CAAC;AACtG,MAAM,iBAAiB,GAAG,WAAW,CAAC;AACtC,MAAM,WAAW,GAAG,UAAU,CAAC;AAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAC1B,MAAM,UAAU,GAAG,YAAY,CAAC;AAChC,+BAA+B;AAC/B,qKAAqK;AACrK,2CAA2C;AAC3C,yEAAyE;AACzE,gEAAgE;AAChE,kCAAkC;AAClC,2FAA2F;AAC3F,iEAAiE;AACjE,MAAM,KAAK,GAAG,OAAO,CAAC;AACtB,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,kBAAkB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AACxE,MAAM,GAAG,GAAiC;IACxC,GAAG,EAAE,8CAA8C,cAAc,mBAAmB,iBAAiB,gDAAgD,WAAW,gBAAgB,UAAU,EAAE;IAC5L,MAAM,EAAE,KAAK;IACb,IAAI,EAAE;QACJ,QAAQ,EAAE,QAAQ;QAClB,GAAG,EAAE;YACH,IAAI,EAAE,cAAc;SACrB;QACD,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;SACf;KACF;CACF,CAAC;AAEF,iBAAuB,GAAiC;;QACtD,IAAI,GAAiC,CAAC;QACtC,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;QAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;CAAA;AACD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAC1B,mFAAmF;AACnF,qCAAqC;AACrC,sBAAsB;AACtB,sBAAsB;AACtB,MAAM;AACN,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;IAChC,UAAU,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,cAAc,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;IAClF,YAAY;AACd,CAAC"} \ No newline at end of file diff --git a/samples/node-sample.ts b/samples/node-sample.ts new file mode 100644 index 000000000000..1f7b420d8536 --- /dev/null +++ b/samples/node-sample.ts @@ -0,0 +1,64 @@ +"use strict"; + +import * as msRest from "ms-rest-js"; +import * as msRestAzure from "../lib/msRestAzure"; +const clientOptions: msRestAzure.AzureServiceClientOptions = { + filters: [new msRest.LogFilter()] +}; + +const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"] || "00977cdb-163f-435f-9c32-39ec8ae61f4d"; +const resourceGroupName = "foozap002"; +const accountName = "foozy894"; +const location = "westus"; +const apiVersion = "2017-06-01"; +// An easy way to get the token +// 1. Go to this test drive link https://azure.github.io/projects/apis and authenticate by clicking on Authorize. Check the user impersoantion checkbox in the popup. +// 1.1 select a subscription of your choice +// 1.2 select the storage-2015-06-15 option from the first drop down list +// 1.3 expand the url to list storage accounts in a subscription +// 1.4 click on try it out button. +// 1.5 in the curl tab you will see the actual curl request that has the bearer token in it +// 1.6 copy paste that token here. That token is valid for 1 hour +const token = "token"; +const creds = new msRest.TokenCredentials(token); +const client = new msRestAzure.AzureServiceClient(creds, clientOptions); +const req: msRest.RequestPrepareOptions = { + url: `https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.Storage/storageAccounts/${accountName}?api-version=${apiVersion}`, + method: "PUT", + body: { + location: location, + sku: { + name: "Standard_GRS" + }, + kind: "Storage", + tags: { + key1: "value1", + key2: "value2" + } + } +}; + +async function execute(req: msRest.RequestPrepareOptions): Promise { + let res: msRest.HttpOperationResponse; + try { + res = await client.sendLongRunningRequest(req); + console.dir(res); + document.write(JSON.stringify(res)); + return Promise.resolve(res); + } catch (err) { + return Promise.reject(err); + } +} +console.log("Hi There!!"); +// client.sendLongRunningRequest(req).then((res: msRest.HttpOperationResponse) => { +// console.log(res.body as string); +// }).catch((err) => { +// console.dir(err); +// }); +execute(req).catch((err) => { console.dir(err); }); + +for (var i = 1; i <= 20; i++) { + console.log("Hello World " + i); + setTimeout(function (x) { return function () { console.log(x); }; }(i), 1000 * i); + // 1 2 3 4 5 +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000000..1e09e397a2ea --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,40 @@ +{ + "compilerOptions": { + "alwaysStrict": true, + "module": "commonjs", + "noImplicitAny": true, + "preserveConstEnums": true, + "sourceMap": true, + "newLine": "LF", + "target": "es6", + "moduleResolution": "node", + "noImplicitReturns": true, + "noImplicitThis": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "outDir": "dist/lib", + "declaration": true, + "declarationDir": "typings/lib", + "allowJs": false, + "strict": true, + "strictNullChecks": true, + "lib": [ + "dom", + "dom.iterable", + "es5", + "es6", + "es7", + "esnext", + "esnext.asynciterable", + "es2015.iterable" + ] + }, + "compileOnSave": true, + "exclude": [ + "node_modules" + ], + "include": [ + "./lib/**/*.ts", + "./test/**/*.ts" + ] +} \ No newline at end of file diff --git a/tslint.json b/tslint.json new file mode 100644 index 000000000000..f8d5f33193a3 --- /dev/null +++ b/tslint.json @@ -0,0 +1,55 @@ +{ + "rules": { + "class-name": true, + "comment-format": [true, + "check-space" + ], + "indent": [true, + "spaces" + ], + "linebreak-style": [true, "LF"], + "one-line": [true, + "check-open-brace", + "check-whitespace" + ], + "no-var-keyword": true, + "quotemark": [true, + "double", + "avoid-escape" + ], + "semicolon": [true, "always", "ignore-bound-class-methods"], + "whitespace": [true, + "check-branch", + "check-decl", + "check-operator", + "check-module", + "check-separator", + "check-type" + ], + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + }, + { + "call-signature": "onespace", + "index-signature": "onespace", + "parameter": "onespace", + "property-declaration": "onespace", + "variable-declaration": "onespace" + } + ], + "no-internal-module": true, + "no-trailing-whitespace": true, + "no-inferrable-types": [true], + "no-null-keyword": true, + "prefer-const": true, + "no-switch-case-fall-through": true, + "triple-equals": true, + "jsdoc-format": true + } +} diff --git a/typings/lib/azureServiceClient.d.ts b/typings/lib/azureServiceClient.d.ts new file mode 100644 index 000000000000..d3c23855a8b6 --- /dev/null +++ b/typings/lib/azureServiceClient.d.ts @@ -0,0 +1,84 @@ +import * as msRest from "ms-rest-js"; +/** + * Options to be provided while creating the client. + */ +export interface AzureServiceClientOptions extends msRest.ServiceClientOptions { + /** + * @property {string} [options.acceptLanguage] - Gets or sets the preferred language for the response. Default value is: "en-US". + */ + acceptLanguage?: string; + /** + * @property {boolean} [options.generateClientRequestId] - When set to true a unique x-ms-client-request-id value + * is generated and included in each request. Default is true. + */ + generateClientRequestId?: boolean; + /** + * @property {number} [options.longRunningOperationRetryTimeout] - Gets or sets the retry timeout in seconds for + * Long Running Operations. Default value is 30. + */ + longRunningOperationRetryTimeout?: number; + /** + * @property {number} [rpRegistrationRetryTimeout] - Gets or sets the retry timeout in seconds for + * AutomaticRPRegistration. Default value is 30 seconds. + */ + rpRegistrationRetryTimeout?: number; +} +/** + * @class + * Initializes a new instance of the AzureServiceClient class. + * @constructor + * + * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or + * UserTokenCredentials object used for authentication. + * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient + */ +export declare class AzureServiceClient extends msRest.ServiceClient { + acceptLanguage: string; + generateClientRequestId: boolean; + longRunningOperationRetryTimeout: number; + rpRegistrationRetryTimeout: number; + constructor(credentials: msRest.ServiceClientCredentials, options?: AzureServiceClientOptions); + /** + * Provides a mechanism to make a request that will poll and provide the final result. + * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object + * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request + * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody. + */ + sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise; + /** + * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request. + * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation. + */ + private checkResponseStatusCodeFailed(initialResponse); + /** + * Poll Azure long running PUT, PATCH, POST or DELETE operations. + * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation. + * @param {msRest.RequestOptionsBase} [options] - custom request options. + * @returns {Promise} result - The final response after polling is complete. + */ + getLongRunningOperationResult(resultOfInitialRequest: msRest.HttpOperationResponse, options?: msRest.RequestOptionsBase): Promise; + /** + * Retrieve operation status by polling from "azure-asyncoperation" header. + * @param {PollingState} pollingState - The object to persist current operation state. + * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation. + */ + private updateStateFromAzureAsyncOperationHeader(pollingState, inPostOrDelete?); + /** + * Retrieve PUT operation status by polling from "location" header. + * @param {string} method - The HTTP method. + * @param {PollingState} pollingState - The object to persist current operation state. + */ + private updateStateFromLocationHeader(method, pollingState); + /** + * Polling for resource status. + * @param {string} resourceUrl - The url of resource. + * @param {PollingState} pollingState - The object to persist current operation state. + */ + private updateStateFromGetResourceOperation(resourceUrl, pollingState); + /** + * Retrieves operation status by querying the operation URL. + * @param {string} operationUrl - URL used to poll operation result. + * @param {object} options - Options that can be set on the request object + */ + private getStatus(operationUrl, options?); +} diff --git a/typings/lib/baseResource.d.ts b/typings/lib/baseResource.d.ts new file mode 100644 index 000000000000..4a8f7e43b5f0 --- /dev/null +++ b/typings/lib/baseResource.d.ts @@ -0,0 +1,15 @@ +/** + * @class + * An empty interface. + */ +export interface BaseResource { +} +export declare const BaseResourceMapper: { + required: boolean; + serializedName: string; + type: { + name: string; + className: string; + modelProperties: {}; + }; +}; diff --git a/typings/lib/cloudError.d.ts b/typings/lib/cloudError.d.ts new file mode 100644 index 000000000000..4c84a0b5df1e --- /dev/null +++ b/typings/lib/cloudError.d.ts @@ -0,0 +1,68 @@ +/** + * @class + * Provides additional information about an http error response returned from a Microsoft Azure service. + */ +export interface CloudError extends Error { + /** + * @property {string} code The error code parsed from the body of the http error response. + */ + code: string; + /** + * @property {string} message The error message parsed from the body of the http error response. + */ + message: string; + /** + * @property {string} [target] The target of the error. + */ + target?: string; + /** + * @property {Array} [details] An array of CloudError objects specifying the details. + */ + details?: Array; +} +export declare const CloudErrorMapper: { + required: boolean; + serializedName: string; + type: { + name: string; + className: string; + modelProperties: { + code: { + required: boolean; + serializedName: string; + type: { + name: string; + }; + }; + message: { + required: boolean; + serializedName: string; + type: { + name: string; + }; + }; + target: { + required: boolean; + serializedName: string; + type: { + name: string; + }; + }; + details: { + required: boolean; + serializedName: string; + type: { + name: string; + element: { + required: boolean; + serializedName: string; + type: { + name: string; + className: string; + }; + }; + }; + }; + }; + }; +}; diff --git a/typings/lib/msRestAzure.d.ts b/typings/lib/msRestAzure.d.ts new file mode 100644 index 000000000000..18092ef64c13 --- /dev/null +++ b/typings/lib/msRestAzure.d.ts @@ -0,0 +1,5 @@ +import { AzureServiceClientOptions, AzureServiceClient } from "./azureServiceClient"; +import Constants from "./util/constants"; +import { CloudError, CloudErrorMapper } from "./cloudError"; +import { BaseResource, BaseResourceMapper } from "./baseResource"; +export { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper }; diff --git a/typings/lib/pollingState.d.ts b/typings/lib/pollingState.d.ts new file mode 100644 index 000000000000..7f03d988b783 --- /dev/null +++ b/typings/lib/pollingState.d.ts @@ -0,0 +1,69 @@ +import * as msRest from "ms-rest-js"; +/** + * @class + * Initializes a new instance of the PollingState class. + */ +export default class PollingState { + /** + * @param {msRest.HttpOperationResponse} [response] - Response of the initial request that was made as a part of the asynchronous operation. + */ + resultOfInitialRequest: msRest.HttpOperationResponse; + /** + * @param {msRest.RequestOptionsBase} [optionsOfInitialRequest] - Request options that were provided as a part of the initial request. + */ + optionsOfInitialRequest: msRest.RequestOptionsBase; + /** + * @param {msRest.WebResource} [request] - provides information about the request made for polling. + */ + request: msRest.WebResource; + /** + * @param {Response} [response] - The response object to extract longrunning operation status. + */ + response: Response; + /** + * @param {any} [resource] - Provides information about the response body received in the polling request. Particularly useful when polling via provisioningState. + */ + resource: any; + /** + * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30. + */ + retryTimeout: number; + /** + * @param {string} [azureAsyncOperationHeaderLink] - The url that is present in "azure-asyncoperation" response header. + */ + azureAsyncOperationHeaderLink?: string; + /** + * @param {string} [locationHeaderLink] - The url that is present in "Location" response header. + */ + locationHeaderLink?: string; + /** + * @param {string} [status] - The status of polling. "Succeeded, Failed, Cancelled, Updating, Creating, etc." + */ + status?: string; + /** + * @param {msRest.RestError} [error] - Provides information about the error that happened while polling. + */ + error?: msRest.RestError; + constructor(resultOfInitialRequest: msRest.HttpOperationResponse, retryTimeout?: number); + /** + * Update cached data using the provided response object + * @param {Response} [response] - provider response object. + */ + updateResponse(response: Response): void; + /** + * Gets timeout in milliseconds. + * @returns {number} timeout + */ + getTimeout(): number; + /** + * Returns long running operation result. + * @returns {msRest.HttpOperationResponse} HttpOperationResponse + */ + getOperationResponse(): msRest.HttpOperationResponse; + /** + * Returns an Error on operation failure. + * @param {Error} err - The error object. + * @returns {msRest.RestError} The RestError defined in the runtime. + */ + getRestError(err?: Error): msRest.RestError; +} diff --git a/typings/lib/util/constants.d.ts b/typings/lib/util/constants.d.ts new file mode 100644 index 000000000000..45284b610d40 --- /dev/null +++ b/typings/lib/util/constants.d.ts @@ -0,0 +1,11 @@ +declare const Constants: { + LongRunningOperationStates: { + InProgress: string; + Succeeded: string; + Failed: string; + Canceled: string; + }; + DEFAULT_LANGUAGE: string; + msRestAzureVersion: string; +}; +export default Constants; diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 000000000000..4c78faecb9cd --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,44 @@ +const webpack = require('webpack'); +const path = require('path'); + +module.exports = { + entry: './lib/msRestAzure.ts', + devtool: 'source-map', + output: { + filename: 'msRestAzureBundle.js', + path: __dirname, + libraryTarget: 'var', + library: 'msRestAzure' + }, + plugins: [ + new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/) + ], + module: { + rules: [ + { + test: /\.tsx?$/, + loader: 'ts-loader', + exclude: /(node_modules|test)/ + } + ] + }, + // ms-rest-js is a dependency of this project. Customer is expected to manually import/include + // this for browser javascript in a script tag. More info over here + // https://webpack.js.org/configuration/externals/ and https://webpack.js.org/guides/author-libraries/#add-externals. + externals: { + "ms-rest-js": "msRest" + }, + resolve: { + extensions: [".tsx", ".ts", ".js"] + }, + node: { + fs: false, + net: false, + path: false, + dns: false, + tls: false, + tty: false, + v8: false, + Buffer: false + } +}; \ No newline at end of file From 6f8dbd4c9d150a7ce45ac8cc99287f1a63181a0b Mon Sep 17 00:00:00 2001 From: Amar Zavery Date: Sat, 16 Sep 2017 18:19:49 -0700 Subject: [PATCH 005/289] Added changelog and updated package.json --- Changelog.md | 4 + package-lock.json | 345 ++++++++++++++++------------------------------ package.json | 30 ++-- 3 files changed, 138 insertions(+), 241 deletions(-) create mode 100644 Changelog.md diff --git a/Changelog.md b/Changelog.md new file mode 100644 index 000000000000..8b43bfe7dc01 --- /dev/null +++ b/Changelog.md @@ -0,0 +1,4 @@ +### 0.1.0 - 2017/09/16 +- Initial version of the isomorphic azure runtime along with type definitions that works in the browser as well as the node.js environment + - Supports polling for long running operations + - Provides definition of CloudError \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 6285b1b20e4f..fbd3829037e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1024,15 +1024,13 @@ "dependencies": { "abbrev": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", - "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", + "bundled": true, "dev": true, "optional": true }, "ajv": { "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1042,21 +1040,18 @@ }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "aproba": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", - "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", + "bundled": true, "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1066,49 +1061,42 @@ }, "asn1": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "bundled": true, "dev": true, "optional": true }, "assert-plus": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "bundled": true, "dev": true, "optional": true }, "asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "bundled": true, "dev": true, "optional": true }, "aws-sign2": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "bundled": true, "dev": true, "optional": true }, "aws4": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "bundled": true, "dev": true, "optional": true }, "balanced-match": { "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "bundled": true, "dev": true }, "bcrypt-pbkdf": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1117,8 +1105,7 @@ }, "block-stream": { "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "bundled": true, "dev": true, "requires": { "inherits": "2.0.3" @@ -1126,8 +1113,7 @@ }, "boom": { "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "bundled": true, "dev": true, "requires": { "hoek": "2.16.3" @@ -1135,8 +1121,7 @@ }, "brace-expansion": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", - "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", + "bundled": true, "dev": true, "requires": { "balanced-match": "0.4.2", @@ -1145,34 +1130,29 @@ }, "buffer-shims": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "bundled": true, "dev": true }, "caseless": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "bundled": true, "dev": true, "optional": true }, "co": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "bundled": true, "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "combined-stream": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "bundled": true, "dev": true, "requires": { "delayed-stream": "1.0.0" @@ -1180,26 +1160,22 @@ }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "bundled": true, "dev": true }, "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "bundled": true, "dev": true }, "cryptiles": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1208,8 +1184,7 @@ }, "dashdash": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1218,8 +1193,7 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "bundled": true, "dev": true, "optional": true } @@ -1227,8 +1201,7 @@ }, "debug": { "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1237,28 +1210,24 @@ }, "deep-extend": { "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "bundled": true, "dev": true, "optional": true }, "delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "bundled": true, "dev": true }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "bundled": true, "dev": true, "optional": true }, "ecc-jsbn": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1267,28 +1236,24 @@ }, "extend": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "bundled": true, "dev": true, "optional": true }, "extsprintf": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", + "bundled": true, "dev": true }, "forever-agent": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "bundled": true, "dev": true, "optional": true }, "form-data": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1299,14 +1264,12 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "fstream": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -1317,8 +1280,7 @@ }, "fstream-ignore": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1329,8 +1291,7 @@ }, "gauge": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1346,8 +1307,7 @@ }, "getpass": { "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1356,8 +1316,7 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "bundled": true, "dev": true, "optional": true } @@ -1365,8 +1324,7 @@ }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -1379,21 +1337,18 @@ }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "dev": true }, "har-schema": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "bundled": true, "dev": true, "optional": true }, "har-validator": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1403,15 +1358,13 @@ }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "bundled": true, "dev": true, "optional": true }, "hawk": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1423,14 +1376,12 @@ }, "hoek": { "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "bundled": true, "dev": true }, "http-signature": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1441,8 +1392,7 @@ }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "1.4.0", @@ -1451,21 +1401,18 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "ini": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "bundled": true, "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -1473,28 +1420,24 @@ }, "is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "bundled": true, "dev": true, "optional": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "isstream": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "bundled": true, "dev": true, "optional": true }, "jodid25519": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1503,22 +1446,19 @@ }, "jsbn": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "bundled": true, "dev": true, "optional": true }, "json-schema": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "bundled": true, "dev": true, "optional": true }, "json-stable-stringify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1527,22 +1467,19 @@ }, "json-stringify-safe": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "bundled": true, "dev": true, "optional": true }, "jsonify": { "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "bundled": true, "dev": true, "optional": true }, "jsprim": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", - "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1554,8 +1491,7 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "bundled": true, "dev": true, "optional": true } @@ -1563,14 +1499,12 @@ }, "mime-db": { "version": "1.27.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", + "bundled": true, "dev": true }, "mime-types": { "version": "2.1.15", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", - "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "bundled": true, "dev": true, "requires": { "mime-db": "1.27.0" @@ -1578,8 +1512,7 @@ }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "1.1.7" @@ -1587,14 +1520,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -1602,15 +1533,13 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true, "optional": true }, "node-pre-gyp": { "version": "0.6.36", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz", - "integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1627,8 +1556,7 @@ }, "nopt": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1638,8 +1566,7 @@ }, "npmlog": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", - "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1651,28 +1578,24 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "oauth-sign": { "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "bundled": true, "dev": true, "optional": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true, "optional": true }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1.0.2" @@ -1680,22 +1603,19 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "bundled": true, "dev": true, "optional": true }, "osenv": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1705,41 +1625,35 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "performance-now": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "bundled": true, "dev": true, "optional": true }, "process-nextick-args": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "bundled": true, "dev": true }, "punycode": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "bundled": true, "dev": true, "optional": true }, "qs": { "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "bundled": true, "dev": true, "optional": true }, "rc": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1751,8 +1665,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "bundled": true, "dev": true, "optional": true } @@ -1760,8 +1673,7 @@ }, "readable-stream": { "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "bundled": true, "dev": true, "requires": { "buffer-shims": "1.0.0", @@ -1775,8 +1687,7 @@ }, "request": { "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1806,8 +1717,7 @@ }, "rimraf": { "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "bundled": true, "dev": true, "requires": { "glob": "7.1.2" @@ -1815,35 +1725,30 @@ }, "safe-buffer": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", + "bundled": true, "dev": true }, "semver": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "bundled": true, "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true, "optional": true }, "sntp": { "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1852,8 +1757,7 @@ }, "sshpk": { "version": "1.13.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", - "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1870,8 +1774,7 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "bundled": true, "dev": true, "optional": true } @@ -1879,8 +1782,7 @@ }, "string_decoder": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", - "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", + "bundled": true, "dev": true, "requires": { "safe-buffer": "5.0.1" @@ -1888,8 +1790,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -1899,15 +1800,13 @@ }, "stringstream": { "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "bundled": true, "dev": true, "optional": true }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -1915,15 +1814,13 @@ }, "strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "bundled": true, "dev": true, "optional": true }, "tar": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "bundled": true, "dev": true, "requires": { "block-stream": "0.0.9", @@ -1933,8 +1830,7 @@ }, "tar-pack": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", - "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1950,8 +1846,7 @@ }, "tough-cookie": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1960,8 +1855,7 @@ }, "tunnel-agent": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1970,35 +1864,30 @@ }, "tweetnacl": { "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "bundled": true, "dev": true, "optional": true }, "uid-number": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", + "bundled": true, "dev": true, "optional": true }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "bundled": true, "dev": true }, "uuid": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", - "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", + "bundled": true, "dev": true, "optional": true }, "verror": { "version": "1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2007,8 +1896,7 @@ }, "wide-align": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2017,8 +1905,7 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true } } @@ -3633,9 +3520,9 @@ } }, "webpack": { - "version": "3.5.6", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.5.6.tgz", - "integrity": "sha512-sXnxfx6KoZVrFAGLjdhCCwDtDwkYMfwm8mJjkQv3thr5pjTlbxopVlr/kJwc9Bz317gL+gNjvz++ir9TgG1MDg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.6.0.tgz", + "integrity": "sha512-OsHT3D0W0KmPPh60tC7asNnOmST6bKTiR90UyEdT9QYoaJ4OYN4Gg7WK1k3VxHK07ZoiYWPsKvlS/gAjwL/vRA==", "dev": true, "requires": { "acorn": "5.1.2", diff --git a/package.json b/package.json index f73cfb17a92e..cff746fd48d1 100644 --- a/package.json +++ b/package.json @@ -3,17 +3,23 @@ "author": { "name": "Microsoft Corporation", "email": "azsdkteam@microsoft.com", - "url": "https://github.com/Azure/azure-sdk-for-node" + "url": "https://github.com/Azure/ms-rest-azure-js" }, "version": "0.1.0", - "description": "Client Runtime for Node.js client libraries generated using AutoRest", + "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ + "isomorphic", + "browser", + "javascript", "node", "microsoft", "autorest", "clientruntime" ], "keywords": [ + "isomorphic", + "browser", + "javascript", "node", "microsoft", "autorest", @@ -23,32 +29,32 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "azure/ms-rest-js#master" + "ms-rest-js": "^0.1.0" }, "devDependencies": { - "@types/mocha": "^2.2.40", + "@types/mocha": "^2.2.43", "@types/should": "^8.1.30", - "mocha": "^3.2.0", + "mocha": "^3.5.3", "should": "5.2.0", "ts-loader": "^2.3.7", "tslint": "^5.7.0", "typescript": "^2.5.2", - "webpack": "^3.5.6", - "uglify-es": "^3.0.28" + "webpack": "^3.6.0", + "uglify-es": "^3.1.0" }, - "homepage": "https://github.com/Azure/azure-sdk-for-node/runtime/ms-rest", + "homepage": "https://github.com/Azure/ms-rest-azure-js", "repository": { "type": "git", - "url": "git@github.com:Azure/azure-sdk-for-node.git" + "url": "git@github.com:Azure/ms-rest-azure-js.git" }, "bugs": { - "url": "http://github.com/Azure/azure-sdk-for-node/issues" + "url": "http://github.com/Azure/ms-rest-azure-js/issues" }, "scripts": { "tsc": "tsc -p tsconfig.json", - "test": "npm install && npm -s run-script unit", + "test": "npm -s run-script tslint", "unit": "mocha -t 50000 dist/test", "build": "npm -s run-script tsc && webpack && node node_modules/uglify-es/bin/uglifyjs --source-map -c -m -o msRestAzureBundle.min.js msRestAzureBundle.js", - "tsLint": "tslint -p . -c tslint.json --exclude test/**/*.ts" + "tslint": "tslint -p . -c tslint.json --exclude test/**/*.ts" } } From b1c869e94c5cb850105638e0af071f0fc9948fef Mon Sep 17 00:00:00 2001 From: Amar Zavery Date: Wed, 11 Oct 2017 14:33:30 -0700 Subject: [PATCH 006/289] updating version of ms-rest-js to 0.2.1 which is a dependency. --- .npmignore | 3 ++- Changelog.md | 3 +++ dist/lib/azureServiceClient.js.map | 2 +- msRestAzureBundle.js.map | 2 +- package.json | 4 ++-- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.npmignore b/.npmignore index 00da80495d7e..9eb0e6fb7fa2 100644 --- a/.npmignore +++ b/.npmignore @@ -4,4 +4,5 @@ samples/ test/ .travis.yml gulpfile.js -.gitignore \ No newline at end of file +.gitignore +.git \ No newline at end of file diff --git a/Changelog.md b/Changelog.md index 8b43bfe7dc01..6ab1f622e05d 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,6 @@ +### 0.1.0 - 2017/10/11 +- Updating the minimum version of dependency "ms-rest-js": "^0.2.1". This also gets a strict dependency to "moment" version 2.18.1 as 2.19.0 has bugs. + ### 0.1.0 - 2017/09/16 - Initial version of the isomorphic azure runtime along with type definitions that works in the browser as well as the node.js environment - Supports polling for long running operations diff --git a/dist/lib/azureServiceClient.js.map b/dist/lib/azureServiceClient.js.map index d89cde316841..3e8036d952b5 100644 --- a/dist/lib/azureServiceClient.js.map +++ b/dist/lib/azureServiceClient.js.map @@ -1 +1 @@ -{"version":3,"file":"azureServiceClient.js","sourceRoot":"","sources":["../../lib/azureServiceClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"azureServiceClient.js","sourceRoot":"","sources":["../../lib/azureServiceClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/msRestAzureBundle.js.map b/msRestAzureBundle.js.map index 9582fb138781..445ddc55f829 100644 --- a/msRestAzureBundle.js.map +++ b/msRestAzureBundle.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap 8bfc02d6f28e04661756","webpack:///./lib/util/constants.ts","webpack:///external \"msRest\"","webpack:///./lib/msRestAzure.ts","webpack:///./lib/azureServiceClient.ts","webpack:///./lib/pollingState.ts","webpack:///./lib/cloudError.ts","webpack:///./lib/baseResource.ts"],"names":[],"mappings":"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","file":"msRestAzureBundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 8bfc02d6f28e04661756","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nconst Constants = {\n /**\n * Defines constants for long running operation states.\n *\n * @const\n * @type {string}\n */\n LongRunningOperationStates: {\n InProgress: \"InProgress\",\n Succeeded: \"Succeeded\",\n Failed: \"Failed\",\n Canceled: \"Canceled\"\n },\n\n /**\n * The default language in the request header.\n *\n * @const\n * @type {string}\n */\n DEFAULT_LANGUAGE: \"en-us\",\n\n /**\n * The ms-rest-azure version.\n * @const\n * @type {string}\n */\n msRestAzureVersion: \"0.1.0\"\n};\n\nexport default Constants;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/util/constants.ts","module.exports = msRest;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"msRest\"\n// module id = 1\n// module chunks = 0","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport { AzureServiceClientOptions, AzureServiceClient } from \"./azureServiceClient\";\nimport Constants from \"./util/constants\";\nimport { CloudError, CloudErrorMapper } from \"./cloudError\";\nimport { BaseResource, BaseResourceMapper } from \"./baseResource\";\nexport { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper };\n\n\n// WEBPACK FOOTER //\n// ./lib/msRestAzure.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport * as msRest from \"ms-rest-js\";\nimport Constants from \"./util/constants\";\nimport PollingState from \"./pollingState\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * Options to be provided while creating the client.\n */\nexport interface AzureServiceClientOptions extends msRest.ServiceClientOptions {\n /**\n * @property {string} [options.acceptLanguage] - Gets or sets the preferred language for the response. Default value is: \"en-US\".\n */\n acceptLanguage?: string;\n\n /**\n * @property {boolean} [options.generateClientRequestId] - When set to true a unique x-ms-client-request-id value\n * is generated and included in each request. Default is true.\n */\n generateClientRequestId?: boolean;\n\n /**\n * @property {number} [options.longRunningOperationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * Long Running Operations. Default value is 30.\n */\n longRunningOperationRetryTimeout?: number;\n\n /**\n * @property {number} [rpRegistrationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * AutomaticRPRegistration. Default value is 30 seconds.\n */\n rpRegistrationRetryTimeout?: number;\n}\n\n/**\n * @class\n * Initializes a new instance of the AzureServiceClient class.\n * @constructor\n *\n * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or\n * UserTokenCredentials object used for authentication.\n * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient\n */\nexport class AzureServiceClient extends msRest.ServiceClient {\n acceptLanguage: string = Constants.DEFAULT_LANGUAGE;\n generateClientRequestId = true;\n longRunningOperationRetryTimeout = 30;\n rpRegistrationRetryTimeout = 30;\n\n constructor(credentials: msRest.ServiceClientCredentials, options?: AzureServiceClientOptions) {\n super(credentials, options);\n this.acceptLanguage = Constants.DEFAULT_LANGUAGE;\n this.generateClientRequestId = true;\n this.longRunningOperationRetryTimeout = 30;\n if (!options) options = {};\n\n if (options.acceptLanguage !== null && options.acceptLanguage !== undefined) {\n this.acceptLanguage = options.acceptLanguage;\n }\n\n if (options.generateClientRequestId !== null && options.generateClientRequestId !== undefined) {\n this.generateClientRequestId = options.generateClientRequestId;\n }\n\n if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) {\n this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout;\n }\n\n if (options.rpRegistrationRetryTimeout !== null && options.rpRegistrationRetryTimeout !== undefined) {\n this.rpRegistrationRetryTimeout = options.rpRegistrationRetryTimeout;\n }\n\n try {\n const moduleName = \"ms-rest-azure\";\n const moduleVersion = Constants.msRestAzureVersion;\n this.addUserAgentInfo(`${moduleName}/${moduleVersion}`);\n } catch (err) {\n // do nothing\n }\n }\n\n /**\n * Provides a mechanism to make a request that will poll and provide the final result.\n * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object\n * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request\n * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody.\n */\n async sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n let initialResponse: msRest.HttpOperationResponse;\n try {\n initialResponse = await self.sendRequest(request);\n } catch (err) {\n return Promise.reject(err);\n }\n let finalResponse: msRest.HttpOperationResponse;\n try {\n finalResponse = await self.getLongRunningOperationResult(initialResponse, options);\n } catch (err) {\n return Promise.reject(err);\n }\n return Promise.resolve(finalResponse);\n }\n\n /**\n * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request.\n * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation.\n */\n private checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResponse): boolean {\n const statusCode = initialResponse.response.status;\n const method = initialResponse.request.method;\n if (statusCode === 200 || statusCode === 202 ||\n (statusCode === 201 && method === \"PUT\") ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n return false;\n } else {\n return true;\n }\n }\n\n /**\n * Poll Azure long running PUT, PATCH, POST or DELETE operations.\n * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation.\n * @param {msRest.RequestOptionsBase} [options] - custom request options.\n * @returns {Promise} result - The final response after polling is complete.\n */\n async getLongRunningOperationResult(resultOfInitialRequest: msRest.HttpOperationResponse, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n const initialRequestMethod: string = resultOfInitialRequest.request.method as msRest.HttpMethods;\n\n if (self.checkResponseStatusCodeFailed(resultOfInitialRequest)) {\n return Promise.reject(`Unexpected polling status code from long running operation ` +\n `\"${resultOfInitialRequest.response.status}\" for method \"${initialRequestMethod}\".`);\n }\n let pollingState: PollingState;\n try {\n pollingState = new PollingState(resultOfInitialRequest, self.longRunningOperationRetryTimeout);\n pollingState.optionsOfInitialRequest = options as msRest.RequestOptionsBase;\n } catch (error) {\n return Promise.reject(error);\n }\n const resourceUrl: string = resultOfInitialRequest.request.url;\n while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) {\n await msRest.delay(pollingState.getTimeout());\n if (pollingState.azureAsyncOperationHeaderLink) {\n await self.updateStateFromAzureAsyncOperationHeader(pollingState, true);\n } else if (pollingState.locationHeaderLink) {\n await self.updateStateFromLocationHeader(initialRequestMethod, pollingState);\n } else if (initialRequestMethod === \"PUT\") {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n } else {\n return Promise.reject(new Error(\"Location header is missing from long running operation.\"));\n }\n }\n\n if (pollingState.status === LroStates.Succeeded) {\n if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) &&\n (initialRequestMethod === \"PUT\" || initialRequestMethod === \"PATCH\")) {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n return Promise.resolve(pollingState.getOperationResponse());\n } else {\n return Promise.resolve(pollingState.getOperationResponse());\n }\n } else {\n return Promise.reject(pollingState.getRestError());\n }\n }\n\n /**\n * Retrieve operation status by polling from \"azure-asyncoperation\" header.\n * @param {PollingState} pollingState - The object to persist current operation state.\n * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation.\n */\n private async updateStateFromAzureAsyncOperationHeader(pollingState: PollingState, inPostOrDelete = false): Promise {\n let result: msRest.HttpOperationResponse;\n\n try {\n result = await this.getStatus(pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n\n if (!parsedResponse) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n } else if (parsedResponse && !parsedResponse.status) {\n return Promise.reject(new Error(`The response \"${result.bodyAsText}\" from long running operation does not contain the status property.`));\n }\n pollingState.status = parsedResponse.status;\n pollingState.error = parsedResponse.error;\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = undefined;\n if (inPostOrDelete) {\n pollingState.resource = result.bodyAsJson;\n }\n return Promise.resolve();\n }\n\n /**\n * Retrieve PUT operation status by polling from \"location\" header.\n * @param {string} method - The HTTP method.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromLocationHeader(method: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n const statusCode = result.response.status;\n if (statusCode === 202) {\n pollingState.status = LroStates.InProgress;\n } else if (statusCode === 200 ||\n (statusCode === 201 && (method === \"PUT\" || method === \"PATCH\")) ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n pollingState.status = LroStates.Succeeded;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n } else {\n return Promise.reject(new Error(`The response with status code ${statusCode} from polling for ` +\n `long running operation url \"${pollingState.locationHeaderLink}\" is not valid.`));\n }\n }\n\n /**\n * Polling for resource status.\n * @param {string} resourceUrl - The url of resource.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromGetResourceOperation(resourceUrl: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n if (!result.bodyAsJson) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n pollingState.status = LroStates.Succeeded;\n if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) {\n pollingState.status = parsedResponse.properties.provisioningState;\n }\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n return Promise.resolve();\n }\n\n /**\n * Retrieves operation status by querying the operation URL.\n * @param {string} operationUrl - URL used to poll operation result.\n * @param {object} options - Options that can be set on the request object\n */\n private async getStatus(operationUrl: string, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n // Construct URL\n const requestUrl = operationUrl.replace(\" \", \"%20\");\n // Create HTTP request object\n const httpRequest: msRest.RequestPrepareOptions = {\n method: \"GET\",\n url: requestUrl,\n headers: {}\n };\n if (options) {\n const customHeaders: { [key: string]: string } = (options.customHeaders as { [key: string]: string });\n for (const headerName in customHeaders) {\n if (customHeaders.hasOwnProperty(headerName)) {\n (httpRequest.headers as { [key: string]: string })[headerName] = customHeaders[headerName];\n }\n }\n }\n let operationResponse: msRest.HttpOperationResponse;\n try {\n operationResponse = await self.sendRequest(httpRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n const statusCode = operationResponse.response.status;\n const responseBody = operationResponse.bodyAsJson;\n if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) {\n const error = new msRest.RestError(`Invalid status code with response body \"${operationResponse.bodyAsText}\" occurred ` +\n `when polling for operation status.`);\n error.statusCode = statusCode;\n error.request = msRest.stripRequest(operationResponse.request);\n error.response = operationResponse.response;\n try {\n error.body = responseBody;\n } catch (badResponse) {\n error.message += ` Error \"${badResponse}\" occured while deserializing the response body - \"${operationResponse.bodyAsText}\".`;\n error.body = operationResponse.bodyAsText;\n }\n return Promise.reject(error);\n }\n\n return Promise.resolve(operationResponse);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/azureServiceClient.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport Constants from \"./util/constants\";\nimport * as msRest from \"ms-rest-js\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * @class\n * Initializes a new instance of the PollingState class.\n */\nexport default class PollingState {\n /**\n * @param {msRest.HttpOperationResponse} [response] - Response of the initial request that was made as a part of the asynchronous operation.\n */\n resultOfInitialRequest: msRest.HttpOperationResponse;\n /**\n * @param {msRest.RequestOptionsBase} [optionsOfInitialRequest] - Request options that were provided as a part of the initial request.\n */\n optionsOfInitialRequest: msRest.RequestOptionsBase;\n /**\n * @param {msRest.WebResource} [request] - provides information about the request made for polling.\n */\n request: msRest.WebResource;\n /**\n * @param {Response} [response] - The response object to extract longrunning operation status.\n */\n response: Response;\n /**\n * @param {any} [resource] - Provides information about the response body received in the polling request. Particularly useful when polling via provisioningState.\n */\n resource: any;\n /**\n * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30.\n */\n retryTimeout = 30;\n /**\n * @param {string} [azureAsyncOperationHeaderLink] - The url that is present in \"azure-asyncoperation\" response header.\n */\n azureAsyncOperationHeaderLink?: string;\n /**\n * @param {string} [locationHeaderLink] - The url that is present in \"Location\" response header.\n */\n locationHeaderLink?: string;\n /**\n * @param {string} [status] - The status of polling. \"Succeeded, Failed, Cancelled, Updating, Creating, etc.\"\n */\n status?: string;\n /**\n * @param {msRest.RestError} [error] - Provides information about the error that happened while polling.\n */\n error?: msRest.RestError;\n\n constructor(resultOfInitialRequest: msRest.HttpOperationResponse, retryTimeout = 30) {\n this.resultOfInitialRequest = resultOfInitialRequest;\n this.retryTimeout = retryTimeout;\n this.updateResponse(resultOfInitialRequest.response);\n this.request = resultOfInitialRequest.request;\n // Parse response.body & assign it as the resource.\n try {\n if (resultOfInitialRequest.bodyAsText && resultOfInitialRequest.bodyAsText.length > 0) {\n this.resource = JSON.parse(resultOfInitialRequest.bodyAsText);\n } else {\n this.resource = resultOfInitialRequest.bodyAsJson;\n }\n } catch (error) {\n const deserializationError = new msRest.RestError(`Error \"${error}\" occurred in parsing the responseBody \" +\n \"while creating the PollingState for Long Running Operation- \"${resultOfInitialRequest.bodyAsText}\"`);\n deserializationError.request = resultOfInitialRequest.request;\n deserializationError.response = resultOfInitialRequest.response;\n throw deserializationError;\n }\n switch (this.response.status) {\n case 202:\n this.status = LroStates.InProgress;\n break;\n\n case 204:\n this.status = LroStates.Succeeded;\n break;\n\n case 201:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.InProgress;\n }\n break;\n\n case 200:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.Succeeded;\n }\n break;\n\n default:\n this.status = LroStates.Failed;\n break;\n }\n }\n\n /**\n * Update cached data using the provided response object\n * @param {Response} [response] - provider response object.\n */\n updateResponse(response: Response) {\n this.response = response;\n if (response && response.headers) {\n const asyncOperationHeader: string | null | undefined = response.headers.get(\"azure-asyncoperation\");\n const locationHeader: string | null | undefined = response.headers.get(\"location\");\n if (asyncOperationHeader) {\n this.azureAsyncOperationHeaderLink = asyncOperationHeader;\n }\n\n if (locationHeader) {\n this.locationHeaderLink = locationHeader;\n }\n }\n }\n\n /**\n * Gets timeout in milliseconds.\n * @returns {number} timeout\n */\n getTimeout() {\n if (this.retryTimeout || this.retryTimeout === 0) {\n return this.retryTimeout * 1000;\n }\n if (this.response) {\n const retryAfter: string | null | undefined = this.response.headers.get(\"retry-after\");\n if (retryAfter) {\n return parseInt(retryAfter) * 1000;\n }\n }\n return 30 * 1000;\n }\n\n /**\n * Returns long running operation result.\n * @returns {msRest.HttpOperationResponse} HttpOperationResponse\n */\n getOperationResponse(): msRest.HttpOperationResponse {\n const result = new msRest.HttpOperationResponse(this.request, this.response, this.response.body);\n if (this.resource && typeof this.resource.valueOf() === \"string\") {\n result.bodyAsText = this.resource;\n result.bodyAsJson = JSON.parse(this.resource);\n } else {\n result.bodyAsJson = this.resource;\n result.bodyAsText = JSON.stringify(this.resource);\n }\n return result;\n }\n\n /**\n * Returns an Error on operation failure.\n * @param {Error} err - The error object.\n * @returns {msRest.RestError} The RestError defined in the runtime.\n */\n getRestError(err?: Error): msRest.RestError {\n let errMsg: string;\n let errCode: string | undefined = undefined;\n\n const error = new msRest.RestError(\"\");\n error.request = msRest.stripRequest(this.request);\n error.response = this.response;\n const parsedResponse = this.resource as { [key: string]: any };\n\n if (err && err.message) {\n errMsg = `Long running operation failed with error: \"${err.message}\".`;\n } else {\n errMsg = `Long running operation failed with status: \"${this.status}\".`;\n }\n\n if (parsedResponse) {\n if (parsedResponse.error && parsedResponse.error.message) {\n errMsg = `Long running operation failed with error: \"${parsedResponse.error.message}\".`;\n }\n if (parsedResponse.error && parsedResponse.error.code) {\n errCode = parsedResponse.error.code as string;\n }\n }\n\n error.message = errMsg;\n if (errCode) error.code = errCode;\n error.body = parsedResponse;\n return error;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/pollingState.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * Provides additional information about an http error response returned from a Microsoft Azure service.\n */\nexport interface CloudError extends Error {\n /**\n * @property {string} code The error code parsed from the body of the http error response.\n */\n code: string;\n /**\n * @property {string} message The error message parsed from the body of the http error response.\n */\n message: string;\n /**\n * @property {string} [target] The target of the error.\n */\n target?: string;\n /**\n * @property {Array} [details] An array of CloudError objects specifying the details.\n */\n details?: Array;\n}\n\nexport const CloudErrorMapper = {\n required: false,\n serializedName: \"CloudError\",\n type: {\n name: \"Composite\",\n className: \"CloudError\",\n modelProperties: {\n code: {\n required: true,\n serializedName: \"code\",\n type: {\n name: \"String\"\n }\n },\n message: {\n required: true,\n serializedName: \"message\",\n type: {\n name: \"String\"\n }\n },\n target: {\n required: false,\n serializedName: \"target\",\n type: {\n name: \"String\"\n }\n },\n details: {\n required: false,\n serializedName: \"details\",\n type: {\n name: \"Sequence\",\n element: {\n required: false,\n serializedName: \"CloudErrorElementType\",\n type: {\n name: \"Composite\",\n className: \"CloudError\"\n }\n }\n }\n }\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/cloudError.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * An empty interface.\n */\nexport interface BaseResource { }\n\nexport const BaseResourceMapper = {\n required: false,\n serializedName: \"BaseResource\",\n type: {\n name: \"Composite\",\n className: \"BaseResource\",\n modelProperties: {\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/baseResource.ts"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap 58d9943eda644f801049","webpack:///./lib/util/constants.ts","webpack:///external \"msRest\"","webpack:///./lib/msRestAzure.ts","webpack:///./lib/azureServiceClient.ts","webpack:///./lib/pollingState.ts","webpack:///./lib/cloudError.ts","webpack:///./lib/baseResource.ts"],"names":[],"mappings":"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","file":"msRestAzureBundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 58d9943eda644f801049","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nconst Constants = {\n /**\n * Defines constants for long running operation states.\n *\n * @const\n * @type {string}\n */\n LongRunningOperationStates: {\n InProgress: \"InProgress\",\n Succeeded: \"Succeeded\",\n Failed: \"Failed\",\n Canceled: \"Canceled\"\n },\n\n /**\n * The default language in the request header.\n *\n * @const\n * @type {string}\n */\n DEFAULT_LANGUAGE: \"en-us\",\n\n /**\n * The ms-rest-azure version.\n * @const\n * @type {string}\n */\n msRestAzureVersion: \"0.1.0\"\n};\n\nexport default Constants;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/util/constants.ts","module.exports = msRest;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"msRest\"\n// module id = 1\n// module chunks = 0","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport { AzureServiceClientOptions, AzureServiceClient } from \"./azureServiceClient\";\nimport Constants from \"./util/constants\";\nimport { CloudError, CloudErrorMapper } from \"./cloudError\";\nimport { BaseResource, BaseResourceMapper } from \"./baseResource\";\nexport { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper };\n\n\n// WEBPACK FOOTER //\n// ./lib/msRestAzure.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport * as msRest from \"ms-rest-js\";\nimport Constants from \"./util/constants\";\nimport PollingState from \"./pollingState\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * Options to be provided while creating the client.\n */\nexport interface AzureServiceClientOptions extends msRest.ServiceClientOptions {\n /**\n * @property {string} [options.acceptLanguage] - Gets or sets the preferred language for the response. Default value is: \"en-US\".\n */\n acceptLanguage?: string;\n\n /**\n * @property {boolean} [options.generateClientRequestId] - When set to true a unique x-ms-client-request-id value\n * is generated and included in each request. Default is true.\n */\n generateClientRequestId?: boolean;\n\n /**\n * @property {number} [options.longRunningOperationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * Long Running Operations. Default value is 30.\n */\n longRunningOperationRetryTimeout?: number;\n\n /**\n * @property {number} [rpRegistrationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * AutomaticRPRegistration. Default value is 30 seconds.\n */\n rpRegistrationRetryTimeout?: number;\n}\n\n/**\n * @class\n * Initializes a new instance of the AzureServiceClient class.\n * @constructor\n *\n * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or\n * UserTokenCredentials object used for authentication.\n * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient\n */\nexport class AzureServiceClient extends msRest.ServiceClient {\n acceptLanguage: string = Constants.DEFAULT_LANGUAGE;\n generateClientRequestId = true;\n longRunningOperationRetryTimeout = 30;\n rpRegistrationRetryTimeout = 30;\n\n constructor(credentials: msRest.ServiceClientCredentials, options?: AzureServiceClientOptions) {\n super(credentials, options);\n this.acceptLanguage = Constants.DEFAULT_LANGUAGE;\n this.generateClientRequestId = true;\n this.longRunningOperationRetryTimeout = 30;\n if (!options) options = {};\n\n if (options.acceptLanguage !== null && options.acceptLanguage !== undefined) {\n this.acceptLanguage = options.acceptLanguage;\n }\n\n if (options.generateClientRequestId !== null && options.generateClientRequestId !== undefined) {\n this.generateClientRequestId = options.generateClientRequestId;\n }\n\n if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) {\n this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout;\n }\n\n if (options.rpRegistrationRetryTimeout !== null && options.rpRegistrationRetryTimeout !== undefined) {\n this.rpRegistrationRetryTimeout = options.rpRegistrationRetryTimeout;\n }\n\n try {\n const moduleName = \"ms-rest-azure\";\n const moduleVersion = Constants.msRestAzureVersion;\n this.addUserAgentInfo(`${moduleName}/${moduleVersion}`);\n } catch (err) {\n // do nothing\n }\n }\n\n /**\n * Provides a mechanism to make a request that will poll and provide the final result.\n * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object\n * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request\n * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody.\n */\n async sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n let initialResponse: msRest.HttpOperationResponse;\n try {\n initialResponse = await self.sendRequest(request);\n } catch (err) {\n return Promise.reject(err);\n }\n let finalResponse: msRest.HttpOperationResponse;\n try {\n finalResponse = await self.getLongRunningOperationResult(initialResponse, options);\n } catch (err) {\n return Promise.reject(err);\n }\n return Promise.resolve(finalResponse);\n }\n\n /**\n * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request.\n * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation.\n */\n private checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResponse): boolean {\n const statusCode = initialResponse.response.status;\n const method = initialResponse.request.method;\n if (statusCode === 200 || statusCode === 202 ||\n (statusCode === 201 && method === \"PUT\") ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n return false;\n } else {\n return true;\n }\n }\n\n /**\n * Poll Azure long running PUT, PATCH, POST or DELETE operations.\n * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation.\n * @param {msRest.RequestOptionsBase} [options] - custom request options.\n * @returns {Promise} result - The final response after polling is complete.\n */\n async getLongRunningOperationResult(resultOfInitialRequest: msRest.HttpOperationResponse, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n const initialRequestMethod: string = resultOfInitialRequest.request.method as msRest.HttpMethods;\n\n if (self.checkResponseStatusCodeFailed(resultOfInitialRequest)) {\n return Promise.reject(`Unexpected polling status code from long running operation ` +\n `\"${resultOfInitialRequest.response.status}\" for method \"${initialRequestMethod}\".`);\n }\n let pollingState: PollingState;\n try {\n pollingState = new PollingState(resultOfInitialRequest, self.longRunningOperationRetryTimeout);\n pollingState.optionsOfInitialRequest = options as msRest.RequestOptionsBase;\n } catch (error) {\n return Promise.reject(error);\n }\n const resourceUrl: string = resultOfInitialRequest.request.url;\n while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) {\n await msRest.delay(pollingState.getTimeout());\n if (pollingState.azureAsyncOperationHeaderLink) {\n await self.updateStateFromAzureAsyncOperationHeader(pollingState, true);\n } else if (pollingState.locationHeaderLink) {\n await self.updateStateFromLocationHeader(initialRequestMethod, pollingState);\n } else if (initialRequestMethod === \"PUT\") {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n } else {\n return Promise.reject(new Error(\"Location header is missing from long running operation.\"));\n }\n }\n\n if (pollingState.status === LroStates.Succeeded) {\n if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) &&\n (initialRequestMethod === \"PUT\" || initialRequestMethod === \"PATCH\")) {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n return Promise.resolve(pollingState.getOperationResponse());\n } else {\n return Promise.resolve(pollingState.getOperationResponse());\n }\n } else {\n return Promise.reject(pollingState.getRestError());\n }\n }\n\n /**\n * Retrieve operation status by polling from \"azure-asyncoperation\" header.\n * @param {PollingState} pollingState - The object to persist current operation state.\n * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation.\n */\n private async updateStateFromAzureAsyncOperationHeader(pollingState: PollingState, inPostOrDelete = false): Promise {\n let result: msRest.HttpOperationResponse;\n\n try {\n result = await this.getStatus(pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n\n if (!parsedResponse) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n } else if (parsedResponse && !parsedResponse.status) {\n return Promise.reject(new Error(`The response \"${result.bodyAsText}\" from long running operation does not contain the status property.`));\n }\n pollingState.status = parsedResponse.status;\n pollingState.error = parsedResponse.error;\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = undefined;\n if (inPostOrDelete) {\n pollingState.resource = result.bodyAsJson;\n }\n return Promise.resolve();\n }\n\n /**\n * Retrieve PUT operation status by polling from \"location\" header.\n * @param {string} method - The HTTP method.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromLocationHeader(method: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n const statusCode = result.response.status;\n if (statusCode === 202) {\n pollingState.status = LroStates.InProgress;\n } else if (statusCode === 200 ||\n (statusCode === 201 && (method === \"PUT\" || method === \"PATCH\")) ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n pollingState.status = LroStates.Succeeded;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n } else {\n return Promise.reject(new Error(`The response with status code ${statusCode} from polling for ` +\n `long running operation url \"${pollingState.locationHeaderLink}\" is not valid.`));\n }\n }\n\n /**\n * Polling for resource status.\n * @param {string} resourceUrl - The url of resource.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromGetResourceOperation(resourceUrl: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n if (!result.bodyAsJson) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n pollingState.status = LroStates.Succeeded;\n if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) {\n pollingState.status = parsedResponse.properties.provisioningState;\n }\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n return Promise.resolve();\n }\n\n /**\n * Retrieves operation status by querying the operation URL.\n * @param {string} operationUrl - URL used to poll operation result.\n * @param {object} options - Options that can be set on the request object\n */\n private async getStatus(operationUrl: string, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n // Construct URL\n const requestUrl = operationUrl.replace(\" \", \"%20\");\n // Create HTTP request object\n const httpRequest: msRest.RequestPrepareOptions = {\n method: \"GET\",\n url: requestUrl,\n headers: {}\n };\n if (options) {\n const customHeaders: { [key: string]: string } = (options.customHeaders as { [key: string]: string });\n for (const headerName in customHeaders) {\n if (customHeaders.hasOwnProperty(headerName)) {\n (httpRequest.headers as { [key: string]: string })[headerName] = customHeaders[headerName];\n }\n }\n }\n let operationResponse: msRest.HttpOperationResponse;\n try {\n operationResponse = await self.sendRequest(httpRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n const statusCode = operationResponse.response.status;\n const responseBody = operationResponse.bodyAsJson;\n if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) {\n const error = new msRest.RestError(`Invalid status code with response body \"${operationResponse.bodyAsText}\" occurred ` +\n `when polling for operation status.`);\n error.statusCode = statusCode;\n error.request = msRest.stripRequest(operationResponse.request);\n error.response = operationResponse.response;\n try {\n error.body = responseBody;\n } catch (badResponse) {\n error.message += ` Error \"${badResponse}\" occured while deserializing the response body - \"${operationResponse.bodyAsText}\".`;\n error.body = operationResponse.bodyAsText;\n }\n return Promise.reject(error);\n }\n\n return Promise.resolve(operationResponse);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/azureServiceClient.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport Constants from \"./util/constants\";\nimport * as msRest from \"ms-rest-js\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * @class\n * Initializes a new instance of the PollingState class.\n */\nexport default class PollingState {\n /**\n * @param {msRest.HttpOperationResponse} [response] - Response of the initial request that was made as a part of the asynchronous operation.\n */\n resultOfInitialRequest: msRest.HttpOperationResponse;\n /**\n * @param {msRest.RequestOptionsBase} [optionsOfInitialRequest] - Request options that were provided as a part of the initial request.\n */\n optionsOfInitialRequest: msRest.RequestOptionsBase;\n /**\n * @param {msRest.WebResource} [request] - provides information about the request made for polling.\n */\n request: msRest.WebResource;\n /**\n * @param {Response} [response] - The response object to extract longrunning operation status.\n */\n response: Response;\n /**\n * @param {any} [resource] - Provides information about the response body received in the polling request. Particularly useful when polling via provisioningState.\n */\n resource: any;\n /**\n * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30.\n */\n retryTimeout = 30;\n /**\n * @param {string} [azureAsyncOperationHeaderLink] - The url that is present in \"azure-asyncoperation\" response header.\n */\n azureAsyncOperationHeaderLink?: string;\n /**\n * @param {string} [locationHeaderLink] - The url that is present in \"Location\" response header.\n */\n locationHeaderLink?: string;\n /**\n * @param {string} [status] - The status of polling. \"Succeeded, Failed, Cancelled, Updating, Creating, etc.\"\n */\n status?: string;\n /**\n * @param {msRest.RestError} [error] - Provides information about the error that happened while polling.\n */\n error?: msRest.RestError;\n\n constructor(resultOfInitialRequest: msRest.HttpOperationResponse, retryTimeout = 30) {\n this.resultOfInitialRequest = resultOfInitialRequest;\n this.retryTimeout = retryTimeout;\n this.updateResponse(resultOfInitialRequest.response);\n this.request = resultOfInitialRequest.request;\n // Parse response.body & assign it as the resource.\n try {\n if (resultOfInitialRequest.bodyAsText && resultOfInitialRequest.bodyAsText.length > 0) {\n this.resource = JSON.parse(resultOfInitialRequest.bodyAsText);\n } else {\n this.resource = resultOfInitialRequest.bodyAsJson;\n }\n } catch (error) {\n const deserializationError = new msRest.RestError(`Error \"${error}\" occurred in parsing the responseBody \" +\n \"while creating the PollingState for Long Running Operation- \"${resultOfInitialRequest.bodyAsText}\"`);\n deserializationError.request = resultOfInitialRequest.request;\n deserializationError.response = resultOfInitialRequest.response;\n throw deserializationError;\n }\n switch (this.response.status) {\n case 202:\n this.status = LroStates.InProgress;\n break;\n\n case 204:\n this.status = LroStates.Succeeded;\n break;\n\n case 201:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.InProgress;\n }\n break;\n\n case 200:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.Succeeded;\n }\n break;\n\n default:\n this.status = LroStates.Failed;\n break;\n }\n }\n\n /**\n * Update cached data using the provided response object\n * @param {Response} [response] - provider response object.\n */\n updateResponse(response: Response) {\n this.response = response;\n if (response && response.headers) {\n const asyncOperationHeader: string | null | undefined = response.headers.get(\"azure-asyncoperation\");\n const locationHeader: string | null | undefined = response.headers.get(\"location\");\n if (asyncOperationHeader) {\n this.azureAsyncOperationHeaderLink = asyncOperationHeader;\n }\n\n if (locationHeader) {\n this.locationHeaderLink = locationHeader;\n }\n }\n }\n\n /**\n * Gets timeout in milliseconds.\n * @returns {number} timeout\n */\n getTimeout() {\n if (this.retryTimeout || this.retryTimeout === 0) {\n return this.retryTimeout * 1000;\n }\n if (this.response) {\n const retryAfter: string | null | undefined = this.response.headers.get(\"retry-after\");\n if (retryAfter) {\n return parseInt(retryAfter) * 1000;\n }\n }\n return 30 * 1000;\n }\n\n /**\n * Returns long running operation result.\n * @returns {msRest.HttpOperationResponse} HttpOperationResponse\n */\n getOperationResponse(): msRest.HttpOperationResponse {\n const result = new msRest.HttpOperationResponse(this.request, this.response, this.response.body);\n if (this.resource && typeof this.resource.valueOf() === \"string\") {\n result.bodyAsText = this.resource;\n result.bodyAsJson = JSON.parse(this.resource);\n } else {\n result.bodyAsJson = this.resource;\n result.bodyAsText = JSON.stringify(this.resource);\n }\n return result;\n }\n\n /**\n * Returns an Error on operation failure.\n * @param {Error} err - The error object.\n * @returns {msRest.RestError} The RestError defined in the runtime.\n */\n getRestError(err?: Error): msRest.RestError {\n let errMsg: string;\n let errCode: string | undefined = undefined;\n\n const error = new msRest.RestError(\"\");\n error.request = msRest.stripRequest(this.request);\n error.response = this.response;\n const parsedResponse = this.resource as { [key: string]: any };\n\n if (err && err.message) {\n errMsg = `Long running operation failed with error: \"${err.message}\".`;\n } else {\n errMsg = `Long running operation failed with status: \"${this.status}\".`;\n }\n\n if (parsedResponse) {\n if (parsedResponse.error && parsedResponse.error.message) {\n errMsg = `Long running operation failed with error: \"${parsedResponse.error.message}\".`;\n }\n if (parsedResponse.error && parsedResponse.error.code) {\n errCode = parsedResponse.error.code as string;\n }\n }\n\n error.message = errMsg;\n if (errCode) error.code = errCode;\n error.body = parsedResponse;\n return error;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/pollingState.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * Provides additional information about an http error response returned from a Microsoft Azure service.\n */\nexport interface CloudError extends Error {\n /**\n * @property {string} code The error code parsed from the body of the http error response.\n */\n code: string;\n /**\n * @property {string} message The error message parsed from the body of the http error response.\n */\n message: string;\n /**\n * @property {string} [target] The target of the error.\n */\n target?: string;\n /**\n * @property {Array} [details] An array of CloudError objects specifying the details.\n */\n details?: Array;\n}\n\nexport const CloudErrorMapper = {\n required: false,\n serializedName: \"CloudError\",\n type: {\n name: \"Composite\",\n className: \"CloudError\",\n modelProperties: {\n code: {\n required: true,\n serializedName: \"code\",\n type: {\n name: \"String\"\n }\n },\n message: {\n required: true,\n serializedName: \"message\",\n type: {\n name: \"String\"\n }\n },\n target: {\n required: false,\n serializedName: \"target\",\n type: {\n name: \"String\"\n }\n },\n details: {\n required: false,\n serializedName: \"details\",\n type: {\n name: \"Sequence\",\n element: {\n required: false,\n serializedName: \"CloudErrorElementType\",\n type: {\n name: \"Composite\",\n className: \"CloudError\"\n }\n }\n }\n }\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/cloudError.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * An empty interface.\n */\nexport interface BaseResource { }\n\nexport const BaseResourceMapper = {\n required: false,\n serializedName: \"BaseResource\",\n type: {\n name: \"Composite\",\n className: \"BaseResource\",\n modelProperties: {\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/baseResource.ts"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index cff746fd48d1..57cb4765a956 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.1.0", + "version": "0.2.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -29,7 +29,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "^0.1.0" + "ms-rest-js": "^0.2.1" }, "devDependencies": { "@types/mocha": "^2.2.43", From 20d5c63a5cefdb206d79ffad5905b7a43b1a5168 Mon Sep 17 00:00:00 2001 From: Amar Zavery Date: Wed, 25 Oct 2017 14:40:52 -0700 Subject: [PATCH 007/289] adjusting the call to HttpOperationResponse based on the changes done in 0.2.3 version of ms-rest-js. --- Changelog.md | 5 +- dist/lib/azureServiceClient.js.map | 2 +- dist/lib/pollingState.js | 2 +- dist/lib/pollingState.js.map | 2 +- lib/pollingState.ts | 2 +- msRestAzureBundle.js | 2 +- msRestAzureBundle.js.map | 2 +- msRestAzureBundle.min.js | 2 +- msRestAzureBundle.min.js.map | 2 +- package-lock.json | 3576 ++++++++++++++++++---------- package.json | 4 +- 11 files changed, 2349 insertions(+), 1252 deletions(-) diff --git a/Changelog.md b/Changelog.md index 6ab1f622e05d..88ada0c87f12 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,4 +1,7 @@ -### 0.1.0 - 2017/10/11 +### 0.2.1 - 2017/10/25 +- Updating the minimum version of dependency "ms-rest-js": "^0.2.3". This brings in the change (removal of "bodyAsStream" property) done to HttpOperationResponse class + +### 0.2.0 - 2017/10/11 - Updating the minimum version of dependency "ms-rest-js": "^0.2.1". This also gets a strict dependency to "moment" version 2.18.1 as 2.19.0 has bugs. ### 0.1.0 - 2017/09/16 diff --git a/dist/lib/azureServiceClient.js.map b/dist/lib/azureServiceClient.js.map index 3e8036d952b5..d89cde316841 100644 --- a/dist/lib/azureServiceClient.js.map +++ b/dist/lib/azureServiceClient.js.map @@ -1 +1 @@ -{"version":3,"file":"azureServiceClient.js","sourceRoot":"","sources":["../../lib/azureServiceClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"azureServiceClient.js","sourceRoot":"","sources":["../../lib/azureServiceClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/lib/pollingState.js b/dist/lib/pollingState.js index 0288b2739875..3f38bce52f71 100644 --- a/dist/lib/pollingState.js +++ b/dist/lib/pollingState.js @@ -101,7 +101,7 @@ class PollingState { * @returns {msRest.HttpOperationResponse} HttpOperationResponse */ getOperationResponse() { - const result = new msRest.HttpOperationResponse(this.request, this.response, this.response.body); + const result = new msRest.HttpOperationResponse(this.request, this.response); if (this.resource && typeof this.resource.valueOf() === "string") { result.bodyAsText = this.resource; result.bodyAsJson = JSON.parse(this.resource); diff --git a/dist/lib/pollingState.js.map b/dist/lib/pollingState.js.map index 363d92c202de..2314787d1d96 100644 --- a/dist/lib/pollingState.js.map +++ b/dist/lib/pollingState.js.map @@ -1 +1 @@ -{"version":3,"file":"pollingState.js","sourceRoot":"","sources":["../../lib/pollingState.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"pollingState.js","sourceRoot":"","sources":["../../lib/pollingState.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/pollingState.ts b/lib/pollingState.ts index 1fb2d9d2446f..41e5e1548bdf 100644 --- a/lib/pollingState.ts +++ b/lib/pollingState.ts @@ -142,7 +142,7 @@ export default class PollingState { * @returns {msRest.HttpOperationResponse} HttpOperationResponse */ getOperationResponse(): msRest.HttpOperationResponse { - const result = new msRest.HttpOperationResponse(this.request, this.response, this.response.body); + const result = new msRest.HttpOperationResponse(this.request, this.response); if (this.resource && typeof this.resource.valueOf() === "string") { result.bodyAsText = this.resource; result.bodyAsJson = JSON.parse(this.resource); diff --git a/msRestAzureBundle.js b/msRestAzureBundle.js index 843ae59b53e2..354e536a196c 100644 --- a/msRestAzureBundle.js +++ b/msRestAzureBundle.js @@ -548,7 +548,7 @@ class PollingState { * @returns {msRest.HttpOperationResponse} HttpOperationResponse */ getOperationResponse() { - const result = new msRest.HttpOperationResponse(this.request, this.response, this.response.body); + const result = new msRest.HttpOperationResponse(this.request, this.response); if (this.resource && typeof this.resource.valueOf() === "string") { result.bodyAsText = this.resource; result.bodyAsJson = JSON.parse(this.resource); diff --git a/msRestAzureBundle.js.map b/msRestAzureBundle.js.map index 445ddc55f829..13e24ed4d13d 100644 --- a/msRestAzureBundle.js.map +++ b/msRestAzureBundle.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap 58d9943eda644f801049","webpack:///./lib/util/constants.ts","webpack:///external \"msRest\"","webpack:///./lib/msRestAzure.ts","webpack:///./lib/azureServiceClient.ts","webpack:///./lib/pollingState.ts","webpack:///./lib/cloudError.ts","webpack:///./lib/baseResource.ts"],"names":[],"mappings":"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","file":"msRestAzureBundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 58d9943eda644f801049","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nconst Constants = {\n /**\n * Defines constants for long running operation states.\n *\n * @const\n * @type {string}\n */\n LongRunningOperationStates: {\n InProgress: \"InProgress\",\n Succeeded: \"Succeeded\",\n Failed: \"Failed\",\n Canceled: \"Canceled\"\n },\n\n /**\n * The default language in the request header.\n *\n * @const\n * @type {string}\n */\n DEFAULT_LANGUAGE: \"en-us\",\n\n /**\n * The ms-rest-azure version.\n * @const\n * @type {string}\n */\n msRestAzureVersion: \"0.1.0\"\n};\n\nexport default Constants;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/util/constants.ts","module.exports = msRest;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"msRest\"\n// module id = 1\n// module chunks = 0","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport { AzureServiceClientOptions, AzureServiceClient } from \"./azureServiceClient\";\nimport Constants from \"./util/constants\";\nimport { CloudError, CloudErrorMapper } from \"./cloudError\";\nimport { BaseResource, BaseResourceMapper } from \"./baseResource\";\nexport { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper };\n\n\n// WEBPACK FOOTER //\n// ./lib/msRestAzure.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport * as msRest from \"ms-rest-js\";\nimport Constants from \"./util/constants\";\nimport PollingState from \"./pollingState\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * Options to be provided while creating the client.\n */\nexport interface AzureServiceClientOptions extends msRest.ServiceClientOptions {\n /**\n * @property {string} [options.acceptLanguage] - Gets or sets the preferred language for the response. Default value is: \"en-US\".\n */\n acceptLanguage?: string;\n\n /**\n * @property {boolean} [options.generateClientRequestId] - When set to true a unique x-ms-client-request-id value\n * is generated and included in each request. Default is true.\n */\n generateClientRequestId?: boolean;\n\n /**\n * @property {number} [options.longRunningOperationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * Long Running Operations. Default value is 30.\n */\n longRunningOperationRetryTimeout?: number;\n\n /**\n * @property {number} [rpRegistrationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * AutomaticRPRegistration. Default value is 30 seconds.\n */\n rpRegistrationRetryTimeout?: number;\n}\n\n/**\n * @class\n * Initializes a new instance of the AzureServiceClient class.\n * @constructor\n *\n * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or\n * UserTokenCredentials object used for authentication.\n * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient\n */\nexport class AzureServiceClient extends msRest.ServiceClient {\n acceptLanguage: string = Constants.DEFAULT_LANGUAGE;\n generateClientRequestId = true;\n longRunningOperationRetryTimeout = 30;\n rpRegistrationRetryTimeout = 30;\n\n constructor(credentials: msRest.ServiceClientCredentials, options?: AzureServiceClientOptions) {\n super(credentials, options);\n this.acceptLanguage = Constants.DEFAULT_LANGUAGE;\n this.generateClientRequestId = true;\n this.longRunningOperationRetryTimeout = 30;\n if (!options) options = {};\n\n if (options.acceptLanguage !== null && options.acceptLanguage !== undefined) {\n this.acceptLanguage = options.acceptLanguage;\n }\n\n if (options.generateClientRequestId !== null && options.generateClientRequestId !== undefined) {\n this.generateClientRequestId = options.generateClientRequestId;\n }\n\n if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) {\n this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout;\n }\n\n if (options.rpRegistrationRetryTimeout !== null && options.rpRegistrationRetryTimeout !== undefined) {\n this.rpRegistrationRetryTimeout = options.rpRegistrationRetryTimeout;\n }\n\n try {\n const moduleName = \"ms-rest-azure\";\n const moduleVersion = Constants.msRestAzureVersion;\n this.addUserAgentInfo(`${moduleName}/${moduleVersion}`);\n } catch (err) {\n // do nothing\n }\n }\n\n /**\n * Provides a mechanism to make a request that will poll and provide the final result.\n * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object\n * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request\n * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody.\n */\n async sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n let initialResponse: msRest.HttpOperationResponse;\n try {\n initialResponse = await self.sendRequest(request);\n } catch (err) {\n return Promise.reject(err);\n }\n let finalResponse: msRest.HttpOperationResponse;\n try {\n finalResponse = await self.getLongRunningOperationResult(initialResponse, options);\n } catch (err) {\n return Promise.reject(err);\n }\n return Promise.resolve(finalResponse);\n }\n\n /**\n * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request.\n * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation.\n */\n private checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResponse): boolean {\n const statusCode = initialResponse.response.status;\n const method = initialResponse.request.method;\n if (statusCode === 200 || statusCode === 202 ||\n (statusCode === 201 && method === \"PUT\") ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n return false;\n } else {\n return true;\n }\n }\n\n /**\n * Poll Azure long running PUT, PATCH, POST or DELETE operations.\n * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation.\n * @param {msRest.RequestOptionsBase} [options] - custom request options.\n * @returns {Promise} result - The final response after polling is complete.\n */\n async getLongRunningOperationResult(resultOfInitialRequest: msRest.HttpOperationResponse, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n const initialRequestMethod: string = resultOfInitialRequest.request.method as msRest.HttpMethods;\n\n if (self.checkResponseStatusCodeFailed(resultOfInitialRequest)) {\n return Promise.reject(`Unexpected polling status code from long running operation ` +\n `\"${resultOfInitialRequest.response.status}\" for method \"${initialRequestMethod}\".`);\n }\n let pollingState: PollingState;\n try {\n pollingState = new PollingState(resultOfInitialRequest, self.longRunningOperationRetryTimeout);\n pollingState.optionsOfInitialRequest = options as msRest.RequestOptionsBase;\n } catch (error) {\n return Promise.reject(error);\n }\n const resourceUrl: string = resultOfInitialRequest.request.url;\n while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) {\n await msRest.delay(pollingState.getTimeout());\n if (pollingState.azureAsyncOperationHeaderLink) {\n await self.updateStateFromAzureAsyncOperationHeader(pollingState, true);\n } else if (pollingState.locationHeaderLink) {\n await self.updateStateFromLocationHeader(initialRequestMethod, pollingState);\n } else if (initialRequestMethod === \"PUT\") {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n } else {\n return Promise.reject(new Error(\"Location header is missing from long running operation.\"));\n }\n }\n\n if (pollingState.status === LroStates.Succeeded) {\n if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) &&\n (initialRequestMethod === \"PUT\" || initialRequestMethod === \"PATCH\")) {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n return Promise.resolve(pollingState.getOperationResponse());\n } else {\n return Promise.resolve(pollingState.getOperationResponse());\n }\n } else {\n return Promise.reject(pollingState.getRestError());\n }\n }\n\n /**\n * Retrieve operation status by polling from \"azure-asyncoperation\" header.\n * @param {PollingState} pollingState - The object to persist current operation state.\n * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation.\n */\n private async updateStateFromAzureAsyncOperationHeader(pollingState: PollingState, inPostOrDelete = false): Promise {\n let result: msRest.HttpOperationResponse;\n\n try {\n result = await this.getStatus(pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n\n if (!parsedResponse) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n } else if (parsedResponse && !parsedResponse.status) {\n return Promise.reject(new Error(`The response \"${result.bodyAsText}\" from long running operation does not contain the status property.`));\n }\n pollingState.status = parsedResponse.status;\n pollingState.error = parsedResponse.error;\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = undefined;\n if (inPostOrDelete) {\n pollingState.resource = result.bodyAsJson;\n }\n return Promise.resolve();\n }\n\n /**\n * Retrieve PUT operation status by polling from \"location\" header.\n * @param {string} method - The HTTP method.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromLocationHeader(method: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n const statusCode = result.response.status;\n if (statusCode === 202) {\n pollingState.status = LroStates.InProgress;\n } else if (statusCode === 200 ||\n (statusCode === 201 && (method === \"PUT\" || method === \"PATCH\")) ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n pollingState.status = LroStates.Succeeded;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n } else {\n return Promise.reject(new Error(`The response with status code ${statusCode} from polling for ` +\n `long running operation url \"${pollingState.locationHeaderLink}\" is not valid.`));\n }\n }\n\n /**\n * Polling for resource status.\n * @param {string} resourceUrl - The url of resource.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromGetResourceOperation(resourceUrl: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n if (!result.bodyAsJson) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n pollingState.status = LroStates.Succeeded;\n if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) {\n pollingState.status = parsedResponse.properties.provisioningState;\n }\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n return Promise.resolve();\n }\n\n /**\n * Retrieves operation status by querying the operation URL.\n * @param {string} operationUrl - URL used to poll operation result.\n * @param {object} options - Options that can be set on the request object\n */\n private async getStatus(operationUrl: string, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n // Construct URL\n const requestUrl = operationUrl.replace(\" \", \"%20\");\n // Create HTTP request object\n const httpRequest: msRest.RequestPrepareOptions = {\n method: \"GET\",\n url: requestUrl,\n headers: {}\n };\n if (options) {\n const customHeaders: { [key: string]: string } = (options.customHeaders as { [key: string]: string });\n for (const headerName in customHeaders) {\n if (customHeaders.hasOwnProperty(headerName)) {\n (httpRequest.headers as { [key: string]: string })[headerName] = customHeaders[headerName];\n }\n }\n }\n let operationResponse: msRest.HttpOperationResponse;\n try {\n operationResponse = await self.sendRequest(httpRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n const statusCode = operationResponse.response.status;\n const responseBody = operationResponse.bodyAsJson;\n if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) {\n const error = new msRest.RestError(`Invalid status code with response body \"${operationResponse.bodyAsText}\" occurred ` +\n `when polling for operation status.`);\n error.statusCode = statusCode;\n error.request = msRest.stripRequest(operationResponse.request);\n error.response = operationResponse.response;\n try {\n error.body = responseBody;\n } catch (badResponse) {\n error.message += ` Error \"${badResponse}\" occured while deserializing the response body - \"${operationResponse.bodyAsText}\".`;\n error.body = operationResponse.bodyAsText;\n }\n return Promise.reject(error);\n }\n\n return Promise.resolve(operationResponse);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/azureServiceClient.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport Constants from \"./util/constants\";\nimport * as msRest from \"ms-rest-js\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * @class\n * Initializes a new instance of the PollingState class.\n */\nexport default class PollingState {\n /**\n * @param {msRest.HttpOperationResponse} [response] - Response of the initial request that was made as a part of the asynchronous operation.\n */\n resultOfInitialRequest: msRest.HttpOperationResponse;\n /**\n * @param {msRest.RequestOptionsBase} [optionsOfInitialRequest] - Request options that were provided as a part of the initial request.\n */\n optionsOfInitialRequest: msRest.RequestOptionsBase;\n /**\n * @param {msRest.WebResource} [request] - provides information about the request made for polling.\n */\n request: msRest.WebResource;\n /**\n * @param {Response} [response] - The response object to extract longrunning operation status.\n */\n response: Response;\n /**\n * @param {any} [resource] - Provides information about the response body received in the polling request. Particularly useful when polling via provisioningState.\n */\n resource: any;\n /**\n * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30.\n */\n retryTimeout = 30;\n /**\n * @param {string} [azureAsyncOperationHeaderLink] - The url that is present in \"azure-asyncoperation\" response header.\n */\n azureAsyncOperationHeaderLink?: string;\n /**\n * @param {string} [locationHeaderLink] - The url that is present in \"Location\" response header.\n */\n locationHeaderLink?: string;\n /**\n * @param {string} [status] - The status of polling. \"Succeeded, Failed, Cancelled, Updating, Creating, etc.\"\n */\n status?: string;\n /**\n * @param {msRest.RestError} [error] - Provides information about the error that happened while polling.\n */\n error?: msRest.RestError;\n\n constructor(resultOfInitialRequest: msRest.HttpOperationResponse, retryTimeout = 30) {\n this.resultOfInitialRequest = resultOfInitialRequest;\n this.retryTimeout = retryTimeout;\n this.updateResponse(resultOfInitialRequest.response);\n this.request = resultOfInitialRequest.request;\n // Parse response.body & assign it as the resource.\n try {\n if (resultOfInitialRequest.bodyAsText && resultOfInitialRequest.bodyAsText.length > 0) {\n this.resource = JSON.parse(resultOfInitialRequest.bodyAsText);\n } else {\n this.resource = resultOfInitialRequest.bodyAsJson;\n }\n } catch (error) {\n const deserializationError = new msRest.RestError(`Error \"${error}\" occurred in parsing the responseBody \" +\n \"while creating the PollingState for Long Running Operation- \"${resultOfInitialRequest.bodyAsText}\"`);\n deserializationError.request = resultOfInitialRequest.request;\n deserializationError.response = resultOfInitialRequest.response;\n throw deserializationError;\n }\n switch (this.response.status) {\n case 202:\n this.status = LroStates.InProgress;\n break;\n\n case 204:\n this.status = LroStates.Succeeded;\n break;\n\n case 201:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.InProgress;\n }\n break;\n\n case 200:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.Succeeded;\n }\n break;\n\n default:\n this.status = LroStates.Failed;\n break;\n }\n }\n\n /**\n * Update cached data using the provided response object\n * @param {Response} [response] - provider response object.\n */\n updateResponse(response: Response) {\n this.response = response;\n if (response && response.headers) {\n const asyncOperationHeader: string | null | undefined = response.headers.get(\"azure-asyncoperation\");\n const locationHeader: string | null | undefined = response.headers.get(\"location\");\n if (asyncOperationHeader) {\n this.azureAsyncOperationHeaderLink = asyncOperationHeader;\n }\n\n if (locationHeader) {\n this.locationHeaderLink = locationHeader;\n }\n }\n }\n\n /**\n * Gets timeout in milliseconds.\n * @returns {number} timeout\n */\n getTimeout() {\n if (this.retryTimeout || this.retryTimeout === 0) {\n return this.retryTimeout * 1000;\n }\n if (this.response) {\n const retryAfter: string | null | undefined = this.response.headers.get(\"retry-after\");\n if (retryAfter) {\n return parseInt(retryAfter) * 1000;\n }\n }\n return 30 * 1000;\n }\n\n /**\n * Returns long running operation result.\n * @returns {msRest.HttpOperationResponse} HttpOperationResponse\n */\n getOperationResponse(): msRest.HttpOperationResponse {\n const result = new msRest.HttpOperationResponse(this.request, this.response, this.response.body);\n if (this.resource && typeof this.resource.valueOf() === \"string\") {\n result.bodyAsText = this.resource;\n result.bodyAsJson = JSON.parse(this.resource);\n } else {\n result.bodyAsJson = this.resource;\n result.bodyAsText = JSON.stringify(this.resource);\n }\n return result;\n }\n\n /**\n * Returns an Error on operation failure.\n * @param {Error} err - The error object.\n * @returns {msRest.RestError} The RestError defined in the runtime.\n */\n getRestError(err?: Error): msRest.RestError {\n let errMsg: string;\n let errCode: string | undefined = undefined;\n\n const error = new msRest.RestError(\"\");\n error.request = msRest.stripRequest(this.request);\n error.response = this.response;\n const parsedResponse = this.resource as { [key: string]: any };\n\n if (err && err.message) {\n errMsg = `Long running operation failed with error: \"${err.message}\".`;\n } else {\n errMsg = `Long running operation failed with status: \"${this.status}\".`;\n }\n\n if (parsedResponse) {\n if (parsedResponse.error && parsedResponse.error.message) {\n errMsg = `Long running operation failed with error: \"${parsedResponse.error.message}\".`;\n }\n if (parsedResponse.error && parsedResponse.error.code) {\n errCode = parsedResponse.error.code as string;\n }\n }\n\n error.message = errMsg;\n if (errCode) error.code = errCode;\n error.body = parsedResponse;\n return error;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/pollingState.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * Provides additional information about an http error response returned from a Microsoft Azure service.\n */\nexport interface CloudError extends Error {\n /**\n * @property {string} code The error code parsed from the body of the http error response.\n */\n code: string;\n /**\n * @property {string} message The error message parsed from the body of the http error response.\n */\n message: string;\n /**\n * @property {string} [target] The target of the error.\n */\n target?: string;\n /**\n * @property {Array} [details] An array of CloudError objects specifying the details.\n */\n details?: Array;\n}\n\nexport const CloudErrorMapper = {\n required: false,\n serializedName: \"CloudError\",\n type: {\n name: \"Composite\",\n className: \"CloudError\",\n modelProperties: {\n code: {\n required: true,\n serializedName: \"code\",\n type: {\n name: \"String\"\n }\n },\n message: {\n required: true,\n serializedName: \"message\",\n type: {\n name: \"String\"\n }\n },\n target: {\n required: false,\n serializedName: \"target\",\n type: {\n name: \"String\"\n }\n },\n details: {\n required: false,\n serializedName: \"details\",\n type: {\n name: \"Sequence\",\n element: {\n required: false,\n serializedName: \"CloudErrorElementType\",\n type: {\n name: \"Composite\",\n className: \"CloudError\"\n }\n }\n }\n }\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/cloudError.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * An empty interface.\n */\nexport interface BaseResource { }\n\nexport const BaseResourceMapper = {\n required: false,\n serializedName: \"BaseResource\",\n type: {\n name: \"Composite\",\n className: \"BaseResource\",\n modelProperties: {\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/baseResource.ts"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap b72959873493c4949e36","webpack:///./lib/util/constants.ts","webpack:///external \"msRest\"","webpack:///./lib/msRestAzure.ts","webpack:///./lib/azureServiceClient.ts","webpack:///./lib/pollingState.ts","webpack:///./lib/cloudError.ts","webpack:///./lib/baseResource.ts"],"names":[],"mappings":"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","file":"msRestAzureBundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap b72959873493c4949e36","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nconst Constants = {\n /**\n * Defines constants for long running operation states.\n *\n * @const\n * @type {string}\n */\n LongRunningOperationStates: {\n InProgress: \"InProgress\",\n Succeeded: \"Succeeded\",\n Failed: \"Failed\",\n Canceled: \"Canceled\"\n },\n\n /**\n * The default language in the request header.\n *\n * @const\n * @type {string}\n */\n DEFAULT_LANGUAGE: \"en-us\",\n\n /**\n * The ms-rest-azure version.\n * @const\n * @type {string}\n */\n msRestAzureVersion: \"0.1.0\"\n};\n\nexport default Constants;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/util/constants.ts","module.exports = msRest;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"msRest\"\n// module id = 1\n// module chunks = 0","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport { AzureServiceClientOptions, AzureServiceClient } from \"./azureServiceClient\";\nimport Constants from \"./util/constants\";\nimport { CloudError, CloudErrorMapper } from \"./cloudError\";\nimport { BaseResource, BaseResourceMapper } from \"./baseResource\";\nexport { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper };\n\n\n// WEBPACK FOOTER //\n// ./lib/msRestAzure.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport * as msRest from \"ms-rest-js\";\nimport Constants from \"./util/constants\";\nimport PollingState from \"./pollingState\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * Options to be provided while creating the client.\n */\nexport interface AzureServiceClientOptions extends msRest.ServiceClientOptions {\n /**\n * @property {string} [options.acceptLanguage] - Gets or sets the preferred language for the response. Default value is: \"en-US\".\n */\n acceptLanguage?: string;\n\n /**\n * @property {boolean} [options.generateClientRequestId] - When set to true a unique x-ms-client-request-id value\n * is generated and included in each request. Default is true.\n */\n generateClientRequestId?: boolean;\n\n /**\n * @property {number} [options.longRunningOperationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * Long Running Operations. Default value is 30.\n */\n longRunningOperationRetryTimeout?: number;\n\n /**\n * @property {number} [rpRegistrationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * AutomaticRPRegistration. Default value is 30 seconds.\n */\n rpRegistrationRetryTimeout?: number;\n}\n\n/**\n * @class\n * Initializes a new instance of the AzureServiceClient class.\n * @constructor\n *\n * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or\n * UserTokenCredentials object used for authentication.\n * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient\n */\nexport class AzureServiceClient extends msRest.ServiceClient {\n acceptLanguage: string = Constants.DEFAULT_LANGUAGE;\n generateClientRequestId = true;\n longRunningOperationRetryTimeout = 30;\n rpRegistrationRetryTimeout = 30;\n\n constructor(credentials: msRest.ServiceClientCredentials, options?: AzureServiceClientOptions) {\n super(credentials, options);\n this.acceptLanguage = Constants.DEFAULT_LANGUAGE;\n this.generateClientRequestId = true;\n this.longRunningOperationRetryTimeout = 30;\n if (!options) options = {};\n\n if (options.acceptLanguage !== null && options.acceptLanguage !== undefined) {\n this.acceptLanguage = options.acceptLanguage;\n }\n\n if (options.generateClientRequestId !== null && options.generateClientRequestId !== undefined) {\n this.generateClientRequestId = options.generateClientRequestId;\n }\n\n if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) {\n this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout;\n }\n\n if (options.rpRegistrationRetryTimeout !== null && options.rpRegistrationRetryTimeout !== undefined) {\n this.rpRegistrationRetryTimeout = options.rpRegistrationRetryTimeout;\n }\n\n try {\n const moduleName = \"ms-rest-azure\";\n const moduleVersion = Constants.msRestAzureVersion;\n this.addUserAgentInfo(`${moduleName}/${moduleVersion}`);\n } catch (err) {\n // do nothing\n }\n }\n\n /**\n * Provides a mechanism to make a request that will poll and provide the final result.\n * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object\n * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request\n * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody.\n */\n async sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n let initialResponse: msRest.HttpOperationResponse;\n try {\n initialResponse = await self.sendRequest(request);\n } catch (err) {\n return Promise.reject(err);\n }\n let finalResponse: msRest.HttpOperationResponse;\n try {\n finalResponse = await self.getLongRunningOperationResult(initialResponse, options);\n } catch (err) {\n return Promise.reject(err);\n }\n return Promise.resolve(finalResponse);\n }\n\n /**\n * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request.\n * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation.\n */\n private checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResponse): boolean {\n const statusCode = initialResponse.response.status;\n const method = initialResponse.request.method;\n if (statusCode === 200 || statusCode === 202 ||\n (statusCode === 201 && method === \"PUT\") ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n return false;\n } else {\n return true;\n }\n }\n\n /**\n * Poll Azure long running PUT, PATCH, POST or DELETE operations.\n * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation.\n * @param {msRest.RequestOptionsBase} [options] - custom request options.\n * @returns {Promise} result - The final response after polling is complete.\n */\n async getLongRunningOperationResult(resultOfInitialRequest: msRest.HttpOperationResponse, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n const initialRequestMethod: string = resultOfInitialRequest.request.method as msRest.HttpMethods;\n\n if (self.checkResponseStatusCodeFailed(resultOfInitialRequest)) {\n return Promise.reject(`Unexpected polling status code from long running operation ` +\n `\"${resultOfInitialRequest.response.status}\" for method \"${initialRequestMethod}\".`);\n }\n let pollingState: PollingState;\n try {\n pollingState = new PollingState(resultOfInitialRequest, self.longRunningOperationRetryTimeout);\n pollingState.optionsOfInitialRequest = options as msRest.RequestOptionsBase;\n } catch (error) {\n return Promise.reject(error);\n }\n const resourceUrl: string = resultOfInitialRequest.request.url;\n while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) {\n await msRest.delay(pollingState.getTimeout());\n if (pollingState.azureAsyncOperationHeaderLink) {\n await self.updateStateFromAzureAsyncOperationHeader(pollingState, true);\n } else if (pollingState.locationHeaderLink) {\n await self.updateStateFromLocationHeader(initialRequestMethod, pollingState);\n } else if (initialRequestMethod === \"PUT\") {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n } else {\n return Promise.reject(new Error(\"Location header is missing from long running operation.\"));\n }\n }\n\n if (pollingState.status === LroStates.Succeeded) {\n if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) &&\n (initialRequestMethod === \"PUT\" || initialRequestMethod === \"PATCH\")) {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n return Promise.resolve(pollingState.getOperationResponse());\n } else {\n return Promise.resolve(pollingState.getOperationResponse());\n }\n } else {\n return Promise.reject(pollingState.getRestError());\n }\n }\n\n /**\n * Retrieve operation status by polling from \"azure-asyncoperation\" header.\n * @param {PollingState} pollingState - The object to persist current operation state.\n * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation.\n */\n private async updateStateFromAzureAsyncOperationHeader(pollingState: PollingState, inPostOrDelete = false): Promise {\n let result: msRest.HttpOperationResponse;\n\n try {\n result = await this.getStatus(pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n\n if (!parsedResponse) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n } else if (parsedResponse && !parsedResponse.status) {\n return Promise.reject(new Error(`The response \"${result.bodyAsText}\" from long running operation does not contain the status property.`));\n }\n pollingState.status = parsedResponse.status;\n pollingState.error = parsedResponse.error;\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = undefined;\n if (inPostOrDelete) {\n pollingState.resource = result.bodyAsJson;\n }\n return Promise.resolve();\n }\n\n /**\n * Retrieve PUT operation status by polling from \"location\" header.\n * @param {string} method - The HTTP method.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromLocationHeader(method: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n const statusCode = result.response.status;\n if (statusCode === 202) {\n pollingState.status = LroStates.InProgress;\n } else if (statusCode === 200 ||\n (statusCode === 201 && (method === \"PUT\" || method === \"PATCH\")) ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n pollingState.status = LroStates.Succeeded;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n } else {\n return Promise.reject(new Error(`The response with status code ${statusCode} from polling for ` +\n `long running operation url \"${pollingState.locationHeaderLink}\" is not valid.`));\n }\n }\n\n /**\n * Polling for resource status.\n * @param {string} resourceUrl - The url of resource.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromGetResourceOperation(resourceUrl: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n if (!result.bodyAsJson) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n pollingState.status = LroStates.Succeeded;\n if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) {\n pollingState.status = parsedResponse.properties.provisioningState;\n }\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n return Promise.resolve();\n }\n\n /**\n * Retrieves operation status by querying the operation URL.\n * @param {string} operationUrl - URL used to poll operation result.\n * @param {object} options - Options that can be set on the request object\n */\n private async getStatus(operationUrl: string, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n // Construct URL\n const requestUrl = operationUrl.replace(\" \", \"%20\");\n // Create HTTP request object\n const httpRequest: msRest.RequestPrepareOptions = {\n method: \"GET\",\n url: requestUrl,\n headers: {}\n };\n if (options) {\n const customHeaders: { [key: string]: string } = (options.customHeaders as { [key: string]: string });\n for (const headerName in customHeaders) {\n if (customHeaders.hasOwnProperty(headerName)) {\n (httpRequest.headers as { [key: string]: string })[headerName] = customHeaders[headerName];\n }\n }\n }\n let operationResponse: msRest.HttpOperationResponse;\n try {\n operationResponse = await self.sendRequest(httpRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n const statusCode = operationResponse.response.status;\n const responseBody = operationResponse.bodyAsJson;\n if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) {\n const error = new msRest.RestError(`Invalid status code with response body \"${operationResponse.bodyAsText}\" occurred ` +\n `when polling for operation status.`);\n error.statusCode = statusCode;\n error.request = msRest.stripRequest(operationResponse.request);\n error.response = operationResponse.response;\n try {\n error.body = responseBody;\n } catch (badResponse) {\n error.message += ` Error \"${badResponse}\" occured while deserializing the response body - \"${operationResponse.bodyAsText}\".`;\n error.body = operationResponse.bodyAsText;\n }\n return Promise.reject(error);\n }\n\n return Promise.resolve(operationResponse);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/azureServiceClient.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport Constants from \"./util/constants\";\nimport * as msRest from \"ms-rest-js\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * @class\n * Initializes a new instance of the PollingState class.\n */\nexport default class PollingState {\n /**\n * @param {msRest.HttpOperationResponse} [response] - Response of the initial request that was made as a part of the asynchronous operation.\n */\n resultOfInitialRequest: msRest.HttpOperationResponse;\n /**\n * @param {msRest.RequestOptionsBase} [optionsOfInitialRequest] - Request options that were provided as a part of the initial request.\n */\n optionsOfInitialRequest: msRest.RequestOptionsBase;\n /**\n * @param {msRest.WebResource} [request] - provides information about the request made for polling.\n */\n request: msRest.WebResource;\n /**\n * @param {Response} [response] - The response object to extract longrunning operation status.\n */\n response: Response;\n /**\n * @param {any} [resource] - Provides information about the response body received in the polling request. Particularly useful when polling via provisioningState.\n */\n resource: any;\n /**\n * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30.\n */\n retryTimeout = 30;\n /**\n * @param {string} [azureAsyncOperationHeaderLink] - The url that is present in \"azure-asyncoperation\" response header.\n */\n azureAsyncOperationHeaderLink?: string;\n /**\n * @param {string} [locationHeaderLink] - The url that is present in \"Location\" response header.\n */\n locationHeaderLink?: string;\n /**\n * @param {string} [status] - The status of polling. \"Succeeded, Failed, Cancelled, Updating, Creating, etc.\"\n */\n status?: string;\n /**\n * @param {msRest.RestError} [error] - Provides information about the error that happened while polling.\n */\n error?: msRest.RestError;\n\n constructor(resultOfInitialRequest: msRest.HttpOperationResponse, retryTimeout = 30) {\n this.resultOfInitialRequest = resultOfInitialRequest;\n this.retryTimeout = retryTimeout;\n this.updateResponse(resultOfInitialRequest.response);\n this.request = resultOfInitialRequest.request;\n // Parse response.body & assign it as the resource.\n try {\n if (resultOfInitialRequest.bodyAsText && resultOfInitialRequest.bodyAsText.length > 0) {\n this.resource = JSON.parse(resultOfInitialRequest.bodyAsText);\n } else {\n this.resource = resultOfInitialRequest.bodyAsJson;\n }\n } catch (error) {\n const deserializationError = new msRest.RestError(`Error \"${error}\" occurred in parsing the responseBody \" +\n \"while creating the PollingState for Long Running Operation- \"${resultOfInitialRequest.bodyAsText}\"`);\n deserializationError.request = resultOfInitialRequest.request;\n deserializationError.response = resultOfInitialRequest.response;\n throw deserializationError;\n }\n switch (this.response.status) {\n case 202:\n this.status = LroStates.InProgress;\n break;\n\n case 204:\n this.status = LroStates.Succeeded;\n break;\n\n case 201:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.InProgress;\n }\n break;\n\n case 200:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.Succeeded;\n }\n break;\n\n default:\n this.status = LroStates.Failed;\n break;\n }\n }\n\n /**\n * Update cached data using the provided response object\n * @param {Response} [response] - provider response object.\n */\n updateResponse(response: Response) {\n this.response = response;\n if (response && response.headers) {\n const asyncOperationHeader: string | null | undefined = response.headers.get(\"azure-asyncoperation\");\n const locationHeader: string | null | undefined = response.headers.get(\"location\");\n if (asyncOperationHeader) {\n this.azureAsyncOperationHeaderLink = asyncOperationHeader;\n }\n\n if (locationHeader) {\n this.locationHeaderLink = locationHeader;\n }\n }\n }\n\n /**\n * Gets timeout in milliseconds.\n * @returns {number} timeout\n */\n getTimeout() {\n if (this.retryTimeout || this.retryTimeout === 0) {\n return this.retryTimeout * 1000;\n }\n if (this.response) {\n const retryAfter: string | null | undefined = this.response.headers.get(\"retry-after\");\n if (retryAfter) {\n return parseInt(retryAfter) * 1000;\n }\n }\n return 30 * 1000;\n }\n\n /**\n * Returns long running operation result.\n * @returns {msRest.HttpOperationResponse} HttpOperationResponse\n */\n getOperationResponse(): msRest.HttpOperationResponse {\n const result = new msRest.HttpOperationResponse(this.request, this.response);\n if (this.resource && typeof this.resource.valueOf() === \"string\") {\n result.bodyAsText = this.resource;\n result.bodyAsJson = JSON.parse(this.resource);\n } else {\n result.bodyAsJson = this.resource;\n result.bodyAsText = JSON.stringify(this.resource);\n }\n return result;\n }\n\n /**\n * Returns an Error on operation failure.\n * @param {Error} err - The error object.\n * @returns {msRest.RestError} The RestError defined in the runtime.\n */\n getRestError(err?: Error): msRest.RestError {\n let errMsg: string;\n let errCode: string | undefined = undefined;\n\n const error = new msRest.RestError(\"\");\n error.request = msRest.stripRequest(this.request);\n error.response = this.response;\n const parsedResponse = this.resource as { [key: string]: any };\n\n if (err && err.message) {\n errMsg = `Long running operation failed with error: \"${err.message}\".`;\n } else {\n errMsg = `Long running operation failed with status: \"${this.status}\".`;\n }\n\n if (parsedResponse) {\n if (parsedResponse.error && parsedResponse.error.message) {\n errMsg = `Long running operation failed with error: \"${parsedResponse.error.message}\".`;\n }\n if (parsedResponse.error && parsedResponse.error.code) {\n errCode = parsedResponse.error.code as string;\n }\n }\n\n error.message = errMsg;\n if (errCode) error.code = errCode;\n error.body = parsedResponse;\n return error;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/pollingState.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * Provides additional information about an http error response returned from a Microsoft Azure service.\n */\nexport interface CloudError extends Error {\n /**\n * @property {string} code The error code parsed from the body of the http error response.\n */\n code: string;\n /**\n * @property {string} message The error message parsed from the body of the http error response.\n */\n message: string;\n /**\n * @property {string} [target] The target of the error.\n */\n target?: string;\n /**\n * @property {Array} [details] An array of CloudError objects specifying the details.\n */\n details?: Array;\n}\n\nexport const CloudErrorMapper = {\n required: false,\n serializedName: \"CloudError\",\n type: {\n name: \"Composite\",\n className: \"CloudError\",\n modelProperties: {\n code: {\n required: true,\n serializedName: \"code\",\n type: {\n name: \"String\"\n }\n },\n message: {\n required: true,\n serializedName: \"message\",\n type: {\n name: \"String\"\n }\n },\n target: {\n required: false,\n serializedName: \"target\",\n type: {\n name: \"String\"\n }\n },\n details: {\n required: false,\n serializedName: \"details\",\n type: {\n name: \"Sequence\",\n element: {\n required: false,\n serializedName: \"CloudErrorElementType\",\n type: {\n name: \"Composite\",\n className: \"CloudError\"\n }\n }\n }\n }\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/cloudError.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * An empty interface.\n */\nexport interface BaseResource { }\n\nexport const BaseResourceMapper = {\n required: false,\n serializedName: \"BaseResource\",\n type: {\n name: \"Composite\",\n className: \"BaseResource\",\n modelProperties: {\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/baseResource.ts"],"sourceRoot":""} \ No newline at end of file diff --git a/msRestAzureBundle.min.js b/msRestAzureBundle.min.js index 81e77a7e13e3..8f4a71a4a9e8 100644 --- a/msRestAzureBundle.min.js +++ b/msRestAzureBundle.min.js @@ -1 +1 @@ -var msRestAzure=function(e){function t(s){if(r[s])return r[s].exports;var o=r[s]={i:s,l:!1,exports:{}};return e[s].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,s){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:s})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=2)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s={LongRunningOperationStates:{InProgress:"InProgress",Succeeded:"Succeeded",Failed:"Failed",Canceled:"Canceled"},DEFAULT_LANGUAGE:"en-us",msRestAzureVersion:"0.1.0"};t.default=s},function(e,t){e.exports=msRest},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=r(3);t.AzureServiceClient=s.AzureServiceClient;const o=r(0);t.Constants=o.default;const n=r(5);t.CloudErrorMapper=n.CloudErrorMapper;const i=r(6);t.BaseResourceMapper=i.BaseResourceMapper},function(e,t,r){"use strict";var s=this&&this.__awaiter||function(e,t,r,s){return new(r||(r=Promise))(function(o,n){function i(e){try{a(s.next(e))}catch(e){n(e)}}function u(e){try{a(s.throw(e))}catch(e){n(e)}}function a(e){e.done?o(e.value):new r(function(t){t(e.value)}).then(i,u)}a((s=s.apply(e,t||[])).next())})};Object.defineProperty(t,"__esModule",{value:!0});const o=r(1),n=r(0),i=r(4),u=n.default.LongRunningOperationStates;class a extends o.ServiceClient{constructor(e,t){super(e,t),this.acceptLanguage=n.default.DEFAULT_LANGUAGE,this.generateClientRequestId=!0,this.longRunningOperationRetryTimeout=30,this.rpRegistrationRetryTimeout=30,this.acceptLanguage=n.default.DEFAULT_LANGUAGE,this.generateClientRequestId=!0,this.longRunningOperationRetryTimeout=30,t||(t={}),null!==t.acceptLanguage&&void 0!==t.acceptLanguage&&(this.acceptLanguage=t.acceptLanguage),null!==t.generateClientRequestId&&void 0!==t.generateClientRequestId&&(this.generateClientRequestId=t.generateClientRequestId),null!==t.longRunningOperationRetryTimeout&&void 0!==t.longRunningOperationRetryTimeout&&(this.longRunningOperationRetryTimeout=t.longRunningOperationRetryTimeout),null!==t.rpRegistrationRetryTimeout&&void 0!==t.rpRegistrationRetryTimeout&&(this.rpRegistrationRetryTimeout=t.rpRegistrationRetryTimeout);try{const e=n.default.msRestAzureVersion;this.addUserAgentInfo(`ms-rest-azure/${e}`)}catch(e){}}sendLongRunningRequest(e,t){return s(this,void 0,void 0,function*(){const r=this;let s;try{s=yield r.sendRequest(e)}catch(e){return Promise.reject(e)}let o;try{o=yield r.getLongRunningOperationResult(s,t)}catch(e){return Promise.reject(e)}return Promise.resolve(o)})}checkResponseStatusCodeFailed(e){const t=e.response.status,r=e.request.method;return 200!==t&&202!==t&&(201!==t||"PUT"!==r)&&(204!==t||"DELETE"!==r&&"POST"!==r)}getLongRunningOperationResult(e,t){return s(this,void 0,void 0,function*(){const r=this,s=e.request.method;if(r.checkResponseStatusCodeFailed(e))return Promise.reject(`Unexpected polling status code from long running operation `+`"${e.response.status}" for method "${s}".`);let n;try{(n=new i.default(e,r.longRunningOperationRetryTimeout)).optionsOfInitialRequest=t}catch(e){return Promise.reject(e)}const a=e.request.url;for(;![u.Succeeded,u.Failed,u.Canceled].some(e=>e===n.status);)if(yield o.delay(n.getTimeout()),n.azureAsyncOperationHeaderLink)yield r.updateStateFromAzureAsyncOperationHeader(n,!0);else if(n.locationHeaderLink)yield r.updateStateFromLocationHeader(s,n);else{if("PUT"!==s)return Promise.reject(new Error("Location header is missing from long running operation."));yield r.updateStateFromGetResourceOperation(a,n)}return n.status===u.Succeeded?!n.azureAsyncOperationHeaderLink&&n.resource||"PUT"!==s&&"PATCH"!==s?Promise.resolve(n.getOperationResponse()):(yield r.updateStateFromGetResourceOperation(a,n),Promise.resolve(n.getOperationResponse())):Promise.reject(n.getRestError())})}updateStateFromAzureAsyncOperationHeader(e,t=!1){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(e.azureAsyncOperationHeaderLink,e.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}const s=r.bodyAsJson;return s?s&&!s.status?Promise.reject(new Error(`The response "${r.bodyAsText}" from long running operation does not contain the status property.`)):(e.status=s.status,e.error=s.error,e.updateResponse(r.response),e.request=r.request,e.resource=void 0,t&&(e.resource=r.bodyAsJson),Promise.resolve()):Promise.reject(new Error("The response from long running operation does not contain a body."))})}updateStateFromLocationHeader(e,t){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(t.locationHeaderLink,t.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}const s=r.bodyAsJson;t.updateResponse(r.response),t.request=r.request;const n=r.response.status;if(202===n)t.status=u.InProgress;else{if(200!==n&&(201!==n||"PUT"!==e&&"PATCH"!==e)&&(204!==n||"DELETE"!==e&&"POST"!==e))return Promise.reject(new Error(`The response with status code ${n} from polling for `+`long running operation url "${t.locationHeaderLink}" is not valid.`));t.status=u.Succeeded,t.resource=s,t.error=new o.RestError(`Long running operation failed with status "${t.status}".`),t.error.code=t.status}})}updateStateFromGetResourceOperation(e,t){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(e,t.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}if(!r.bodyAsJson)return Promise.reject(new Error("The response from long running operation does not contain a body."));const s=r.bodyAsJson;return t.status=u.Succeeded,s&&s.properties&&s.properties.provisioningState&&(t.status=s.properties.provisioningState),t.updateResponse(r.response),t.request=r.request,t.resource=s,t.error=new o.RestError(`Long running operation failed with status "${t.status}".`),t.error.code=t.status,Promise.resolve()})}getStatus(e,t){return s(this,void 0,void 0,function*(){const r=this,s={method:"GET",url:e.replace(" ","%20"),headers:{}};if(t){const e=t.customHeaders;for(const t in e)e.hasOwnProperty(t)&&(s.headers[t]=e[t])}let n;try{n=yield r.sendRequest(s)}catch(e){return Promise.reject(e)}const i=n.response.status,u=n.bodyAsJson;if(200!==i&&201!==i&&202!==i&&204!==i){const e=new o.RestError(`Invalid status code with response body "${n.bodyAsText}" occurred `+`when polling for operation status.`);e.statusCode=i,e.request=o.stripRequest(n.request),e.response=n.response;try{e.body=u}catch(t){e.message+=` Error "${t}" occured while deserializing the response body - "${n.bodyAsText}".`,e.body=n.bodyAsText}return Promise.reject(e)}return Promise.resolve(n)})}}t.AzureServiceClient=a},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=r(0),o=r(1),n=s.default.LongRunningOperationStates;class i{constructor(e,t=30){this.retryTimeout=30,this.resultOfInitialRequest=e,this.retryTimeout=t,this.updateResponse(e.response),this.request=e.request;try{e.bodyAsText&&e.bodyAsText.length>0?this.resource=JSON.parse(e.bodyAsText):this.resource=e.bodyAsJson}catch(t){const r=new o.RestError(`Error "${t}" occurred in parsing the responseBody " +\n "while creating the PollingState for Long Running Operation- "${e.bodyAsText}"`);throw r.request=e.request,r.response=e.response,r}switch(this.response.status){case 202:this.status=n.InProgress;break;case 204:this.status=n.Succeeded;break;case 201:this.resource&&this.resource.properties&&this.resource.properties.provisioningState?this.status=this.resource.properties.provisioningState:this.status=n.InProgress;break;case 200:this.resource&&this.resource.properties&&this.resource.properties.provisioningState?this.status=this.resource.properties.provisioningState:this.status=n.Succeeded;break;default:this.status=n.Failed}}updateResponse(e){if(this.response=e,e&&e.headers){const t=e.headers.get("azure-asyncoperation"),r=e.headers.get("location");t&&(this.azureAsyncOperationHeaderLink=t),r&&(this.locationHeaderLink=r)}}getTimeout(){if(this.retryTimeout||0===this.retryTimeout)return 1e3*this.retryTimeout;if(this.response){const e=this.response.headers.get("retry-after");if(e)return 1e3*parseInt(e)}return 3e4}getOperationResponse(){const e=new o.HttpOperationResponse(this.request,this.response,this.response.body);return this.resource&&"string"==typeof this.resource.valueOf()?(e.bodyAsText=this.resource,e.bodyAsJson=JSON.parse(this.resource)):(e.bodyAsJson=this.resource,e.bodyAsText=JSON.stringify(this.resource)),e}getRestError(e){let t,r=void 0;const s=new o.RestError("");s.request=o.stripRequest(this.request),s.response=this.response;const n=this.resource;return t=e&&e.message?`Long running operation failed with error: "${e.message}".`:`Long running operation failed with status: "${this.status}".`,n&&(n.error&&n.error.message&&(t=`Long running operation failed with error: "${n.error.message}".`),n.error&&n.error.code&&(r=n.error.code)),s.message=t,r&&(s.code=r),s.body=n,s}}t.default=i},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CloudErrorMapper={required:!1,serializedName:"CloudError",type:{name:"Composite",className:"CloudError",modelProperties:{code:{required:!0,serializedName:"code",type:{name:"String"}},message:{required:!0,serializedName:"message",type:{name:"String"}},target:{required:!1,serializedName:"target",type:{name:"String"}},details:{required:!1,serializedName:"details",type:{name:"Sequence",element:{required:!1,serializedName:"CloudErrorElementType",type:{name:"Composite",className:"CloudError"}}}}}}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseResourceMapper={required:!1,serializedName:"BaseResource",type:{name:"Composite",className:"BaseResource",modelProperties:{}}}}]); \ No newline at end of file +var msRestAzure=function(e){function t(s){if(r[s])return r[s].exports;var o=r[s]={i:s,l:!1,exports:{}};return e[s].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,s){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:s})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=2)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s={LongRunningOperationStates:{InProgress:"InProgress",Succeeded:"Succeeded",Failed:"Failed",Canceled:"Canceled"},DEFAULT_LANGUAGE:"en-us",msRestAzureVersion:"0.1.0"};t.default=s},function(e,t){e.exports=msRest},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=r(3);t.AzureServiceClient=s.AzureServiceClient;const o=r(0);t.Constants=o.default;const n=r(5);t.CloudErrorMapper=n.CloudErrorMapper;const i=r(6);t.BaseResourceMapper=i.BaseResourceMapper},function(e,t,r){"use strict";var s=this&&this.__awaiter||function(e,t,r,s){return new(r||(r=Promise))(function(o,n){function i(e){try{a(s.next(e))}catch(e){n(e)}}function u(e){try{a(s.throw(e))}catch(e){n(e)}}function a(e){e.done?o(e.value):new r(function(t){t(e.value)}).then(i,u)}a((s=s.apply(e,t||[])).next())})};Object.defineProperty(t,"__esModule",{value:!0});const o=r(1),n=r(0),i=r(4),u=n.default.LongRunningOperationStates;class a extends o.ServiceClient{constructor(e,t){super(e,t),this.acceptLanguage=n.default.DEFAULT_LANGUAGE,this.generateClientRequestId=!0,this.longRunningOperationRetryTimeout=30,this.rpRegistrationRetryTimeout=30,this.acceptLanguage=n.default.DEFAULT_LANGUAGE,this.generateClientRequestId=!0,this.longRunningOperationRetryTimeout=30,t||(t={}),null!==t.acceptLanguage&&void 0!==t.acceptLanguage&&(this.acceptLanguage=t.acceptLanguage),null!==t.generateClientRequestId&&void 0!==t.generateClientRequestId&&(this.generateClientRequestId=t.generateClientRequestId),null!==t.longRunningOperationRetryTimeout&&void 0!==t.longRunningOperationRetryTimeout&&(this.longRunningOperationRetryTimeout=t.longRunningOperationRetryTimeout),null!==t.rpRegistrationRetryTimeout&&void 0!==t.rpRegistrationRetryTimeout&&(this.rpRegistrationRetryTimeout=t.rpRegistrationRetryTimeout);try{const e=n.default.msRestAzureVersion;this.addUserAgentInfo(`ms-rest-azure/${e}`)}catch(e){}}sendLongRunningRequest(e,t){return s(this,void 0,void 0,function*(){const r=this;let s;try{s=yield r.sendRequest(e)}catch(e){return Promise.reject(e)}let o;try{o=yield r.getLongRunningOperationResult(s,t)}catch(e){return Promise.reject(e)}return Promise.resolve(o)})}checkResponseStatusCodeFailed(e){const t=e.response.status,r=e.request.method;return 200!==t&&202!==t&&(201!==t||"PUT"!==r)&&(204!==t||"DELETE"!==r&&"POST"!==r)}getLongRunningOperationResult(e,t){return s(this,void 0,void 0,function*(){const r=this,s=e.request.method;if(r.checkResponseStatusCodeFailed(e))return Promise.reject(`Unexpected polling status code from long running operation `+`"${e.response.status}" for method "${s}".`);let n;try{(n=new i.default(e,r.longRunningOperationRetryTimeout)).optionsOfInitialRequest=t}catch(e){return Promise.reject(e)}const a=e.request.url;for(;![u.Succeeded,u.Failed,u.Canceled].some(e=>e===n.status);)if(yield o.delay(n.getTimeout()),n.azureAsyncOperationHeaderLink)yield r.updateStateFromAzureAsyncOperationHeader(n,!0);else if(n.locationHeaderLink)yield r.updateStateFromLocationHeader(s,n);else{if("PUT"!==s)return Promise.reject(new Error("Location header is missing from long running operation."));yield r.updateStateFromGetResourceOperation(a,n)}return n.status===u.Succeeded?!n.azureAsyncOperationHeaderLink&&n.resource||"PUT"!==s&&"PATCH"!==s?Promise.resolve(n.getOperationResponse()):(yield r.updateStateFromGetResourceOperation(a,n),Promise.resolve(n.getOperationResponse())):Promise.reject(n.getRestError())})}updateStateFromAzureAsyncOperationHeader(e,t=!1){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(e.azureAsyncOperationHeaderLink,e.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}const s=r.bodyAsJson;return s?s&&!s.status?Promise.reject(new Error(`The response "${r.bodyAsText}" from long running operation does not contain the status property.`)):(e.status=s.status,e.error=s.error,e.updateResponse(r.response),e.request=r.request,e.resource=void 0,t&&(e.resource=r.bodyAsJson),Promise.resolve()):Promise.reject(new Error("The response from long running operation does not contain a body."))})}updateStateFromLocationHeader(e,t){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(t.locationHeaderLink,t.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}const s=r.bodyAsJson;t.updateResponse(r.response),t.request=r.request;const n=r.response.status;if(202===n)t.status=u.InProgress;else{if(200!==n&&(201!==n||"PUT"!==e&&"PATCH"!==e)&&(204!==n||"DELETE"!==e&&"POST"!==e))return Promise.reject(new Error(`The response with status code ${n} from polling for `+`long running operation url "${t.locationHeaderLink}" is not valid.`));t.status=u.Succeeded,t.resource=s,t.error=new o.RestError(`Long running operation failed with status "${t.status}".`),t.error.code=t.status}})}updateStateFromGetResourceOperation(e,t){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(e,t.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}if(!r.bodyAsJson)return Promise.reject(new Error("The response from long running operation does not contain a body."));const s=r.bodyAsJson;return t.status=u.Succeeded,s&&s.properties&&s.properties.provisioningState&&(t.status=s.properties.provisioningState),t.updateResponse(r.response),t.request=r.request,t.resource=s,t.error=new o.RestError(`Long running operation failed with status "${t.status}".`),t.error.code=t.status,Promise.resolve()})}getStatus(e,t){return s(this,void 0,void 0,function*(){const r=this,s={method:"GET",url:e.replace(" ","%20"),headers:{}};if(t){const e=t.customHeaders;for(const t in e)e.hasOwnProperty(t)&&(s.headers[t]=e[t])}let n;try{n=yield r.sendRequest(s)}catch(e){return Promise.reject(e)}const i=n.response.status,u=n.bodyAsJson;if(200!==i&&201!==i&&202!==i&&204!==i){const e=new o.RestError(`Invalid status code with response body "${n.bodyAsText}" occurred `+`when polling for operation status.`);e.statusCode=i,e.request=o.stripRequest(n.request),e.response=n.response;try{e.body=u}catch(t){e.message+=` Error "${t}" occured while deserializing the response body - "${n.bodyAsText}".`,e.body=n.bodyAsText}return Promise.reject(e)}return Promise.resolve(n)})}}t.AzureServiceClient=a},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=r(0),o=r(1),n=s.default.LongRunningOperationStates;class i{constructor(e,t=30){this.retryTimeout=30,this.resultOfInitialRequest=e,this.retryTimeout=t,this.updateResponse(e.response),this.request=e.request;try{e.bodyAsText&&e.bodyAsText.length>0?this.resource=JSON.parse(e.bodyAsText):this.resource=e.bodyAsJson}catch(t){const r=new o.RestError(`Error "${t}" occurred in parsing the responseBody " +\n "while creating the PollingState for Long Running Operation- "${e.bodyAsText}"`);throw r.request=e.request,r.response=e.response,r}switch(this.response.status){case 202:this.status=n.InProgress;break;case 204:this.status=n.Succeeded;break;case 201:this.resource&&this.resource.properties&&this.resource.properties.provisioningState?this.status=this.resource.properties.provisioningState:this.status=n.InProgress;break;case 200:this.resource&&this.resource.properties&&this.resource.properties.provisioningState?this.status=this.resource.properties.provisioningState:this.status=n.Succeeded;break;default:this.status=n.Failed}}updateResponse(e){if(this.response=e,e&&e.headers){const t=e.headers.get("azure-asyncoperation"),r=e.headers.get("location");t&&(this.azureAsyncOperationHeaderLink=t),r&&(this.locationHeaderLink=r)}}getTimeout(){if(this.retryTimeout||0===this.retryTimeout)return 1e3*this.retryTimeout;if(this.response){const e=this.response.headers.get("retry-after");if(e)return 1e3*parseInt(e)}return 3e4}getOperationResponse(){const e=new o.HttpOperationResponse(this.request,this.response);return this.resource&&"string"==typeof this.resource.valueOf()?(e.bodyAsText=this.resource,e.bodyAsJson=JSON.parse(this.resource)):(e.bodyAsJson=this.resource,e.bodyAsText=JSON.stringify(this.resource)),e}getRestError(e){let t,r=void 0;const s=new o.RestError("");s.request=o.stripRequest(this.request),s.response=this.response;const n=this.resource;return t=e&&e.message?`Long running operation failed with error: "${e.message}".`:`Long running operation failed with status: "${this.status}".`,n&&(n.error&&n.error.message&&(t=`Long running operation failed with error: "${n.error.message}".`),n.error&&n.error.code&&(r=n.error.code)),s.message=t,r&&(s.code=r),s.body=n,s}}t.default=i},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CloudErrorMapper={required:!1,serializedName:"CloudError",type:{name:"Composite",className:"CloudError",modelProperties:{code:{required:!0,serializedName:"code",type:{name:"String"}},message:{required:!0,serializedName:"message",type:{name:"String"}},target:{required:!1,serializedName:"target",type:{name:"String"}},details:{required:!1,serializedName:"details",type:{name:"Sequence",element:{required:!1,serializedName:"CloudErrorElementType",type:{name:"Composite",className:"CloudError"}}}}}}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseResourceMapper={required:!1,serializedName:"BaseResource",type:{name:"Composite",className:"BaseResource",modelProperties:{}}}}]); \ No newline at end of file diff --git a/msRestAzureBundle.min.js.map b/msRestAzureBundle.min.js.map index 132d89610ce3..9a376b707654 100644 --- a/msRestAzureBundle.min.js.map +++ b/msRestAzureBundle.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["msRestAzureBundle.js"],"names":["msRestAzure","modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","value","Constants","LongRunningOperationStates","InProgress","Succeeded","Failed","Canceled","DEFAULT_LANGUAGE","msRestAzureVersion","default","msRest","azureServiceClient_1","AzureServiceClient","constants_1","cloudError_1","CloudErrorMapper","baseResource_1","BaseResourceMapper","__awaiter","this","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","result","done","then","apply","pollingState_1","LroStates","ServiceClient","[object Object]","credentials","options","super","acceptLanguage","generateClientRequestId","longRunningOperationRetryTimeout","rpRegistrationRetryTimeout","undefined","moduleVersion","addUserAgentInfo","err","request","self","initialResponse","sendRequest","finalResponse","getLongRunningOperationResult","statusCode","response","status","method","resultOfInitialRequest","initialRequestMethod","checkResponseStatusCodeFailed","pollingState","optionsOfInitialRequest","error","resourceUrl","url","some","delay","getTimeout","azureAsyncOperationHeaderLink","updateStateFromAzureAsyncOperationHeader","locationHeaderLink","updateStateFromLocationHeader","Error","updateStateFromGetResourceOperation","resource","getOperationResponse","getRestError","inPostOrDelete","getStatus","parsedResponse","bodyAsJson","bodyAsText","updateResponse","RestError","code","properties","provisioningState","operationUrl","httpRequest","replace","headers","customHeaders","headerName","operationResponse","responseBody","stripRequest","body","badResponse","message","PollingState","retryTimeout","length","JSON","parse","deserializationError","asyncOperationHeader","locationHeader","retryAfter","parseInt","HttpOperationResponse","valueOf","stringify","errMsg","errCode","required","serializedName","type","className","modelProperties","target","details","element"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["msRestAzureBundle.js"],"names":["msRestAzure","modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","value","Constants","LongRunningOperationStates","InProgress","Succeeded","Failed","Canceled","DEFAULT_LANGUAGE","msRestAzureVersion","default","msRest","azureServiceClient_1","AzureServiceClient","constants_1","cloudError_1","CloudErrorMapper","baseResource_1","BaseResourceMapper","__awaiter","this","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","result","done","then","apply","pollingState_1","LroStates","ServiceClient","[object Object]","credentials","options","super","acceptLanguage","generateClientRequestId","longRunningOperationRetryTimeout","rpRegistrationRetryTimeout","undefined","moduleVersion","addUserAgentInfo","err","request","self","initialResponse","sendRequest","finalResponse","getLongRunningOperationResult","statusCode","response","status","method","resultOfInitialRequest","initialRequestMethod","checkResponseStatusCodeFailed","pollingState","optionsOfInitialRequest","error","resourceUrl","url","some","delay","getTimeout","azureAsyncOperationHeaderLink","updateStateFromAzureAsyncOperationHeader","locationHeaderLink","updateStateFromLocationHeader","Error","updateStateFromGetResourceOperation","resource","getOperationResponse","getRestError","inPostOrDelete","getStatus","parsedResponse","bodyAsJson","bodyAsText","updateResponse","RestError","code","properties","provisioningState","operationUrl","httpRequest","replace","headers","customHeaders","headerName","operationResponse","responseBody","stripRequest","body","badResponse","message","PollingState","retryTimeout","length","JSON","parse","deserializationError","asyncOperationHeader","locationHeader","retryAfter","parseInt","HttpOperationResponse","valueOf","stringify","errMsg","errCode","required","serializedName","type","className","modelProperties","target","details","element"],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index fbd3829037e6..017397170202 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,58 +1,21 @@ { "name": "ms-rest-azure-js", - "version": "0.1.0", + "version": "0.2.1", "lockfileVersion": 1, "requires": true, "dependencies": { - "@types/form-data": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.0.tgz", - "integrity": "sha512-vm5OGsKc61Sx/GTRMQ9d0H0PYCDebT78/bdIBPCoPEHdgp0etaH1RzMmkDygymUmyXTj3rdWQn0sRUpYKZzljA==", - "requires": { - "@types/node": "8.0.28" - } - }, - "@types/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@types/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==", - "requires": { - "@types/node": "8.0.28" - } - }, "@types/mocha": { "version": "2.2.43", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.43.tgz", "integrity": "sha512-xNlAmH+lRJdUMXClMTI9Y0pRqIojdxfm7DHsIxoB2iTzu3fnPmSMEN8SsSx0cdwV36d02PWCWaDUoZPDSln+xw==", "dev": true }, - "@types/node": { - "version": "8.0.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.28.tgz", - "integrity": "sha512-HupkFXEv3O3KSzcr3Ylfajg0kaerBg1DyaZzRBBQfrU3NN1mTBRE7sCveqHwXLS5Yrjvww8qFzkzYQQakG9FuQ==" - }, - "@types/node-fetch": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-1.6.7.tgz", - "integrity": "sha1-UhB46PDGmhWOUCIAWsqS0mIPbVc=", - "requires": { - "@types/node": "8.0.28" - } - }, "@types/should": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/@types/should/-/should-8.3.0.tgz", "integrity": "sha1-4rRgJDaF2+N3GC857zjTf00Veto=", "dev": true }, - "@types/uuid": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.2.tgz", - "integrity": "sha512-fXrYo81BZgbz6KhHU3+dNUSdca35FwbfTMQvSnIIX6qOCsymSmFAjPDSfr4Q/Pt9abjt04kBi4+7FinVPdyEpg==", - "requires": { - "@types/node": "8.0.28" - } - }, "acorn": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", @@ -186,11 +149,6 @@ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -443,7 +401,6 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", - "fsevents": "1.1.2", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -506,14 +463,6 @@ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", "dev": true }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "requires": { - "delayed-stream": "1.0.0" - } - }, "commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", @@ -645,11 +594,6 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", @@ -660,11 +604,6 @@ "minimalistic-assert": "1.0.0" } }, - "detect-node": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", - "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=" - }, "diff": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", @@ -709,14 +648,6 @@ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "0.4.19" - } - }, "enhanced-resolve": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", @@ -757,11 +688,6 @@ "es6-symbol": "3.1.1" } }, - "es6-denodeify": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-denodeify/-/es6-denodeify-0.1.5.tgz", - "integrity": "sha1-MdTV/pxVA+ElRgQ5MQ4WoqPznB8=" - }, "es6-iterator": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", @@ -936,22 +862,6 @@ "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", "dev": true }, - "fetch-cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.6.0.tgz", - "integrity": "sha1-T+xOQIzAAH9sBOVTYYr0s97jf2k=", - "requires": { - "es6-denodeify": "0.1.5", - "tough-cookie": "2.3.2" - } - }, - "fetch-ponyfill": { - "version": "github:amarzavery/fetch-ponyfill#40a67a8e63587bb24f9b3cfbc18eab60d8b38e59", - "requires": { - "fetch-cookie": "0.6.0", - "node-fetch": "1.7.3" - } - }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -995,937 +905,28 @@ "for-in": "1.0.2" } }, - "form-data": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", - "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" - } - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "fsevents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", - "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", - "dev": true, - "optional": true, - "requires": { - "nan": "2.7.0", - "node-pre-gyp": "0.6.36" - }, - "dependencies": { - "abbrev": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" - } - }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "bundled": true, - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.7", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - } - }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true - }, - "co": { - "version": "4.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.4.2", - "bundled": true, - "dev": true, - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "bundled": true, - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.4", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", - "bundled": true, - "dev": true - }, - "mime-types": { - "version": "2.1.15", - "bundled": true, - "dev": true, - "requires": { - "mime-db": "1.27.0" - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.36", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" - } - }, - "npmlog": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "dev": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "bundled": true, - "dev": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.81.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, - "rimraf": { - "version": "2.6.1", - "bundled": true, - "dev": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "semver": { - "version": "5.3.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "dev": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "dev": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "verror": { - "version": "1.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - } - } - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -2036,11 +1037,6 @@ "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", "dev": true }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" - }, "ieee754": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", @@ -2099,7 +1095,8 @@ "is-buffer": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "dev": true }, "is-builtin-module": { "version": "1.0.0", @@ -2179,7 +1176,8 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "isarray": { "version": "1.0.0", @@ -2412,187 +1410,2314 @@ "dependencies": { "hash-base": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.4", + "readable-stream": "2.3.3" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "miller-rabin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", + "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", + "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "he": "1.1.1", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "ms-rest-js": { + "version": "file:../ms-rest-js", + "requires": { + "@types/form-data": "2.2.0", + "@types/is-stream": "1.1.0", + "@types/node": "8.0.28", + "@types/node-fetch": "1.6.7", + "@types/uuid": "3.4.2", + "detect-node": "2.0.3", + "fetch-cookie": "0.6.0", + "fetch-ponyfill": "4.1.0", + "form-data": "2.3.1", + "is-buffer": "1.1.5", + "is-stream": "1.1.0", + "moment": "2.18.1", + "url-parse": "1.1.9", + "uuid": "3.1.0" + }, + "dependencies": { + "@types/form-data": { + "version": "2.2.0", + "bundled": true, + "requires": { + "@types/node": "8.0.28" + } + }, + "@types/is-stream": { + "version": "1.1.0", + "bundled": true, + "requires": { + "@types/node": "8.0.28" + } + }, + "@types/mocha": { + "version": "2.2.43", + "bundled": true + }, + "@types/node": { + "version": "8.0.28", + "bundled": true + }, + "@types/node-fetch": { + "version": "1.6.7", + "bundled": true, + "requires": { + "@types/node": "8.0.28" + } + }, + "@types/should": { + "version": "8.3.0", + "bundled": true + }, + "@types/uuid": { + "version": "3.4.2", + "bundled": true, + "requires": { + "@types/node": "8.0.28" + } + }, + "acorn": { + "version": "5.1.2", + "bundled": true + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "bundled": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "bundled": true + } + } + }, + "ajv": { + "version": "5.2.2", + "bundled": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "json-schema-traverse": "0.3.1", + "json-stable-stringify": "1.0.1" + } + }, + "ajv-keywords": { + "version": "2.1.0", + "bundled": true + }, + "align-text": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "ansi-styles": { + "version": "3.2.0", + "bundled": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "anymatch": { + "version": "1.3.2", + "bundled": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "bundled": true + }, + "array-unique": { + "version": "0.2.1", + "bundled": true + }, + "asn1.js": { + "version": "4.9.1", + "bundled": true, + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "bundled": true, + "requires": { + "util": "0.10.3" + } + }, + "async": { + "version": "2.5.0", + "bundled": true, + "requires": { + "lodash": "4.17.4" + } + }, + "async-each": { + "version": "1.0.1", + "bundled": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true + }, + "babel-code-frame": { + "version": "6.26.0", + "bundled": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "bundled": true + }, + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "base64-js": { + "version": "1.2.1", + "bundled": true + }, + "big.js": { + "version": "3.2.0", + "bundled": true + }, + "binary-extensions": { + "version": "1.10.0", + "bundled": true + }, + "bn.js": { + "version": "4.11.8", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.8", + "bundled": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "brorand": { + "version": "1.1.0", + "bundled": true + }, + "browser-stdout": { + "version": "1.3.0", + "bundled": true + }, + "browserify-aes": { + "version": "1.0.8", + "bundled": true, + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "bundled": true, + "requires": { + "browserify-aes": "1.0.8", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.0", + "bundled": true, + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "bundled": true, + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.5" + } + }, + "browserify-sign": { + "version": "4.0.4", + "bundled": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.1.4", + "bundled": true, + "requires": { + "pako": "0.2.9" + } + }, + "buffer": { + "version": "4.9.1", + "bundled": true, + "requires": { + "base64-js": "1.2.1", + "ieee754": "1.1.8", + "isarray": "1.0.0" + } + }, + "buffer-xor": { + "version": "1.0.3", + "bundled": true + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "bundled": true + }, + "camelcase": { + "version": "1.2.1", + "bundled": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "2.1.0", + "bundled": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.4.0" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "bundled": true + }, + "supports-color": { + "version": "4.4.0", + "bundled": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "chokidar": { + "version": "1.7.0", + "bundled": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + } + }, + "co": { + "version": "4.6.0", + "bundled": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "color-convert": { + "version": "1.9.0", + "bundled": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "bundled": true + }, + "colors": { + "version": "1.1.2", + "bundled": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.9.0", + "bundled": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-browserify": { + "version": "1.1.0", + "bundled": true, + "requires": { + "date-now": "0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "create-ecdh": { + "version": "4.0.0", + "bundled": true, + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-hash": { + "version": "1.1.3", + "bundled": true, + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.8" + } + }, + "create-hmac": { + "version": "1.1.6", + "bundled": true, + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.8" + } + }, + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "crypto-browserify": { + "version": "3.11.1", + "bundled": true, + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5" + } + }, + "d": { + "version": "1.0.0", + "bundled": true, + "requires": { + "es5-ext": "0.10.30" + } + }, + "date-now": { + "version": "0.1.4", + "bundled": true + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "bundled": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "des.js": { + "version": "1.0.0", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "detect-node": { + "version": "2.0.3", + "bundled": true + }, + "diff": { + "version": "3.2.0", + "bundled": true + }, + "diffie-hellman": { + "version": "5.0.2", + "bundled": true, + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.0", + "randombytes": "2.0.5" + } + }, + "domain-browser": { + "version": "1.1.7", + "bundled": true + }, + "elliptic": { + "version": "6.4.0", + "bundled": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "bundled": true + }, + "encoding": { + "version": "0.1.12", + "bundled": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, + "enhanced-resolve": { + "version": "3.4.1", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "object-assign": "4.1.1", + "tapable": "0.2.8" + } + }, + "errno": { + "version": "0.1.4", + "bundled": true, + "requires": { + "prr": "0.0.0" + } + }, + "error-ex": { + "version": "1.3.1", + "bundled": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es5-ext": { + "version": "0.10.30", + "bundled": true, + "requires": { + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } + }, + "es6-denodeify": { + "version": "0.1.5", + "bundled": true + }, + "es6-iterator": { + "version": "2.0.1", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-set": { + "version": "0.1.5", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true + }, + "escope": { + "version": "3.6.0", + "bundled": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "bundled": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, + "estraverse": { + "version": "4.2.0", + "bundled": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true + }, + "event-emitter": { + "version": "0.3.5", + "bundled": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30" + } + }, + "events": { + "version": "1.1.1", + "bundled": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "bundled": true, + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "bundled": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "fast-deep-equal": { + "version": "1.0.0", + "bundled": true + }, + "fetch-cookie": { + "version": "0.6.0", + "bundled": true, + "requires": { + "es6-denodeify": "0.1.5", + "tough-cookie": "2.3.2" + } + }, + "fetch-ponyfill": { + "version": "4.1.0", + "bundled": true, + "requires": { + "fetch-cookie": "0.6.0", + "node-fetch": "1.7.3" + } + }, + "filename-regex": { + "version": "2.0.1", + "bundled": true + }, + "fill-range": { + "version": "2.2.3", + "bundled": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true + }, + "for-own": { + "version": "0.1.5", + "bundled": true, + "requires": { + "for-in": "1.0.2" + } + }, + "form-data": { + "version": "2.3.1", + "bundled": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "glob": { + "version": "7.1.1", + "bundled": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "bundled": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "graceful-readlink": { + "version": "1.0.1", + "bundled": true + }, + "growl": { + "version": "1.9.2", + "bundled": true + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "bundled": true + }, + "hash-base": { + "version": "2.0.2", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "hash.js": { + "version": "1.1.3", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "he": { + "version": "1.1.1", + "bundled": true + }, + "hmac-drbg": { + "version": "1.0.1", + "bundled": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "bundled": true + }, + "https-browserify": { + "version": "0.0.1", + "bundled": true + }, + "iconv-lite": { + "version": "0.4.19", + "bundled": true + }, + "ieee754": { + "version": "1.1.8", + "bundled": true + }, + "indexof": { + "version": "0.0.1", + "bundled": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "interpret": { + "version": "1.0.4", + "bundled": true + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true + }, + "is-binary-path": { + "version": "1.0.1", + "bundled": true, + "requires": { + "binary-extensions": "1.10.0" + } + }, + "is-buffer": { + "version": "1.1.5", + "bundled": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "bundled": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "bundled": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "bundled": true + }, + "is-primitive": { + "version": "2.0.0", + "bundled": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true + }, + "isobject": { + "version": "2.1.0", + "bundled": true, + "requires": { + "isarray": "1.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "bundled": true + }, + "json-loader": { + "version": "0.5.7", + "bundled": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "bundled": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json3": { + "version": "3.3.2", + "bundled": true + }, + "json5": { + "version": "0.5.1", + "bundled": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "loader-runner": { + "version": "2.3.0", + "bundled": true + }, + "loader-utils": { + "version": "1.1.0", + "bundled": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "bundled": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "bundled": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "bundled": true + }, + "lodash._basecreate": { + "version": "3.0.3", + "bundled": true + }, + "lodash._getnative": { + "version": "3.9.1", + "bundled": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "bundled": true + }, + "lodash.create": { + "version": "3.1.1", + "bundled": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._basecreate": "3.0.3", + "lodash._isiterateecall": "3.0.9" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "bundled": true + }, + "lodash.isarray": { + "version": "3.0.4", + "bundled": true + }, + "lodash.keys": { + "version": "3.1.2", + "bundled": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "longest": { + "version": "1.0.1", + "bundled": true + }, + "lru-cache": { + "version": "4.1.1", + "bundled": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "md5.js": { + "version": "1.3.4", + "bundled": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "bundled": true, + "requires": { + "errno": "0.1.4", + "readable-stream": "2.3.3" + } + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "miller-rabin": { + "version": "4.0.0", + "bundled": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime-db": { + "version": "1.30.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.17", + "bundled": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "bundled": true + }, + "minimalistic-assert": { + "version": "1.0.0", + "bundled": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "3.5.3", + "bundled": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "he": "1.1.1", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + } + }, + "moment": { + "version": "2.18.1", + "bundled": true + }, + "ms": { + "version": "2.0.0", + "bundled": true + }, + "node-fetch": { + "version": "1.7.3", + "bundled": true, + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } + }, + "node-libs-browser": { + "version": "2.0.0", + "bundled": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.1.4", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.11.1", + "domain-browser": "1.1.7", + "events": "1.1.1", + "https-browserify": "0.0.1", + "os-browserify": "0.2.1", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.3", + "stream-browserify": "2.0.1", + "stream-http": "2.7.2", + "string_decoder": "0.10.31", + "timers-browserify": "2.0.4", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "string_decoder": { + "version": "0.10.31", + "bundled": true + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "bundled": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "object.omit": { + "version": "2.0.1", + "bundled": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-browserify": { + "version": "0.2.1", + "bundled": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true + }, + "p-limit": { + "version": "1.1.0", + "bundled": true + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "pako": { + "version": "0.2.9", + "bundled": true + }, + "parse-asn1": { + "version": "5.1.0", + "bundled": true, + "requires": { + "asn1.js": "4.9.1", + "browserify-aes": "1.0.8", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, + "parse-glob": { + "version": "3.0.4", + "bundled": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "bundled": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "path-browserify": { + "version": "0.0.0", + "bundled": true + }, + "path-exists": { + "version": "3.0.0", + "bundled": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true + }, + "path-type": { + "version": "2.0.0", + "bundled": true, + "requires": { + "pify": "2.3.0" + } + }, + "pbkdf2": { + "version": "3.0.14", + "bundled": true, + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.8" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true + }, + "preserve": { + "version": "0.2.0", + "bundled": true + }, + "process": { + "version": "0.11.10", + "bundled": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true + }, + "prr": { + "version": "0.0.0", + "bundled": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true + }, + "public-encrypt": { + "version": "4.0.0", + "bundled": true, + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" + } + }, + "punycode": { + "version": "1.4.1", + "bundled": true + }, + "querystring": { + "version": "0.2.0", + "bundled": true + }, + "querystring-es3": { + "version": "0.2.1", + "bundled": true + }, + "querystringify": { + "version": "1.0.0", + "bundled": true + }, + "randomatic": { + "version": "1.1.7", + "bundled": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "bundled": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "bundled": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "randombytes": { + "version": "2.0.5", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "read-pkg": { + "version": "2.0.0", + "bundled": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "bundled": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "readable-stream": { + "version": "2.3.3", + "bundled": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "bundled": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + } + }, + "regex-cache": { + "version": "0.4.4", + "bundled": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "bundled": true + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true + }, + "require-directory": { + "version": "2.1.1", + "bundled": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true + }, + "requires-port": { + "version": "1.0.0", + "bundled": true + }, + "resolve": { + "version": "1.4.0", + "bundled": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "requires": { + "align-text": "0.1.4" + } + }, + "ripemd160": { + "version": "2.0.1", + "bundled": true, + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true + }, + "semver": { + "version": "5.4.1", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "bundled": true + }, + "setimmediate": { + "version": "1.0.5", + "bundled": true + }, + "sha.js": { + "version": "2.4.8", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true + }, + "should": { + "version": "5.2.0", + "bundled": true, + "requires": { + "should-equal": "0.3.1", + "should-format": "0.0.7", + "should-type": "0.0.4" + } + }, + "should-equal": { + "version": "0.3.1", + "bundled": true, + "requires": { + "should-type": "0.0.4" + } + }, + "should-format": { + "version": "0.0.7", + "bundled": true, + "requires": { + "should-type": "0.0.4" + } + }, + "should-type": { + "version": "0.0.4", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "source-list-map": { + "version": "2.0.0", + "bundled": true + }, + "source-map": { + "version": "0.5.7", + "bundled": true + }, + "spdx-correct": { + "version": "1.0.2", + "bundled": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "bundled": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "bundled": true + }, + "stream-browserify": { + "version": "2.0.1", + "bundled": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "stream-http": { + "version": "2.7.2", + "bundled": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.0.3", + "bundled": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "bundled": true + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true + }, + "supports-color": { + "version": "3.1.2", + "bundled": true, + "requires": { + "has-flag": "1.0.0" + } + }, + "tapable": { + "version": "0.2.8", + "bundled": true + }, + "timers-browserify": { + "version": "2.0.4", + "bundled": true, + "requires": { + "setimmediate": "1.0.5" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "bundled": true + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "requires": { + "punycode": "1.4.1" + } + }, + "ts-loader": { + "version": "2.3.7", + "bundled": true, + "requires": { + "chalk": "2.1.0", + "enhanced-resolve": "3.4.1", + "loader-utils": "1.1.0", + "semver": "5.4.1" + } + }, + "tslib": { + "version": "1.7.1", + "bundled": true + }, + "tslint": { + "version": "5.7.0", + "bundled": true, + "requires": { + "babel-code-frame": "6.26.0", + "colors": "1.1.2", + "commander": "2.9.0", + "diff": "3.2.0", + "glob": "7.1.1", + "minimatch": "3.0.4", + "resolve": "1.4.0", + "semver": "5.4.1", + "tslib": "1.7.1", + "tsutils": "2.8.2" + } + }, + "tsutils": { + "version": "2.8.2", + "bundled": true, + "requires": { + "tslib": "1.7.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "bundled": true + }, + "typescript": { + "version": "2.5.2", + "bundled": true + }, + "uglify-es": { + "version": "3.1.0", + "bundled": true, + "requires": { + "commander": "2.11.0", + "source-map": "0.5.7" + }, + "dependencies": { + "commander": { + "version": "2.11.0", + "bundled": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "bundled": true, + "requires": { + "source-map": "0.5.7", + "uglify-js": "2.8.29", + "webpack-sources": "1.0.1" + }, + "dependencies": { + "uglify-js": { + "version": "2.8.29", + "bundled": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + } + }, + "yargs": { + "version": "3.10.0", + "bundled": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "url": { + "version": "0.11.0", + "bundled": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "bundled": true + } + } + }, + "url-parse": { + "version": "1.1.9", + "bundled": true, + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + } + }, + "util": { + "version": "0.10.3", + "bundled": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "bundled": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "uuid": { + "version": "3.1.0", + "bundled": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "bundled": true, "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "vm-browserify": { + "version": "0.0.4", + "bundled": true, + "requires": { + "indexof": "0.0.1" + } + }, + "watchpack": { + "version": "1.4.0", + "bundled": true, + "requires": { + "async": "2.5.0", + "chokidar": "1.7.0", + "graceful-fs": "4.1.11" + } + }, + "webpack": { + "version": "3.6.0", + "bundled": true, + "requires": { + "acorn": "5.1.2", + "acorn-dynamic-import": "2.0.2", + "ajv": "5.2.2", + "ajv-keywords": "2.1.0", + "async": "2.5.0", + "enhanced-resolve": "3.4.1", + "escope": "3.6.0", + "interpret": "1.0.4", + "json-loader": "0.5.7", + "json5": "0.5.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "mkdirp": "0.5.1", + "node-libs-browser": "2.0.0", + "source-map": "0.5.7", + "supports-color": "4.4.0", + "tapable": "0.2.8", + "uglifyjs-webpack-plugin": "0.4.6", + "watchpack": "1.4.0", + "webpack-sources": "1.0.1", + "yargs": "8.0.2" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "bundled": true + }, + "supports-color": { + "version": "4.4.0", + "bundled": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "webpack-sources": { + "version": "1.0.1", + "bundled": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.5.7" + } + }, + "which": { + "version": "1.3.0", + "bundled": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true + }, + "window-size": { + "version": "0.1.0", + "bundled": true + }, + "wordwrap": { + "version": "0.0.2", + "bundled": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "xtend": { + "version": "4.0.1", + "bundled": true + }, + "y18n": { + "version": "3.2.1", + "bundled": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true + }, + "yargs": { + "version": "8.0.2", + "bundled": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true + }, + "cliui": { + "version": "3.2.0", + "bundled": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + } + } + }, + "yargs-parser": { + "version": "7.0.0", + "bundled": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true + } } } } }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "1.1.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "0.1.4", - "readable-stream": "2.3.3" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } - }, - "miller-rabin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", - "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" - } - }, - "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" - }, - "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", - "requires": { - "mime-db": "1.30.0" - } - }, - "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", - "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", - "dev": true, - "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.6.8", - "diff": "3.2.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.1", - "growl": "1.9.2", - "he": "1.1.1", - "json3": "3.3.2", - "lodash.create": "3.1.1", - "mkdirp": "0.5.1", - "supports-color": "3.1.2" - } - }, - "moment": { - "version": "2.18.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", - "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "ms-rest-js": { - "version": "github:azure/ms-rest-js#cda898bb3a1531889e6578680d1f68418906df6c", - "requires": { - "@types/form-data": "2.2.0", - "@types/is-stream": "1.1.0", - "@types/node": "8.0.28", - "@types/node-fetch": "1.6.7", - "@types/uuid": "3.4.2", - "detect-node": "2.0.3", - "fetch-cookie": "0.6.0", - "fetch-ponyfill": "github:amarzavery/fetch-ponyfill#40a67a8e63587bb24f9b3cfbc18eab60d8b38e59", - "form-data": "2.3.1", - "is-buffer": "1.1.5", - "is-stream": "1.1.0", - "moment": "2.18.1", - "url-parse": "1.1.9", - "uuid": "3.1.0" - } - }, - "nan": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.7.0.tgz", - "integrity": "sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=", - "dev": true, - "optional": true - }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" - } - }, "node-libs-browser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", @@ -2875,7 +4000,8 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "querystring": { "version": "0.2.0", @@ -2889,11 +4015,6 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, - "querystringify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", - "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=" - }, "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", @@ -3031,11 +4152,6 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" - }, "resolve": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", @@ -3215,15 +4331,6 @@ "xtend": "4.0.1" } }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -3257,6 +4364,15 @@ } } }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -3308,14 +4424,6 @@ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", "dev": true }, - "tough-cookie": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", - "requires": { - "punycode": "1.4.1" - } - }, "ts-loader": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-2.3.7.tgz", @@ -3452,15 +4560,6 @@ } } }, - "url-parse": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.1.9.tgz", - "integrity": "sha1-xn8dd11R8KGJEd17P/rSe7nlvRk=", - "requires": { - "querystringify": "1.0.0", - "requires-port": "1.0.0" - } - }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", @@ -3484,11 +4583,6 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" - }, "validate-npm-package-license": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", diff --git a/package.json b/package.json index 57cb4765a956..618bf5ec360e 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.2.0", + "version": "0.2.1", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -29,7 +29,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "^0.2.1" + "ms-rest-js": "^0.2.3" }, "devDependencies": { "@types/mocha": "^2.2.43", From 30a4decab92a8c9e78bc465ad20f1a4bbfa44a6a Mon Sep 17 00:00:00 2001 From: Amar Zavery Date: Tue, 7 Nov 2017 18:21:04 -0800 Subject: [PATCH 008/289] Update node-sample.js --- samples/node-sample.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/node-sample.js b/samples/node-sample.js index e7de65e5342f..55f1a7be48bb 100644 --- a/samples/node-sample.js +++ b/samples/node-sample.js @@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }; Object.defineProperty(exports, "__esModule", { value: true }); const msRest = require("ms-rest-js"); -const msRestAzure = require("../lib/msRestAzure"); +const msRestAzure = require("../dist/lib/msRestAzure"); const clientOptions = { filters: [new msRest.LogFilter()] }; @@ -70,4 +70,4 @@ for (var i = 1; i <= 20; i++) { setTimeout(function (x) { return function () { console.log(x); }; }(i), 1000 * i); // 1 2 3 4 5 } -//# sourceMappingURL=sample.js.map \ No newline at end of file +//# sourceMappingURL=sample.js.map From 801f2027b5f525cce1eee45d149c0a55a82d20bb Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Fri, 30 Mar 2018 20:17:33 -0700 Subject: [PATCH 009/289] Rename bodyAsJson to parsedBody --- lib/azureServiceClient.ts | 12 ++++++------ lib/pollingState.ts | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index cb9cd9eddbd7..64cc27a431a1 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -182,7 +182,7 @@ export class AzureServiceClient extends msRest.ServiceClient { return Promise.reject(err); } - const parsedResponse = result.bodyAsJson as { [key: string]: any }; + const parsedResponse = result.parsedBody as { [key: string]: any }; if (!parsedResponse) { return Promise.reject(new Error("The response from long running operation does not contain a body.")); @@ -195,7 +195,7 @@ export class AzureServiceClient extends msRest.ServiceClient { pollingState.request = result.request; pollingState.resource = undefined; if (inPostOrDelete) { - pollingState.resource = result.bodyAsJson; + pollingState.resource = result.parsedBody; } return Promise.resolve(); } @@ -213,7 +213,7 @@ export class AzureServiceClient extends msRest.ServiceClient { return Promise.reject(err); } - const parsedResponse = result.bodyAsJson as { [key: string]: any }; + const parsedResponse = result.parsedBody as { [key: string]: any }; pollingState.updateResponse(result.response); pollingState.request = result.request; const statusCode = result.response.status; @@ -245,11 +245,11 @@ export class AzureServiceClient extends msRest.ServiceClient { } catch (err) { return Promise.reject(err); } - if (!result.bodyAsJson) { + if (!result.parsedBody) { return Promise.reject(new Error("The response from long running operation does not contain a body.")); } - const parsedResponse = result.bodyAsJson as { [key: string]: any }; + const parsedResponse = result.parsedBody as { [key: string]: any }; pollingState.status = LroStates.Succeeded; if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) { pollingState.status = parsedResponse.properties.provisioningState; @@ -293,7 +293,7 @@ export class AzureServiceClient extends msRest.ServiceClient { return Promise.reject(err); } const statusCode = operationResponse.response.status; - const responseBody = operationResponse.bodyAsJson; + const responseBody = operationResponse.parsedBody; if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { const error = new msRest.RestError(`Invalid status code with response body "${operationResponse.bodyAsText}" occurred ` + `when polling for operation status.`); diff --git a/lib/pollingState.ts b/lib/pollingState.ts index 41e5e1548bdf..3f2beba4b9ef 100644 --- a/lib/pollingState.ts +++ b/lib/pollingState.ts @@ -61,7 +61,7 @@ export default class PollingState { if (resultOfInitialRequest.bodyAsText && resultOfInitialRequest.bodyAsText.length > 0) { this.resource = JSON.parse(resultOfInitialRequest.bodyAsText); } else { - this.resource = resultOfInitialRequest.bodyAsJson; + this.resource = resultOfInitialRequest.parsedBody; } } catch (error) { const deserializationError = new msRest.RestError(`Error "${error}" occurred in parsing the responseBody " + @@ -145,9 +145,9 @@ export default class PollingState { const result = new msRest.HttpOperationResponse(this.request, this.response); if (this.resource && typeof this.resource.valueOf() === "string") { result.bodyAsText = this.resource; - result.bodyAsJson = JSON.parse(this.resource); + result.parsedBody = JSON.parse(this.resource); } else { - result.bodyAsJson = this.resource; + result.parsedBody = this.resource; result.bodyAsText = JSON.stringify(this.resource); } return result; From 8b739c25b652a67c1a19a95c8c6685d4684a1be1 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Fri, 30 Mar 2018 20:17:56 -0700 Subject: [PATCH 010/289] Update build products --- dist/lib/azureServiceClient.js | 12 ++++++------ dist/lib/pollingState.js | 6 +++--- msRestAzureBundle.js | 18 +++++++++--------- msRestAzureBundle.js.map | 2 +- msRestAzureBundle.min.js | 2 +- msRestAzureBundle.min.js.map | 2 +- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/dist/lib/azureServiceClient.js b/dist/lib/azureServiceClient.js index 75f41927897a..0aa9438b0f03 100644 --- a/dist/lib/azureServiceClient.js +++ b/dist/lib/azureServiceClient.js @@ -165,7 +165,7 @@ class AzureServiceClient extends msRest.ServiceClient { catch (err) { return Promise.reject(err); } - const parsedResponse = result.bodyAsJson; + const parsedResponse = result.parsedBody; if (!parsedResponse) { return Promise.reject(new Error("The response from long running operation does not contain a body.")); } @@ -178,7 +178,7 @@ class AzureServiceClient extends msRest.ServiceClient { pollingState.request = result.request; pollingState.resource = undefined; if (inPostOrDelete) { - pollingState.resource = result.bodyAsJson; + pollingState.resource = result.parsedBody; } return Promise.resolve(); }); @@ -197,7 +197,7 @@ class AzureServiceClient extends msRest.ServiceClient { catch (err) { return Promise.reject(err); } - const parsedResponse = result.bodyAsJson; + const parsedResponse = result.parsedBody; pollingState.updateResponse(result.response); pollingState.request = result.request; const statusCode = result.response.status; @@ -233,10 +233,10 @@ class AzureServiceClient extends msRest.ServiceClient { catch (err) { return Promise.reject(err); } - if (!result.bodyAsJson) { + if (!result.parsedBody) { return Promise.reject(new Error("The response from long running operation does not contain a body.")); } - const parsedResponse = result.bodyAsJson; + const parsedResponse = result.parsedBody; pollingState.status = LroStates.Succeeded; if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) { pollingState.status = parsedResponse.properties.provisioningState; @@ -282,7 +282,7 @@ class AzureServiceClient extends msRest.ServiceClient { return Promise.reject(err); } const statusCode = operationResponse.response.status; - const responseBody = operationResponse.bodyAsJson; + const responseBody = operationResponse.parsedBody; if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { const error = new msRest.RestError(`Invalid status code with response body "${operationResponse.bodyAsText}" occurred ` + `when polling for operation status.`); diff --git a/dist/lib/pollingState.js b/dist/lib/pollingState.js index 3f38bce52f71..84974e5fb998 100644 --- a/dist/lib/pollingState.js +++ b/dist/lib/pollingState.js @@ -25,7 +25,7 @@ class PollingState { this.resource = JSON.parse(resultOfInitialRequest.bodyAsText); } else { - this.resource = resultOfInitialRequest.bodyAsJson; + this.resource = resultOfInitialRequest.parsedBody; } } catch (error) { @@ -104,10 +104,10 @@ class PollingState { const result = new msRest.HttpOperationResponse(this.request, this.response); if (this.resource && typeof this.resource.valueOf() === "string") { result.bodyAsText = this.resource; - result.bodyAsJson = JSON.parse(this.resource); + result.parsedBody = JSON.parse(this.resource); } else { - result.bodyAsJson = this.resource; + result.parsedBody = this.resource; result.bodyAsText = JSON.stringify(this.resource); } return result; diff --git a/msRestAzureBundle.js b/msRestAzureBundle.js index 354e536a196c..fc720646a198 100644 --- a/msRestAzureBundle.js +++ b/msRestAzureBundle.js @@ -300,7 +300,7 @@ class AzureServiceClient extends msRest.ServiceClient { catch (err) { return Promise.reject(err); } - const parsedResponse = result.bodyAsJson; + const parsedResponse = result.parsedBody; if (!parsedResponse) { return Promise.reject(new Error("The response from long running operation does not contain a body.")); } @@ -313,7 +313,7 @@ class AzureServiceClient extends msRest.ServiceClient { pollingState.request = result.request; pollingState.resource = undefined; if (inPostOrDelete) { - pollingState.resource = result.bodyAsJson; + pollingState.resource = result.parsedBody; } return Promise.resolve(); }); @@ -332,7 +332,7 @@ class AzureServiceClient extends msRest.ServiceClient { catch (err) { return Promise.reject(err); } - const parsedResponse = result.bodyAsJson; + const parsedResponse = result.parsedBody; pollingState.updateResponse(result.response); pollingState.request = result.request; const statusCode = result.response.status; @@ -368,10 +368,10 @@ class AzureServiceClient extends msRest.ServiceClient { catch (err) { return Promise.reject(err); } - if (!result.bodyAsJson) { + if (!result.parsedBody) { return Promise.reject(new Error("The response from long running operation does not contain a body.")); } - const parsedResponse = result.bodyAsJson; + const parsedResponse = result.parsedBody; pollingState.status = LroStates.Succeeded; if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) { pollingState.status = parsedResponse.properties.provisioningState; @@ -417,7 +417,7 @@ class AzureServiceClient extends msRest.ServiceClient { return Promise.reject(err); } const statusCode = operationResponse.response.status; - const responseBody = operationResponse.bodyAsJson; + const responseBody = operationResponse.parsedBody; if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { const error = new msRest.RestError(`Invalid status code with response body "${operationResponse.bodyAsText}" occurred ` + `when polling for operation status.`); @@ -472,7 +472,7 @@ class PollingState { this.resource = JSON.parse(resultOfInitialRequest.bodyAsText); } else { - this.resource = resultOfInitialRequest.bodyAsJson; + this.resource = resultOfInitialRequest.parsedBody; } } catch (error) { @@ -551,10 +551,10 @@ class PollingState { const result = new msRest.HttpOperationResponse(this.request, this.response); if (this.resource && typeof this.resource.valueOf() === "string") { result.bodyAsText = this.resource; - result.bodyAsJson = JSON.parse(this.resource); + result.parsedBody = JSON.parse(this.resource); } else { - result.bodyAsJson = this.resource; + result.parsedBody = this.resource; result.bodyAsText = JSON.stringify(this.resource); } return result; diff --git a/msRestAzureBundle.js.map b/msRestAzureBundle.js.map index 13e24ed4d13d..9b9576392dd4 100644 --- a/msRestAzureBundle.js.map +++ b/msRestAzureBundle.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap b72959873493c4949e36","webpack:///./lib/util/constants.ts","webpack:///external \"msRest\"","webpack:///./lib/msRestAzure.ts","webpack:///./lib/azureServiceClient.ts","webpack:///./lib/pollingState.ts","webpack:///./lib/cloudError.ts","webpack:///./lib/baseResource.ts"],"names":[],"mappings":"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","file":"msRestAzureBundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap b72959873493c4949e36","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nconst Constants = {\n /**\n * Defines constants for long running operation states.\n *\n * @const\n * @type {string}\n */\n LongRunningOperationStates: {\n InProgress: \"InProgress\",\n Succeeded: \"Succeeded\",\n Failed: \"Failed\",\n Canceled: \"Canceled\"\n },\n\n /**\n * The default language in the request header.\n *\n * @const\n * @type {string}\n */\n DEFAULT_LANGUAGE: \"en-us\",\n\n /**\n * The ms-rest-azure version.\n * @const\n * @type {string}\n */\n msRestAzureVersion: \"0.1.0\"\n};\n\nexport default Constants;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/util/constants.ts","module.exports = msRest;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"msRest\"\n// module id = 1\n// module chunks = 0","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport { AzureServiceClientOptions, AzureServiceClient } from \"./azureServiceClient\";\nimport Constants from \"./util/constants\";\nimport { CloudError, CloudErrorMapper } from \"./cloudError\";\nimport { BaseResource, BaseResourceMapper } from \"./baseResource\";\nexport { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper };\n\n\n// WEBPACK FOOTER //\n// ./lib/msRestAzure.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport * as msRest from \"ms-rest-js\";\nimport Constants from \"./util/constants\";\nimport PollingState from \"./pollingState\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * Options to be provided while creating the client.\n */\nexport interface AzureServiceClientOptions extends msRest.ServiceClientOptions {\n /**\n * @property {string} [options.acceptLanguage] - Gets or sets the preferred language for the response. Default value is: \"en-US\".\n */\n acceptLanguage?: string;\n\n /**\n * @property {boolean} [options.generateClientRequestId] - When set to true a unique x-ms-client-request-id value\n * is generated and included in each request. Default is true.\n */\n generateClientRequestId?: boolean;\n\n /**\n * @property {number} [options.longRunningOperationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * Long Running Operations. Default value is 30.\n */\n longRunningOperationRetryTimeout?: number;\n\n /**\n * @property {number} [rpRegistrationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * AutomaticRPRegistration. Default value is 30 seconds.\n */\n rpRegistrationRetryTimeout?: number;\n}\n\n/**\n * @class\n * Initializes a new instance of the AzureServiceClient class.\n * @constructor\n *\n * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or\n * UserTokenCredentials object used for authentication.\n * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient\n */\nexport class AzureServiceClient extends msRest.ServiceClient {\n acceptLanguage: string = Constants.DEFAULT_LANGUAGE;\n generateClientRequestId = true;\n longRunningOperationRetryTimeout = 30;\n rpRegistrationRetryTimeout = 30;\n\n constructor(credentials: msRest.ServiceClientCredentials, options?: AzureServiceClientOptions) {\n super(credentials, options);\n this.acceptLanguage = Constants.DEFAULT_LANGUAGE;\n this.generateClientRequestId = true;\n this.longRunningOperationRetryTimeout = 30;\n if (!options) options = {};\n\n if (options.acceptLanguage !== null && options.acceptLanguage !== undefined) {\n this.acceptLanguage = options.acceptLanguage;\n }\n\n if (options.generateClientRequestId !== null && options.generateClientRequestId !== undefined) {\n this.generateClientRequestId = options.generateClientRequestId;\n }\n\n if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) {\n this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout;\n }\n\n if (options.rpRegistrationRetryTimeout !== null && options.rpRegistrationRetryTimeout !== undefined) {\n this.rpRegistrationRetryTimeout = options.rpRegistrationRetryTimeout;\n }\n\n try {\n const moduleName = \"ms-rest-azure\";\n const moduleVersion = Constants.msRestAzureVersion;\n this.addUserAgentInfo(`${moduleName}/${moduleVersion}`);\n } catch (err) {\n // do nothing\n }\n }\n\n /**\n * Provides a mechanism to make a request that will poll and provide the final result.\n * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object\n * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request\n * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody.\n */\n async sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n let initialResponse: msRest.HttpOperationResponse;\n try {\n initialResponse = await self.sendRequest(request);\n } catch (err) {\n return Promise.reject(err);\n }\n let finalResponse: msRest.HttpOperationResponse;\n try {\n finalResponse = await self.getLongRunningOperationResult(initialResponse, options);\n } catch (err) {\n return Promise.reject(err);\n }\n return Promise.resolve(finalResponse);\n }\n\n /**\n * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request.\n * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation.\n */\n private checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResponse): boolean {\n const statusCode = initialResponse.response.status;\n const method = initialResponse.request.method;\n if (statusCode === 200 || statusCode === 202 ||\n (statusCode === 201 && method === \"PUT\") ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n return false;\n } else {\n return true;\n }\n }\n\n /**\n * Poll Azure long running PUT, PATCH, POST or DELETE operations.\n * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation.\n * @param {msRest.RequestOptionsBase} [options] - custom request options.\n * @returns {Promise} result - The final response after polling is complete.\n */\n async getLongRunningOperationResult(resultOfInitialRequest: msRest.HttpOperationResponse, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n const initialRequestMethod: string = resultOfInitialRequest.request.method as msRest.HttpMethods;\n\n if (self.checkResponseStatusCodeFailed(resultOfInitialRequest)) {\n return Promise.reject(`Unexpected polling status code from long running operation ` +\n `\"${resultOfInitialRequest.response.status}\" for method \"${initialRequestMethod}\".`);\n }\n let pollingState: PollingState;\n try {\n pollingState = new PollingState(resultOfInitialRequest, self.longRunningOperationRetryTimeout);\n pollingState.optionsOfInitialRequest = options as msRest.RequestOptionsBase;\n } catch (error) {\n return Promise.reject(error);\n }\n const resourceUrl: string = resultOfInitialRequest.request.url;\n while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) {\n await msRest.delay(pollingState.getTimeout());\n if (pollingState.azureAsyncOperationHeaderLink) {\n await self.updateStateFromAzureAsyncOperationHeader(pollingState, true);\n } else if (pollingState.locationHeaderLink) {\n await self.updateStateFromLocationHeader(initialRequestMethod, pollingState);\n } else if (initialRequestMethod === \"PUT\") {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n } else {\n return Promise.reject(new Error(\"Location header is missing from long running operation.\"));\n }\n }\n\n if (pollingState.status === LroStates.Succeeded) {\n if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) &&\n (initialRequestMethod === \"PUT\" || initialRequestMethod === \"PATCH\")) {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n return Promise.resolve(pollingState.getOperationResponse());\n } else {\n return Promise.resolve(pollingState.getOperationResponse());\n }\n } else {\n return Promise.reject(pollingState.getRestError());\n }\n }\n\n /**\n * Retrieve operation status by polling from \"azure-asyncoperation\" header.\n * @param {PollingState} pollingState - The object to persist current operation state.\n * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation.\n */\n private async updateStateFromAzureAsyncOperationHeader(pollingState: PollingState, inPostOrDelete = false): Promise {\n let result: msRest.HttpOperationResponse;\n\n try {\n result = await this.getStatus(pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n\n if (!parsedResponse) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n } else if (parsedResponse && !parsedResponse.status) {\n return Promise.reject(new Error(`The response \"${result.bodyAsText}\" from long running operation does not contain the status property.`));\n }\n pollingState.status = parsedResponse.status;\n pollingState.error = parsedResponse.error;\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = undefined;\n if (inPostOrDelete) {\n pollingState.resource = result.bodyAsJson;\n }\n return Promise.resolve();\n }\n\n /**\n * Retrieve PUT operation status by polling from \"location\" header.\n * @param {string} method - The HTTP method.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromLocationHeader(method: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n const statusCode = result.response.status;\n if (statusCode === 202) {\n pollingState.status = LroStates.InProgress;\n } else if (statusCode === 200 ||\n (statusCode === 201 && (method === \"PUT\" || method === \"PATCH\")) ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n pollingState.status = LroStates.Succeeded;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n } else {\n return Promise.reject(new Error(`The response with status code ${statusCode} from polling for ` +\n `long running operation url \"${pollingState.locationHeaderLink}\" is not valid.`));\n }\n }\n\n /**\n * Polling for resource status.\n * @param {string} resourceUrl - The url of resource.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromGetResourceOperation(resourceUrl: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n if (!result.bodyAsJson) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n pollingState.status = LroStates.Succeeded;\n if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) {\n pollingState.status = parsedResponse.properties.provisioningState;\n }\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n return Promise.resolve();\n }\n\n /**\n * Retrieves operation status by querying the operation URL.\n * @param {string} operationUrl - URL used to poll operation result.\n * @param {object} options - Options that can be set on the request object\n */\n private async getStatus(operationUrl: string, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n // Construct URL\n const requestUrl = operationUrl.replace(\" \", \"%20\");\n // Create HTTP request object\n const httpRequest: msRest.RequestPrepareOptions = {\n method: \"GET\",\n url: requestUrl,\n headers: {}\n };\n if (options) {\n const customHeaders: { [key: string]: string } = (options.customHeaders as { [key: string]: string });\n for (const headerName in customHeaders) {\n if (customHeaders.hasOwnProperty(headerName)) {\n (httpRequest.headers as { [key: string]: string })[headerName] = customHeaders[headerName];\n }\n }\n }\n let operationResponse: msRest.HttpOperationResponse;\n try {\n operationResponse = await self.sendRequest(httpRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n const statusCode = operationResponse.response.status;\n const responseBody = operationResponse.bodyAsJson;\n if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) {\n const error = new msRest.RestError(`Invalid status code with response body \"${operationResponse.bodyAsText}\" occurred ` +\n `when polling for operation status.`);\n error.statusCode = statusCode;\n error.request = msRest.stripRequest(operationResponse.request);\n error.response = operationResponse.response;\n try {\n error.body = responseBody;\n } catch (badResponse) {\n error.message += ` Error \"${badResponse}\" occured while deserializing the response body - \"${operationResponse.bodyAsText}\".`;\n error.body = operationResponse.bodyAsText;\n }\n return Promise.reject(error);\n }\n\n return Promise.resolve(operationResponse);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/azureServiceClient.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport Constants from \"./util/constants\";\nimport * as msRest from \"ms-rest-js\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * @class\n * Initializes a new instance of the PollingState class.\n */\nexport default class PollingState {\n /**\n * @param {msRest.HttpOperationResponse} [response] - Response of the initial request that was made as a part of the asynchronous operation.\n */\n resultOfInitialRequest: msRest.HttpOperationResponse;\n /**\n * @param {msRest.RequestOptionsBase} [optionsOfInitialRequest] - Request options that were provided as a part of the initial request.\n */\n optionsOfInitialRequest: msRest.RequestOptionsBase;\n /**\n * @param {msRest.WebResource} [request] - provides information about the request made for polling.\n */\n request: msRest.WebResource;\n /**\n * @param {Response} [response] - The response object to extract longrunning operation status.\n */\n response: Response;\n /**\n * @param {any} [resource] - Provides information about the response body received in the polling request. Particularly useful when polling via provisioningState.\n */\n resource: any;\n /**\n * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30.\n */\n retryTimeout = 30;\n /**\n * @param {string} [azureAsyncOperationHeaderLink] - The url that is present in \"azure-asyncoperation\" response header.\n */\n azureAsyncOperationHeaderLink?: string;\n /**\n * @param {string} [locationHeaderLink] - The url that is present in \"Location\" response header.\n */\n locationHeaderLink?: string;\n /**\n * @param {string} [status] - The status of polling. \"Succeeded, Failed, Cancelled, Updating, Creating, etc.\"\n */\n status?: string;\n /**\n * @param {msRest.RestError} [error] - Provides information about the error that happened while polling.\n */\n error?: msRest.RestError;\n\n constructor(resultOfInitialRequest: msRest.HttpOperationResponse, retryTimeout = 30) {\n this.resultOfInitialRequest = resultOfInitialRequest;\n this.retryTimeout = retryTimeout;\n this.updateResponse(resultOfInitialRequest.response);\n this.request = resultOfInitialRequest.request;\n // Parse response.body & assign it as the resource.\n try {\n if (resultOfInitialRequest.bodyAsText && resultOfInitialRequest.bodyAsText.length > 0) {\n this.resource = JSON.parse(resultOfInitialRequest.bodyAsText);\n } else {\n this.resource = resultOfInitialRequest.bodyAsJson;\n }\n } catch (error) {\n const deserializationError = new msRest.RestError(`Error \"${error}\" occurred in parsing the responseBody \" +\n \"while creating the PollingState for Long Running Operation- \"${resultOfInitialRequest.bodyAsText}\"`);\n deserializationError.request = resultOfInitialRequest.request;\n deserializationError.response = resultOfInitialRequest.response;\n throw deserializationError;\n }\n switch (this.response.status) {\n case 202:\n this.status = LroStates.InProgress;\n break;\n\n case 204:\n this.status = LroStates.Succeeded;\n break;\n\n case 201:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.InProgress;\n }\n break;\n\n case 200:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.Succeeded;\n }\n break;\n\n default:\n this.status = LroStates.Failed;\n break;\n }\n }\n\n /**\n * Update cached data using the provided response object\n * @param {Response} [response] - provider response object.\n */\n updateResponse(response: Response) {\n this.response = response;\n if (response && response.headers) {\n const asyncOperationHeader: string | null | undefined = response.headers.get(\"azure-asyncoperation\");\n const locationHeader: string | null | undefined = response.headers.get(\"location\");\n if (asyncOperationHeader) {\n this.azureAsyncOperationHeaderLink = asyncOperationHeader;\n }\n\n if (locationHeader) {\n this.locationHeaderLink = locationHeader;\n }\n }\n }\n\n /**\n * Gets timeout in milliseconds.\n * @returns {number} timeout\n */\n getTimeout() {\n if (this.retryTimeout || this.retryTimeout === 0) {\n return this.retryTimeout * 1000;\n }\n if (this.response) {\n const retryAfter: string | null | undefined = this.response.headers.get(\"retry-after\");\n if (retryAfter) {\n return parseInt(retryAfter) * 1000;\n }\n }\n return 30 * 1000;\n }\n\n /**\n * Returns long running operation result.\n * @returns {msRest.HttpOperationResponse} HttpOperationResponse\n */\n getOperationResponse(): msRest.HttpOperationResponse {\n const result = new msRest.HttpOperationResponse(this.request, this.response);\n if (this.resource && typeof this.resource.valueOf() === \"string\") {\n result.bodyAsText = this.resource;\n result.bodyAsJson = JSON.parse(this.resource);\n } else {\n result.bodyAsJson = this.resource;\n result.bodyAsText = JSON.stringify(this.resource);\n }\n return result;\n }\n\n /**\n * Returns an Error on operation failure.\n * @param {Error} err - The error object.\n * @returns {msRest.RestError} The RestError defined in the runtime.\n */\n getRestError(err?: Error): msRest.RestError {\n let errMsg: string;\n let errCode: string | undefined = undefined;\n\n const error = new msRest.RestError(\"\");\n error.request = msRest.stripRequest(this.request);\n error.response = this.response;\n const parsedResponse = this.resource as { [key: string]: any };\n\n if (err && err.message) {\n errMsg = `Long running operation failed with error: \"${err.message}\".`;\n } else {\n errMsg = `Long running operation failed with status: \"${this.status}\".`;\n }\n\n if (parsedResponse) {\n if (parsedResponse.error && parsedResponse.error.message) {\n errMsg = `Long running operation failed with error: \"${parsedResponse.error.message}\".`;\n }\n if (parsedResponse.error && parsedResponse.error.code) {\n errCode = parsedResponse.error.code as string;\n }\n }\n\n error.message = errMsg;\n if (errCode) error.code = errCode;\n error.body = parsedResponse;\n return error;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/pollingState.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * Provides additional information about an http error response returned from a Microsoft Azure service.\n */\nexport interface CloudError extends Error {\n /**\n * @property {string} code The error code parsed from the body of the http error response.\n */\n code: string;\n /**\n * @property {string} message The error message parsed from the body of the http error response.\n */\n message: string;\n /**\n * @property {string} [target] The target of the error.\n */\n target?: string;\n /**\n * @property {Array} [details] An array of CloudError objects specifying the details.\n */\n details?: Array;\n}\n\nexport const CloudErrorMapper = {\n required: false,\n serializedName: \"CloudError\",\n type: {\n name: \"Composite\",\n className: \"CloudError\",\n modelProperties: {\n code: {\n required: true,\n serializedName: \"code\",\n type: {\n name: \"String\"\n }\n },\n message: {\n required: true,\n serializedName: \"message\",\n type: {\n name: \"String\"\n }\n },\n target: {\n required: false,\n serializedName: \"target\",\n type: {\n name: \"String\"\n }\n },\n details: {\n required: false,\n serializedName: \"details\",\n type: {\n name: \"Sequence\",\n element: {\n required: false,\n serializedName: \"CloudErrorElementType\",\n type: {\n name: \"Composite\",\n className: \"CloudError\"\n }\n }\n }\n }\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/cloudError.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * An empty interface.\n */\nexport interface BaseResource { }\n\nexport const BaseResourceMapper = {\n required: false,\n serializedName: \"BaseResource\",\n type: {\n name: \"Composite\",\n className: \"BaseResource\",\n modelProperties: {\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/baseResource.ts"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap 1a15bd196013986aa28e","webpack:///./lib/util/constants.ts","webpack:///external \"msRest\"","webpack:///./lib/msRestAzure.ts","webpack:///./lib/azureServiceClient.ts","webpack:///./lib/pollingState.ts","webpack:///./lib/cloudError.ts","webpack:///./lib/baseResource.ts"],"names":[],"mappings":"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","file":"msRestAzureBundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 1a15bd196013986aa28e","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nconst Constants = {\n /**\n * Defines constants for long running operation states.\n *\n * @const\n * @type {string}\n */\n LongRunningOperationStates: {\n InProgress: \"InProgress\",\n Succeeded: \"Succeeded\",\n Failed: \"Failed\",\n Canceled: \"Canceled\"\n },\n\n /**\n * The default language in the request header.\n *\n * @const\n * @type {string}\n */\n DEFAULT_LANGUAGE: \"en-us\",\n\n /**\n * The ms-rest-azure version.\n * @const\n * @type {string}\n */\n msRestAzureVersion: \"0.1.0\"\n};\n\nexport default Constants;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/util/constants.ts","module.exports = msRest;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"msRest\"\n// module id = 1\n// module chunks = 0","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport { AzureServiceClientOptions, AzureServiceClient } from \"./azureServiceClient\";\nimport Constants from \"./util/constants\";\nimport { CloudError, CloudErrorMapper } from \"./cloudError\";\nimport { BaseResource, BaseResourceMapper } from \"./baseResource\";\nexport { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper };\n\n\n// WEBPACK FOOTER //\n// ./lib/msRestAzure.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport * as msRest from \"ms-rest-js\";\nimport Constants from \"./util/constants\";\nimport PollingState from \"./pollingState\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * Options to be provided while creating the client.\n */\nexport interface AzureServiceClientOptions extends msRest.ServiceClientOptions {\n /**\n * @property {string} [options.acceptLanguage] - Gets or sets the preferred language for the response. Default value is: \"en-US\".\n */\n acceptLanguage?: string;\n\n /**\n * @property {boolean} [options.generateClientRequestId] - When set to true a unique x-ms-client-request-id value\n * is generated and included in each request. Default is true.\n */\n generateClientRequestId?: boolean;\n\n /**\n * @property {number} [options.longRunningOperationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * Long Running Operations. Default value is 30.\n */\n longRunningOperationRetryTimeout?: number;\n\n /**\n * @property {number} [rpRegistrationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * AutomaticRPRegistration. Default value is 30 seconds.\n */\n rpRegistrationRetryTimeout?: number;\n}\n\n/**\n * @class\n * Initializes a new instance of the AzureServiceClient class.\n * @constructor\n *\n * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or\n * UserTokenCredentials object used for authentication.\n * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient\n */\nexport class AzureServiceClient extends msRest.ServiceClient {\n acceptLanguage: string = Constants.DEFAULT_LANGUAGE;\n generateClientRequestId = true;\n longRunningOperationRetryTimeout = 30;\n rpRegistrationRetryTimeout = 30;\n\n constructor(credentials: msRest.ServiceClientCredentials, options?: AzureServiceClientOptions) {\n super(credentials, options);\n this.acceptLanguage = Constants.DEFAULT_LANGUAGE;\n this.generateClientRequestId = true;\n this.longRunningOperationRetryTimeout = 30;\n if (!options) options = {};\n\n if (options.acceptLanguage !== null && options.acceptLanguage !== undefined) {\n this.acceptLanguage = options.acceptLanguage;\n }\n\n if (options.generateClientRequestId !== null && options.generateClientRequestId !== undefined) {\n this.generateClientRequestId = options.generateClientRequestId;\n }\n\n if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) {\n this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout;\n }\n\n if (options.rpRegistrationRetryTimeout !== null && options.rpRegistrationRetryTimeout !== undefined) {\n this.rpRegistrationRetryTimeout = options.rpRegistrationRetryTimeout;\n }\n\n try {\n const moduleName = \"ms-rest-azure\";\n const moduleVersion = Constants.msRestAzureVersion;\n this.addUserAgentInfo(`${moduleName}/${moduleVersion}`);\n } catch (err) {\n // do nothing\n }\n }\n\n /**\n * Provides a mechanism to make a request that will poll and provide the final result.\n * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object\n * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request\n * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody.\n */\n async sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n let initialResponse: msRest.HttpOperationResponse;\n try {\n initialResponse = await self.sendRequest(request);\n } catch (err) {\n return Promise.reject(err);\n }\n let finalResponse: msRest.HttpOperationResponse;\n try {\n finalResponse = await self.getLongRunningOperationResult(initialResponse, options);\n } catch (err) {\n return Promise.reject(err);\n }\n return Promise.resolve(finalResponse);\n }\n\n /**\n * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request.\n * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation.\n */\n private checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResponse): boolean {\n const statusCode = initialResponse.response.status;\n const method = initialResponse.request.method;\n if (statusCode === 200 || statusCode === 202 ||\n (statusCode === 201 && method === \"PUT\") ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n return false;\n } else {\n return true;\n }\n }\n\n /**\n * Poll Azure long running PUT, PATCH, POST or DELETE operations.\n * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation.\n * @param {msRest.RequestOptionsBase} [options] - custom request options.\n * @returns {Promise} result - The final response after polling is complete.\n */\n async getLongRunningOperationResult(resultOfInitialRequest: msRest.HttpOperationResponse, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n const initialRequestMethod: string = resultOfInitialRequest.request.method as msRest.HttpMethods;\n\n if (self.checkResponseStatusCodeFailed(resultOfInitialRequest)) {\n return Promise.reject(`Unexpected polling status code from long running operation ` +\n `\"${resultOfInitialRequest.response.status}\" for method \"${initialRequestMethod}\".`);\n }\n let pollingState: PollingState;\n try {\n pollingState = new PollingState(resultOfInitialRequest, self.longRunningOperationRetryTimeout);\n pollingState.optionsOfInitialRequest = options as msRest.RequestOptionsBase;\n } catch (error) {\n return Promise.reject(error);\n }\n const resourceUrl: string = resultOfInitialRequest.request.url;\n while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) {\n await msRest.delay(pollingState.getTimeout());\n if (pollingState.azureAsyncOperationHeaderLink) {\n await self.updateStateFromAzureAsyncOperationHeader(pollingState, true);\n } else if (pollingState.locationHeaderLink) {\n await self.updateStateFromLocationHeader(initialRequestMethod, pollingState);\n } else if (initialRequestMethod === \"PUT\") {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n } else {\n return Promise.reject(new Error(\"Location header is missing from long running operation.\"));\n }\n }\n\n if (pollingState.status === LroStates.Succeeded) {\n if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) &&\n (initialRequestMethod === \"PUT\" || initialRequestMethod === \"PATCH\")) {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n return Promise.resolve(pollingState.getOperationResponse());\n } else {\n return Promise.resolve(pollingState.getOperationResponse());\n }\n } else {\n return Promise.reject(pollingState.getRestError());\n }\n }\n\n /**\n * Retrieve operation status by polling from \"azure-asyncoperation\" header.\n * @param {PollingState} pollingState - The object to persist current operation state.\n * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation.\n */\n private async updateStateFromAzureAsyncOperationHeader(pollingState: PollingState, inPostOrDelete = false): Promise {\n let result: msRest.HttpOperationResponse;\n\n try {\n result = await this.getStatus(pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.parsedBody as { [key: string]: any };\n\n if (!parsedResponse) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n } else if (parsedResponse && !parsedResponse.status) {\n return Promise.reject(new Error(`The response \"${result.bodyAsText}\" from long running operation does not contain the status property.`));\n }\n pollingState.status = parsedResponse.status;\n pollingState.error = parsedResponse.error;\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = undefined;\n if (inPostOrDelete) {\n pollingState.resource = result.parsedBody;\n }\n return Promise.resolve();\n }\n\n /**\n * Retrieve PUT operation status by polling from \"location\" header.\n * @param {string} method - The HTTP method.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromLocationHeader(method: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.parsedBody as { [key: string]: any };\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n const statusCode = result.response.status;\n if (statusCode === 202) {\n pollingState.status = LroStates.InProgress;\n } else if (statusCode === 200 ||\n (statusCode === 201 && (method === \"PUT\" || method === \"PATCH\")) ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n pollingState.status = LroStates.Succeeded;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n } else {\n return Promise.reject(new Error(`The response with status code ${statusCode} from polling for ` +\n `long running operation url \"${pollingState.locationHeaderLink}\" is not valid.`));\n }\n }\n\n /**\n * Polling for resource status.\n * @param {string} resourceUrl - The url of resource.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromGetResourceOperation(resourceUrl: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n if (!result.parsedBody) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n }\n\n const parsedResponse = result.parsedBody as { [key: string]: any };\n pollingState.status = LroStates.Succeeded;\n if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) {\n pollingState.status = parsedResponse.properties.provisioningState;\n }\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n return Promise.resolve();\n }\n\n /**\n * Retrieves operation status by querying the operation URL.\n * @param {string} operationUrl - URL used to poll operation result.\n * @param {object} options - Options that can be set on the request object\n */\n private async getStatus(operationUrl: string, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n // Construct URL\n const requestUrl = operationUrl.replace(\" \", \"%20\");\n // Create HTTP request object\n const httpRequest: msRest.RequestPrepareOptions = {\n method: \"GET\",\n url: requestUrl,\n headers: {}\n };\n if (options) {\n const customHeaders: { [key: string]: string } = (options.customHeaders as { [key: string]: string });\n for (const headerName in customHeaders) {\n if (customHeaders.hasOwnProperty(headerName)) {\n (httpRequest.headers as { [key: string]: string })[headerName] = customHeaders[headerName];\n }\n }\n }\n let operationResponse: msRest.HttpOperationResponse;\n try {\n operationResponse = await self.sendRequest(httpRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n const statusCode = operationResponse.response.status;\n const responseBody = operationResponse.parsedBody;\n if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) {\n const error = new msRest.RestError(`Invalid status code with response body \"${operationResponse.bodyAsText}\" occurred ` +\n `when polling for operation status.`);\n error.statusCode = statusCode;\n error.request = msRest.stripRequest(operationResponse.request);\n error.response = operationResponse.response;\n try {\n error.body = responseBody;\n } catch (badResponse) {\n error.message += ` Error \"${badResponse}\" occured while deserializing the response body - \"${operationResponse.bodyAsText}\".`;\n error.body = operationResponse.bodyAsText;\n }\n return Promise.reject(error);\n }\n\n return Promise.resolve(operationResponse);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/azureServiceClient.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport Constants from \"./util/constants\";\nimport * as msRest from \"ms-rest-js\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * @class\n * Initializes a new instance of the PollingState class.\n */\nexport default class PollingState {\n /**\n * @param {msRest.HttpOperationResponse} [response] - Response of the initial request that was made as a part of the asynchronous operation.\n */\n resultOfInitialRequest: msRest.HttpOperationResponse;\n /**\n * @param {msRest.RequestOptionsBase} [optionsOfInitialRequest] - Request options that were provided as a part of the initial request.\n */\n optionsOfInitialRequest: msRest.RequestOptionsBase;\n /**\n * @param {msRest.WebResource} [request] - provides information about the request made for polling.\n */\n request: msRest.WebResource;\n /**\n * @param {Response} [response] - The response object to extract longrunning operation status.\n */\n response: Response;\n /**\n * @param {any} [resource] - Provides information about the response body received in the polling request. Particularly useful when polling via provisioningState.\n */\n resource: any;\n /**\n * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30.\n */\n retryTimeout = 30;\n /**\n * @param {string} [azureAsyncOperationHeaderLink] - The url that is present in \"azure-asyncoperation\" response header.\n */\n azureAsyncOperationHeaderLink?: string;\n /**\n * @param {string} [locationHeaderLink] - The url that is present in \"Location\" response header.\n */\n locationHeaderLink?: string;\n /**\n * @param {string} [status] - The status of polling. \"Succeeded, Failed, Cancelled, Updating, Creating, etc.\"\n */\n status?: string;\n /**\n * @param {msRest.RestError} [error] - Provides information about the error that happened while polling.\n */\n error?: msRest.RestError;\n\n constructor(resultOfInitialRequest: msRest.HttpOperationResponse, retryTimeout = 30) {\n this.resultOfInitialRequest = resultOfInitialRequest;\n this.retryTimeout = retryTimeout;\n this.updateResponse(resultOfInitialRequest.response);\n this.request = resultOfInitialRequest.request;\n // Parse response.body & assign it as the resource.\n try {\n if (resultOfInitialRequest.bodyAsText && resultOfInitialRequest.bodyAsText.length > 0) {\n this.resource = JSON.parse(resultOfInitialRequest.bodyAsText);\n } else {\n this.resource = resultOfInitialRequest.parsedBody;\n }\n } catch (error) {\n const deserializationError = new msRest.RestError(`Error \"${error}\" occurred in parsing the responseBody \" +\n \"while creating the PollingState for Long Running Operation- \"${resultOfInitialRequest.bodyAsText}\"`);\n deserializationError.request = resultOfInitialRequest.request;\n deserializationError.response = resultOfInitialRequest.response;\n throw deserializationError;\n }\n switch (this.response.status) {\n case 202:\n this.status = LroStates.InProgress;\n break;\n\n case 204:\n this.status = LroStates.Succeeded;\n break;\n\n case 201:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.InProgress;\n }\n break;\n\n case 200:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.Succeeded;\n }\n break;\n\n default:\n this.status = LroStates.Failed;\n break;\n }\n }\n\n /**\n * Update cached data using the provided response object\n * @param {Response} [response] - provider response object.\n */\n updateResponse(response: Response) {\n this.response = response;\n if (response && response.headers) {\n const asyncOperationHeader: string | null | undefined = response.headers.get(\"azure-asyncoperation\");\n const locationHeader: string | null | undefined = response.headers.get(\"location\");\n if (asyncOperationHeader) {\n this.azureAsyncOperationHeaderLink = asyncOperationHeader;\n }\n\n if (locationHeader) {\n this.locationHeaderLink = locationHeader;\n }\n }\n }\n\n /**\n * Gets timeout in milliseconds.\n * @returns {number} timeout\n */\n getTimeout() {\n if (this.retryTimeout || this.retryTimeout === 0) {\n return this.retryTimeout * 1000;\n }\n if (this.response) {\n const retryAfter: string | null | undefined = this.response.headers.get(\"retry-after\");\n if (retryAfter) {\n return parseInt(retryAfter) * 1000;\n }\n }\n return 30 * 1000;\n }\n\n /**\n * Returns long running operation result.\n * @returns {msRest.HttpOperationResponse} HttpOperationResponse\n */\n getOperationResponse(): msRest.HttpOperationResponse {\n const result = new msRest.HttpOperationResponse(this.request, this.response);\n if (this.resource && typeof this.resource.valueOf() === \"string\") {\n result.bodyAsText = this.resource;\n result.parsedBody = JSON.parse(this.resource);\n } else {\n result.parsedBody = this.resource;\n result.bodyAsText = JSON.stringify(this.resource);\n }\n return result;\n }\n\n /**\n * Returns an Error on operation failure.\n * @param {Error} err - The error object.\n * @returns {msRest.RestError} The RestError defined in the runtime.\n */\n getRestError(err?: Error): msRest.RestError {\n let errMsg: string;\n let errCode: string | undefined = undefined;\n\n const error = new msRest.RestError(\"\");\n error.request = msRest.stripRequest(this.request);\n error.response = this.response;\n const parsedResponse = this.resource as { [key: string]: any };\n\n if (err && err.message) {\n errMsg = `Long running operation failed with error: \"${err.message}\".`;\n } else {\n errMsg = `Long running operation failed with status: \"${this.status}\".`;\n }\n\n if (parsedResponse) {\n if (parsedResponse.error && parsedResponse.error.message) {\n errMsg = `Long running operation failed with error: \"${parsedResponse.error.message}\".`;\n }\n if (parsedResponse.error && parsedResponse.error.code) {\n errCode = parsedResponse.error.code as string;\n }\n }\n\n error.message = errMsg;\n if (errCode) error.code = errCode;\n error.body = parsedResponse;\n return error;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/pollingState.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * Provides additional information about an http error response returned from a Microsoft Azure service.\n */\nexport interface CloudError extends Error {\n /**\n * @property {string} code The error code parsed from the body of the http error response.\n */\n code: string;\n /**\n * @property {string} message The error message parsed from the body of the http error response.\n */\n message: string;\n /**\n * @property {string} [target] The target of the error.\n */\n target?: string;\n /**\n * @property {Array} [details] An array of CloudError objects specifying the details.\n */\n details?: Array;\n}\n\nexport const CloudErrorMapper = {\n required: false,\n serializedName: \"CloudError\",\n type: {\n name: \"Composite\",\n className: \"CloudError\",\n modelProperties: {\n code: {\n required: true,\n serializedName: \"code\",\n type: {\n name: \"String\"\n }\n },\n message: {\n required: true,\n serializedName: \"message\",\n type: {\n name: \"String\"\n }\n },\n target: {\n required: false,\n serializedName: \"target\",\n type: {\n name: \"String\"\n }\n },\n details: {\n required: false,\n serializedName: \"details\",\n type: {\n name: \"Sequence\",\n element: {\n required: false,\n serializedName: \"CloudErrorElementType\",\n type: {\n name: \"Composite\",\n className: \"CloudError\"\n }\n }\n }\n }\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/cloudError.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * An empty interface.\n */\nexport interface BaseResource { }\n\nexport const BaseResourceMapper = {\n required: false,\n serializedName: \"BaseResource\",\n type: {\n name: \"Composite\",\n className: \"BaseResource\",\n modelProperties: {\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/baseResource.ts"],"sourceRoot":""} \ No newline at end of file diff --git a/msRestAzureBundle.min.js b/msRestAzureBundle.min.js index 8f4a71a4a9e8..3e7e22021b43 100644 --- a/msRestAzureBundle.min.js +++ b/msRestAzureBundle.min.js @@ -1 +1 @@ -var msRestAzure=function(e){function t(s){if(r[s])return r[s].exports;var o=r[s]={i:s,l:!1,exports:{}};return e[s].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,s){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:s})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=2)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s={LongRunningOperationStates:{InProgress:"InProgress",Succeeded:"Succeeded",Failed:"Failed",Canceled:"Canceled"},DEFAULT_LANGUAGE:"en-us",msRestAzureVersion:"0.1.0"};t.default=s},function(e,t){e.exports=msRest},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=r(3);t.AzureServiceClient=s.AzureServiceClient;const o=r(0);t.Constants=o.default;const n=r(5);t.CloudErrorMapper=n.CloudErrorMapper;const i=r(6);t.BaseResourceMapper=i.BaseResourceMapper},function(e,t,r){"use strict";var s=this&&this.__awaiter||function(e,t,r,s){return new(r||(r=Promise))(function(o,n){function i(e){try{a(s.next(e))}catch(e){n(e)}}function u(e){try{a(s.throw(e))}catch(e){n(e)}}function a(e){e.done?o(e.value):new r(function(t){t(e.value)}).then(i,u)}a((s=s.apply(e,t||[])).next())})};Object.defineProperty(t,"__esModule",{value:!0});const o=r(1),n=r(0),i=r(4),u=n.default.LongRunningOperationStates;class a extends o.ServiceClient{constructor(e,t){super(e,t),this.acceptLanguage=n.default.DEFAULT_LANGUAGE,this.generateClientRequestId=!0,this.longRunningOperationRetryTimeout=30,this.rpRegistrationRetryTimeout=30,this.acceptLanguage=n.default.DEFAULT_LANGUAGE,this.generateClientRequestId=!0,this.longRunningOperationRetryTimeout=30,t||(t={}),null!==t.acceptLanguage&&void 0!==t.acceptLanguage&&(this.acceptLanguage=t.acceptLanguage),null!==t.generateClientRequestId&&void 0!==t.generateClientRequestId&&(this.generateClientRequestId=t.generateClientRequestId),null!==t.longRunningOperationRetryTimeout&&void 0!==t.longRunningOperationRetryTimeout&&(this.longRunningOperationRetryTimeout=t.longRunningOperationRetryTimeout),null!==t.rpRegistrationRetryTimeout&&void 0!==t.rpRegistrationRetryTimeout&&(this.rpRegistrationRetryTimeout=t.rpRegistrationRetryTimeout);try{const e=n.default.msRestAzureVersion;this.addUserAgentInfo(`ms-rest-azure/${e}`)}catch(e){}}sendLongRunningRequest(e,t){return s(this,void 0,void 0,function*(){const r=this;let s;try{s=yield r.sendRequest(e)}catch(e){return Promise.reject(e)}let o;try{o=yield r.getLongRunningOperationResult(s,t)}catch(e){return Promise.reject(e)}return Promise.resolve(o)})}checkResponseStatusCodeFailed(e){const t=e.response.status,r=e.request.method;return 200!==t&&202!==t&&(201!==t||"PUT"!==r)&&(204!==t||"DELETE"!==r&&"POST"!==r)}getLongRunningOperationResult(e,t){return s(this,void 0,void 0,function*(){const r=this,s=e.request.method;if(r.checkResponseStatusCodeFailed(e))return Promise.reject(`Unexpected polling status code from long running operation `+`"${e.response.status}" for method "${s}".`);let n;try{(n=new i.default(e,r.longRunningOperationRetryTimeout)).optionsOfInitialRequest=t}catch(e){return Promise.reject(e)}const a=e.request.url;for(;![u.Succeeded,u.Failed,u.Canceled].some(e=>e===n.status);)if(yield o.delay(n.getTimeout()),n.azureAsyncOperationHeaderLink)yield r.updateStateFromAzureAsyncOperationHeader(n,!0);else if(n.locationHeaderLink)yield r.updateStateFromLocationHeader(s,n);else{if("PUT"!==s)return Promise.reject(new Error("Location header is missing from long running operation."));yield r.updateStateFromGetResourceOperation(a,n)}return n.status===u.Succeeded?!n.azureAsyncOperationHeaderLink&&n.resource||"PUT"!==s&&"PATCH"!==s?Promise.resolve(n.getOperationResponse()):(yield r.updateStateFromGetResourceOperation(a,n),Promise.resolve(n.getOperationResponse())):Promise.reject(n.getRestError())})}updateStateFromAzureAsyncOperationHeader(e,t=!1){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(e.azureAsyncOperationHeaderLink,e.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}const s=r.bodyAsJson;return s?s&&!s.status?Promise.reject(new Error(`The response "${r.bodyAsText}" from long running operation does not contain the status property.`)):(e.status=s.status,e.error=s.error,e.updateResponse(r.response),e.request=r.request,e.resource=void 0,t&&(e.resource=r.bodyAsJson),Promise.resolve()):Promise.reject(new Error("The response from long running operation does not contain a body."))})}updateStateFromLocationHeader(e,t){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(t.locationHeaderLink,t.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}const s=r.bodyAsJson;t.updateResponse(r.response),t.request=r.request;const n=r.response.status;if(202===n)t.status=u.InProgress;else{if(200!==n&&(201!==n||"PUT"!==e&&"PATCH"!==e)&&(204!==n||"DELETE"!==e&&"POST"!==e))return Promise.reject(new Error(`The response with status code ${n} from polling for `+`long running operation url "${t.locationHeaderLink}" is not valid.`));t.status=u.Succeeded,t.resource=s,t.error=new o.RestError(`Long running operation failed with status "${t.status}".`),t.error.code=t.status}})}updateStateFromGetResourceOperation(e,t){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(e,t.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}if(!r.bodyAsJson)return Promise.reject(new Error("The response from long running operation does not contain a body."));const s=r.bodyAsJson;return t.status=u.Succeeded,s&&s.properties&&s.properties.provisioningState&&(t.status=s.properties.provisioningState),t.updateResponse(r.response),t.request=r.request,t.resource=s,t.error=new o.RestError(`Long running operation failed with status "${t.status}".`),t.error.code=t.status,Promise.resolve()})}getStatus(e,t){return s(this,void 0,void 0,function*(){const r=this,s={method:"GET",url:e.replace(" ","%20"),headers:{}};if(t){const e=t.customHeaders;for(const t in e)e.hasOwnProperty(t)&&(s.headers[t]=e[t])}let n;try{n=yield r.sendRequest(s)}catch(e){return Promise.reject(e)}const i=n.response.status,u=n.bodyAsJson;if(200!==i&&201!==i&&202!==i&&204!==i){const e=new o.RestError(`Invalid status code with response body "${n.bodyAsText}" occurred `+`when polling for operation status.`);e.statusCode=i,e.request=o.stripRequest(n.request),e.response=n.response;try{e.body=u}catch(t){e.message+=` Error "${t}" occured while deserializing the response body - "${n.bodyAsText}".`,e.body=n.bodyAsText}return Promise.reject(e)}return Promise.resolve(n)})}}t.AzureServiceClient=a},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=r(0),o=r(1),n=s.default.LongRunningOperationStates;class i{constructor(e,t=30){this.retryTimeout=30,this.resultOfInitialRequest=e,this.retryTimeout=t,this.updateResponse(e.response),this.request=e.request;try{e.bodyAsText&&e.bodyAsText.length>0?this.resource=JSON.parse(e.bodyAsText):this.resource=e.bodyAsJson}catch(t){const r=new o.RestError(`Error "${t}" occurred in parsing the responseBody " +\n "while creating the PollingState for Long Running Operation- "${e.bodyAsText}"`);throw r.request=e.request,r.response=e.response,r}switch(this.response.status){case 202:this.status=n.InProgress;break;case 204:this.status=n.Succeeded;break;case 201:this.resource&&this.resource.properties&&this.resource.properties.provisioningState?this.status=this.resource.properties.provisioningState:this.status=n.InProgress;break;case 200:this.resource&&this.resource.properties&&this.resource.properties.provisioningState?this.status=this.resource.properties.provisioningState:this.status=n.Succeeded;break;default:this.status=n.Failed}}updateResponse(e){if(this.response=e,e&&e.headers){const t=e.headers.get("azure-asyncoperation"),r=e.headers.get("location");t&&(this.azureAsyncOperationHeaderLink=t),r&&(this.locationHeaderLink=r)}}getTimeout(){if(this.retryTimeout||0===this.retryTimeout)return 1e3*this.retryTimeout;if(this.response){const e=this.response.headers.get("retry-after");if(e)return 1e3*parseInt(e)}return 3e4}getOperationResponse(){const e=new o.HttpOperationResponse(this.request,this.response);return this.resource&&"string"==typeof this.resource.valueOf()?(e.bodyAsText=this.resource,e.bodyAsJson=JSON.parse(this.resource)):(e.bodyAsJson=this.resource,e.bodyAsText=JSON.stringify(this.resource)),e}getRestError(e){let t,r=void 0;const s=new o.RestError("");s.request=o.stripRequest(this.request),s.response=this.response;const n=this.resource;return t=e&&e.message?`Long running operation failed with error: "${e.message}".`:`Long running operation failed with status: "${this.status}".`,n&&(n.error&&n.error.message&&(t=`Long running operation failed with error: "${n.error.message}".`),n.error&&n.error.code&&(r=n.error.code)),s.message=t,r&&(s.code=r),s.body=n,s}}t.default=i},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CloudErrorMapper={required:!1,serializedName:"CloudError",type:{name:"Composite",className:"CloudError",modelProperties:{code:{required:!0,serializedName:"code",type:{name:"String"}},message:{required:!0,serializedName:"message",type:{name:"String"}},target:{required:!1,serializedName:"target",type:{name:"String"}},details:{required:!1,serializedName:"details",type:{name:"Sequence",element:{required:!1,serializedName:"CloudErrorElementType",type:{name:"Composite",className:"CloudError"}}}}}}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseResourceMapper={required:!1,serializedName:"BaseResource",type:{name:"Composite",className:"BaseResource",modelProperties:{}}}}]); \ No newline at end of file +var msRestAzure=function(e){function t(s){if(r[s])return r[s].exports;var o=r[s]={i:s,l:!1,exports:{}};return e[s].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,s){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:s})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=2)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s={LongRunningOperationStates:{InProgress:"InProgress",Succeeded:"Succeeded",Failed:"Failed",Canceled:"Canceled"},DEFAULT_LANGUAGE:"en-us",msRestAzureVersion:"0.1.0"};t.default=s},function(e,t){e.exports=msRest},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=r(3);t.AzureServiceClient=s.AzureServiceClient;const o=r(0);t.Constants=o.default;const n=r(5);t.CloudErrorMapper=n.CloudErrorMapper;const i=r(6);t.BaseResourceMapper=i.BaseResourceMapper},function(e,t,r){"use strict";var s=this&&this.__awaiter||function(e,t,r,s){return new(r||(r=Promise))(function(o,n){function i(e){try{u(s.next(e))}catch(e){n(e)}}function a(e){try{u(s.throw(e))}catch(e){n(e)}}function u(e){e.done?o(e.value):new r(function(t){t(e.value)}).then(i,a)}u((s=s.apply(e,t||[])).next())})};Object.defineProperty(t,"__esModule",{value:!0});const o=r(1),n=r(0),i=r(4),a=n.default.LongRunningOperationStates;class u extends o.ServiceClient{constructor(e,t){super(e,t),this.acceptLanguage=n.default.DEFAULT_LANGUAGE,this.generateClientRequestId=!0,this.longRunningOperationRetryTimeout=30,this.rpRegistrationRetryTimeout=30,this.acceptLanguage=n.default.DEFAULT_LANGUAGE,this.generateClientRequestId=!0,this.longRunningOperationRetryTimeout=30,t||(t={}),null!==t.acceptLanguage&&void 0!==t.acceptLanguage&&(this.acceptLanguage=t.acceptLanguage),null!==t.generateClientRequestId&&void 0!==t.generateClientRequestId&&(this.generateClientRequestId=t.generateClientRequestId),null!==t.longRunningOperationRetryTimeout&&void 0!==t.longRunningOperationRetryTimeout&&(this.longRunningOperationRetryTimeout=t.longRunningOperationRetryTimeout),null!==t.rpRegistrationRetryTimeout&&void 0!==t.rpRegistrationRetryTimeout&&(this.rpRegistrationRetryTimeout=t.rpRegistrationRetryTimeout);try{const e=n.default.msRestAzureVersion;this.addUserAgentInfo(`ms-rest-azure/${e}`)}catch(e){}}sendLongRunningRequest(e,t){return s(this,void 0,void 0,function*(){const r=this;let s;try{s=yield r.sendRequest(e)}catch(e){return Promise.reject(e)}let o;try{o=yield r.getLongRunningOperationResult(s,t)}catch(e){return Promise.reject(e)}return Promise.resolve(o)})}checkResponseStatusCodeFailed(e){const t=e.response.status,r=e.request.method;return 200!==t&&202!==t&&(201!==t||"PUT"!==r)&&(204!==t||"DELETE"!==r&&"POST"!==r)}getLongRunningOperationResult(e,t){return s(this,void 0,void 0,function*(){const r=this,s=e.request.method;if(r.checkResponseStatusCodeFailed(e))return Promise.reject(`Unexpected polling status code from long running operation `+`"${e.response.status}" for method "${s}".`);let n;try{(n=new i.default(e,r.longRunningOperationRetryTimeout)).optionsOfInitialRequest=t}catch(e){return Promise.reject(e)}const u=e.request.url;for(;![a.Succeeded,a.Failed,a.Canceled].some(e=>e===n.status);)if(yield o.delay(n.getTimeout()),n.azureAsyncOperationHeaderLink)yield r.updateStateFromAzureAsyncOperationHeader(n,!0);else if(n.locationHeaderLink)yield r.updateStateFromLocationHeader(s,n);else{if("PUT"!==s)return Promise.reject(new Error("Location header is missing from long running operation."));yield r.updateStateFromGetResourceOperation(u,n)}return n.status===a.Succeeded?!n.azureAsyncOperationHeaderLink&&n.resource||"PUT"!==s&&"PATCH"!==s?Promise.resolve(n.getOperationResponse()):(yield r.updateStateFromGetResourceOperation(u,n),Promise.resolve(n.getOperationResponse())):Promise.reject(n.getRestError())})}updateStateFromAzureAsyncOperationHeader(e,t=!1){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(e.azureAsyncOperationHeaderLink,e.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}const s=r.parsedBody;return s?s&&!s.status?Promise.reject(new Error(`The response "${r.bodyAsText}" from long running operation does not contain the status property.`)):(e.status=s.status,e.error=s.error,e.updateResponse(r.response),e.request=r.request,e.resource=void 0,t&&(e.resource=r.parsedBody),Promise.resolve()):Promise.reject(new Error("The response from long running operation does not contain a body."))})}updateStateFromLocationHeader(e,t){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(t.locationHeaderLink,t.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}const s=r.parsedBody;t.updateResponse(r.response),t.request=r.request;const n=r.response.status;if(202===n)t.status=a.InProgress;else{if(200!==n&&(201!==n||"PUT"!==e&&"PATCH"!==e)&&(204!==n||"DELETE"!==e&&"POST"!==e))return Promise.reject(new Error(`The response with status code ${n} from polling for `+`long running operation url "${t.locationHeaderLink}" is not valid.`));t.status=a.Succeeded,t.resource=s,t.error=new o.RestError(`Long running operation failed with status "${t.status}".`),t.error.code=t.status}})}updateStateFromGetResourceOperation(e,t){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(e,t.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}if(!r.parsedBody)return Promise.reject(new Error("The response from long running operation does not contain a body."));const s=r.parsedBody;return t.status=a.Succeeded,s&&s.properties&&s.properties.provisioningState&&(t.status=s.properties.provisioningState),t.updateResponse(r.response),t.request=r.request,t.resource=s,t.error=new o.RestError(`Long running operation failed with status "${t.status}".`),t.error.code=t.status,Promise.resolve()})}getStatus(e,t){return s(this,void 0,void 0,function*(){const r=this,s={method:"GET",url:e.replace(" ","%20"),headers:{}};if(t){const e=t.customHeaders;for(const t in e)e.hasOwnProperty(t)&&(s.headers[t]=e[t])}let n;try{n=yield r.sendRequest(s)}catch(e){return Promise.reject(e)}const i=n.response.status,a=n.parsedBody;if(200!==i&&201!==i&&202!==i&&204!==i){const e=new o.RestError(`Invalid status code with response body "${n.bodyAsText}" occurred `+`when polling for operation status.`);e.statusCode=i,e.request=o.stripRequest(n.request),e.response=n.response;try{e.body=a}catch(t){e.message+=` Error "${t}" occured while deserializing the response body - "${n.bodyAsText}".`,e.body=n.bodyAsText}return Promise.reject(e)}return Promise.resolve(n)})}}t.AzureServiceClient=u},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=r(0),o=r(1),n=s.default.LongRunningOperationStates;class i{constructor(e,t=30){this.retryTimeout=30,this.resultOfInitialRequest=e,this.retryTimeout=t,this.updateResponse(e.response),this.request=e.request;try{e.bodyAsText&&e.bodyAsText.length>0?this.resource=JSON.parse(e.bodyAsText):this.resource=e.parsedBody}catch(t){const r=new o.RestError(`Error "${t}" occurred in parsing the responseBody " +\n "while creating the PollingState for Long Running Operation- "${e.bodyAsText}"`);throw r.request=e.request,r.response=e.response,r}switch(this.response.status){case 202:this.status=n.InProgress;break;case 204:this.status=n.Succeeded;break;case 201:this.resource&&this.resource.properties&&this.resource.properties.provisioningState?this.status=this.resource.properties.provisioningState:this.status=n.InProgress;break;case 200:this.resource&&this.resource.properties&&this.resource.properties.provisioningState?this.status=this.resource.properties.provisioningState:this.status=n.Succeeded;break;default:this.status=n.Failed}}updateResponse(e){if(this.response=e,e&&e.headers){const t=e.headers.get("azure-asyncoperation"),r=e.headers.get("location");t&&(this.azureAsyncOperationHeaderLink=t),r&&(this.locationHeaderLink=r)}}getTimeout(){if(this.retryTimeout||0===this.retryTimeout)return 1e3*this.retryTimeout;if(this.response){const e=this.response.headers.get("retry-after");if(e)return 1e3*parseInt(e)}return 3e4}getOperationResponse(){const e=new o.HttpOperationResponse(this.request,this.response);return this.resource&&"string"==typeof this.resource.valueOf()?(e.bodyAsText=this.resource,e.parsedBody=JSON.parse(this.resource)):(e.parsedBody=this.resource,e.bodyAsText=JSON.stringify(this.resource)),e}getRestError(e){let t,r=void 0;const s=new o.RestError("");s.request=o.stripRequest(this.request),s.response=this.response;const n=this.resource;return t=e&&e.message?`Long running operation failed with error: "${e.message}".`:`Long running operation failed with status: "${this.status}".`,n&&(n.error&&n.error.message&&(t=`Long running operation failed with error: "${n.error.message}".`),n.error&&n.error.code&&(r=n.error.code)),s.message=t,r&&(s.code=r),s.body=n,s}}t.default=i},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CloudErrorMapper={required:!1,serializedName:"CloudError",type:{name:"Composite",className:"CloudError",modelProperties:{code:{required:!0,serializedName:"code",type:{name:"String"}},message:{required:!0,serializedName:"message",type:{name:"String"}},target:{required:!1,serializedName:"target",type:{name:"String"}},details:{required:!1,serializedName:"details",type:{name:"Sequence",element:{required:!1,serializedName:"CloudErrorElementType",type:{name:"Composite",className:"CloudError"}}}}}}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseResourceMapper={required:!1,serializedName:"BaseResource",type:{name:"Composite",className:"BaseResource",modelProperties:{}}}}]); \ No newline at end of file diff --git a/msRestAzureBundle.min.js.map b/msRestAzureBundle.min.js.map index 9a376b707654..8ddd115b635f 100644 --- a/msRestAzureBundle.min.js.map +++ b/msRestAzureBundle.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["msRestAzureBundle.js"],"names":["msRestAzure","modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","value","Constants","LongRunningOperationStates","InProgress","Succeeded","Failed","Canceled","DEFAULT_LANGUAGE","msRestAzureVersion","default","msRest","azureServiceClient_1","AzureServiceClient","constants_1","cloudError_1","CloudErrorMapper","baseResource_1","BaseResourceMapper","__awaiter","this","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","result","done","then","apply","pollingState_1","LroStates","ServiceClient","[object Object]","credentials","options","super","acceptLanguage","generateClientRequestId","longRunningOperationRetryTimeout","rpRegistrationRetryTimeout","undefined","moduleVersion","addUserAgentInfo","err","request","self","initialResponse","sendRequest","finalResponse","getLongRunningOperationResult","statusCode","response","status","method","resultOfInitialRequest","initialRequestMethod","checkResponseStatusCodeFailed","pollingState","optionsOfInitialRequest","error","resourceUrl","url","some","delay","getTimeout","azureAsyncOperationHeaderLink","updateStateFromAzureAsyncOperationHeader","locationHeaderLink","updateStateFromLocationHeader","Error","updateStateFromGetResourceOperation","resource","getOperationResponse","getRestError","inPostOrDelete","getStatus","parsedResponse","bodyAsJson","bodyAsText","updateResponse","RestError","code","properties","provisioningState","operationUrl","httpRequest","replace","headers","customHeaders","headerName","operationResponse","responseBody","stripRequest","body","badResponse","message","PollingState","retryTimeout","length","JSON","parse","deserializationError","asyncOperationHeader","locationHeader","retryAfter","parseInt","HttpOperationResponse","valueOf","stringify","errMsg","errCode","required","serializedName","type","className","modelProperties","target","details","element"],"mappings":"AAAA,IAAIA,YACK,SAAUC,GAKT,SAASC,EAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,OAAOC,EAAiBD,GAAUE,QAGnC,IAAIC,EAASF,EAAiBD,IAC7BI,EAAGJ,EACHK,GAAG,EACHH,YAUD,OANAJ,EAAQE,GAAUM,KAAKH,EAAOD,QAASC,EAAQA,EAAOD,QAASH,GAG/DI,EAAOE,GAAI,EAGJF,EAAOD,QAvBf,IAAID,KA4DJ,OAhCAF,EAAoBQ,EAAIT,EAGxBC,EAAoBS,EAAIP,EAGxBF,EAAoBU,EAAI,SAASP,EAASQ,EAAMC,GAC3CZ,EAAoBa,EAAEV,EAASQ,IAClCG,OAAOC,eAAeZ,EAASQ,GAC9BK,cAAc,EACdC,YAAY,EACZC,IAAKN,KAMRZ,EAAoBmB,EAAI,SAASf,GAChC,IAAIQ,EAASR,GAAUA,EAAOgB,WAC7B,WAAwB,OAAOhB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAJ,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASQ,EAAQC,GAAY,OAAOR,OAAOS,UAAUC,eAAejB,KAAKc,EAAQC,IAGzGtB,EAAoByB,EAAI,GAGjBzB,EAAoBA,EAAoB0B,EAAI,GA9DpD,EAmEH,SAAUtB,EAAQD,EAASH,GAEjC,aAIAc,OAAOC,eAAeZ,EAAS,cAAgBwB,OAAO,IACtD,MAAMC,GAOFC,4BACIC,WAAY,aACZC,UAAW,YACXC,OAAQ,SACRC,SAAU,YAQdC,iBAAkB,QAMlBC,mBAAoB,SAExBhC,EAAQiC,QAAUR,GAKZ,SAAUxB,EAAQD,GAExBC,EAAOD,QAAUkC,QAIX,SAAUjC,EAAQD,EAASH,GAEjC,aAIAc,OAAOC,eAAeZ,EAAS,cAAgBwB,OAAO,IACtD,MAAMW,EAAuBtC,EAAoB,GACjDG,EAAQoC,mBAAqBD,EAAqBC,mBAClD,MAAMC,EAAcxC,EAAoB,GACxCG,EAAQyB,UAAYY,EAAYJ,QAChC,MAAMK,EAAezC,EAAoB,GACzCG,EAAQuC,iBAAmBD,EAAaC,iBACxC,MAAMC,EAAiB3C,EAAoB,GAC3CG,EAAQyC,mBAAqBD,EAAeC,oBAKtC,SAAUxC,EAAQD,EAASH,GAEjC,aAIA,IAAI6C,EAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAASC,EAAYC,EAAGC,GAC1E,OAAO,IAAKD,IAAMA,EAAIE,UAAU,SAAUC,EAASC,GAC/C,SAASC,EAAU3B,GAAS,IAAM4B,EAAKL,EAAUM,KAAK7B,IAAW,MAAO8B,GAAKJ,EAAOI,IACpF,SAASC,EAAS/B,GAAS,IAAM4B,EAAKL,EAAiB,MAAEvB,IAAW,MAAO8B,GAAKJ,EAAOI,IACvF,SAASF,EAAKI,GAAUA,EAAOC,KAAOR,EAAQO,EAAOhC,OAAS,IAAIsB,EAAE,SAAUG,GAAWA,EAAQO,EAAOhC,SAAWkC,KAAKP,EAAWI,GACnIH,GAAML,EAAYA,EAAUY,MAAMf,EAASC,QAAmBQ,WAGtE1C,OAAOC,eAAeZ,EAAS,cAAgBwB,OAAO,IACtD,MAAMU,EAASrC,EAAoB,GAC7BwC,EAAcxC,EAAoB,GAClC+D,EAAiB/D,EAAoB,GACrCgE,EAAYxB,EAAYJ,QAAQP,iCAUhCU,UAA2BF,EAAO4B,cACpCC,YAAYC,EAAaC,GACrBC,MAAMF,EAAaC,GACnBtB,KAAKwB,eAAiB9B,EAAYJ,QAAQF,iBAC1CY,KAAKyB,yBAA0B,EAC/BzB,KAAK0B,iCAAmC,GACxC1B,KAAK2B,2BAA6B,GAClC3B,KAAKwB,eAAiB9B,EAAYJ,QAAQF,iBAC1CY,KAAKyB,yBAA0B,EAC/BzB,KAAK0B,iCAAmC,GACnCJ,IACDA,MAC2B,OAA3BA,EAAQE,qBAAsDI,IAA3BN,EAAQE,iBAC3CxB,KAAKwB,eAAiBF,EAAQE,gBAEM,OAApCF,EAAQG,8BAAwEG,IAApCN,EAAQG,0BACpDzB,KAAKyB,wBAA0BH,EAAQG,yBAEM,OAA7CH,EAAQI,uCAA0FE,IAA7CN,EAAQI,mCAC7D1B,KAAK0B,iCAAmCJ,EAAQI,kCAET,OAAvCJ,EAAQK,iCAA8EC,IAAvCN,EAAQK,6BACvD3B,KAAK2B,2BAA6BL,EAAQK,4BAE9C,IACI,MACME,EAAgBnC,EAAYJ,QAAQD,mBAC1CW,KAAK8B,kCAAkCD,KAE3C,MAAOE,KAUXX,uBAAuBY,EAASV,GAC5B,OAAOvB,EAAUC,UAAM,OAAQ,EAAQ,YACnC,MAAMiC,EAAOjC,KACb,IAAIkC,EACJ,IACIA,QAAwBD,EAAKE,YAAYH,GAE7C,MAAOD,GACH,OAAO1B,QAAQE,OAAOwB,GAE1B,IAAIK,EACJ,IACIA,QAAsBH,EAAKI,8BAA8BH,EAAiBZ,GAE9E,MAAOS,GACH,OAAO1B,QAAQE,OAAOwB,GAE1B,OAAO1B,QAAQC,QAAQ8B,KAO/BhB,8BAA8Bc,GAC1B,MAAMI,EAAaJ,EAAgBK,SAASC,OACtCC,EAASP,EAAgBF,QAAQS,OACvC,OAAmB,MAAfH,GAAqC,MAAfA,IACN,MAAfA,GAAiC,QAAXG,KACP,MAAfH,GAAkC,WAAXG,GAAkC,SAAXA,GAavDrB,8BAA8BsB,EAAwBpB,GAClD,OAAOvB,EAAUC,UAAM,OAAQ,EAAQ,YACnC,MAAMiC,EAAOjC,KACP2C,EAAuBD,EAAuBV,QAAQS,OAC5D,GAAIR,EAAKW,8BAA8BF,GACnC,OAAOrC,QAAQE,yEACPmC,EAAuBH,SAASC,uBAAuBG,OAEnE,IAAIE,EACJ,KACIA,EAAe,IAAI5B,EAAe3B,QAAQoD,EAAwBT,EAAKP,mCAC1DoB,wBAA0BxB,EAE3C,MAAOyB,GACH,OAAO1C,QAAQE,OAAOwC,GAE1B,MAAMC,EAAcN,EAAuBV,QAAQiB,IACnD,OAAS/B,EAAUjC,UAAWiC,EAAUhC,OAAQgC,EAAU/B,UAAU+D,KAAMvC,GAAeA,IAAMkC,EAAaL,SAExG,SADMjD,EAAO4D,MAAMN,EAAaO,cAC5BP,EAAaQ,oCACPpB,EAAKqB,yCAAyCT,GAAc,QAEjE,GAAIA,EAAaU,yBACZtB,EAAKuB,8BAA8Bb,EAAsBE,OAE9D,CAAA,GAA6B,QAAzBF,EAIL,OAAOtC,QAAQE,OAAO,IAAIkD,MAAM,kEAH1BxB,EAAKyB,oCAAoCV,EAAaH,GAMpE,OAAIA,EAAaL,SAAWtB,EAAUjC,WAC7B4D,EAAaQ,+BAAkCR,EAAac,UACnC,QAAzBhB,GAA2D,UAAzBA,EAK5BtC,QAAQC,QAAQuC,EAAae,+BAJ9B3B,EAAKyB,oCAAoCV,EAAaH,GACrDxC,QAAQC,QAAQuC,EAAae,yBAOjCvD,QAAQE,OAAOsC,EAAagB,kBAS/CzC,yCAAyCyB,EAAciB,GAAiB,GACpE,OAAO/D,EAAUC,UAAM,OAAQ,EAAQ,YACnC,IAAIa,EACJ,IACIA,QAAeb,KAAK+D,UAAUlB,EAAaQ,8BAA+BR,EAAaC,yBAE3F,MAAOf,GACH,OAAO1B,QAAQE,OAAOwB,GAE1B,MAAMiC,EAAiBnD,EAAOoD,WAC9B,OAAKD,EAGIA,IAAmBA,EAAexB,OAChCnC,QAAQE,OAAO,IAAIkD,uBAAuB5C,EAAOqD,mFAE5DrB,EAAaL,OAASwB,EAAexB,OACrCK,EAAaE,MAAQiB,EAAejB,MACpCF,EAAasB,eAAetD,EAAO0B,UACnCM,EAAab,QAAUnB,EAAOmB,QAC9Ba,EAAac,cAAW/B,EACpBkC,IACAjB,EAAac,SAAW9C,EAAOoD,YAE5B5D,QAAQC,WAbJD,QAAQE,OAAO,IAAIkD,MAAM,wEAqB5CrC,8BAA8BqB,EAAQI,GAClC,OAAO9C,EAAUC,UAAM,OAAQ,EAAQ,YACnC,IAAIa,EACJ,IACIA,QAAeb,KAAK+D,UAAUlB,EAAaU,mBAAoBV,EAAaC,yBAEhF,MAAOf,GACH,OAAO1B,QAAQE,OAAOwB,GAE1B,MAAMiC,EAAiBnD,EAAOoD,WAC9BpB,EAAasB,eAAetD,EAAO0B,UACnCM,EAAab,QAAUnB,EAAOmB,QAC9B,MAAMM,EAAazB,EAAO0B,SAASC,OACnC,GAAmB,MAAfF,EACAO,EAAaL,OAAStB,EAAUlC,eAE/B,CAAA,GAAmB,MAAfsD,IACW,MAAfA,GAAkC,QAAXG,GAA+B,UAAXA,KAC5B,MAAfH,GAAkC,WAAXG,GAAkC,SAAXA,GAQ/C,OAAOpC,QAAQE,OAAO,IAAIkD,uCAAuCnB,qDAC9BO,EAAaU,sCARhDV,EAAaL,OAAStB,EAAUjC,UAChC4D,EAAac,SAAWK,EAExBnB,EAAaE,MAAQ,IAAIxD,EAAO6E,wDAAwDvB,EAAaL,YACrGK,EAAaE,MAAMsB,KAAOxB,EAAaL,UAanDpB,oCAAoC4B,EAAaH,GAC7C,OAAO9C,EAAUC,UAAM,OAAQ,EAAQ,YACnC,IAAIa,EACJ,IACIA,QAAeb,KAAK+D,UAAUf,EAAaH,EAAaC,yBAE5D,MAAOf,GACH,OAAO1B,QAAQE,OAAOwB,GAE1B,IAAKlB,EAAOoD,WACR,OAAO5D,QAAQE,OAAO,IAAIkD,MAAM,sEAEpC,MAAMO,EAAiBnD,EAAOoD,WAW9B,OAVApB,EAAaL,OAAStB,EAAUjC,UAC5B+E,GAAkBA,EAAeM,YAAcN,EAAeM,WAAWC,oBACzE1B,EAAaL,OAASwB,EAAeM,WAAWC,mBAEpD1B,EAAasB,eAAetD,EAAO0B,UACnCM,EAAab,QAAUnB,EAAOmB,QAC9Ba,EAAac,SAAWK,EAExBnB,EAAaE,MAAQ,IAAIxD,EAAO6E,wDAAwDvB,EAAaL,YACrGK,EAAaE,MAAMsB,KAAOxB,EAAaL,OAChCnC,QAAQC,YAQvBc,UAAUoD,EAAclD,GACpB,OAAOvB,EAAUC,UAAM,OAAQ,EAAQ,YACnC,MAAMiC,EAAOjC,KAIPyE,GACFhC,OAAQ,MACRQ,IAJeuB,EAAaE,QAAQ,IAAK,OAKzCC,YAEJ,GAAIrD,EAAS,CACT,MAAMsD,EAAgBtD,EAAQsD,cAC9B,IAAK,MAAMC,KAAcD,EACjBA,EAAclG,eAAemG,KAC7BJ,EAAYE,QAAQE,GAAcD,EAAcC,IAI5D,IAAIC,EACJ,IACIA,QAA0B7C,EAAKE,YAAYsC,GAE/C,MAAO1C,GACH,OAAO1B,QAAQE,OAAOwB,GAE1B,MAAMO,EAAawC,EAAkBvC,SAASC,OACxCuC,EAAeD,EAAkBb,WACvC,GAAmB,MAAf3B,GAAqC,MAAfA,GAAqC,MAAfA,GAAqC,MAAfA,EAAoB,CACtF,MAAMS,EAAQ,IAAIxD,EAAO6E,qDAAqDU,EAAkBZ,8DAEhGnB,EAAMT,WAAaA,EACnBS,EAAMf,QAAUzC,EAAOyF,aAAaF,EAAkB9C,SACtDe,EAAMR,SAAWuC,EAAkBvC,SACnC,IACIQ,EAAMkC,KAAOF,EAEjB,MAAOG,GACHnC,EAAMoC,oBAAsBD,uDAAiEJ,EAAkBZ,eAC/GnB,EAAMkC,KAAOH,EAAkBZ,WAEnC,OAAO7D,QAAQE,OAAOwC,GAE1B,OAAO1C,QAAQC,QAAQwE,MAInCzH,EAAQoC,mBAAqBA,GAKvB,SAAUnC,EAAQD,EAASH,GAEjC,aAIAc,OAAOC,eAAeZ,EAAS,cAAgBwB,OAAO,IACtD,MAAMa,EAAcxC,EAAoB,GAClCqC,EAASrC,EAAoB,GAC7BgE,EAAYxB,EAAYJ,QAAQP,iCAKhCqG,EACFhE,YAAYsB,EAAwB2C,EAAe,IAI/CrF,KAAKqF,aAAe,GACpBrF,KAAK0C,uBAAyBA,EAC9B1C,KAAKqF,aAAeA,EACpBrF,KAAKmE,eAAezB,EAAuBH,UAC3CvC,KAAKgC,QAAUU,EAAuBV,QAEtC,IACQU,EAAuBwB,YAAcxB,EAAuBwB,WAAWoB,OAAS,EAChFtF,KAAK2D,SAAW4B,KAAKC,MAAM9C,EAAuBwB,YAGlDlE,KAAK2D,SAAWjB,EAAuBuB,WAG/C,MAAOlB,GACH,MAAM0C,EAAuB,IAAIlG,EAAO6E,oBAAoBrB,sHACAL,EAAuBwB,eAGnF,MAFAuB,EAAqBzD,QAAUU,EAAuBV,QACtDyD,EAAqBlD,SAAWG,EAAuBH,SACjDkD,EAEV,OAAQzF,KAAKuC,SAASC,QAClB,KAAK,IACDxC,KAAKwC,OAAStB,EAAUlC,WACxB,MACJ,KAAK,IACDgB,KAAKwC,OAAStB,EAAUjC,UACxB,MACJ,KAAK,IACGe,KAAK2D,UAAY3D,KAAK2D,SAASW,YAActE,KAAK2D,SAASW,WAAWC,kBACtEvE,KAAKwC,OAASxC,KAAK2D,SAASW,WAAWC,kBAGvCvE,KAAKwC,OAAStB,EAAUlC,WAE5B,MACJ,KAAK,IACGgB,KAAK2D,UAAY3D,KAAK2D,SAASW,YAActE,KAAK2D,SAASW,WAAWC,kBACtEvE,KAAKwC,OAASxC,KAAK2D,SAASW,WAAWC,kBAGvCvE,KAAKwC,OAAStB,EAAUjC,UAE5B,MACJ,QACIe,KAAKwC,OAAStB,EAAUhC,QAQpCkC,eAAemB,GAEX,GADAvC,KAAKuC,SAAWA,EACZA,GAAYA,EAASoC,QAAS,CAC9B,MAAMe,EAAuBnD,EAASoC,QAAQvG,IAAI,wBAC5CuH,EAAiBpD,EAASoC,QAAQvG,IAAI,YACxCsH,IACA1F,KAAKqD,8BAAgCqC,GAErCC,IACA3F,KAAKuD,mBAAqBoC,IAQtCvE,aACI,GAAIpB,KAAKqF,cAAsC,IAAtBrF,KAAKqF,aAC1B,OAA2B,IAApBrF,KAAKqF,aAEhB,GAAIrF,KAAKuC,SAAU,CACf,MAAMqD,EAAa5F,KAAKuC,SAASoC,QAAQvG,IAAI,eAC7C,GAAIwH,EACA,OAA8B,IAAvBC,SAASD,GAGxB,OAAO,IAMXxE,uBACI,MAAMP,EAAS,IAAItB,EAAOuG,sBAAsB9F,KAAKgC,QAAShC,KAAKuC,UASnE,OARIvC,KAAK2D,UAA+C,iBAA5B3D,KAAK2D,SAASoC,WACtClF,EAAOqD,WAAalE,KAAK2D,SACzB9C,EAAOoD,WAAasB,KAAKC,MAAMxF,KAAK2D,YAGpC9C,EAAOoD,WAAajE,KAAK2D,SACzB9C,EAAOqD,WAAaqB,KAAKS,UAAUhG,KAAK2D,WAErC9C,EAOXO,aAAaW,GACT,IAAIkE,EACAC,OAAUtE,EACd,MAAMmB,EAAQ,IAAIxD,EAAO6E,UAAU,IACnCrB,EAAMf,QAAUzC,EAAOyF,aAAahF,KAAKgC,SACzCe,EAAMR,SAAWvC,KAAKuC,SACtB,MAAMyB,EAAiBhE,KAAK2D,SAmB5B,OAjBIsC,EADAlE,GAAOA,EAAIoD,sDAC4CpD,EAAIoD,2DAGHnF,KAAKwC,WAE7DwB,IACIA,EAAejB,OAASiB,EAAejB,MAAMoC,UAC7Cc,gDAAuDjC,EAAejB,MAAMoC,aAE5EnB,EAAejB,OAASiB,EAAejB,MAAMsB,OAC7C6B,EAAUlC,EAAejB,MAAMsB,OAGvCtB,EAAMoC,QAAUc,EACZC,IACAnD,EAAMsB,KAAO6B,GACjBnD,EAAMkC,KAAOjB,EACNjB,GAGf1F,EAAQiC,QAAU8F,GAKZ,SAAU9H,EAAQD,EAASH,GAEjC,aAIAc,OAAOC,eAAeZ,EAAS,cAAgBwB,OAAO,IACtDxB,EAAQuC,kBACJuG,UAAU,EACVC,eAAgB,aAChBC,MACIxI,KAAM,YACNyI,UAAW,aACXC,iBACIlC,MACI8B,UAAU,EACVC,eAAgB,OAChBC,MACIxI,KAAM,WAGdsH,SACIgB,UAAU,EACVC,eAAgB,UAChBC,MACIxI,KAAM,WAGd2I,QACIL,UAAU,EACVC,eAAgB,SAChBC,MACIxI,KAAM,WAGd4I,SACIN,UAAU,EACVC,eAAgB,UAChBC,MACIxI,KAAM,WACN6I,SACIP,UAAU,EACVC,eAAgB,wBAChBC,MACIxI,KAAM,YACNyI,UAAW,qBAYjC,SAAUhJ,EAAQD,EAASH,GAEjC,aAIAc,OAAOC,eAAeZ,EAAS,cAAgBwB,OAAO,IACtDxB,EAAQyC,oBACJqG,UAAU,EACVC,eAAgB,eAChBC,MACIxI,KAAM,YACNyI,UAAW,eACXC"} \ No newline at end of file +{"version":3,"sources":["msRestAzureBundle.js"],"names":["msRestAzure","modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","value","Constants","LongRunningOperationStates","InProgress","Succeeded","Failed","Canceled","DEFAULT_LANGUAGE","msRestAzureVersion","default","msRest","azureServiceClient_1","AzureServiceClient","constants_1","cloudError_1","CloudErrorMapper","baseResource_1","BaseResourceMapper","__awaiter","this","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","result","done","then","apply","pollingState_1","LroStates","ServiceClient","[object Object]","credentials","options","super","acceptLanguage","generateClientRequestId","longRunningOperationRetryTimeout","rpRegistrationRetryTimeout","undefined","moduleVersion","addUserAgentInfo","err","request","self","initialResponse","sendRequest","finalResponse","getLongRunningOperationResult","statusCode","response","status","method","resultOfInitialRequest","initialRequestMethod","checkResponseStatusCodeFailed","pollingState","optionsOfInitialRequest","error","resourceUrl","url","some","delay","getTimeout","azureAsyncOperationHeaderLink","updateStateFromAzureAsyncOperationHeader","locationHeaderLink","updateStateFromLocationHeader","Error","updateStateFromGetResourceOperation","resource","getOperationResponse","getRestError","inPostOrDelete","getStatus","parsedResponse","parsedBody","bodyAsText","updateResponse","RestError","code","properties","provisioningState","operationUrl","httpRequest","replace","headers","customHeaders","headerName","operationResponse","responseBody","stripRequest","body","badResponse","message","PollingState","retryTimeout","length","JSON","parse","deserializationError","asyncOperationHeader","locationHeader","retryAfter","parseInt","HttpOperationResponse","valueOf","stringify","errMsg","errCode","required","serializedName","type","className","modelProperties","target","details","element"],"mappings":"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"} \ No newline at end of file From 23ceed2d75aa8864383a342388e003444a9e9a68 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Mon, 2 Apr 2018 09:55:54 -0700 Subject: [PATCH 011/289] Bump to 0.3.0 --- package-lock.json | 3964 +++++++++++++++++---------------------------- package.json | 2 +- 2 files changed, 1446 insertions(+), 2520 deletions(-) diff --git a/package-lock.json b/package-lock.json index 017397170202..a044706f84de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,21 +1,58 @@ { "name": "ms-rest-azure-js", - "version": "0.2.1", + "version": "0.3.0", "lockfileVersion": 1, "requires": true, "dependencies": { + "@types/form-data": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", + "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", + "requires": { + "@types/node": "9.6.1" + } + }, + "@types/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@types/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==", + "requires": { + "@types/node": "9.6.1" + } + }, "@types/mocha": { "version": "2.2.43", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.43.tgz", "integrity": "sha512-xNlAmH+lRJdUMXClMTI9Y0pRqIojdxfm7DHsIxoB2iTzu3fnPmSMEN8SsSx0cdwV36d02PWCWaDUoZPDSln+xw==", "dev": true }, + "@types/node": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.1.tgz", + "integrity": "sha512-xwlHq5DXQFRpe+u6hmmNkzYk/3oxxqDp71a/AJMupOQYmxyaBetqrVMqdNlSQfbg7XTJYD8vARjf3Op06OzdtQ==" + }, + "@types/node-fetch": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-1.6.7.tgz", + "integrity": "sha1-UhB46PDGmhWOUCIAWsqS0mIPbVc=", + "requires": { + "@types/node": "9.6.1" + } + }, "@types/should": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/@types/should/-/should-8.3.0.tgz", "integrity": "sha1-4rRgJDaF2+N3GC857zjTf00Veto=", "dev": true }, + "@types/uuid": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.3.tgz", + "integrity": "sha512-5fRLCYhLtDb3hMWqQyH10qtF+Ud2JnNCXTCZ+9ktNdCcgslcuXkDTkFcJNk++MT29yDntDnlF1+jD+uVGumsbw==", + "requires": { + "@types/node": "9.6.1" + } + }, "acorn": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", @@ -149,6 +186,11 @@ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -401,6 +443,7 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", + "fsevents": "1.1.3", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -463,6 +506,14 @@ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", "dev": true }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "1.0.0" + } + }, "commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", @@ -594,6 +645,11 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", @@ -648,6 +704,14 @@ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "0.4.19" + } + }, "enhanced-resolve": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", @@ -688,6 +752,11 @@ "es6-symbol": "3.1.1" } }, + "es6-denodeify": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-denodeify/-/es6-denodeify-0.1.5.tgz", + "integrity": "sha1-MdTV/pxVA+ElRgQ5MQ4WoqPznB8=" + }, "es6-iterator": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", @@ -862,6 +931,33 @@ "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", "dev": true }, + "fetch-cookie": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.7.0.tgz", + "integrity": "sha512-Mm5pGlT3agW6t71xVM7vMZPIvI7T4FaTuFW4jari6dVzYHFDb3WZZsGpN22r/o3XMdkM0E7sPd1EGeyVbH2Tgg==", + "requires": { + "es6-denodeify": "0.1.5", + "tough-cookie": "2.3.4" + } + }, + "fetch-ponyfill": { + "version": "github:amarzavery/fetch-ponyfill#136e6f8192bdb2aa0b7983f0b3b4361c357be9db", + "requires": { + "fetch-cookie": "0.6.0", + "node-fetch": "1.7.3" + }, + "dependencies": { + "fetch-cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.6.0.tgz", + "integrity": "sha1-T+xOQIzAAH9sBOVTYYr0s97jf2k=", + "requires": { + "es6-denodeify": "0.1.5", + "tough-cookie": "2.3.4" + } + } + } + }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -905,2819 +1001,1618 @@ "for-in": "1.0.2" } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "2.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", - "dev": true - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "ansi-regex": "2.1.1" + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" } }, - "has-flag": { + "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "hash-base": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", - "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "hash.js": { + "fsevents": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "1.1.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", - "dev": true - }, - "https-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", - "dev": true - }, - "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "interpret": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", - "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "1.10.0" - } - }, - "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", "dev": true, + "optional": true, "requires": { - "is-primitive": "2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "1.0.0" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" - } - }, - "loader-runner": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", - "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", - "dev": true - }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true, - "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "dev": true, - "requires": { - "lodash._baseassign": "3.2.0", - "lodash._basecreate": "3.0.3", - "lodash._isiterateecall": "3.0.9" - } - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" - } - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", - "dev": true, - "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" - }, - "dependencies": { - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - } - } - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "1.1.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "0.1.4", - "readable-stream": "2.3.3" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } - }, - "miller-rabin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", - "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" - } - }, - "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", - "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", - "dev": true, - "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.6.8", - "diff": "3.2.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.1", - "growl": "1.9.2", - "he": "1.1.1", - "json3": "3.3.2", - "lodash.create": "3.1.1", - "mkdirp": "0.5.1", - "supports-color": "3.1.2" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "ms-rest-js": { - "version": "file:../ms-rest-js", - "requires": { - "@types/form-data": "2.2.0", - "@types/is-stream": "1.1.0", - "@types/node": "8.0.28", - "@types/node-fetch": "1.6.7", - "@types/uuid": "3.4.2", - "detect-node": "2.0.3", - "fetch-cookie": "0.6.0", - "fetch-ponyfill": "4.1.0", - "form-data": "2.3.1", - "is-buffer": "1.1.5", - "is-stream": "1.1.0", - "moment": "2.18.1", - "url-parse": "1.1.9", - "uuid": "3.1.0" - }, - "dependencies": { - "@types/form-data": { - "version": "2.2.0", - "bundled": true, - "requires": { - "@types/node": "8.0.28" - } - }, - "@types/is-stream": { - "version": "1.1.0", - "bundled": true, - "requires": { - "@types/node": "8.0.28" - } - }, - "@types/mocha": { - "version": "2.2.43", - "bundled": true - }, - "@types/node": { - "version": "8.0.28", - "bundled": true - }, - "@types/node-fetch": { - "version": "1.6.7", - "bundled": true, - "requires": { - "@types/node": "8.0.28" - } - }, - "@types/should": { - "version": "8.3.0", - "bundled": true - }, - "@types/uuid": { - "version": "3.4.2", - "bundled": true, - "requires": { - "@types/node": "8.0.28" - } - }, - "acorn": { - "version": "5.1.2", - "bundled": true - }, - "acorn-dynamic-import": { - "version": "2.0.2", - "bundled": true, - "requires": { - "acorn": "4.0.13" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "bundled": true - } - } - }, - "ajv": { - "version": "5.2.2", - "bundled": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" - } - }, - "ajv-keywords": { - "version": "2.1.0", - "bundled": true - }, - "align-text": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "ansi-styles": { - "version": "3.2.0", - "bundled": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "anymatch": { - "version": "1.3.2", - "bundled": true, - "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" - } - }, - "arr-diff": { - "version": "2.0.0", - "bundled": true, - "requires": { - "arr-flatten": "1.1.0" - } - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true - }, - "array-unique": { - "version": "0.2.1", - "bundled": true - }, - "asn1.js": { - "version": "4.9.1", - "bundled": true, - "requires": { - "bn.js": "4.11.8", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "bundled": true, - "requires": { - "util": "0.10.3" - } - }, - "async": { - "version": "2.5.0", - "bundled": true, - "requires": { - "lodash": "4.17.4" - } - }, - "async-each": { - "version": "1.0.1", - "bundled": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true - }, - "babel-code-frame": { - "version": "6.26.0", - "bundled": true, - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "bundled": true - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "base64-js": { - "version": "1.2.1", - "bundled": true - }, - "big.js": { - "version": "3.2.0", - "bundled": true - }, - "binary-extensions": { - "version": "1.10.0", - "bundled": true - }, - "bn.js": { - "version": "4.11.8", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.8", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "bundled": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "brorand": { - "version": "1.1.0", - "bundled": true - }, - "browser-stdout": { - "version": "1.3.0", - "bundled": true - }, - "browserify-aes": { - "version": "1.0.8", - "bundled": true, - "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "browserify-cipher": { - "version": "1.0.0", - "bundled": true, - "requires": { - "browserify-aes": "1.0.8", - "browserify-des": "1.0.0", - "evp_bytestokey": "1.0.3" - } - }, - "browserify-des": { - "version": "1.0.0", - "bundled": true, - "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.0", - "inherits": "2.0.3" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "bundled": true, - "requires": { - "bn.js": "4.11.8", - "randombytes": "2.0.5" - } - }, - "browserify-sign": { - "version": "4.0.4", - "bundled": true, - "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "elliptic": "6.4.0", - "inherits": "2.0.3", - "parse-asn1": "5.1.0" - } - }, - "browserify-zlib": { - "version": "0.1.4", - "bundled": true, - "requires": { - "pako": "0.2.9" - } - }, - "buffer": { - "version": "4.9.1", - "bundled": true, - "requires": { - "base64-js": "1.2.1", - "ieee754": "1.1.8", - "isarray": "1.0.0" - } - }, - "buffer-xor": { - "version": "1.0.3", - "bundled": true - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "bundled": true - }, - "camelcase": { - "version": "1.2.1", - "bundled": true - }, - "center-align": { - "version": "0.1.3", - "bundled": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "chalk": { - "version": "2.1.0", - "bundled": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" - }, - "dependencies": { - "has-flag": { - "version": "2.0.0", - "bundled": true - }, - "supports-color": { - "version": "4.4.0", - "bundled": true, - "requires": { - "has-flag": "2.0.0" - } - } - } - }, - "chokidar": { - "version": "1.7.0", - "bundled": true, - "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - } - }, - "cipher-base": { - "version": "1.0.4", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "cliui": { - "version": "2.1.0", - "bundled": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - } - }, - "co": { - "version": "4.6.0", - "bundled": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "color-convert": { - "version": "1.9.0", - "bundled": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "bundled": true - }, - "colors": { - "version": "1.1.2", - "bundled": true - }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "commander": { - "version": "2.9.0", - "bundled": true, - "requires": { - "graceful-readlink": "1.0.1" - } - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-browserify": { - "version": "1.1.0", - "bundled": true, - "requires": { - "date-now": "0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "create-ecdh": { - "version": "4.0.0", - "bundled": true, - "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.0" - } - }, - "create-hash": { - "version": "1.1.3", - "bundled": true, - "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "sha.js": "2.4.8" - } - }, - "create-hmac": { - "version": "1.1.6", - "bundled": true, - "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.8" - } - }, - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" - } - }, - "crypto-browserify": { - "version": "3.11.1", - "bundled": true, - "requires": { - "browserify-cipher": "1.0.0", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.0", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "diffie-hellman": "5.0.2", - "inherits": "2.0.3", - "pbkdf2": "3.0.14", - "public-encrypt": "4.0.0", - "randombytes": "2.0.5" - } - }, - "d": { - "version": "1.0.0", - "bundled": true, - "requires": { - "es5-ext": "0.10.30" - } - }, - "date-now": { - "version": "0.1.4", - "bundled": true - }, - "debug": { - "version": "2.6.8", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "bundled": true - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true - }, - "des.js": { - "version": "1.0.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, - "detect-node": { - "version": "2.0.3", - "bundled": true - }, - "diff": { - "version": "3.2.0", - "bundled": true - }, - "diffie-hellman": { - "version": "5.0.2", - "bundled": true, - "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.0", - "randombytes": "2.0.5" - } - }, - "domain-browser": { - "version": "1.1.7", - "bundled": true - }, - "elliptic": { - "version": "6.4.0", - "bundled": true, - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.3", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "emojis-list": { - "version": "2.1.0", - "bundled": true - }, - "encoding": { - "version": "0.1.12", - "bundled": true, - "requires": { - "iconv-lite": "0.4.19" - } - }, - "enhanced-resolve": { - "version": "3.4.1", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "object-assign": "4.1.1", - "tapable": "0.2.8" - } - }, - "errno": { - "version": "0.1.4", - "bundled": true, - "requires": { - "prr": "0.0.0" - } - }, - "error-ex": { - "version": "1.3.1", - "bundled": true, - "requires": { - "is-arrayish": "0.2.1" - } - }, - "es5-ext": { - "version": "0.10.30", - "bundled": true, - "requires": { - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1" - } - }, - "es6-denodeify": { - "version": "0.1.5", - "bundled": true - }, - "es6-iterator": { - "version": "2.0.1", - "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-symbol": "3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-set": { - "version": "0.1.5", - "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-symbol": { - "version": "3.1.1", - "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30" - } - }, - "es6-weak-map": { - "version": "2.0.2", - "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true - }, - "escope": { - "version": "3.6.0", - "bundled": true, - "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.2.0", - "estraverse": "4.2.0" - } - }, - "esrecurse": { - "version": "4.2.0", - "bundled": true, - "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" - } - }, - "estraverse": { - "version": "4.2.0", - "bundled": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true - }, - "event-emitter": { - "version": "0.3.5", - "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30" - } - }, - "events": { - "version": "1.1.1", - "bundled": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "bundled": true, - "requires": { - "md5.js": "1.3.4", - "safe-buffer": "5.1.1" - } - }, - "execa": { - "version": "0.7.0", - "bundled": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - } - }, - "expand-brackets": { - "version": "0.1.5", - "bundled": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.2", - "bundled": true, - "requires": { - "fill-range": "2.2.3" - } - }, - "extglob": { - "version": "0.3.2", - "bundled": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "fast-deep-equal": { - "version": "1.0.0", - "bundled": true - }, - "fetch-cookie": { - "version": "0.6.0", - "bundled": true, - "requires": { - "es6-denodeify": "0.1.5", - "tough-cookie": "2.3.2" - } - }, - "fetch-ponyfill": { - "version": "4.1.0", - "bundled": true, - "requires": { - "fetch-cookie": "0.6.0", - "node-fetch": "1.7.3" - } - }, - "filename-regex": { - "version": "2.0.1", - "bundled": true - }, - "fill-range": { - "version": "2.2.3", - "bundled": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "for-in": { - "version": "1.0.2", - "bundled": true - }, - "for-own": { - "version": "0.1.5", - "bundled": true, - "requires": { - "for-in": "1.0.2" - } - }, - "form-data": { - "version": "2.3.1", - "bundled": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "glob": { - "version": "7.1.1", - "bundled": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-base": { - "version": "0.3.0", - "bundled": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-glob": "2.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "graceful-readlink": { - "version": "1.0.1", - "bundled": true - }, - "growl": { - "version": "1.9.2", - "bundled": true - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-flag": { - "version": "1.0.0", - "bundled": true - }, - "hash-base": { - "version": "2.0.2", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - }, - "hash.js": { - "version": "1.1.3", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, - "he": { - "version": "1.1.1", - "bundled": true - }, - "hmac-drbg": { - "version": "1.0.1", - "bundled": true, - "requires": { - "hash.js": "1.1.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "hosted-git-info": { - "version": "2.5.0", - "bundled": true - }, - "https-browserify": { - "version": "0.0.1", - "bundled": true - }, - "iconv-lite": { - "version": "0.4.19", - "bundled": true - }, - "ieee754": { - "version": "1.1.8", - "bundled": true - }, - "indexof": { - "version": "0.0.1", - "bundled": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "interpret": { - "version": "1.0.4", - "bundled": true - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true - }, - "is-binary-path": { - "version": "1.0.1", - "bundled": true, - "requires": { - "binary-extensions": "1.10.0" - } - }, - "is-buffer": { - "version": "1.1.5", - "bundled": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-dotfile": { - "version": "1.0.3", - "bundled": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "bundled": true, - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-number": { - "version": "2.1.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "bundled": true - }, - "is-primitive": { - "version": "2.0.0", - "bundled": true - }, - "is-stream": { + "nan": "2.10.0", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { "version": "1.1.0", - "bundled": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true - }, - "isobject": { - "version": "2.1.0", - "bundled": true, - "requires": { - "isarray": "1.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "bundled": true - }, - "json-loader": { - "version": "0.5.7", - "bundled": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "bundled": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json3": { - "version": "3.3.2", - "bundled": true - }, - "json5": { - "version": "0.5.1", - "bundled": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true - }, - "kind-of": { - "version": "3.2.2", "bundled": true, - "requires": { - "is-buffer": "1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "requires": { - "invert-kv": "1.0.0" - } + "dev": true, + "optional": true }, - "load-json-file": { - "version": "2.0.0", + "ajv": { + "version": "4.11.8", "bundled": true, + "dev": true, + "optional": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "co": "4.6.0", + "json-stable-stringify": "1.0.1" } }, - "loader-runner": { - "version": "2.3.0", - "bundled": true - }, - "loader-utils": { - "version": "1.1.0", + "ansi-regex": { + "version": "2.1.1", "bundled": true, - "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } + "dev": true }, - "locate-path": { - "version": "2.0.0", + "aproba": { + "version": "1.1.1", "bundled": true, - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - } - }, - "lodash": { - "version": "4.17.4", - "bundled": true + "dev": true, + "optional": true }, - "lodash._baseassign": { - "version": "3.2.0", + "are-we-there-yet": { + "version": "1.1.4", "bundled": true, + "dev": true, + "optional": true, "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" + "delegates": "1.0.0", + "readable-stream": "2.2.9" } }, - "lodash._basecopy": { - "version": "3.0.1", - "bundled": true - }, - "lodash._basecreate": { - "version": "3.0.3", - "bundled": true - }, - "lodash._getnative": { - "version": "3.9.1", - "bundled": true + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true }, - "lodash._isiterateecall": { - "version": "3.0.9", - "bundled": true + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true }, - "lodash.create": { - "version": "3.1.1", + "asynckit": { + "version": "0.4.0", "bundled": true, - "requires": { - "lodash._baseassign": "3.2.0", - "lodash._basecreate": "3.0.3", - "lodash._isiterateecall": "3.0.9" - } + "dev": true, + "optional": true }, - "lodash.isarguments": { - "version": "3.1.0", - "bundled": true + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true }, - "lodash.isarray": { - "version": "3.0.4", - "bundled": true + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true }, - "lodash.keys": { - "version": "3.1.2", + "balanced-match": { + "version": "0.4.2", "bundled": true, - "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" - } + "dev": true }, - "longest": { + "bcrypt-pbkdf": { "version": "1.0.1", - "bundled": true - }, - "lru-cache": { - "version": "4.1.1", "bundled": true, + "dev": true, + "optional": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "tweetnacl": "0.14.5" } }, - "md5.js": { - "version": "1.3.4", + "block-stream": { + "version": "0.0.9", "bundled": true, + "dev": true, "requires": { - "hash-base": "3.0.4", "inherits": "2.0.3" - }, - "dependencies": { - "hash-base": { - "version": "3.0.4", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - } } }, - "mem": { - "version": "1.1.0", + "boom": { + "version": "2.10.1", "bundled": true, + "dev": true, "requires": { - "mimic-fn": "1.1.0" + "hoek": "2.16.3" } }, - "memory-fs": { - "version": "0.4.1", + "brace-expansion": { + "version": "1.1.7", "bundled": true, + "dev": true, "requires": { - "errno": "0.1.4", - "readable-stream": "2.3.3" + "balanced-match": "0.4.2", + "concat-map": "0.0.1" } }, - "micromatch": { - "version": "2.3.11", + "buffer-shims": { + "version": "1.0.0", "bundled": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } + "dev": true }, - "miller-rabin": { - "version": "4.0.0", + "caseless": { + "version": "0.12.0", "bundled": true, - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" - } - }, - "mime-db": { - "version": "1.30.0", - "bundled": true + "dev": true, + "optional": true }, - "mime-types": { - "version": "2.1.17", + "co": { + "version": "4.6.0", "bundled": true, - "requires": { - "mime-db": "1.30.0" - } + "dev": true, + "optional": true }, - "mimic-fn": { + "code-point-at": { "version": "1.1.0", - "bundled": true - }, - "minimalistic-assert": { - "version": "1.0.0", - "bundled": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", "bundled": true, - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true + "dev": true }, - "mkdirp": { - "version": "0.5.1", + "combined-stream": { + "version": "1.0.5", "bundled": true, + "dev": true, "requires": { - "minimist": "0.0.8" + "delayed-stream": "1.0.0" } }, - "mocha": { - "version": "3.5.3", + "concat-map": { + "version": "0.0.1", "bundled": true, - "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.6.8", - "diff": "3.2.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.1", - "growl": "1.9.2", - "he": "1.1.1", - "json3": "3.3.2", - "lodash.create": "3.1.1", - "mkdirp": "0.5.1", - "supports-color": "3.1.2" - } + "dev": true }, - "moment": { - "version": "2.18.1", - "bundled": true + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true }, - "ms": { - "version": "2.0.0", - "bundled": true + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true }, - "node-fetch": { - "version": "1.7.3", + "cryptiles": { + "version": "2.0.5", "bundled": true, + "dev": true, "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" + "boom": "2.10.1" } }, - "node-libs-browser": { - "version": "2.0.0", + "dashdash": { + "version": "1.14.1", "bundled": true, + "dev": true, + "optional": true, "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.1.4", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.11.1", - "domain-browser": "1.1.7", - "events": "1.1.1", - "https-browserify": "0.0.1", - "os-browserify": "0.2.1", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.3", - "stream-browserify": "2.0.1", - "stream-http": "2.7.2", - "string_decoder": "0.10.31", - "timers-browserify": "2.0.4", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4" + "assert-plus": "1.0.0" }, "dependencies": { - "string_decoder": { - "version": "0.10.31", - "bundled": true + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true } } }, - "normalize-package-data": { - "version": "2.4.0", + "debug": { + "version": "2.6.8", "bundled": true, + "dev": true, + "optional": true, "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" + "ms": "2.0.0" } }, - "normalize-path": { - "version": "2.1.1", + "deep-extend": { + "version": "0.4.2", "bundled": true, - "requires": { - "remove-trailing-separator": "1.1.0" - } + "dev": true, + "optional": true }, - "npm-run-path": { - "version": "2.0.2", + "delayed-stream": { + "version": "1.0.0", "bundled": true, - "requires": { - "path-key": "2.0.1" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true + "dev": true }, - "object-assign": { - "version": "4.1.1", - "bundled": true + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true }, - "object.omit": { - "version": "2.0.1", + "detect-libc": { + "version": "1.0.2", "bundled": true, - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } + "dev": true, + "optional": true }, - "once": { - "version": "1.4.0", + "ecc-jsbn": { + "version": "0.1.1", "bundled": true, + "dev": true, + "optional": true, "requires": { - "wrappy": "1.0.2" + "jsbn": "0.1.1" } }, - "os-browserify": { - "version": "0.2.1", - "bundled": true - }, - "os-locale": { - "version": "2.1.0", + "extend": { + "version": "3.0.1", "bundled": true, - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - } + "dev": true, + "optional": true }, - "p-finally": { - "version": "1.0.0", - "bundled": true + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true }, - "p-limit": { - "version": "1.1.0", - "bundled": true + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true }, - "p-locate": { - "version": "2.0.0", + "form-data": { + "version": "2.1.4", "bundled": true, + "dev": true, + "optional": true, "requires": { - "p-limit": "1.1.0" + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" } }, - "pako": { - "version": "0.2.9", - "bundled": true + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true }, - "parse-asn1": { - "version": "5.1.0", + "fstream": { + "version": "1.0.11", "bundled": true, + "dev": true, "requires": { - "asn1.js": "4.9.1", - "browserify-aes": "1.0.8", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.14" + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" } }, - "parse-glob": { - "version": "3.0.4", + "fstream-ignore": { + "version": "1.0.5", "bundled": true, + "dev": true, + "optional": true, "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" } }, - "parse-json": { - "version": "2.2.0", + "gauge": { + "version": "2.7.4", "bundled": true, + "dev": true, + "optional": true, "requires": { - "error-ex": "1.3.1" + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" } }, - "path-browserify": { - "version": "0.0.0", - "bundled": true - }, - "path-exists": { - "version": "3.0.0", - "bundled": true - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true - }, - "path-type": { - "version": "2.0.0", + "getpass": { + "version": "0.1.7", "bundled": true, + "dev": true, + "optional": true, "requires": { - "pify": "2.3.0" + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } } }, - "pbkdf2": { - "version": "3.0.14", + "glob": { + "version": "7.1.2", "bundled": true, + "dev": true, "requires": { - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.8" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, - "pify": { - "version": "2.3.0", - "bundled": true - }, - "preserve": { - "version": "0.2.0", - "bundled": true - }, - "process": { - "version": "0.11.10", - "bundled": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true - }, - "prr": { - "version": "0.0.0", - "bundled": true + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true }, - "pseudomap": { - "version": "1.0.2", - "bundled": true + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true }, - "public-encrypt": { - "version": "4.0.0", + "har-validator": { + "version": "4.2.1", "bundled": true, + "dev": true, + "optional": true, "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "parse-asn1": "5.1.0", - "randombytes": "2.0.5" + "ajv": "4.11.8", + "har-schema": "1.0.5" } }, - "punycode": { - "version": "1.4.1", - "bundled": true - }, - "querystring": { - "version": "0.2.0", - "bundled": true - }, - "querystring-es3": { - "version": "0.2.1", - "bundled": true - }, - "querystringify": { - "version": "1.0.0", - "bundled": true + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true }, - "randomatic": { - "version": "1.1.7", + "hawk": { + "version": "3.1.3", "bundled": true, + "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-buffer": "1.1.5" - } - } + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" } }, - "randombytes": { - "version": "2.0.5", + "hoek": { + "version": "2.16.3", "bundled": true, - "requires": { - "safe-buffer": "5.1.1" - } + "dev": true }, - "read-pkg": { - "version": "2.0.0", + "http-signature": { + "version": "1.1.1", "bundled": true, + "dev": true, + "optional": true, "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" } }, - "read-pkg-up": { - "version": "2.0.0", + "inflight": { + "version": "1.0.6", "bundled": true, + "dev": true, "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" + "once": "1.4.0", + "wrappy": "1.0.2" } }, - "readable-stream": { - "version": "2.3.3", + "inherits": { + "version": "2.0.3", "bundled": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } + "dev": true }, - "readdirp": { - "version": "2.1.0", + "ini": { + "version": "1.3.4", "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.3", - "set-immediate-shim": "1.0.1" - } + "dev": true, + "optional": true }, - "regex-cache": { - "version": "0.4.4", + "is-fullwidth-code-point": { + "version": "1.0.0", "bundled": true, + "dev": true, "requires": { - "is-equal-shallow": "0.1.3" + "number-is-nan": "1.0.1" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "bundled": true - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true - }, - "require-directory": { - "version": "2.1.1", - "bundled": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true - }, - "requires-port": { + "is-typedarray": { "version": "1.0.0", - "bundled": true + "bundled": true, + "dev": true, + "optional": true }, - "resolve": { - "version": "1.4.0", + "isarray": { + "version": "1.0.0", "bundled": true, - "requires": { - "path-parse": "1.0.5" - } + "dev": true }, - "right-align": { - "version": "0.1.3", + "isstream": { + "version": "0.1.2", "bundled": true, - "requires": { - "align-text": "0.1.4" - } + "dev": true, + "optional": true }, - "ripemd160": { - "version": "2.0.1", + "jodid25519": { + "version": "1.0.2", "bundled": true, + "dev": true, + "optional": true, "requires": { - "hash-base": "2.0.2", - "inherits": "2.0.3" + "jsbn": "0.1.1" } }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true - }, - "semver": { - "version": "5.4.1", - "bundled": true + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true }, - "set-blocking": { - "version": "2.0.0", - "bundled": true + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true }, - "set-immediate-shim": { + "json-stable-stringify": { "version": "1.0.1", - "bundled": true - }, - "setimmediate": { - "version": "1.0.5", - "bundled": true - }, - "sha.js": { - "version": "2.4.8", "bundled": true, + "dev": true, + "optional": true, "requires": { - "inherits": "2.0.3" + "jsonify": "0.0.0" } }, - "shebang-command": { - "version": "1.2.0", + "json-stringify-safe": { + "version": "5.0.1", "bundled": true, - "requires": { - "shebang-regex": "1.0.0" - } + "dev": true, + "optional": true }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true }, - "should": { - "version": "5.2.0", + "jsprim": { + "version": "1.4.0", "bundled": true, + "dev": true, + "optional": true, "requires": { - "should-equal": "0.3.1", - "should-format": "0.0.7", - "should-type": "0.0.4" + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } } }, - "should-equal": { - "version": "0.3.1", + "mime-db": { + "version": "1.27.0", "bundled": true, - "requires": { - "should-type": "0.0.4" - } + "dev": true }, - "should-format": { - "version": "0.0.7", + "mime-types": { + "version": "2.1.15", "bundled": true, + "dev": true, "requires": { - "should-type": "0.0.4" + "mime-db": "1.27.0" } }, - "should-type": { - "version": "0.0.4", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "source-list-map": { - "version": "2.0.0", - "bundled": true - }, - "source-map": { - "version": "0.5.7", - "bundled": true - }, - "spdx-correct": { - "version": "1.0.2", + "minimatch": { + "version": "3.0.4", "bundled": true, + "dev": true, "requires": { - "spdx-license-ids": "1.2.2" + "brace-expansion": "1.1.7" } }, - "spdx-expression-parse": { - "version": "1.0.4", - "bundled": true - }, - "spdx-license-ids": { - "version": "1.2.2", - "bundled": true + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true }, - "stream-browserify": { - "version": "2.0.1", + "mkdirp": { + "version": "0.5.1", "bundled": true, + "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" + "minimist": "0.0.8" } }, - "stream-http": { - "version": "2.7.2", + "ms": { + "version": "2.0.0", "bundled": true, - "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" - } + "dev": true, + "optional": true }, - "string-width": { - "version": "2.1.1", + "node-pre-gyp": { + "version": "0.6.39", "bundled": true, + "dev": true, + "optional": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "3.0.0" - } - } + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" } }, - "string_decoder": { - "version": "1.0.3", + "nopt": { + "version": "4.0.1", "bundled": true, + "dev": true, + "optional": true, "requires": { - "safe-buffer": "5.1.1" + "abbrev": "1.1.0", + "osenv": "0.1.4" } }, - "strip-ansi": { - "version": "3.0.1", + "npmlog": { + "version": "4.1.0", "bundled": true, + "dev": true, + "optional": true, "requires": { - "ansi-regex": "2.1.1" + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" } }, - "strip-bom": { - "version": "3.0.0", - "bundled": true + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true }, - "strip-eof": { - "version": "1.0.0", - "bundled": true + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true }, - "supports-color": { - "version": "3.1.2", + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", "bundled": true, + "dev": true, "requires": { - "has-flag": "1.0.0" + "wrappy": "1.0.2" } }, - "tapable": { - "version": "0.2.8", - "bundled": true + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true }, - "timers-browserify": { - "version": "2.0.4", + "osenv": { + "version": "0.1.4", "bundled": true, + "dev": true, + "optional": true, "requires": { - "setimmediate": "1.0.5" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, - "to-arraybuffer": { + "path-is-absolute": { "version": "1.0.1", - "bundled": true + "bundled": true, + "dev": true }, - "tough-cookie": { - "version": "2.3.2", + "performance-now": { + "version": "0.2.0", "bundled": true, - "requires": { - "punycode": "1.4.1" - } + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true }, - "ts-loader": { - "version": "2.3.7", + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", "bundled": true, + "dev": true, + "optional": true, "requires": { - "chalk": "2.1.0", - "enhanced-resolve": "3.4.1", - "loader-utils": "1.1.0", - "semver": "5.4.1" + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } } }, - "tslib": { - "version": "1.7.1", - "bundled": true - }, - "tslint": { - "version": "5.7.0", + "readable-stream": { + "version": "2.2.9", "bundled": true, + "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "colors": "1.1.2", - "commander": "2.9.0", - "diff": "3.2.0", - "glob": "7.1.1", - "minimatch": "3.0.4", - "resolve": "1.4.0", - "semver": "5.4.1", - "tslib": "1.7.1", - "tsutils": "2.8.2" + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" } }, - "tsutils": { - "version": "2.8.2", + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", "bundled": true, + "dev": true, "requires": { - "tslib": "1.7.1" + "glob": "7.1.2" } }, - "tty-browserify": { - "version": "0.0.0", - "bundled": true + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true }, - "typescript": { - "version": "2.5.2", - "bundled": true + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true }, - "uglify-es": { - "version": "3.1.0", + "set-blocking": { + "version": "2.0.0", "bundled": true, - "requires": { - "commander": "2.11.0", - "source-map": "0.5.7" - }, - "dependencies": { - "commander": { - "version": "2.11.0", - "bundled": true - } - } + "dev": true, + "optional": true }, - "uglify-to-browserify": { - "version": "1.0.2", + "signal-exit": { + "version": "3.0.2", "bundled": true, + "dev": true, "optional": true }, - "uglifyjs-webpack-plugin": { - "version": "0.4.6", + "sntp": { + "version": "1.0.9", "bundled": true, + "dev": true, "requires": { - "source-map": "0.5.7", - "uglify-js": "2.8.29", - "webpack-sources": "1.0.1" - }, - "dependencies": { - "uglify-js": { - "version": "2.8.29", - "bundled": true, - "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - } - }, - "yargs": { - "version": "3.10.0", - "bundled": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - } + "hoek": "2.16.3" } }, - "url": { - "version": "0.11.0", + "sshpk": { + "version": "1.13.0", "bundled": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" }, "dependencies": { - "punycode": { - "version": "1.3.2", - "bundled": true + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true } } }, - "url-parse": { - "version": "1.1.9", + "string-width": { + "version": "1.0.2", "bundled": true, + "dev": true, "requires": { - "querystringify": "1.0.0", - "requires-port": "1.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, - "util": { - "version": "0.10.3", + "string_decoder": { + "version": "1.0.1", "bundled": true, + "dev": true, "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "bundled": true - } + "safe-buffer": "5.0.1" } }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "uuid": { - "version": "3.1.0", - "bundled": true + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true }, - "validate-npm-package-license": { + "strip-ansi": { "version": "3.0.1", "bundled": true, + "dev": true, "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "ansi-regex": "2.1.1" } }, - "vm-browserify": { - "version": "0.0.4", + "strip-json-comments": { + "version": "2.0.1", "bundled": true, - "requires": { - "indexof": "0.0.1" - } + "dev": true, + "optional": true }, - "watchpack": { - "version": "1.4.0", + "tar": { + "version": "2.2.1", "bundled": true, + "dev": true, "requires": { - "async": "2.5.0", - "chokidar": "1.7.0", - "graceful-fs": "4.1.11" + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" } }, - "webpack": { - "version": "3.6.0", + "tar-pack": { + "version": "3.4.0", "bundled": true, + "dev": true, + "optional": true, "requires": { - "acorn": "5.1.2", - "acorn-dynamic-import": "2.0.2", - "ajv": "5.2.2", - "ajv-keywords": "2.1.0", - "async": "2.5.0", - "enhanced-resolve": "3.4.1", - "escope": "3.6.0", - "interpret": "1.0.4", - "json-loader": "0.5.7", - "json5": "0.5.1", - "loader-runner": "2.3.0", - "loader-utils": "1.1.0", - "memory-fs": "0.4.1", - "mkdirp": "0.5.1", - "node-libs-browser": "2.0.0", - "source-map": "0.5.7", - "supports-color": "4.4.0", - "tapable": "0.2.8", - "uglifyjs-webpack-plugin": "0.4.6", - "watchpack": "1.4.0", - "webpack-sources": "1.0.1", - "yargs": "8.0.2" - }, - "dependencies": { - "has-flag": { - "version": "2.0.0", - "bundled": true - }, - "supports-color": { - "version": "4.4.0", - "bundled": true, - "requires": { - "has-flag": "2.0.0" - } - } + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" } }, - "webpack-sources": { - "version": "1.0.1", + "tough-cookie": { + "version": "2.3.2", "bundled": true, + "dev": true, + "optional": true, "requires": { - "source-list-map": "2.0.0", - "source-map": "0.5.7" + "punycode": "1.4.1" } }, - "which": { - "version": "1.3.0", + "tunnel-agent": { + "version": "0.6.0", "bundled": true, + "dev": true, + "optional": true, "requires": { - "isexe": "2.0.0" + "safe-buffer": "5.0.1" } }, - "which-module": { - "version": "2.0.0", - "bundled": true - }, - "window-size": { - "version": "0.1.0", - "bundled": true - }, - "wordwrap": { - "version": "0.0.2", - "bundled": true + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true }, - "wrap-ansi": { - "version": "2.1.0", + "uid-number": { + "version": "0.0.6", "bundled": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } + "dev": true, + "optional": true }, - "wrappy": { + "util-deprecate": { "version": "1.0.2", - "bundled": true - }, - "xtend": { - "version": "4.0.1", - "bundled": true + "bundled": true, + "dev": true }, - "y18n": { - "version": "3.2.1", - "bundled": true + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true }, - "yallist": { - "version": "2.1.2", - "bundled": true + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } }, - "yargs": { - "version": "8.0.2", + "wide-align": { + "version": "1.1.2", "bundled": true, + "dev": true, + "optional": true, "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "7.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true - }, - "cliui": { - "version": "3.2.0", - "bundled": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - } + "string-width": "1.0.2" } }, - "yargs-parser": { - "version": "7.0.0", + "wrappy": { + "version": "1.0.2", "bundled": true, + "dev": true + } + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "https-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "interpret": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", + "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.10.0" + } + }, + "is-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.1.3", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._basecreate": "3.0.3", + "lodash._isiterateecall": "3.0.9" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, "requires": { - "camelcase": "4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true - } + "inherits": "2.0.3", + "safe-buffer": "5.1.1" } } } }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.4", + "readable-stream": "2.3.3" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "miller-rabin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", + "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "1.33.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", + "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "he": "1.1.1", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + } + }, + "moment": { + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.0.tgz", + "integrity": "sha512-1muXCh8jb1N/gHRbn9VDUBr0GYb8A/aVcHlII9QSB68a50spqEVLIGN6KVmCOnSvJrUhC0edGgKU5ofnGXdYdg==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "ms-rest-js": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.2.7.tgz", + "integrity": "sha512-RU2c9bOlh4+/laJxKqyO/ROk1N4SeRmY2UdL85UXFGqyFEZbZMM3tw7RY5xLH3/coaW9X07jqwuJ78JHVuZnzg==", + "requires": { + "@types/form-data": "2.2.1", + "@types/is-stream": "1.1.0", + "@types/node": "9.6.1", + "@types/node-fetch": "1.6.7", + "@types/uuid": "3.4.3", + "fetch-cookie": "0.7.0", + "fetch-ponyfill": "github:amarzavery/fetch-ponyfill#136e6f8192bdb2aa0b7983f0b3b4361c357be9db", + "form-data": "2.3.2", + "is-buffer": "2.0.2", + "is-stream": "1.1.0", + "moment": "2.22.0", + "url-parse": "1.2.0", + "uuid": "3.2.1" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.2.tgz", + "integrity": "sha512-imvkm8cOGKeZ/NwkAd+FAURi0hsL9gr3kvdi0r3MnqChcOdPaQRIOQiOU+sD40XzUIe6nFmSHYtQjbkDvaQbEg==" + } + } + }, + "nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "dev": true, + "optional": true + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } + }, "node-libs-browser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", @@ -4000,8 +2895,7 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, "querystring": { "version": "0.2.0", @@ -4015,6 +2909,11 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, + "querystringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=" + }, "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", @@ -4152,6 +3051,11 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, "resolve": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", @@ -4424,6 +3328,14 @@ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", "dev": true }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "requires": { + "punycode": "1.4.1" + } + }, "ts-loader": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-2.3.7.tgz", @@ -4560,6 +3472,15 @@ } } }, + "url-parse": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", + "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + } + }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", @@ -4583,6 +3504,11 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + }, "validate-npm-package-license": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", diff --git a/package.json b/package.json index 618bf5ec360e..a036b9d31bcc 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.2.1", + "version": "0.3.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", From ef255be23a605bb6a391b541e7cc429706e60b5d Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Mon, 2 Apr 2018 12:42:20 -0700 Subject: [PATCH 012/289] Port Azure/azure-sdk-for-node#2311: added support for apiKeyCredentials and CognitiveServicesCredentials in ms-rest and ms-rest-azure --- .../cognitiveServicesCredentials.ts | 26 +++++++++++++++++++ lib/msRestAzure.ts | 3 ++- lib/pollingState.ts | 4 +-- 3 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 lib/credentials/cognitiveServicesCredentials.ts diff --git a/lib/credentials/cognitiveServicesCredentials.ts b/lib/credentials/cognitiveServicesCredentials.ts new file mode 100644 index 000000000000..98ec2c0b9eac --- /dev/null +++ b/lib/credentials/cognitiveServicesCredentials.ts @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +import { ApiKeyCredentials } from "ms-rest-js"; + +/** + * Creates a new CognitiveServicesCredentials object. + * + * @constructor + * @param {string} subscriptionKey The CognitiveServices subscription key + */ +export class CognitiveServicesCredentials extends ApiKeyCredentials { + constructor(subscriptionKey: string) { + if (!subscriptionKey || (subscriptionKey && typeof subscriptionKey.valueOf() !== "string")) { + throw new Error("subscriptionKey cannot be null or undefined and must be of type string."); + } + + const options = { + inHeader: { + "Ocp-Apim-Subscription-Key": subscriptionKey, + "X-BingApis-SDK-Client": 'node-SDK' + } + }; + super(options); + } +} diff --git a/lib/msRestAzure.ts b/lib/msRestAzure.ts index 8f3d7fbb1979..4d779c3e5019 100644 --- a/lib/msRestAzure.ts +++ b/lib/msRestAzure.ts @@ -5,4 +5,5 @@ import { AzureServiceClientOptions, AzureServiceClient } from "./azureServiceCli import Constants from "./util/constants"; import { CloudError, CloudErrorMapper } from "./cloudError"; import { BaseResource, BaseResourceMapper } from "./baseResource"; -export { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper }; \ No newline at end of file +import { CognitiveServicesCredentials } from "./credentials/cognitiveServicesCredentials"; +export { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper, CognitiveServicesCredentials }; diff --git a/lib/pollingState.ts b/lib/pollingState.ts index 41e5e1548bdf..4cb96246d1e3 100644 --- a/lib/pollingState.ts +++ b/lib/pollingState.ts @@ -17,7 +17,7 @@ export default class PollingState { /** * @param {msRest.RequestOptionsBase} [optionsOfInitialRequest] - Request options that were provided as a part of the initial request. */ - optionsOfInitialRequest: msRest.RequestOptionsBase; + optionsOfInitialRequest!: msRest.RequestOptionsBase; /** * @param {msRest.WebResource} [request] - provides information about the request made for polling. */ @@ -25,7 +25,7 @@ export default class PollingState { /** * @param {Response} [response] - The response object to extract longrunning operation status. */ - response: Response; + response!: Response; /** * @param {any} [resource] - Provides information about the response body received in the polling request. Particularly useful when polling via provisioningState. */ From a1f5b6e232819417eb5253c8e65b10bb614257f0 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Mon, 2 Apr 2018 17:43:13 -0700 Subject: [PATCH 013/289] Update build products --- dist/lib/azureServiceClient.js.map | 2 +- .../cognitiveServicesCredentials.js | 27 +++++++++ .../cognitiveServicesCredentials.js.map | 1 + dist/lib/msRestAzure.js | 2 + dist/lib/msRestAzure.js.map | 2 +- dist/lib/pollingState.js.map | 2 +- msRestAzureBundle.js | 57 +++++++++++++++---- msRestAzureBundle.js.map | 2 +- msRestAzureBundle.min.js | 2 +- msRestAzureBundle.min.js.map | 2 +- .../cognitiveServicesCredentials.d.ts | 10 ++++ typings/lib/msRestAzure.d.ts | 3 +- 12 files changed, 94 insertions(+), 18 deletions(-) create mode 100644 dist/lib/credentials/cognitiveServicesCredentials.js create mode 100644 dist/lib/credentials/cognitiveServicesCredentials.js.map create mode 100644 typings/lib/credentials/cognitiveServicesCredentials.d.ts diff --git a/dist/lib/azureServiceClient.js.map b/dist/lib/azureServiceClient.js.map index d89cde316841..62c1a8e39409 100644 --- a/dist/lib/azureServiceClient.js.map +++ b/dist/lib/azureServiceClient.js.map @@ -1 +1 @@ -{"version":3,"file":"azureServiceClient.js","sourceRoot":"","sources":["../../lib/azureServiceClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"azureServiceClient.js","sourceRoot":"","sources":["../../lib/azureServiceClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/lib/credentials/cognitiveServicesCredentials.js b/dist/lib/credentials/cognitiveServicesCredentials.js new file mode 100644 index 000000000000..8e3801783330 --- /dev/null +++ b/dist/lib/credentials/cognitiveServicesCredentials.js @@ -0,0 +1,27 @@ +"use strict"; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +Object.defineProperty(exports, "__esModule", { value: true }); +const ms_rest_js_1 = require("ms-rest-js"); +/** + * Creates a new CognitiveServicesCredentials object. + * + * @constructor + * @param {string} subscriptionKey The CognitiveServices subscription key + */ +class CognitiveServicesCredentials extends ms_rest_js_1.ApiKeyCredentials { + constructor(subscriptionKey) { + if (!subscriptionKey || (subscriptionKey && typeof subscriptionKey.valueOf() !== "string")) { + throw new Error("subscriptionKey cannot be null or undefined and must be of type string."); + } + const options = { + inHeader: { + "Ocp-Apim-Subscription-Key": subscriptionKey, + "X-BingApis-SDK-Client": 'node-SDK' + } + }; + super(options); + } +} +exports.CognitiveServicesCredentials = CognitiveServicesCredentials; +//# sourceMappingURL=cognitiveServicesCredentials.js.map \ No newline at end of file diff --git a/dist/lib/credentials/cognitiveServicesCredentials.js.map b/dist/lib/credentials/cognitiveServicesCredentials.js.map new file mode 100644 index 000000000000..49be24739a52 --- /dev/null +++ b/dist/lib/credentials/cognitiveServicesCredentials.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cognitiveServicesCredentials.js","sourceRoot":"","sources":["../../../lib/credentials/cognitiveServicesCredentials.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,+FAA+F;;AAE/F,2CAA+C;AAE/C;;;;;GAKG;AACH,kCAA0C,SAAQ,8BAAiB;IACjE,YAAY,eAAuB;QACjC,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,IAAI,OAAO,eAAe,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,EAAE;YAC1F,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;SAC5F;QAED,MAAM,OAAO,GAAG;YACd,QAAQ,EAAE;gBACR,2BAA2B,EAAE,eAAe;gBAC5C,uBAAuB,EAAE,UAAU;aACpC;SACF,CAAC;QACF,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AAdD,oEAcC"} \ No newline at end of file diff --git a/dist/lib/msRestAzure.js b/dist/lib/msRestAzure.js index 004265d1305d..1cd2e6f15866 100644 --- a/dist/lib/msRestAzure.js +++ b/dist/lib/msRestAzure.js @@ -10,4 +10,6 @@ const cloudError_1 = require("./cloudError"); exports.CloudErrorMapper = cloudError_1.CloudErrorMapper; const baseResource_1 = require("./baseResource"); exports.BaseResourceMapper = baseResource_1.BaseResourceMapper; +const cognitiveServicesCredentials_1 = require("./credentials/cognitiveServicesCredentials"); +exports.CognitiveServicesCredentials = cognitiveServicesCredentials_1.CognitiveServicesCredentials; //# sourceMappingURL=msRestAzure.js.map \ No newline at end of file diff --git a/dist/lib/msRestAzure.js.map b/dist/lib/msRestAzure.js.map index dfe3b356fd41..ce57270390b6 100644 --- a/dist/lib/msRestAzure.js.map +++ b/dist/lib/msRestAzure.js.map @@ -1 +1 @@ -{"version":3,"file":"msRestAzure.js","sourceRoot":"","sources":["../../lib/msRestAzure.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,+FAA+F;;AAE/F,6DAAqF;AAI5E,6BAJ2B,uCAAkB,CAI3B;AAH3B,gDAAyC;AAGe,oBAHjD,mBAAS,CAGiD;AAFjE,6CAA4D;AAEmB,2BAF1D,6BAAgB,CAE0D;AAD/F,iDAAkE;AAC6C,6BADxF,iCAAkB,CACwF"} \ No newline at end of file +{"version":3,"file":"msRestAzure.js","sourceRoot":"","sources":["../../lib/msRestAzure.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,+FAA+F;;AAE/F,6DAAqF;AAK5E,6BAL2B,uCAAkB,CAK3B;AAJ3B,gDAAyC;AAIe,oBAJjD,mBAAS,CAIiD;AAHjE,6CAA4D;AAGmB,2BAH1D,6BAAgB,CAG0D;AAF/F,iDAAkE;AAE6C,6BAFxF,iCAAkB,CAEwF;AADjI,6FAA0F;AACyC,uCAD1H,2DAA4B,CAC0H"} \ No newline at end of file diff --git a/dist/lib/pollingState.js.map b/dist/lib/pollingState.js.map index 2314787d1d96..e7c11010b272 100644 --- a/dist/lib/pollingState.js.map +++ b/dist/lib/pollingState.js.map @@ -1 +1 @@ -{"version":3,"file":"pollingState.js","sourceRoot":"","sources":["../../lib/pollingState.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"pollingState.js","sourceRoot":"","sources":["../../lib/pollingState.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,+FAA+F;;AAE/F,gDAAyC;AACzC,qCAAqC;AACrC,MAAM,SAAS,GAAG,mBAAS,CAAC,0BAA0B,CAAC;AAEvD;;;GAGG;AACH;IA0CE,YAAY,sBAAoD,EAAE,YAAY,GAAG,EAAE;QArBnF;;WAEG;QACH,iBAAY,GAAG,EAAE,CAAC;QAmBhB,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;QACrD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC;QAC9C,mDAAmD;QACnD,IAAI;YACF,IAAI,sBAAsB,CAAC,UAAU,IAAI,sBAAsB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;aAC/D;iBAAM;gBACL,IAAI,CAAC,QAAQ,GAAG,sBAAsB,CAAC,UAAU,CAAC;aACnD;SACF;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,KAAK;wEACC,sBAAsB,CAAC,UAAU,GAAG,CAAC,CAAC;YACxG,oBAAoB,CAAC,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC;YAC9D,oBAAoB,CAAC,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC;YAChE,MAAM,oBAAoB,CAAC;SAC5B;QACD,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC5B,KAAK,GAAG;gBACN,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC;gBACnC,MAAM;YAER,KAAK,GAAG;gBACN,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC;gBAClC,MAAM;YAER,KAAK,GAAG;gBACN,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE;oBAC3F,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC;iBAC1D;qBAAM;oBACL,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC;iBACpC;gBACD,MAAM;YAER,KAAK,GAAG;gBACN,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE;oBAC3F,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC;iBAC1D;qBAAM;oBACL,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC;iBACnC;gBACD,MAAM;YAER;gBACE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;gBAC/B,MAAM;SACT;IACH,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,QAAkB;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE;YAChC,MAAM,oBAAoB,GAA8B,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACrG,MAAM,cAAc,GAA8B,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACnF,IAAI,oBAAoB,EAAE;gBACxB,IAAI,CAAC,6BAA6B,GAAG,oBAAoB,CAAC;aAC3D;YAED,IAAI,cAAc,EAAE;gBAClB,IAAI,CAAC,kBAAkB,GAAG,cAAc,CAAC;aAC1C;SACF;IACH,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,EAAE;YAChD,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SACjC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,UAAU,GAA8B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACvF,IAAI,UAAU,EAAE;gBACd,OAAO,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;aACpC;SACF;QACD,OAAO,EAAE,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,oBAAoB;QAClB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7E,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,QAAQ,EAAE;YAChE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/C;aAAM;YACL,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACnD;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,GAAW;QACtB,IAAI,MAAc,CAAC;QACnB,IAAI,OAAO,GAAuB,SAAS,CAAC;QAE5C,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACvC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,QAAkC,CAAC;QAE/D,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE;YACtB,MAAM,GAAG,8CAA8C,GAAG,CAAC,OAAO,IAAI,CAAC;SACxE;aAAM;YACL,MAAM,GAAG,+CAA+C,IAAI,CAAC,MAAM,IAAI,CAAC;SACzE;QAED,IAAI,cAAc,EAAE;YAClB,IAAI,cAAc,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE;gBACxD,MAAM,GAAG,8CAA8C,cAAc,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC;aACzF;YACD,IAAI,cAAc,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE;gBACrD,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,IAAc,CAAC;aAC/C;SACF;QAED,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACvB,IAAI,OAAO;YAAE,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;QAClC,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAlLD,+BAkLC"} \ No newline at end of file diff --git a/msRestAzureBundle.js b/msRestAzureBundle.js index 354e536a196c..8ed29a09ff84 100644 --- a/msRestAzureBundle.js +++ b/msRestAzureBundle.js @@ -66,6 +66,12 @@ var msRestAzure = /************************************************************************/ /******/ ([ /* 0 */ +/***/ (function(module, exports) { + +module.exports = msRest; + +/***/ }), +/* 1 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -103,12 +109,6 @@ const Constants = { exports.default = Constants; -/***/ }), -/* 1 */ -/***/ (function(module, exports) { - -module.exports = msRest; - /***/ }), /* 2 */ /***/ (function(module, exports, __webpack_require__) { @@ -120,12 +120,14 @@ module.exports = msRest; Object.defineProperty(exports, "__esModule", { value: true }); const azureServiceClient_1 = __webpack_require__(3); exports.AzureServiceClient = azureServiceClient_1.AzureServiceClient; -const constants_1 = __webpack_require__(0); +const constants_1 = __webpack_require__(1); exports.Constants = constants_1.default; const cloudError_1 = __webpack_require__(5); exports.CloudErrorMapper = cloudError_1.CloudErrorMapper; const baseResource_1 = __webpack_require__(6); exports.BaseResourceMapper = baseResource_1.BaseResourceMapper; +const cognitiveServicesCredentials_1 = __webpack_require__(7); +exports.CognitiveServicesCredentials = cognitiveServicesCredentials_1.CognitiveServicesCredentials; /***/ }), @@ -145,8 +147,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", { value: true }); -const msRest = __webpack_require__(1); -const constants_1 = __webpack_require__(0); +const msRest = __webpack_require__(0); +const constants_1 = __webpack_require__(1); const pollingState_1 = __webpack_require__(4); const LroStates = constants_1.default.LongRunningOperationStates; /** @@ -449,8 +451,8 @@ exports.AzureServiceClient = AzureServiceClient; // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. Object.defineProperty(exports, "__esModule", { value: true }); -const constants_1 = __webpack_require__(0); -const msRest = __webpack_require__(1); +const constants_1 = __webpack_require__(1); +const msRest = __webpack_require__(0); const LroStates = constants_1.default.LongRunningOperationStates; /** * @class @@ -672,6 +674,39 @@ exports.BaseResourceMapper = { }; +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +Object.defineProperty(exports, "__esModule", { value: true }); +const ms_rest_js_1 = __webpack_require__(0); +/** + * Creates a new CognitiveServicesCredentials object. + * + * @constructor + * @param {string} subscriptionKey The CognitiveServices subscription key + */ +class CognitiveServicesCredentials extends ms_rest_js_1.ApiKeyCredentials { + constructor(subscriptionKey) { + if (!subscriptionKey || (subscriptionKey && typeof subscriptionKey.valueOf() !== "string")) { + throw new Error("subscriptionKey cannot be null or undefined and must be of type string."); + } + const options = { + inHeader: { + "Ocp-Apim-Subscription-Key": subscriptionKey, + "X-BingApis-SDK-Client": 'node-SDK' + } + }; + super(options); + } +} +exports.CognitiveServicesCredentials = CognitiveServicesCredentials; + + /***/ }) /******/ ]); //# sourceMappingURL=msRestAzureBundle.js.map \ No newline at end of file diff --git a/msRestAzureBundle.js.map b/msRestAzureBundle.js.map index 13e24ed4d13d..683755039de9 100644 --- a/msRestAzureBundle.js.map +++ b/msRestAzureBundle.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap b72959873493c4949e36","webpack:///./lib/util/constants.ts","webpack:///external \"msRest\"","webpack:///./lib/msRestAzure.ts","webpack:///./lib/azureServiceClient.ts","webpack:///./lib/pollingState.ts","webpack:///./lib/cloudError.ts","webpack:///./lib/baseResource.ts"],"names":[],"mappings":"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","file":"msRestAzureBundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap b72959873493c4949e36","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nconst Constants = {\n /**\n * Defines constants for long running operation states.\n *\n * @const\n * @type {string}\n */\n LongRunningOperationStates: {\n InProgress: \"InProgress\",\n Succeeded: \"Succeeded\",\n Failed: \"Failed\",\n Canceled: \"Canceled\"\n },\n\n /**\n * The default language in the request header.\n *\n * @const\n * @type {string}\n */\n DEFAULT_LANGUAGE: \"en-us\",\n\n /**\n * The ms-rest-azure version.\n * @const\n * @type {string}\n */\n msRestAzureVersion: \"0.1.0\"\n};\n\nexport default Constants;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/util/constants.ts","module.exports = msRest;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"msRest\"\n// module id = 1\n// module chunks = 0","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport { AzureServiceClientOptions, AzureServiceClient } from \"./azureServiceClient\";\nimport Constants from \"./util/constants\";\nimport { CloudError, CloudErrorMapper } from \"./cloudError\";\nimport { BaseResource, BaseResourceMapper } from \"./baseResource\";\nexport { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper };\n\n\n// WEBPACK FOOTER //\n// ./lib/msRestAzure.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport * as msRest from \"ms-rest-js\";\nimport Constants from \"./util/constants\";\nimport PollingState from \"./pollingState\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * Options to be provided while creating the client.\n */\nexport interface AzureServiceClientOptions extends msRest.ServiceClientOptions {\n /**\n * @property {string} [options.acceptLanguage] - Gets or sets the preferred language for the response. Default value is: \"en-US\".\n */\n acceptLanguage?: string;\n\n /**\n * @property {boolean} [options.generateClientRequestId] - When set to true a unique x-ms-client-request-id value\n * is generated and included in each request. Default is true.\n */\n generateClientRequestId?: boolean;\n\n /**\n * @property {number} [options.longRunningOperationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * Long Running Operations. Default value is 30.\n */\n longRunningOperationRetryTimeout?: number;\n\n /**\n * @property {number} [rpRegistrationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * AutomaticRPRegistration. Default value is 30 seconds.\n */\n rpRegistrationRetryTimeout?: number;\n}\n\n/**\n * @class\n * Initializes a new instance of the AzureServiceClient class.\n * @constructor\n *\n * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or\n * UserTokenCredentials object used for authentication.\n * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient\n */\nexport class AzureServiceClient extends msRest.ServiceClient {\n acceptLanguage: string = Constants.DEFAULT_LANGUAGE;\n generateClientRequestId = true;\n longRunningOperationRetryTimeout = 30;\n rpRegistrationRetryTimeout = 30;\n\n constructor(credentials: msRest.ServiceClientCredentials, options?: AzureServiceClientOptions) {\n super(credentials, options);\n this.acceptLanguage = Constants.DEFAULT_LANGUAGE;\n this.generateClientRequestId = true;\n this.longRunningOperationRetryTimeout = 30;\n if (!options) options = {};\n\n if (options.acceptLanguage !== null && options.acceptLanguage !== undefined) {\n this.acceptLanguage = options.acceptLanguage;\n }\n\n if (options.generateClientRequestId !== null && options.generateClientRequestId !== undefined) {\n this.generateClientRequestId = options.generateClientRequestId;\n }\n\n if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) {\n this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout;\n }\n\n if (options.rpRegistrationRetryTimeout !== null && options.rpRegistrationRetryTimeout !== undefined) {\n this.rpRegistrationRetryTimeout = options.rpRegistrationRetryTimeout;\n }\n\n try {\n const moduleName = \"ms-rest-azure\";\n const moduleVersion = Constants.msRestAzureVersion;\n this.addUserAgentInfo(`${moduleName}/${moduleVersion}`);\n } catch (err) {\n // do nothing\n }\n }\n\n /**\n * Provides a mechanism to make a request that will poll and provide the final result.\n * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object\n * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request\n * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody.\n */\n async sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n let initialResponse: msRest.HttpOperationResponse;\n try {\n initialResponse = await self.sendRequest(request);\n } catch (err) {\n return Promise.reject(err);\n }\n let finalResponse: msRest.HttpOperationResponse;\n try {\n finalResponse = await self.getLongRunningOperationResult(initialResponse, options);\n } catch (err) {\n return Promise.reject(err);\n }\n return Promise.resolve(finalResponse);\n }\n\n /**\n * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request.\n * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation.\n */\n private checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResponse): boolean {\n const statusCode = initialResponse.response.status;\n const method = initialResponse.request.method;\n if (statusCode === 200 || statusCode === 202 ||\n (statusCode === 201 && method === \"PUT\") ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n return false;\n } else {\n return true;\n }\n }\n\n /**\n * Poll Azure long running PUT, PATCH, POST or DELETE operations.\n * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation.\n * @param {msRest.RequestOptionsBase} [options] - custom request options.\n * @returns {Promise} result - The final response after polling is complete.\n */\n async getLongRunningOperationResult(resultOfInitialRequest: msRest.HttpOperationResponse, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n const initialRequestMethod: string = resultOfInitialRequest.request.method as msRest.HttpMethods;\n\n if (self.checkResponseStatusCodeFailed(resultOfInitialRequest)) {\n return Promise.reject(`Unexpected polling status code from long running operation ` +\n `\"${resultOfInitialRequest.response.status}\" for method \"${initialRequestMethod}\".`);\n }\n let pollingState: PollingState;\n try {\n pollingState = new PollingState(resultOfInitialRequest, self.longRunningOperationRetryTimeout);\n pollingState.optionsOfInitialRequest = options as msRest.RequestOptionsBase;\n } catch (error) {\n return Promise.reject(error);\n }\n const resourceUrl: string = resultOfInitialRequest.request.url;\n while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) {\n await msRest.delay(pollingState.getTimeout());\n if (pollingState.azureAsyncOperationHeaderLink) {\n await self.updateStateFromAzureAsyncOperationHeader(pollingState, true);\n } else if (pollingState.locationHeaderLink) {\n await self.updateStateFromLocationHeader(initialRequestMethod, pollingState);\n } else if (initialRequestMethod === \"PUT\") {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n } else {\n return Promise.reject(new Error(\"Location header is missing from long running operation.\"));\n }\n }\n\n if (pollingState.status === LroStates.Succeeded) {\n if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) &&\n (initialRequestMethod === \"PUT\" || initialRequestMethod === \"PATCH\")) {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n return Promise.resolve(pollingState.getOperationResponse());\n } else {\n return Promise.resolve(pollingState.getOperationResponse());\n }\n } else {\n return Promise.reject(pollingState.getRestError());\n }\n }\n\n /**\n * Retrieve operation status by polling from \"azure-asyncoperation\" header.\n * @param {PollingState} pollingState - The object to persist current operation state.\n * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation.\n */\n private async updateStateFromAzureAsyncOperationHeader(pollingState: PollingState, inPostOrDelete = false): Promise {\n let result: msRest.HttpOperationResponse;\n\n try {\n result = await this.getStatus(pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n\n if (!parsedResponse) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n } else if (parsedResponse && !parsedResponse.status) {\n return Promise.reject(new Error(`The response \"${result.bodyAsText}\" from long running operation does not contain the status property.`));\n }\n pollingState.status = parsedResponse.status;\n pollingState.error = parsedResponse.error;\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = undefined;\n if (inPostOrDelete) {\n pollingState.resource = result.bodyAsJson;\n }\n return Promise.resolve();\n }\n\n /**\n * Retrieve PUT operation status by polling from \"location\" header.\n * @param {string} method - The HTTP method.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromLocationHeader(method: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n const statusCode = result.response.status;\n if (statusCode === 202) {\n pollingState.status = LroStates.InProgress;\n } else if (statusCode === 200 ||\n (statusCode === 201 && (method === \"PUT\" || method === \"PATCH\")) ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n pollingState.status = LroStates.Succeeded;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n } else {\n return Promise.reject(new Error(`The response with status code ${statusCode} from polling for ` +\n `long running operation url \"${pollingState.locationHeaderLink}\" is not valid.`));\n }\n }\n\n /**\n * Polling for resource status.\n * @param {string} resourceUrl - The url of resource.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromGetResourceOperation(resourceUrl: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n if (!result.bodyAsJson) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n pollingState.status = LroStates.Succeeded;\n if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) {\n pollingState.status = parsedResponse.properties.provisioningState;\n }\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n return Promise.resolve();\n }\n\n /**\n * Retrieves operation status by querying the operation URL.\n * @param {string} operationUrl - URL used to poll operation result.\n * @param {object} options - Options that can be set on the request object\n */\n private async getStatus(operationUrl: string, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n // Construct URL\n const requestUrl = operationUrl.replace(\" \", \"%20\");\n // Create HTTP request object\n const httpRequest: msRest.RequestPrepareOptions = {\n method: \"GET\",\n url: requestUrl,\n headers: {}\n };\n if (options) {\n const customHeaders: { [key: string]: string } = (options.customHeaders as { [key: string]: string });\n for (const headerName in customHeaders) {\n if (customHeaders.hasOwnProperty(headerName)) {\n (httpRequest.headers as { [key: string]: string })[headerName] = customHeaders[headerName];\n }\n }\n }\n let operationResponse: msRest.HttpOperationResponse;\n try {\n operationResponse = await self.sendRequest(httpRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n const statusCode = operationResponse.response.status;\n const responseBody = operationResponse.bodyAsJson;\n if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) {\n const error = new msRest.RestError(`Invalid status code with response body \"${operationResponse.bodyAsText}\" occurred ` +\n `when polling for operation status.`);\n error.statusCode = statusCode;\n error.request = msRest.stripRequest(operationResponse.request);\n error.response = operationResponse.response;\n try {\n error.body = responseBody;\n } catch (badResponse) {\n error.message += ` Error \"${badResponse}\" occured while deserializing the response body - \"${operationResponse.bodyAsText}\".`;\n error.body = operationResponse.bodyAsText;\n }\n return Promise.reject(error);\n }\n\n return Promise.resolve(operationResponse);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/azureServiceClient.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport Constants from \"./util/constants\";\nimport * as msRest from \"ms-rest-js\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * @class\n * Initializes a new instance of the PollingState class.\n */\nexport default class PollingState {\n /**\n * @param {msRest.HttpOperationResponse} [response] - Response of the initial request that was made as a part of the asynchronous operation.\n */\n resultOfInitialRequest: msRest.HttpOperationResponse;\n /**\n * @param {msRest.RequestOptionsBase} [optionsOfInitialRequest] - Request options that were provided as a part of the initial request.\n */\n optionsOfInitialRequest: msRest.RequestOptionsBase;\n /**\n * @param {msRest.WebResource} [request] - provides information about the request made for polling.\n */\n request: msRest.WebResource;\n /**\n * @param {Response} [response] - The response object to extract longrunning operation status.\n */\n response: Response;\n /**\n * @param {any} [resource] - Provides information about the response body received in the polling request. Particularly useful when polling via provisioningState.\n */\n resource: any;\n /**\n * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30.\n */\n retryTimeout = 30;\n /**\n * @param {string} [azureAsyncOperationHeaderLink] - The url that is present in \"azure-asyncoperation\" response header.\n */\n azureAsyncOperationHeaderLink?: string;\n /**\n * @param {string} [locationHeaderLink] - The url that is present in \"Location\" response header.\n */\n locationHeaderLink?: string;\n /**\n * @param {string} [status] - The status of polling. \"Succeeded, Failed, Cancelled, Updating, Creating, etc.\"\n */\n status?: string;\n /**\n * @param {msRest.RestError} [error] - Provides information about the error that happened while polling.\n */\n error?: msRest.RestError;\n\n constructor(resultOfInitialRequest: msRest.HttpOperationResponse, retryTimeout = 30) {\n this.resultOfInitialRequest = resultOfInitialRequest;\n this.retryTimeout = retryTimeout;\n this.updateResponse(resultOfInitialRequest.response);\n this.request = resultOfInitialRequest.request;\n // Parse response.body & assign it as the resource.\n try {\n if (resultOfInitialRequest.bodyAsText && resultOfInitialRequest.bodyAsText.length > 0) {\n this.resource = JSON.parse(resultOfInitialRequest.bodyAsText);\n } else {\n this.resource = resultOfInitialRequest.bodyAsJson;\n }\n } catch (error) {\n const deserializationError = new msRest.RestError(`Error \"${error}\" occurred in parsing the responseBody \" +\n \"while creating the PollingState for Long Running Operation- \"${resultOfInitialRequest.bodyAsText}\"`);\n deserializationError.request = resultOfInitialRequest.request;\n deserializationError.response = resultOfInitialRequest.response;\n throw deserializationError;\n }\n switch (this.response.status) {\n case 202:\n this.status = LroStates.InProgress;\n break;\n\n case 204:\n this.status = LroStates.Succeeded;\n break;\n\n case 201:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.InProgress;\n }\n break;\n\n case 200:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.Succeeded;\n }\n break;\n\n default:\n this.status = LroStates.Failed;\n break;\n }\n }\n\n /**\n * Update cached data using the provided response object\n * @param {Response} [response] - provider response object.\n */\n updateResponse(response: Response) {\n this.response = response;\n if (response && response.headers) {\n const asyncOperationHeader: string | null | undefined = response.headers.get(\"azure-asyncoperation\");\n const locationHeader: string | null | undefined = response.headers.get(\"location\");\n if (asyncOperationHeader) {\n this.azureAsyncOperationHeaderLink = asyncOperationHeader;\n }\n\n if (locationHeader) {\n this.locationHeaderLink = locationHeader;\n }\n }\n }\n\n /**\n * Gets timeout in milliseconds.\n * @returns {number} timeout\n */\n getTimeout() {\n if (this.retryTimeout || this.retryTimeout === 0) {\n return this.retryTimeout * 1000;\n }\n if (this.response) {\n const retryAfter: string | null | undefined = this.response.headers.get(\"retry-after\");\n if (retryAfter) {\n return parseInt(retryAfter) * 1000;\n }\n }\n return 30 * 1000;\n }\n\n /**\n * Returns long running operation result.\n * @returns {msRest.HttpOperationResponse} HttpOperationResponse\n */\n getOperationResponse(): msRest.HttpOperationResponse {\n const result = new msRest.HttpOperationResponse(this.request, this.response);\n if (this.resource && typeof this.resource.valueOf() === \"string\") {\n result.bodyAsText = this.resource;\n result.bodyAsJson = JSON.parse(this.resource);\n } else {\n result.bodyAsJson = this.resource;\n result.bodyAsText = JSON.stringify(this.resource);\n }\n return result;\n }\n\n /**\n * Returns an Error on operation failure.\n * @param {Error} err - The error object.\n * @returns {msRest.RestError} The RestError defined in the runtime.\n */\n getRestError(err?: Error): msRest.RestError {\n let errMsg: string;\n let errCode: string | undefined = undefined;\n\n const error = new msRest.RestError(\"\");\n error.request = msRest.stripRequest(this.request);\n error.response = this.response;\n const parsedResponse = this.resource as { [key: string]: any };\n\n if (err && err.message) {\n errMsg = `Long running operation failed with error: \"${err.message}\".`;\n } else {\n errMsg = `Long running operation failed with status: \"${this.status}\".`;\n }\n\n if (parsedResponse) {\n if (parsedResponse.error && parsedResponse.error.message) {\n errMsg = `Long running operation failed with error: \"${parsedResponse.error.message}\".`;\n }\n if (parsedResponse.error && parsedResponse.error.code) {\n errCode = parsedResponse.error.code as string;\n }\n }\n\n error.message = errMsg;\n if (errCode) error.code = errCode;\n error.body = parsedResponse;\n return error;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/pollingState.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * Provides additional information about an http error response returned from a Microsoft Azure service.\n */\nexport interface CloudError extends Error {\n /**\n * @property {string} code The error code parsed from the body of the http error response.\n */\n code: string;\n /**\n * @property {string} message The error message parsed from the body of the http error response.\n */\n message: string;\n /**\n * @property {string} [target] The target of the error.\n */\n target?: string;\n /**\n * @property {Array} [details] An array of CloudError objects specifying the details.\n */\n details?: Array;\n}\n\nexport const CloudErrorMapper = {\n required: false,\n serializedName: \"CloudError\",\n type: {\n name: \"Composite\",\n className: \"CloudError\",\n modelProperties: {\n code: {\n required: true,\n serializedName: \"code\",\n type: {\n name: \"String\"\n }\n },\n message: {\n required: true,\n serializedName: \"message\",\n type: {\n name: \"String\"\n }\n },\n target: {\n required: false,\n serializedName: \"target\",\n type: {\n name: \"String\"\n }\n },\n details: {\n required: false,\n serializedName: \"details\",\n type: {\n name: \"Sequence\",\n element: {\n required: false,\n serializedName: \"CloudErrorElementType\",\n type: {\n name: \"Composite\",\n className: \"CloudError\"\n }\n }\n }\n }\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/cloudError.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * An empty interface.\n */\nexport interface BaseResource { }\n\nexport const BaseResourceMapper = {\n required: false,\n serializedName: \"BaseResource\",\n type: {\n name: \"Composite\",\n className: \"BaseResource\",\n modelProperties: {\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/baseResource.ts"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap 8ea6fb3503194484bc94","webpack:///external \"msRest\"","webpack:///./lib/util/constants.ts","webpack:///./lib/msRestAzure.ts","webpack:///./lib/azureServiceClient.ts","webpack:///./lib/pollingState.ts","webpack:///./lib/cloudError.ts","webpack:///./lib/baseResource.ts","webpack:///./lib/credentials/cognitiveServicesCredentials.ts"],"names":[],"mappings":"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","file":"msRestAzureBundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 8ea6fb3503194484bc94","module.exports = msRest;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"msRest\"\n// module id = 0\n// module chunks = 0","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nconst Constants = {\n /**\n * Defines constants for long running operation states.\n *\n * @const\n * @type {string}\n */\n LongRunningOperationStates: {\n InProgress: \"InProgress\",\n Succeeded: \"Succeeded\",\n Failed: \"Failed\",\n Canceled: \"Canceled\"\n },\n\n /**\n * The default language in the request header.\n *\n * @const\n * @type {string}\n */\n DEFAULT_LANGUAGE: \"en-us\",\n\n /**\n * The ms-rest-azure version.\n * @const\n * @type {string}\n */\n msRestAzureVersion: \"0.1.0\"\n};\n\nexport default Constants;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/util/constants.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport { AzureServiceClientOptions, AzureServiceClient } from \"./azureServiceClient\";\nimport Constants from \"./util/constants\";\nimport { CloudError, CloudErrorMapper } from \"./cloudError\";\nimport { BaseResource, BaseResourceMapper } from \"./baseResource\";\nimport { CognitiveServicesCredentials } from \"./credentials/cognitiveServicesCredentials\";\nexport { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper, CognitiveServicesCredentials };\n\n\n\n// WEBPACK FOOTER //\n// ./lib/msRestAzure.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport * as msRest from \"ms-rest-js\";\nimport Constants from \"./util/constants\";\nimport PollingState from \"./pollingState\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * Options to be provided while creating the client.\n */\nexport interface AzureServiceClientOptions extends msRest.ServiceClientOptions {\n /**\n * @property {string} [options.acceptLanguage] - Gets or sets the preferred language for the response. Default value is: \"en-US\".\n */\n acceptLanguage?: string;\n\n /**\n * @property {boolean} [options.generateClientRequestId] - When set to true a unique x-ms-client-request-id value\n * is generated and included in each request. Default is true.\n */\n generateClientRequestId?: boolean;\n\n /**\n * @property {number} [options.longRunningOperationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * Long Running Operations. Default value is 30.\n */\n longRunningOperationRetryTimeout?: number;\n\n /**\n * @property {number} [rpRegistrationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * AutomaticRPRegistration. Default value is 30 seconds.\n */\n rpRegistrationRetryTimeout?: number;\n}\n\n/**\n * @class\n * Initializes a new instance of the AzureServiceClient class.\n * @constructor\n *\n * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or\n * UserTokenCredentials object used for authentication.\n * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient\n */\nexport class AzureServiceClient extends msRest.ServiceClient {\n acceptLanguage: string = Constants.DEFAULT_LANGUAGE;\n generateClientRequestId = true;\n longRunningOperationRetryTimeout = 30;\n rpRegistrationRetryTimeout = 30;\n\n constructor(credentials: msRest.ServiceClientCredentials, options?: AzureServiceClientOptions) {\n super(credentials, options);\n this.acceptLanguage = Constants.DEFAULT_LANGUAGE;\n this.generateClientRequestId = true;\n this.longRunningOperationRetryTimeout = 30;\n if (!options) options = {};\n\n if (options.acceptLanguage !== null && options.acceptLanguage !== undefined) {\n this.acceptLanguage = options.acceptLanguage;\n }\n\n if (options.generateClientRequestId !== null && options.generateClientRequestId !== undefined) {\n this.generateClientRequestId = options.generateClientRequestId;\n }\n\n if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) {\n this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout;\n }\n\n if (options.rpRegistrationRetryTimeout !== null && options.rpRegistrationRetryTimeout !== undefined) {\n this.rpRegistrationRetryTimeout = options.rpRegistrationRetryTimeout;\n }\n\n try {\n const moduleName = \"ms-rest-azure\";\n const moduleVersion = Constants.msRestAzureVersion;\n this.addUserAgentInfo(`${moduleName}/${moduleVersion}`);\n } catch (err) {\n // do nothing\n }\n }\n\n /**\n * Provides a mechanism to make a request that will poll and provide the final result.\n * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object\n * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request\n * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody.\n */\n async sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n let initialResponse: msRest.HttpOperationResponse;\n try {\n initialResponse = await self.sendRequest(request);\n } catch (err) {\n return Promise.reject(err);\n }\n let finalResponse: msRest.HttpOperationResponse;\n try {\n finalResponse = await self.getLongRunningOperationResult(initialResponse, options);\n } catch (err) {\n return Promise.reject(err);\n }\n return Promise.resolve(finalResponse);\n }\n\n /**\n * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request.\n * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation.\n */\n private checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResponse): boolean {\n const statusCode = initialResponse.response.status;\n const method = initialResponse.request.method;\n if (statusCode === 200 || statusCode === 202 ||\n (statusCode === 201 && method === \"PUT\") ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n return false;\n } else {\n return true;\n }\n }\n\n /**\n * Poll Azure long running PUT, PATCH, POST or DELETE operations.\n * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation.\n * @param {msRest.RequestOptionsBase} [options] - custom request options.\n * @returns {Promise} result - The final response after polling is complete.\n */\n async getLongRunningOperationResult(resultOfInitialRequest: msRest.HttpOperationResponse, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n const initialRequestMethod: string = resultOfInitialRequest.request.method as msRest.HttpMethods;\n\n if (self.checkResponseStatusCodeFailed(resultOfInitialRequest)) {\n return Promise.reject(`Unexpected polling status code from long running operation ` +\n `\"${resultOfInitialRequest.response.status}\" for method \"${initialRequestMethod}\".`);\n }\n let pollingState: PollingState;\n try {\n pollingState = new PollingState(resultOfInitialRequest, self.longRunningOperationRetryTimeout);\n pollingState.optionsOfInitialRequest = options as msRest.RequestOptionsBase;\n } catch (error) {\n return Promise.reject(error);\n }\n const resourceUrl: string = resultOfInitialRequest.request.url;\n while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) {\n await msRest.delay(pollingState.getTimeout());\n if (pollingState.azureAsyncOperationHeaderLink) {\n await self.updateStateFromAzureAsyncOperationHeader(pollingState, true);\n } else if (pollingState.locationHeaderLink) {\n await self.updateStateFromLocationHeader(initialRequestMethod, pollingState);\n } else if (initialRequestMethod === \"PUT\") {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n } else {\n return Promise.reject(new Error(\"Location header is missing from long running operation.\"));\n }\n }\n\n if (pollingState.status === LroStates.Succeeded) {\n if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) &&\n (initialRequestMethod === \"PUT\" || initialRequestMethod === \"PATCH\")) {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n return Promise.resolve(pollingState.getOperationResponse());\n } else {\n return Promise.resolve(pollingState.getOperationResponse());\n }\n } else {\n return Promise.reject(pollingState.getRestError());\n }\n }\n\n /**\n * Retrieve operation status by polling from \"azure-asyncoperation\" header.\n * @param {PollingState} pollingState - The object to persist current operation state.\n * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation.\n */\n private async updateStateFromAzureAsyncOperationHeader(pollingState: PollingState, inPostOrDelete = false): Promise {\n let result: msRest.HttpOperationResponse;\n\n try {\n result = await this.getStatus(pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n\n if (!parsedResponse) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n } else if (parsedResponse && !parsedResponse.status) {\n return Promise.reject(new Error(`The response \"${result.bodyAsText}\" from long running operation does not contain the status property.`));\n }\n pollingState.status = parsedResponse.status;\n pollingState.error = parsedResponse.error;\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = undefined;\n if (inPostOrDelete) {\n pollingState.resource = result.bodyAsJson;\n }\n return Promise.resolve();\n }\n\n /**\n * Retrieve PUT operation status by polling from \"location\" header.\n * @param {string} method - The HTTP method.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromLocationHeader(method: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n const statusCode = result.response.status;\n if (statusCode === 202) {\n pollingState.status = LroStates.InProgress;\n } else if (statusCode === 200 ||\n (statusCode === 201 && (method === \"PUT\" || method === \"PATCH\")) ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n pollingState.status = LroStates.Succeeded;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n } else {\n return Promise.reject(new Error(`The response with status code ${statusCode} from polling for ` +\n `long running operation url \"${pollingState.locationHeaderLink}\" is not valid.`));\n }\n }\n\n /**\n * Polling for resource status.\n * @param {string} resourceUrl - The url of resource.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromGetResourceOperation(resourceUrl: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n if (!result.bodyAsJson) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n }\n\n const parsedResponse = result.bodyAsJson as { [key: string]: any };\n pollingState.status = LroStates.Succeeded;\n if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) {\n pollingState.status = parsedResponse.properties.provisioningState;\n }\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n return Promise.resolve();\n }\n\n /**\n * Retrieves operation status by querying the operation URL.\n * @param {string} operationUrl - URL used to poll operation result.\n * @param {object} options - Options that can be set on the request object\n */\n private async getStatus(operationUrl: string, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n // Construct URL\n const requestUrl = operationUrl.replace(\" \", \"%20\");\n // Create HTTP request object\n const httpRequest: msRest.RequestPrepareOptions = {\n method: \"GET\",\n url: requestUrl,\n headers: {}\n };\n if (options) {\n const customHeaders: { [key: string]: string } = (options.customHeaders as { [key: string]: string });\n for (const headerName in customHeaders) {\n if (customHeaders.hasOwnProperty(headerName)) {\n (httpRequest.headers as { [key: string]: string })[headerName] = customHeaders[headerName];\n }\n }\n }\n let operationResponse: msRest.HttpOperationResponse;\n try {\n operationResponse = await self.sendRequest(httpRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n const statusCode = operationResponse.response.status;\n const responseBody = operationResponse.bodyAsJson;\n if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) {\n const error = new msRest.RestError(`Invalid status code with response body \"${operationResponse.bodyAsText}\" occurred ` +\n `when polling for operation status.`);\n error.statusCode = statusCode;\n error.request = msRest.stripRequest(operationResponse.request);\n error.response = operationResponse.response;\n try {\n error.body = responseBody;\n } catch (badResponse) {\n error.message += ` Error \"${badResponse}\" occured while deserializing the response body - \"${operationResponse.bodyAsText}\".`;\n error.body = operationResponse.bodyAsText;\n }\n return Promise.reject(error);\n }\n\n return Promise.resolve(operationResponse);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/azureServiceClient.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport Constants from \"./util/constants\";\nimport * as msRest from \"ms-rest-js\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * @class\n * Initializes a new instance of the PollingState class.\n */\nexport default class PollingState {\n /**\n * @param {msRest.HttpOperationResponse} [response] - Response of the initial request that was made as a part of the asynchronous operation.\n */\n resultOfInitialRequest: msRest.HttpOperationResponse;\n /**\n * @param {msRest.RequestOptionsBase} [optionsOfInitialRequest] - Request options that were provided as a part of the initial request.\n */\n optionsOfInitialRequest!: msRest.RequestOptionsBase;\n /**\n * @param {msRest.WebResource} [request] - provides information about the request made for polling.\n */\n request: msRest.WebResource;\n /**\n * @param {Response} [response] - The response object to extract longrunning operation status.\n */\n response!: Response;\n /**\n * @param {any} [resource] - Provides information about the response body received in the polling request. Particularly useful when polling via provisioningState.\n */\n resource: any;\n /**\n * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30.\n */\n retryTimeout = 30;\n /**\n * @param {string} [azureAsyncOperationHeaderLink] - The url that is present in \"azure-asyncoperation\" response header.\n */\n azureAsyncOperationHeaderLink?: string;\n /**\n * @param {string} [locationHeaderLink] - The url that is present in \"Location\" response header.\n */\n locationHeaderLink?: string;\n /**\n * @param {string} [status] - The status of polling. \"Succeeded, Failed, Cancelled, Updating, Creating, etc.\"\n */\n status?: string;\n /**\n * @param {msRest.RestError} [error] - Provides information about the error that happened while polling.\n */\n error?: msRest.RestError;\n\n constructor(resultOfInitialRequest: msRest.HttpOperationResponse, retryTimeout = 30) {\n this.resultOfInitialRequest = resultOfInitialRequest;\n this.retryTimeout = retryTimeout;\n this.updateResponse(resultOfInitialRequest.response);\n this.request = resultOfInitialRequest.request;\n // Parse response.body & assign it as the resource.\n try {\n if (resultOfInitialRequest.bodyAsText && resultOfInitialRequest.bodyAsText.length > 0) {\n this.resource = JSON.parse(resultOfInitialRequest.bodyAsText);\n } else {\n this.resource = resultOfInitialRequest.bodyAsJson;\n }\n } catch (error) {\n const deserializationError = new msRest.RestError(`Error \"${error}\" occurred in parsing the responseBody \" +\n \"while creating the PollingState for Long Running Operation- \"${resultOfInitialRequest.bodyAsText}\"`);\n deserializationError.request = resultOfInitialRequest.request;\n deserializationError.response = resultOfInitialRequest.response;\n throw deserializationError;\n }\n switch (this.response.status) {\n case 202:\n this.status = LroStates.InProgress;\n break;\n\n case 204:\n this.status = LroStates.Succeeded;\n break;\n\n case 201:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.InProgress;\n }\n break;\n\n case 200:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.Succeeded;\n }\n break;\n\n default:\n this.status = LroStates.Failed;\n break;\n }\n }\n\n /**\n * Update cached data using the provided response object\n * @param {Response} [response] - provider response object.\n */\n updateResponse(response: Response) {\n this.response = response;\n if (response && response.headers) {\n const asyncOperationHeader: string | null | undefined = response.headers.get(\"azure-asyncoperation\");\n const locationHeader: string | null | undefined = response.headers.get(\"location\");\n if (asyncOperationHeader) {\n this.azureAsyncOperationHeaderLink = asyncOperationHeader;\n }\n\n if (locationHeader) {\n this.locationHeaderLink = locationHeader;\n }\n }\n }\n\n /**\n * Gets timeout in milliseconds.\n * @returns {number} timeout\n */\n getTimeout() {\n if (this.retryTimeout || this.retryTimeout === 0) {\n return this.retryTimeout * 1000;\n }\n if (this.response) {\n const retryAfter: string | null | undefined = this.response.headers.get(\"retry-after\");\n if (retryAfter) {\n return parseInt(retryAfter) * 1000;\n }\n }\n return 30 * 1000;\n }\n\n /**\n * Returns long running operation result.\n * @returns {msRest.HttpOperationResponse} HttpOperationResponse\n */\n getOperationResponse(): msRest.HttpOperationResponse {\n const result = new msRest.HttpOperationResponse(this.request, this.response);\n if (this.resource && typeof this.resource.valueOf() === \"string\") {\n result.bodyAsText = this.resource;\n result.bodyAsJson = JSON.parse(this.resource);\n } else {\n result.bodyAsJson = this.resource;\n result.bodyAsText = JSON.stringify(this.resource);\n }\n return result;\n }\n\n /**\n * Returns an Error on operation failure.\n * @param {Error} err - The error object.\n * @returns {msRest.RestError} The RestError defined in the runtime.\n */\n getRestError(err?: Error): msRest.RestError {\n let errMsg: string;\n let errCode: string | undefined = undefined;\n\n const error = new msRest.RestError(\"\");\n error.request = msRest.stripRequest(this.request);\n error.response = this.response;\n const parsedResponse = this.resource as { [key: string]: any };\n\n if (err && err.message) {\n errMsg = `Long running operation failed with error: \"${err.message}\".`;\n } else {\n errMsg = `Long running operation failed with status: \"${this.status}\".`;\n }\n\n if (parsedResponse) {\n if (parsedResponse.error && parsedResponse.error.message) {\n errMsg = `Long running operation failed with error: \"${parsedResponse.error.message}\".`;\n }\n if (parsedResponse.error && parsedResponse.error.code) {\n errCode = parsedResponse.error.code as string;\n }\n }\n\n error.message = errMsg;\n if (errCode) error.code = errCode;\n error.body = parsedResponse;\n return error;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/pollingState.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * Provides additional information about an http error response returned from a Microsoft Azure service.\n */\nexport interface CloudError extends Error {\n /**\n * @property {string} code The error code parsed from the body of the http error response.\n */\n code: string;\n /**\n * @property {string} message The error message parsed from the body of the http error response.\n */\n message: string;\n /**\n * @property {string} [target] The target of the error.\n */\n target?: string;\n /**\n * @property {Array} [details] An array of CloudError objects specifying the details.\n */\n details?: Array;\n}\n\nexport const CloudErrorMapper = {\n required: false,\n serializedName: \"CloudError\",\n type: {\n name: \"Composite\",\n className: \"CloudError\",\n modelProperties: {\n code: {\n required: true,\n serializedName: \"code\",\n type: {\n name: \"String\"\n }\n },\n message: {\n required: true,\n serializedName: \"message\",\n type: {\n name: \"String\"\n }\n },\n target: {\n required: false,\n serializedName: \"target\",\n type: {\n name: \"String\"\n }\n },\n details: {\n required: false,\n serializedName: \"details\",\n type: {\n name: \"Sequence\",\n element: {\n required: false,\n serializedName: \"CloudErrorElementType\",\n type: {\n name: \"Composite\",\n className: \"CloudError\"\n }\n }\n }\n }\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/cloudError.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * An empty interface.\n */\nexport interface BaseResource { }\n\nexport const BaseResourceMapper = {\n required: false,\n serializedName: \"BaseResource\",\n type: {\n name: \"Composite\",\n className: \"BaseResource\",\n modelProperties: {\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/baseResource.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport { ApiKeyCredentials } from \"ms-rest-js\";\n\n/**\n * Creates a new CognitiveServicesCredentials object.\n *\n * @constructor\n * @param {string} subscriptionKey The CognitiveServices subscription key\n */\nexport class CognitiveServicesCredentials extends ApiKeyCredentials {\n constructor(subscriptionKey: string) {\n if (!subscriptionKey || (subscriptionKey && typeof subscriptionKey.valueOf() !== \"string\")) {\n throw new Error(\"subscriptionKey cannot be null or undefined and must be of type string.\");\n }\n\n const options = {\n inHeader: {\n \"Ocp-Apim-Subscription-Key\": subscriptionKey,\n \"X-BingApis-SDK-Client\": 'node-SDK'\n }\n };\n super(options);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/credentials/cognitiveServicesCredentials.ts"],"sourceRoot":""} \ No newline at end of file diff --git a/msRestAzureBundle.min.js b/msRestAzureBundle.min.js index 8f4a71a4a9e8..b5e827495a74 100644 --- a/msRestAzureBundle.min.js +++ b/msRestAzureBundle.min.js @@ -1 +1 @@ -var msRestAzure=function(e){function t(s){if(r[s])return r[s].exports;var o=r[s]={i:s,l:!1,exports:{}};return e[s].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,s){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:s})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=2)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s={LongRunningOperationStates:{InProgress:"InProgress",Succeeded:"Succeeded",Failed:"Failed",Canceled:"Canceled"},DEFAULT_LANGUAGE:"en-us",msRestAzureVersion:"0.1.0"};t.default=s},function(e,t){e.exports=msRest},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=r(3);t.AzureServiceClient=s.AzureServiceClient;const o=r(0);t.Constants=o.default;const n=r(5);t.CloudErrorMapper=n.CloudErrorMapper;const i=r(6);t.BaseResourceMapper=i.BaseResourceMapper},function(e,t,r){"use strict";var s=this&&this.__awaiter||function(e,t,r,s){return new(r||(r=Promise))(function(o,n){function i(e){try{a(s.next(e))}catch(e){n(e)}}function u(e){try{a(s.throw(e))}catch(e){n(e)}}function a(e){e.done?o(e.value):new r(function(t){t(e.value)}).then(i,u)}a((s=s.apply(e,t||[])).next())})};Object.defineProperty(t,"__esModule",{value:!0});const o=r(1),n=r(0),i=r(4),u=n.default.LongRunningOperationStates;class a extends o.ServiceClient{constructor(e,t){super(e,t),this.acceptLanguage=n.default.DEFAULT_LANGUAGE,this.generateClientRequestId=!0,this.longRunningOperationRetryTimeout=30,this.rpRegistrationRetryTimeout=30,this.acceptLanguage=n.default.DEFAULT_LANGUAGE,this.generateClientRequestId=!0,this.longRunningOperationRetryTimeout=30,t||(t={}),null!==t.acceptLanguage&&void 0!==t.acceptLanguage&&(this.acceptLanguage=t.acceptLanguage),null!==t.generateClientRequestId&&void 0!==t.generateClientRequestId&&(this.generateClientRequestId=t.generateClientRequestId),null!==t.longRunningOperationRetryTimeout&&void 0!==t.longRunningOperationRetryTimeout&&(this.longRunningOperationRetryTimeout=t.longRunningOperationRetryTimeout),null!==t.rpRegistrationRetryTimeout&&void 0!==t.rpRegistrationRetryTimeout&&(this.rpRegistrationRetryTimeout=t.rpRegistrationRetryTimeout);try{const e=n.default.msRestAzureVersion;this.addUserAgentInfo(`ms-rest-azure/${e}`)}catch(e){}}sendLongRunningRequest(e,t){return s(this,void 0,void 0,function*(){const r=this;let s;try{s=yield r.sendRequest(e)}catch(e){return Promise.reject(e)}let o;try{o=yield r.getLongRunningOperationResult(s,t)}catch(e){return Promise.reject(e)}return Promise.resolve(o)})}checkResponseStatusCodeFailed(e){const t=e.response.status,r=e.request.method;return 200!==t&&202!==t&&(201!==t||"PUT"!==r)&&(204!==t||"DELETE"!==r&&"POST"!==r)}getLongRunningOperationResult(e,t){return s(this,void 0,void 0,function*(){const r=this,s=e.request.method;if(r.checkResponseStatusCodeFailed(e))return Promise.reject(`Unexpected polling status code from long running operation `+`"${e.response.status}" for method "${s}".`);let n;try{(n=new i.default(e,r.longRunningOperationRetryTimeout)).optionsOfInitialRequest=t}catch(e){return Promise.reject(e)}const a=e.request.url;for(;![u.Succeeded,u.Failed,u.Canceled].some(e=>e===n.status);)if(yield o.delay(n.getTimeout()),n.azureAsyncOperationHeaderLink)yield r.updateStateFromAzureAsyncOperationHeader(n,!0);else if(n.locationHeaderLink)yield r.updateStateFromLocationHeader(s,n);else{if("PUT"!==s)return Promise.reject(new Error("Location header is missing from long running operation."));yield r.updateStateFromGetResourceOperation(a,n)}return n.status===u.Succeeded?!n.azureAsyncOperationHeaderLink&&n.resource||"PUT"!==s&&"PATCH"!==s?Promise.resolve(n.getOperationResponse()):(yield r.updateStateFromGetResourceOperation(a,n),Promise.resolve(n.getOperationResponse())):Promise.reject(n.getRestError())})}updateStateFromAzureAsyncOperationHeader(e,t=!1){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(e.azureAsyncOperationHeaderLink,e.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}const s=r.bodyAsJson;return s?s&&!s.status?Promise.reject(new Error(`The response "${r.bodyAsText}" from long running operation does not contain the status property.`)):(e.status=s.status,e.error=s.error,e.updateResponse(r.response),e.request=r.request,e.resource=void 0,t&&(e.resource=r.bodyAsJson),Promise.resolve()):Promise.reject(new Error("The response from long running operation does not contain a body."))})}updateStateFromLocationHeader(e,t){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(t.locationHeaderLink,t.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}const s=r.bodyAsJson;t.updateResponse(r.response),t.request=r.request;const n=r.response.status;if(202===n)t.status=u.InProgress;else{if(200!==n&&(201!==n||"PUT"!==e&&"PATCH"!==e)&&(204!==n||"DELETE"!==e&&"POST"!==e))return Promise.reject(new Error(`The response with status code ${n} from polling for `+`long running operation url "${t.locationHeaderLink}" is not valid.`));t.status=u.Succeeded,t.resource=s,t.error=new o.RestError(`Long running operation failed with status "${t.status}".`),t.error.code=t.status}})}updateStateFromGetResourceOperation(e,t){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(e,t.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}if(!r.bodyAsJson)return Promise.reject(new Error("The response from long running operation does not contain a body."));const s=r.bodyAsJson;return t.status=u.Succeeded,s&&s.properties&&s.properties.provisioningState&&(t.status=s.properties.provisioningState),t.updateResponse(r.response),t.request=r.request,t.resource=s,t.error=new o.RestError(`Long running operation failed with status "${t.status}".`),t.error.code=t.status,Promise.resolve()})}getStatus(e,t){return s(this,void 0,void 0,function*(){const r=this,s={method:"GET",url:e.replace(" ","%20"),headers:{}};if(t){const e=t.customHeaders;for(const t in e)e.hasOwnProperty(t)&&(s.headers[t]=e[t])}let n;try{n=yield r.sendRequest(s)}catch(e){return Promise.reject(e)}const i=n.response.status,u=n.bodyAsJson;if(200!==i&&201!==i&&202!==i&&204!==i){const e=new o.RestError(`Invalid status code with response body "${n.bodyAsText}" occurred `+`when polling for operation status.`);e.statusCode=i,e.request=o.stripRequest(n.request),e.response=n.response;try{e.body=u}catch(t){e.message+=` Error "${t}" occured while deserializing the response body - "${n.bodyAsText}".`,e.body=n.bodyAsText}return Promise.reject(e)}return Promise.resolve(n)})}}t.AzureServiceClient=a},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=r(0),o=r(1),n=s.default.LongRunningOperationStates;class i{constructor(e,t=30){this.retryTimeout=30,this.resultOfInitialRequest=e,this.retryTimeout=t,this.updateResponse(e.response),this.request=e.request;try{e.bodyAsText&&e.bodyAsText.length>0?this.resource=JSON.parse(e.bodyAsText):this.resource=e.bodyAsJson}catch(t){const r=new o.RestError(`Error "${t}" occurred in parsing the responseBody " +\n "while creating the PollingState for Long Running Operation- "${e.bodyAsText}"`);throw r.request=e.request,r.response=e.response,r}switch(this.response.status){case 202:this.status=n.InProgress;break;case 204:this.status=n.Succeeded;break;case 201:this.resource&&this.resource.properties&&this.resource.properties.provisioningState?this.status=this.resource.properties.provisioningState:this.status=n.InProgress;break;case 200:this.resource&&this.resource.properties&&this.resource.properties.provisioningState?this.status=this.resource.properties.provisioningState:this.status=n.Succeeded;break;default:this.status=n.Failed}}updateResponse(e){if(this.response=e,e&&e.headers){const t=e.headers.get("azure-asyncoperation"),r=e.headers.get("location");t&&(this.azureAsyncOperationHeaderLink=t),r&&(this.locationHeaderLink=r)}}getTimeout(){if(this.retryTimeout||0===this.retryTimeout)return 1e3*this.retryTimeout;if(this.response){const e=this.response.headers.get("retry-after");if(e)return 1e3*parseInt(e)}return 3e4}getOperationResponse(){const e=new o.HttpOperationResponse(this.request,this.response);return this.resource&&"string"==typeof this.resource.valueOf()?(e.bodyAsText=this.resource,e.bodyAsJson=JSON.parse(this.resource)):(e.bodyAsJson=this.resource,e.bodyAsText=JSON.stringify(this.resource)),e}getRestError(e){let t,r=void 0;const s=new o.RestError("");s.request=o.stripRequest(this.request),s.response=this.response;const n=this.resource;return t=e&&e.message?`Long running operation failed with error: "${e.message}".`:`Long running operation failed with status: "${this.status}".`,n&&(n.error&&n.error.message&&(t=`Long running operation failed with error: "${n.error.message}".`),n.error&&n.error.code&&(r=n.error.code)),s.message=t,r&&(s.code=r),s.body=n,s}}t.default=i},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CloudErrorMapper={required:!1,serializedName:"CloudError",type:{name:"Composite",className:"CloudError",modelProperties:{code:{required:!0,serializedName:"code",type:{name:"String"}},message:{required:!0,serializedName:"message",type:{name:"String"}},target:{required:!1,serializedName:"target",type:{name:"String"}},details:{required:!1,serializedName:"details",type:{name:"Sequence",element:{required:!1,serializedName:"CloudErrorElementType",type:{name:"Composite",className:"CloudError"}}}}}}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseResourceMapper={required:!1,serializedName:"BaseResource",type:{name:"Composite",className:"BaseResource",modelProperties:{}}}}]); \ No newline at end of file +var msRestAzure=function(e){var t={};function r(s){if(t[s])return t[s].exports;var o=t[s]={i:s,l:!1,exports:{}};return e[s].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,s){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:s})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=2)}([function(e,t){e.exports=msRest},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={LongRunningOperationStates:{InProgress:"InProgress",Succeeded:"Succeeded",Failed:"Failed",Canceled:"Canceled"},DEFAULT_LANGUAGE:"en-us",msRestAzureVersion:"0.1.0"}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=r(3);t.AzureServiceClient=s.AzureServiceClient;const o=r(1);t.Constants=o.default;const n=r(5);t.CloudErrorMapper=n.CloudErrorMapper;const i=r(6);t.BaseResourceMapper=i.BaseResourceMapper;const u=r(7);t.CognitiveServicesCredentials=u.CognitiveServicesCredentials},function(e,t,r){"use strict";var s=this&&this.__awaiter||function(e,t,r,s){return new(r||(r=Promise))(function(o,n){function i(e){try{a(s.next(e))}catch(e){n(e)}}function u(e){try{a(s.throw(e))}catch(e){n(e)}}function a(e){e.done?o(e.value):new r(function(t){t(e.value)}).then(i,u)}a((s=s.apply(e,t||[])).next())})};Object.defineProperty(t,"__esModule",{value:!0});const o=r(0),n=r(1),i=r(4),u=n.default.LongRunningOperationStates;t.AzureServiceClient=class extends o.ServiceClient{constructor(e,t){super(e,t),this.acceptLanguage=n.default.DEFAULT_LANGUAGE,this.generateClientRequestId=!0,this.longRunningOperationRetryTimeout=30,this.rpRegistrationRetryTimeout=30,this.acceptLanguage=n.default.DEFAULT_LANGUAGE,this.generateClientRequestId=!0,this.longRunningOperationRetryTimeout=30,t||(t={}),null!==t.acceptLanguage&&void 0!==t.acceptLanguage&&(this.acceptLanguage=t.acceptLanguage),null!==t.generateClientRequestId&&void 0!==t.generateClientRequestId&&(this.generateClientRequestId=t.generateClientRequestId),null!==t.longRunningOperationRetryTimeout&&void 0!==t.longRunningOperationRetryTimeout&&(this.longRunningOperationRetryTimeout=t.longRunningOperationRetryTimeout),null!==t.rpRegistrationRetryTimeout&&void 0!==t.rpRegistrationRetryTimeout&&(this.rpRegistrationRetryTimeout=t.rpRegistrationRetryTimeout);try{const e="ms-rest-azure",t=n.default.msRestAzureVersion;this.addUserAgentInfo(`${e}/${t}`)}catch(e){}}sendLongRunningRequest(e,t){return s(this,void 0,void 0,function*(){const r=this;let s,o;try{s=yield r.sendRequest(e)}catch(e){return Promise.reject(e)}try{o=yield r.getLongRunningOperationResult(s,t)}catch(e){return Promise.reject(e)}return Promise.resolve(o)})}checkResponseStatusCodeFailed(e){const t=e.response.status,r=e.request.method;return 200!==t&&202!==t&&(201!==t||"PUT"!==r)&&(204!==t||"DELETE"!==r&&"POST"!==r)}getLongRunningOperationResult(e,t){return s(this,void 0,void 0,function*(){const r=this,s=e.request.method;if(r.checkResponseStatusCodeFailed(e))return Promise.reject("Unexpected polling status code from long running operation "+`"${e.response.status}" for method "${s}".`);let n;try{(n=new i.default(e,r.longRunningOperationRetryTimeout)).optionsOfInitialRequest=t}catch(e){return Promise.reject(e)}const a=e.request.url;for(;![u.Succeeded,u.Failed,u.Canceled].some(e=>e===n.status);)if(yield o.delay(n.getTimeout()),n.azureAsyncOperationHeaderLink)yield r.updateStateFromAzureAsyncOperationHeader(n,!0);else if(n.locationHeaderLink)yield r.updateStateFromLocationHeader(s,n);else{if("PUT"!==s)return Promise.reject(new Error("Location header is missing from long running operation."));yield r.updateStateFromGetResourceOperation(a,n)}return n.status===u.Succeeded?!n.azureAsyncOperationHeaderLink&&n.resource||"PUT"!==s&&"PATCH"!==s?Promise.resolve(n.getOperationResponse()):(yield r.updateStateFromGetResourceOperation(a,n),Promise.resolve(n.getOperationResponse())):Promise.reject(n.getRestError())})}updateStateFromAzureAsyncOperationHeader(e,t=!1){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(e.azureAsyncOperationHeaderLink,e.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}const s=r.bodyAsJson;return s?s&&!s.status?Promise.reject(new Error(`The response "${r.bodyAsText}" from long running operation does not contain the status property.`)):(e.status=s.status,e.error=s.error,e.updateResponse(r.response),e.request=r.request,e.resource=void 0,t&&(e.resource=r.bodyAsJson),Promise.resolve()):Promise.reject(new Error("The response from long running operation does not contain a body."))})}updateStateFromLocationHeader(e,t){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(t.locationHeaderLink,t.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}const s=r.bodyAsJson;t.updateResponse(r.response),t.request=r.request;const n=r.response.status;if(202===n)t.status=u.InProgress;else{if(200!==n&&(201!==n||"PUT"!==e&&"PATCH"!==e)&&(204!==n||"DELETE"!==e&&"POST"!==e))return Promise.reject(new Error(`The response with status code ${n} from polling for `+`long running operation url "${t.locationHeaderLink}" is not valid.`));t.status=u.Succeeded,t.resource=s,t.error=new o.RestError(`Long running operation failed with status "${t.status}".`),t.error.code=t.status}})}updateStateFromGetResourceOperation(e,t){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(e,t.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}if(!r.bodyAsJson)return Promise.reject(new Error("The response from long running operation does not contain a body."));const s=r.bodyAsJson;return t.status=u.Succeeded,s&&s.properties&&s.properties.provisioningState&&(t.status=s.properties.provisioningState),t.updateResponse(r.response),t.request=r.request,t.resource=s,t.error=new o.RestError(`Long running operation failed with status "${t.status}".`),t.error.code=t.status,Promise.resolve()})}getStatus(e,t){return s(this,void 0,void 0,function*(){const r=this,s={method:"GET",url:e.replace(" ","%20"),headers:{}};if(t){const e=t.customHeaders;for(const t in e)e.hasOwnProperty(t)&&(s.headers[t]=e[t])}let n;try{n=yield r.sendRequest(s)}catch(e){return Promise.reject(e)}const i=n.response.status,u=n.bodyAsJson;if(200!==i&&201!==i&&202!==i&&204!==i){const e=new o.RestError(`Invalid status code with response body "${n.bodyAsText}" occurred `+"when polling for operation status.");e.statusCode=i,e.request=o.stripRequest(n.request),e.response=n.response;try{e.body=u}catch(t){e.message+=` Error "${t}" occured while deserializing the response body - "${n.bodyAsText}".`,e.body=n.bodyAsText}return Promise.reject(e)}return Promise.resolve(n)})}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=r(1),o=r(0),n=s.default.LongRunningOperationStates;t.default=class{constructor(e,t=30){this.retryTimeout=30,this.resultOfInitialRequest=e,this.retryTimeout=t,this.updateResponse(e.response),this.request=e.request;try{e.bodyAsText&&e.bodyAsText.length>0?this.resource=JSON.parse(e.bodyAsText):this.resource=e.bodyAsJson}catch(t){const r=new o.RestError(`Error "${t}" occurred in parsing the responseBody " +\n "while creating the PollingState for Long Running Operation- "${e.bodyAsText}"`);throw r.request=e.request,r.response=e.response,r}switch(this.response.status){case 202:this.status=n.InProgress;break;case 204:this.status=n.Succeeded;break;case 201:this.resource&&this.resource.properties&&this.resource.properties.provisioningState?this.status=this.resource.properties.provisioningState:this.status=n.InProgress;break;case 200:this.resource&&this.resource.properties&&this.resource.properties.provisioningState?this.status=this.resource.properties.provisioningState:this.status=n.Succeeded;break;default:this.status=n.Failed}}updateResponse(e){if(this.response=e,e&&e.headers){const t=e.headers.get("azure-asyncoperation"),r=e.headers.get("location");t&&(this.azureAsyncOperationHeaderLink=t),r&&(this.locationHeaderLink=r)}}getTimeout(){if(this.retryTimeout||0===this.retryTimeout)return 1e3*this.retryTimeout;if(this.response){const e=this.response.headers.get("retry-after");if(e)return 1e3*parseInt(e)}return 3e4}getOperationResponse(){const e=new o.HttpOperationResponse(this.request,this.response);return this.resource&&"string"==typeof this.resource.valueOf()?(e.bodyAsText=this.resource,e.bodyAsJson=JSON.parse(this.resource)):(e.bodyAsJson=this.resource,e.bodyAsText=JSON.stringify(this.resource)),e}getRestError(e){let t,r=void 0;const s=new o.RestError("");s.request=o.stripRequest(this.request),s.response=this.response;const n=this.resource;return t=e&&e.message?`Long running operation failed with error: "${e.message}".`:`Long running operation failed with status: "${this.status}".`,n&&(n.error&&n.error.message&&(t=`Long running operation failed with error: "${n.error.message}".`),n.error&&n.error.code&&(r=n.error.code)),s.message=t,r&&(s.code=r),s.body=n,s}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CloudErrorMapper={required:!1,serializedName:"CloudError",type:{name:"Composite",className:"CloudError",modelProperties:{code:{required:!0,serializedName:"code",type:{name:"String"}},message:{required:!0,serializedName:"message",type:{name:"String"}},target:{required:!1,serializedName:"target",type:{name:"String"}},details:{required:!1,serializedName:"details",type:{name:"Sequence",element:{required:!1,serializedName:"CloudErrorElementType",type:{name:"Composite",className:"CloudError"}}}}}}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseResourceMapper={required:!1,serializedName:"BaseResource",type:{name:"Composite",className:"BaseResource",modelProperties:{}}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=r(0);t.CognitiveServicesCredentials=class extends s.ApiKeyCredentials{constructor(e){if(!e||e&&"string"!=typeof e.valueOf())throw new Error("subscriptionKey cannot be null or undefined and must be of type string.");super({inHeader:{"Ocp-Apim-Subscription-Key":e,"X-BingApis-SDK-Client":"node-SDK"}})}}}]); \ No newline at end of file diff --git a/msRestAzureBundle.min.js.map b/msRestAzureBundle.min.js.map index 9a376b707654..4be80b5b1827 100644 --- a/msRestAzureBundle.min.js.map +++ b/msRestAzureBundle.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["msRestAzureBundle.js"],"names":["msRestAzure","modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","value","Constants","LongRunningOperationStates","InProgress","Succeeded","Failed","Canceled","DEFAULT_LANGUAGE","msRestAzureVersion","default","msRest","azureServiceClient_1","AzureServiceClient","constants_1","cloudError_1","CloudErrorMapper","baseResource_1","BaseResourceMapper","__awaiter","this","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","result","done","then","apply","pollingState_1","LroStates","ServiceClient","[object Object]","credentials","options","super","acceptLanguage","generateClientRequestId","longRunningOperationRetryTimeout","rpRegistrationRetryTimeout","undefined","moduleVersion","addUserAgentInfo","err","request","self","initialResponse","sendRequest","finalResponse","getLongRunningOperationResult","statusCode","response","status","method","resultOfInitialRequest","initialRequestMethod","checkResponseStatusCodeFailed","pollingState","optionsOfInitialRequest","error","resourceUrl","url","some","delay","getTimeout","azureAsyncOperationHeaderLink","updateStateFromAzureAsyncOperationHeader","locationHeaderLink","updateStateFromLocationHeader","Error","updateStateFromGetResourceOperation","resource","getOperationResponse","getRestError","inPostOrDelete","getStatus","parsedResponse","bodyAsJson","bodyAsText","updateResponse","RestError","code","properties","provisioningState","operationUrl","httpRequest","replace","headers","customHeaders","headerName","operationResponse","responseBody","stripRequest","body","badResponse","message","PollingState","retryTimeout","length","JSON","parse","deserializationError","asyncOperationHeader","locationHeader","retryAfter","parseInt","HttpOperationResponse","valueOf","stringify","errMsg","errCode","required","serializedName","type","className","modelProperties","target","details","element"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["msRestAzureBundle.js"],"names":["msRestAzure","modules","installedModules","__webpack_require__","moduleId","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","msRest","value","default","LongRunningOperationStates","InProgress","Succeeded","Failed","Canceled","DEFAULT_LANGUAGE","msRestAzureVersion","azureServiceClient_1","AzureServiceClient","constants_1","Constants","cloudError_1","CloudErrorMapper","baseResource_1","BaseResourceMapper","cognitiveServicesCredentials_1","CognitiveServicesCredentials","__awaiter","this","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","result","done","then","apply","pollingState_1","LroStates","ServiceClient","[object Object]","credentials","options","super","acceptLanguage","generateClientRequestId","longRunningOperationRetryTimeout","rpRegistrationRetryTimeout","undefined","moduleName","moduleVersion","addUserAgentInfo","err","request","self","initialResponse","finalResponse","sendRequest","getLongRunningOperationResult","statusCode","response","status","method","resultOfInitialRequest","initialRequestMethod","checkResponseStatusCodeFailed","pollingState","optionsOfInitialRequest","error","resourceUrl","url","some","delay","getTimeout","azureAsyncOperationHeaderLink","updateStateFromAzureAsyncOperationHeader","locationHeaderLink","updateStateFromLocationHeader","Error","updateStateFromGetResourceOperation","resource","getOperationResponse","getRestError","inPostOrDelete","getStatus","parsedResponse","bodyAsJson","bodyAsText","updateResponse","RestError","code","properties","provisioningState","operationUrl","httpRequest","replace","headers","customHeaders","headerName","operationResponse","responseBody","stripRequest","body","badResponse","message","retryTimeout","length","JSON","parse","deserializationError","asyncOperationHeader","locationHeader","retryAfter","parseInt","HttpOperationResponse","valueOf","stringify","errMsg","errCode","required","serializedName","type","className","modelProperties","target","details","element","ms_rest_js_1","ApiKeyCredentials","subscriptionKey","inHeader","Ocp-Apim-Subscription-Key","X-BingApis-SDK-Client"],"mappings":"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"} \ No newline at end of file diff --git a/typings/lib/credentials/cognitiveServicesCredentials.d.ts b/typings/lib/credentials/cognitiveServicesCredentials.d.ts new file mode 100644 index 000000000000..2a3bcc0d1e2b --- /dev/null +++ b/typings/lib/credentials/cognitiveServicesCredentials.d.ts @@ -0,0 +1,10 @@ +import { ApiKeyCredentials } from "ms-rest-js"; +/** + * Creates a new CognitiveServicesCredentials object. + * + * @constructor + * @param {string} subscriptionKey The CognitiveServices subscription key + */ +export declare class CognitiveServicesCredentials extends ApiKeyCredentials { + constructor(subscriptionKey: string); +} diff --git a/typings/lib/msRestAzure.d.ts b/typings/lib/msRestAzure.d.ts index 18092ef64c13..6d9e534df1e1 100644 --- a/typings/lib/msRestAzure.d.ts +++ b/typings/lib/msRestAzure.d.ts @@ -2,4 +2,5 @@ import { AzureServiceClientOptions, AzureServiceClient } from "./azureServiceCli import Constants from "./util/constants"; import { CloudError, CloudErrorMapper } from "./cloudError"; import { BaseResource, BaseResourceMapper } from "./baseResource"; -export { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper }; +import { CognitiveServicesCredentials } from "./credentials/cognitiveServicesCredentials"; +export { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper, CognitiveServicesCredentials }; From 618beab089b478c64acd43d0a614e654f0922b0a Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Mon, 2 Apr 2018 17:43:22 -0700 Subject: [PATCH 014/289] Update changelog --- Changelog.md | 4 + package-lock.json | 5842 ++++++++++++++++++++++----------------------- package.json | 4 +- 3 files changed, 2923 insertions(+), 2927 deletions(-) diff --git a/Changelog.md b/Changelog.md index 88ada0c87f12..5b944581eaa0 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,7 @@ +### 0.2.8 - 2017/04/02 +- Updated ms-rest-js to 0.2.8 +- Added CognitiveServicesCredentials + ### 0.2.1 - 2017/10/25 - Updating the minimum version of dependency "ms-rest-js": "^0.2.3". This brings in the change (removal of "bodyAsStream" property) done to HttpOperationResponse class diff --git a/package-lock.json b/package-lock.json index 017397170202..ef7ec6d126ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,25 +1,62 @@ { "name": "ms-rest-azure-js", - "version": "0.2.1", + "version": "0.2.8", "lockfileVersion": 1, "requires": true, "dependencies": { + "@types/form-data": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", + "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", + "requires": { + "@types/node": "9.6.1" + } + }, + "@types/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@types/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==", + "requires": { + "@types/node": "9.6.1" + } + }, "@types/mocha": { - "version": "2.2.43", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.43.tgz", - "integrity": "sha512-xNlAmH+lRJdUMXClMTI9Y0pRqIojdxfm7DHsIxoB2iTzu3fnPmSMEN8SsSx0cdwV36d02PWCWaDUoZPDSln+xw==", + "version": "2.2.48", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.48.tgz", + "integrity": "sha512-nlK/iyETgafGli8Zh9zJVCTicvU3iajSkRwOh3Hhiva598CMqNJ4NcVCGMTGKpGpTYj/9R8RLzS9NAykSSCqGw==", "dev": true }, + "@types/node": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.1.tgz", + "integrity": "sha512-xwlHq5DXQFRpe+u6hmmNkzYk/3oxxqDp71a/AJMupOQYmxyaBetqrVMqdNlSQfbg7XTJYD8vARjf3Op06OzdtQ==" + }, + "@types/node-fetch": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-1.6.7.tgz", + "integrity": "sha1-UhB46PDGmhWOUCIAWsqS0mIPbVc=", + "requires": { + "@types/node": "9.6.1" + } + }, "@types/should": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/@types/should/-/should-8.3.0.tgz", "integrity": "sha1-4rRgJDaF2+N3GC857zjTf00Veto=", "dev": true }, + "@types/uuid": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.3.tgz", + "integrity": "sha512-5fRLCYhLtDb3hMWqQyH10qtF+Ud2JnNCXTCZ+9ktNdCcgslcuXkDTkFcJNk++MT29yDntDnlF1+jD+uVGumsbw==", + "requires": { + "@types/node": "9.6.1" + } + }, "acorn": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", - "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", "dev": true }, "acorn-dynamic-import": { @@ -40,21 +77,21 @@ } }, "ajv": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz", - "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", + "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", "dev": true, "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" + "uri-js": "3.0.2" } }, "ajv-keywords": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.0.tgz", - "integrity": "sha1-opbhf3v658HOT34N5T0pyzIWLfA=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz", + "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=", "dev": true }, "align-text": { @@ -75,49 +112,61 @@ "dev": true }, "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.0" + "color-convert": "1.9.1" } }, "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "micromatch": "2.3.11", + "micromatch": "3.1.10", "normalize-path": "2.1.1" } }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "arr-flatten": "1.1.0" + "sprintf-js": "1.0.3" } }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, "asn1.js": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", - "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "dev": true, "requires": { "bn.js": "4.11.8", @@ -134,13 +183,19 @@ "util": "0.10.3" } }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { - "lodash": "4.17.4" + "lodash": "4.17.5" } }, "async-each": { @@ -149,6 +204,17 @@ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.0.tgz", + "integrity": "sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw==", + "dev": true + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -193,22 +259,48 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + } + } + }, "base64-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", - "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", + "integrity": "sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==", "dev": true }, "big.js": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", - "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", "dev": true }, "binary-extensions": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", - "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", "dev": true }, "bn.js": { @@ -218,9 +310,9 @@ "dev": true }, "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "1.0.0", @@ -228,14 +320,49 @@ } }, "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } } }, "brorand": { @@ -251,9 +378,9 @@ "dev": true }, "browserify-aes": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.8.tgz", - "integrity": "sha512-WYCMOT/PtGTlpOKFht0YJFYcPy6pLCR98CtWfzK13zoynLlBMvAdEMSRGmgnJCw2M2j/5qxBkinZQFobieM8dQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", "dev": true, "requires": { "buffer-xor": "1.0.3", @@ -270,7 +397,7 @@ "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", "dev": true, "requires": { - "browserify-aes": "1.0.8", + "browserify-aes": "1.1.1", "browserify-des": "1.0.0", "evp_bytestokey": "1.0.3" } @@ -293,7 +420,7 @@ "dev": true, "requires": { "bn.js": "4.11.8", - "randombytes": "2.0.5" + "randombytes": "2.0.6" } }, "browserify-sign": { @@ -312,12 +439,12 @@ } }, "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dev": true, "requires": { - "pako": "0.2.9" + "pako": "1.0.6" } }, "buffer": { @@ -326,8 +453,8 @@ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { - "base64-js": "1.2.1", - "ieee754": "1.1.8", + "base64-js": "1.2.3", + "ieee754": "1.1.11", "isarray": "1.0.0" } }, @@ -349,6 +476,23 @@ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", "dev": true }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + } + }, "camelcase": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", @@ -366,47 +510,51 @@ } }, "chalk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", - "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", + "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", "dev": true, "requires": { - "ansi-styles": "3.2.0", + "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" + "supports-color": "5.3.0" }, "dependencies": { "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", + "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "3.0.0" } } } }, "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", + "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", "dev": true, "requires": { - "anymatch": "1.3.2", + "anymatch": "2.0.0", "async-each": "1.0.1", - "glob-parent": "2.0.0", + "braces": "2.3.1", + "fsevents": "1.1.3", + "glob-parent": "3.1.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", - "is-glob": "2.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "readdirp": "2.1.0", + "upath": "1.0.4" } }, "cipher-base": { @@ -419,6 +567,92 @@ "safe-buffer": "5.1.1" } }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, "cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", @@ -430,22 +664,26 @@ "wordwrap": "0.0.2" } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { "color-name": "1.1.3" @@ -457,11 +695,13 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "1.0.0" + } }, "commander": { "version": "2.9.0", @@ -472,6 +712,12 @@ "graceful-readlink": "1.0.1" } }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -493,6 +739,12 @@ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", "dev": true }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -518,7 +770,7 @@ "cipher-base": "1.0.4", "inherits": "2.0.3", "ripemd160": "2.0.1", - "sha.js": "2.4.8" + "sha.js": "2.4.11" } }, "create-hmac": { @@ -532,7 +784,7 @@ "inherits": "2.0.3", "ripemd160": "2.0.1", "safe-buffer": "5.1.1", - "sha.js": "2.4.8" + "sha.js": "2.4.11" } }, "cross-spawn": { @@ -541,15 +793,15 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.1", + "lru-cache": "4.1.2", "shebang-command": "1.2.0", "which": "1.3.0" } }, "crypto-browserify": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", - "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { "browserify-cipher": "1.0.0", @@ -561,7 +813,8 @@ "inherits": "2.0.3", "pbkdf2": "3.0.14", "public-encrypt": "4.0.0", - "randombytes": "2.0.5" + "randombytes": "2.0.6", + "randomfill": "1.0.4" } }, "d": { @@ -570,7 +823,7 @@ "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "es5-ext": "0.10.30" + "es5-ext": "0.10.42" } }, "date-now": { @@ -594,6 +847,27 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", @@ -617,14 +891,14 @@ "dev": true, "requires": { "bn.js": "4.11.8", - "miller-rabin": "4.0.0", - "randombytes": "2.0.5" + "miller-rabin": "4.0.1", + "randombytes": "2.0.6" } }, "domain-browser": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, "elliptic": { @@ -648,6 +922,14 @@ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "0.4.19" + } + }, "enhanced-resolve": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", @@ -661,12 +943,12 @@ } }, "errno": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", - "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "dev": true, "requires": { - "prr": "0.0.0" + "prr": "1.0.1" } }, "error-ex": { @@ -679,23 +961,29 @@ } }, "es5-ext": { - "version": "0.10.30", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.30.tgz", - "integrity": "sha1-cUGhaDZpfbq/qq7uQUlc4p9SyTk=", + "version": "0.10.42", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz", + "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", "dev": true, "requires": { - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1" + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "next-tick": "1.0.0" } }, + "es6-denodeify": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-denodeify/-/es6-denodeify-0.1.5.tgz", + "integrity": "sha1-MdTV/pxVA+ElRgQ5MQ4WoqPznB8=" + }, "es6-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", - "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.30", + "es5-ext": "0.10.42", "es6-symbol": "3.1.1" } }, @@ -706,8 +994,8 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", + "es5-ext": "0.10.42", + "es6-iterator": "2.0.3", "es6-set": "0.1.5", "es6-symbol": "3.1.1", "event-emitter": "0.3.5" @@ -720,8 +1008,8 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", + "es5-ext": "0.10.42", + "es6-iterator": "2.0.3", "es6-symbol": "3.1.1", "event-emitter": "0.3.5" } @@ -733,7 +1021,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.30" + "es5-ext": "0.10.42" } }, "es6-weak-map": { @@ -743,8 +1031,8 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", + "es5-ext": "0.10.42", + "es6-iterator": "2.0.3", "es6-symbol": "3.1.1" } }, @@ -762,18 +1050,23 @@ "requires": { "es6-map": "0.1.5", "es6-weak-map": "2.0.2", - "esrecurse": "4.2.0", + "esrecurse": "4.2.1", "estraverse": "4.2.0" } }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, "esrecurse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", - "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" + "estraverse": "4.2.0" } }, "estraverse": { @@ -795,7 +1088,7 @@ "dev": true, "requires": { "d": "1.0.0", - "es5-ext": "0.10.30" + "es5-ext": "0.10.42" } }, "events": { @@ -830,55 +1123,202 @@ } }, "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "is-posix-bracket": "0.1.1" + "debug": "2.6.8", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } } }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { - "fill-range": "2.2.3" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } } }, "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } }, "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", "dev": true }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "dev": true }, + "fetch-cookie": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.7.0.tgz", + "integrity": "sha512-Mm5pGlT3agW6t71xVM7vMZPIvI7T4FaTuFW4jari6dVzYHFDb3WZZsGpN22r/o3XMdkM0E7sPd1EGeyVbH2Tgg==", + "requires": { + "es6-denodeify": "0.1.5", + "tough-cookie": "2.3.4" + } + }, "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, "find-up": { @@ -896,2865 +1336,1856 @@ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "2.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", - "dev": true - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "hash-base": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", - "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "1.1.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", - "dev": true - }, - "https-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", - "dev": true - }, - "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "interpret": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", - "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "is-arrayish": { + "fragment-cache": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "1.10.0" - } - }, - "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { - "is-primitive": "2.0.0" + "map-cache": "0.2.2" } }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { + "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", "dev": true, + "optional": true, "requires": { - "kind-of": "3.2.2" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "1.0.0" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" - } - }, - "loader-runner": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", - "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", - "dev": true - }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true, - "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "dev": true, - "requires": { - "lodash._baseassign": "3.2.0", - "lodash._basecreate": "3.0.3", - "lodash._isiterateecall": "3.0.9" - } - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" - } - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", - "dev": true, - "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" + "nan": "2.10.0", + "node-pre-gyp": "0.6.39" }, "dependencies": { - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "abbrev": { + "version": "1.1.0", + "bundled": true, "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "co": "4.6.0", + "json-stable-stringify": "1.0.1" } - } - } - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "1.1.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "0.1.4", - "readable-stream": "2.3.3" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - } - }, - "miller-rabin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", - "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" - } - }, - "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", - "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", - "dev": true, - "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.6.8", - "diff": "3.2.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.1", - "growl": "1.9.2", - "he": "1.1.1", - "json3": "3.3.2", - "lodash.create": "3.1.1", - "mkdirp": "0.5.1", - "supports-color": "3.1.2" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "ms-rest-js": { - "version": "file:../ms-rest-js", - "requires": { - "@types/form-data": "2.2.0", - "@types/is-stream": "1.1.0", - "@types/node": "8.0.28", - "@types/node-fetch": "1.6.7", - "@types/uuid": "3.4.2", - "detect-node": "2.0.3", - "fetch-cookie": "0.6.0", - "fetch-ponyfill": "4.1.0", - "form-data": "2.3.1", - "is-buffer": "1.1.5", - "is-stream": "1.1.0", - "moment": "2.18.1", - "url-parse": "1.1.9", - "uuid": "3.1.0" - }, - "dependencies": { - "@types/form-data": { - "version": "2.2.0", + }, + "ansi-regex": { + "version": "2.1.1", "bundled": true, - "requires": { - "@types/node": "8.0.28" - } + "dev": true }, - "@types/is-stream": { - "version": "1.1.0", + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", "bundled": true, + "dev": true, + "optional": true, "requires": { - "@types/node": "8.0.28" + "delegates": "1.0.0", + "readable-stream": "2.2.9" } }, - "@types/mocha": { - "version": "2.2.43", - "bundled": true + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true }, - "@types/node": { - "version": "8.0.28", - "bundled": true + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true }, - "@types/node-fetch": { - "version": "1.6.7", + "asynckit": { + "version": "0.4.0", "bundled": true, - "requires": { - "@types/node": "8.0.28" - } + "dev": true, + "optional": true }, - "@types/should": { - "version": "8.3.0", - "bundled": true + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true }, - "@types/uuid": { - "version": "3.4.2", + "aws4": { + "version": "1.6.0", "bundled": true, - "requires": { - "@types/node": "8.0.28" - } + "dev": true, + "optional": true }, - "acorn": { - "version": "5.1.2", - "bundled": true + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true }, - "acorn-dynamic-import": { - "version": "2.0.2", + "bcrypt-pbkdf": { + "version": "1.0.1", "bundled": true, + "dev": true, + "optional": true, "requires": { - "acorn": "4.0.13" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "bundled": true - } + "tweetnacl": "0.14.5" } }, - "ajv": { - "version": "5.2.2", + "block-stream": { + "version": "0.0.9", "bundled": true, + "dev": true, "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" + "inherits": "2.0.3" } }, - "ajv-keywords": { - "version": "2.1.0", - "bundled": true - }, - "align-text": { - "version": "0.1.4", + "boom": { + "version": "2.10.1", "bundled": true, + "dev": true, "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "hoek": "2.16.3" } }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "ansi-styles": { - "version": "3.2.0", + "brace-expansion": { + "version": "1.1.7", "bundled": true, + "dev": true, "requires": { - "color-convert": "1.9.0" + "balanced-match": "0.4.2", + "concat-map": "0.0.1" } }, - "anymatch": { - "version": "1.3.2", + "buffer-shims": { + "version": "1.0.0", "bundled": true, - "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" - } + "dev": true }, - "arr-diff": { - "version": "2.0.0", + "caseless": { + "version": "0.12.0", "bundled": true, - "requires": { - "arr-flatten": "1.1.0" - } + "dev": true, + "optional": true }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true }, - "array-unique": { - "version": "0.2.1", - "bundled": true + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true }, - "asn1.js": { - "version": "4.9.1", + "combined-stream": { + "version": "1.0.5", "bundled": true, + "dev": true, "requires": { - "bn.js": "4.11.8", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "delayed-stream": "1.0.0" } }, - "assert": { - "version": "1.4.1", + "concat-map": { + "version": "0.0.1", "bundled": true, - "requires": { - "util": "0.10.3" - } + "dev": true }, - "async": { - "version": "2.5.0", + "console-control-strings": { + "version": "1.1.0", "bundled": true, - "requires": { - "lodash": "4.17.4" - } + "dev": true }, - "async-each": { - "version": "1.0.1", - "bundled": true + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true }, - "asynckit": { - "version": "0.4.0", - "bundled": true + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } }, - "babel-code-frame": { - "version": "6.26.0", + "dashdash": { + "version": "1.14.1", "bundled": true, + "dev": true, + "optional": true, "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "assert-plus": "1.0.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "bundled": true - }, - "chalk": { - "version": "1.1.3", + "assert-plus": { + "version": "1.0.0", "bundled": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true + "dev": true, + "optional": true } } }, - "balanced-match": { - "version": "1.0.0", - "bundled": true + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } }, - "base64-js": { - "version": "1.2.1", - "bundled": true + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true }, - "big.js": { - "version": "3.2.0", - "bundled": true + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true }, - "binary-extensions": { - "version": "1.10.0", - "bundled": true + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true }, - "bn.js": { - "version": "4.11.8", - "bundled": true + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true }, - "brace-expansion": { - "version": "1.1.8", + "ecc-jsbn": { + "version": "0.1.1", "bundled": true, + "dev": true, + "optional": true, "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" + "jsbn": "0.1.1" } }, - "braces": { - "version": "1.8.5", + "extend": { + "version": "3.0.1", "bundled": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } + "dev": true, + "optional": true }, - "brorand": { - "version": "1.1.0", - "bundled": true + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true }, - "browser-stdout": { - "version": "1.3.0", - "bundled": true + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true }, - "browserify-aes": { - "version": "1.0.8", + "form-data": { + "version": "2.1.4", "bundled": true, + "dev": true, + "optional": true, "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" } }, - "browserify-cipher": { + "fs.realpath": { "version": "1.0.0", "bundled": true, - "requires": { - "browserify-aes": "1.0.8", - "browserify-des": "1.0.0", - "evp_bytestokey": "1.0.3" - } + "dev": true }, - "browserify-des": { - "version": "1.0.0", + "fstream": { + "version": "1.0.11", "bundled": true, + "dev": true, "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.0", - "inherits": "2.0.3" + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" } }, - "browserify-rsa": { - "version": "4.0.1", + "fstream-ignore": { + "version": "1.0.5", "bundled": true, + "dev": true, + "optional": true, "requires": { - "bn.js": "4.11.8", - "randombytes": "2.0.5" - } - }, - "browserify-sign": { - "version": "4.0.4", - "bundled": true, - "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "elliptic": "6.4.0", + "fstream": "1.0.11", "inherits": "2.0.3", - "parse-asn1": "5.1.0" - } - }, - "browserify-zlib": { - "version": "0.1.4", - "bundled": true, - "requires": { - "pako": "0.2.9" - } - }, - "buffer": { - "version": "4.9.1", - "bundled": true, - "requires": { - "base64-js": "1.2.1", - "ieee754": "1.1.8", - "isarray": "1.0.0" + "minimatch": "3.0.4" } }, - "buffer-xor": { - "version": "1.0.3", - "bundled": true - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "bundled": true - }, - "camelcase": { - "version": "1.2.1", - "bundled": true - }, - "center-align": { - "version": "0.1.3", + "gauge": { + "version": "2.7.4", "bundled": true, + "dev": true, + "optional": true, "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" } }, - "chalk": { - "version": "2.1.0", + "getpass": { + "version": "0.1.7", "bundled": true, + "dev": true, + "optional": true, "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.4.0" + "assert-plus": "1.0.0" }, "dependencies": { - "has-flag": { - "version": "2.0.0", - "bundled": true - }, - "supports-color": { - "version": "4.4.0", + "assert-plus": { + "version": "1.0.0", "bundled": true, - "requires": { - "has-flag": "2.0.0" - } + "dev": true, + "optional": true } } }, - "chokidar": { - "version": "1.7.0", + "glob": { + "version": "7.1.2", "bundled": true, + "dev": true, "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "glob-parent": "2.0.0", + "fs.realpath": "1.0.0", + "inflight": "1.0.6", "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, - "cipher-base": { - "version": "1.0.4", + "graceful-fs": { + "version": "4.1.11", "bundled": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } + "dev": true }, - "cliui": { - "version": "2.1.0", + "har-schema": { + "version": "1.0.5", "bundled": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - } - }, - "co": { - "version": "4.6.0", - "bundled": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true + "dev": true, + "optional": true }, - "color-convert": { - "version": "1.9.0", + "har-validator": { + "version": "4.2.1", "bundled": true, + "dev": true, + "optional": true, "requires": { - "color-name": "1.1.3" + "ajv": "4.11.8", + "har-schema": "1.0.5" } }, - "color-name": { - "version": "1.1.3", - "bundled": true - }, - "colors": { - "version": "1.1.2", - "bundled": true - }, - "combined-stream": { - "version": "1.0.5", + "has-unicode": { + "version": "2.0.1", "bundled": true, - "requires": { - "delayed-stream": "1.0.0" - } + "dev": true, + "optional": true }, - "commander": { - "version": "2.9.0", + "hawk": { + "version": "3.1.3", "bundled": true, + "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" } }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-browserify": { - "version": "1.1.0", + "hoek": { + "version": "2.16.3", "bundled": true, - "requires": { - "date-now": "0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true + "dev": true }, - "create-ecdh": { - "version": "4.0.0", + "http-signature": { + "version": "1.1.1", "bundled": true, + "dev": true, + "optional": true, "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.0" + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" } }, - "create-hash": { - "version": "1.1.3", + "inflight": { + "version": "1.0.6", "bundled": true, + "dev": true, "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "sha.js": "2.4.8" + "once": "1.4.0", + "wrappy": "1.0.2" } }, - "create-hmac": { - "version": "1.1.6", + "inherits": { + "version": "2.0.3", "bundled": true, - "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.8" - } + "dev": true }, - "cross-spawn": { - "version": "5.1.0", + "ini": { + "version": "1.3.4", "bundled": true, - "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" - } + "dev": true, + "optional": true }, - "crypto-browserify": { - "version": "3.11.1", + "is-fullwidth-code-point": { + "version": "1.0.0", "bundled": true, + "dev": true, "requires": { - "browserify-cipher": "1.0.0", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.0", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "diffie-hellman": "5.0.2", - "inherits": "2.0.3", - "pbkdf2": "3.0.14", - "public-encrypt": "4.0.0", - "randombytes": "2.0.5" + "number-is-nan": "1.0.1" } }, - "d": { + "is-typedarray": { "version": "1.0.0", "bundled": true, - "requires": { - "es5-ext": "0.10.30" - } - }, - "date-now": { - "version": "0.1.4", - "bundled": true + "dev": true, + "optional": true }, - "debug": { - "version": "2.6.8", + "isarray": { + "version": "1.0.0", "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "bundled": true + "dev": true }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true }, - "des.js": { - "version": "1.0.0", + "jodid25519": { + "version": "1.0.2", "bundled": true, + "dev": true, + "optional": true, "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "jsbn": "0.1.1" } }, - "detect-node": { - "version": "2.0.3", - "bundled": true - }, - "diff": { - "version": "3.2.0", - "bundled": true - }, - "diffie-hellman": { - "version": "5.0.2", + "jsbn": { + "version": "0.1.1", "bundled": true, - "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.0", - "randombytes": "2.0.5" - } + "dev": true, + "optional": true }, - "domain-browser": { - "version": "1.1.7", - "bundled": true + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true }, - "elliptic": { - "version": "6.4.0", + "json-stable-stringify": { + "version": "1.0.1", "bundled": true, + "dev": true, + "optional": true, "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.3", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" + "jsonify": "0.0.0" } }, - "emojis-list": { - "version": "2.1.0", - "bundled": true - }, - "encoding": { - "version": "0.1.12", + "json-stringify-safe": { + "version": "5.0.1", "bundled": true, - "requires": { - "iconv-lite": "0.4.19" - } + "dev": true, + "optional": true }, - "enhanced-resolve": { - "version": "3.4.1", + "jsonify": { + "version": "0.0.0", "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "object-assign": "4.1.1", - "tapable": "0.2.8" - } + "dev": true, + "optional": true }, - "errno": { - "version": "0.1.4", + "jsprim": { + "version": "1.4.0", "bundled": true, + "dev": true, + "optional": true, "requires": { - "prr": "0.0.0" + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } } }, - "error-ex": { - "version": "1.3.1", + "mime-db": { + "version": "1.27.0", "bundled": true, - "requires": { - "is-arrayish": "0.2.1" - } + "dev": true }, - "es5-ext": { - "version": "0.10.30", + "mime-types": { + "version": "2.1.15", "bundled": true, + "dev": true, "requires": { - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1" + "mime-db": "1.27.0" } }, - "es6-denodeify": { - "version": "0.1.5", - "bundled": true - }, - "es6-iterator": { - "version": "2.0.1", + "minimatch": { + "version": "3.0.4", "bundled": true, + "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-symbol": "3.1.1" + "brace-expansion": "1.1.7" } }, - "es6-map": { - "version": "0.1.5", + "minimist": { + "version": "0.0.8", "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } + "dev": true }, - "es6-set": { - "version": "0.1.5", + "mkdirp": { + "version": "0.5.1", "bundled": true, + "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" + "minimist": "0.0.8" } }, - "es6-symbol": { - "version": "3.1.1", + "ms": { + "version": "2.0.0", "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30" - } + "dev": true, + "optional": true }, - "es6-weak-map": { - "version": "2.0.2", + "node-pre-gyp": { + "version": "0.6.39", "bundled": true, + "dev": true, + "optional": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1" + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" } }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true - }, - "escope": { - "version": "3.6.0", + "nopt": { + "version": "4.0.1", "bundled": true, + "dev": true, + "optional": true, "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.2.0", - "estraverse": "4.2.0" + "abbrev": "1.1.0", + "osenv": "0.1.4" } }, - "esrecurse": { - "version": "4.2.0", + "npmlog": { + "version": "4.1.0", "bundled": true, + "dev": true, + "optional": true, "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" } }, - "estraverse": { - "version": "4.2.0", - "bundled": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true - }, - "event-emitter": { - "version": "0.3.5", + "number-is-nan": { + "version": "1.0.1", "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30" - } + "dev": true }, - "events": { - "version": "1.1.1", - "bundled": true + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true }, - "evp_bytestokey": { - "version": "1.0.3", + "object-assign": { + "version": "4.1.1", "bundled": true, - "requires": { - "md5.js": "1.3.4", - "safe-buffer": "5.1.1" - } + "dev": true, + "optional": true }, - "execa": { - "version": "0.7.0", + "once": { + "version": "1.4.0", "bundled": true, + "dev": true, "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "wrappy": "1.0.2" } }, - "expand-brackets": { - "version": "0.1.5", + "os-homedir": { + "version": "1.0.2", "bundled": true, - "requires": { - "is-posix-bracket": "0.1.1" - } + "dev": true, + "optional": true }, - "expand-range": { - "version": "1.8.2", + "os-tmpdir": { + "version": "1.0.2", "bundled": true, - "requires": { - "fill-range": "2.2.3" - } + "dev": true, + "optional": true }, - "extglob": { - "version": "0.3.2", + "osenv": { + "version": "0.1.4", "bundled": true, + "dev": true, + "optional": true, "requires": { - "is-extglob": "1.0.0" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, - "fast-deep-equal": { - "version": "1.0.0", - "bundled": true + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true }, - "fetch-cookie": { - "version": "0.6.0", + "performance-now": { + "version": "0.2.0", "bundled": true, - "requires": { - "es6-denodeify": "0.1.5", - "tough-cookie": "2.3.2" - } + "dev": true, + "optional": true }, - "fetch-ponyfill": { - "version": "4.1.0", + "process-nextick-args": { + "version": "1.0.7", "bundled": true, - "requires": { - "fetch-cookie": "0.6.0", - "node-fetch": "1.7.3" - } + "dev": true }, - "filename-regex": { - "version": "2.0.1", - "bundled": true + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true }, - "fill-range": { - "version": "2.2.3", + "qs": { + "version": "6.4.0", "bundled": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } + "dev": true, + "optional": true }, - "find-up": { - "version": "2.1.0", + "rc": { + "version": "1.2.1", "bundled": true, + "dev": true, + "optional": true, "requires": { - "locate-path": "2.0.0" + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } } }, - "for-in": { - "version": "1.0.2", - "bundled": true - }, - "for-own": { - "version": "0.1.5", + "readable-stream": { + "version": "2.2.9", "bundled": true, + "dev": true, "requires": { - "for-in": "1.0.2" + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" } }, - "form-data": { - "version": "2.3.1", + "request": { + "version": "2.81.0", "bundled": true, + "dev": true, + "optional": true, "requires": { - "asynckit": "0.4.0", + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", "combined-stream": "1.0.5", - "mime-types": "2.1.17" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "glob": { - "version": "7.1.1", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", "bundled": true, + "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "glob": "7.1.2" } }, - "glob-base": { - "version": "0.3.0", + "safe-buffer": { + "version": "5.0.1", "bundled": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } + "dev": true }, - "glob-parent": { - "version": "2.0.0", + "semver": { + "version": "5.3.0", "bundled": true, - "requires": { - "is-glob": "2.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "graceful-readlink": { - "version": "1.0.1", - "bundled": true - }, - "growl": { - "version": "1.9.2", - "bundled": true + "dev": true, + "optional": true }, - "has-ansi": { + "set-blocking": { "version": "2.0.0", "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-flag": { - "version": "1.0.0", - "bundled": true + "dev": true, + "optional": true }, - "hash-base": { - "version": "2.0.2", + "signal-exit": { + "version": "3.0.2", "bundled": true, - "requires": { - "inherits": "2.0.3" - } + "dev": true, + "optional": true }, - "hash.js": { - "version": "1.1.3", + "sntp": { + "version": "1.0.9", "bundled": true, + "dev": true, "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "hoek": "2.16.3" } }, - "he": { - "version": "1.1.1", - "bundled": true - }, - "hmac-drbg": { - "version": "1.0.1", + "sshpk": { + "version": "1.13.0", "bundled": true, - "requires": { - "hash.js": "1.1.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } } }, - "hosted-git-info": { - "version": "2.5.0", - "bundled": true - }, - "https-browserify": { - "version": "0.0.1", - "bundled": true - }, - "iconv-lite": { - "version": "0.4.19", - "bundled": true - }, - "ieee754": { - "version": "1.1.8", - "bundled": true - }, - "indexof": { - "version": "0.0.1", - "bundled": true - }, - "inflight": { - "version": "1.0.6", + "string-width": { + "version": "1.0.2", "bundled": true, + "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "interpret": { - "version": "1.0.4", - "bundled": true - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true - }, - "is-binary-path": { + "string_decoder": { "version": "1.0.1", "bundled": true, + "dev": true, "requires": { - "binary-extensions": "1.10.0" - } - }, - "is-buffer": { - "version": "1.1.5", - "bundled": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "requires": { - "builtin-modules": "1.1.1" + "safe-buffer": "5.0.1" } }, - "is-dotfile": { - "version": "1.0.3", - "bundled": true - }, - "is-equal-shallow": { - "version": "0.1.3", + "stringstream": { + "version": "0.0.5", "bundled": true, - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true + "dev": true, + "optional": true }, - "is-fullwidth-code-point": { - "version": "1.0.0", + "strip-ansi": { + "version": "3.0.1", "bundled": true, + "dev": true, "requires": { - "number-is-nan": "1.0.1" + "ansi-regex": "2.1.1" } }, - "is-glob": { + "strip-json-comments": { "version": "2.0.1", "bundled": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-number": { - "version": "2.1.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "bundled": true - }, - "is-primitive": { - "version": "2.0.0", - "bundled": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true - }, - "isobject": { - "version": "2.1.0", - "bundled": true, - "requires": { - "isarray": "1.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "bundled": true - }, - "json-loader": { - "version": "0.5.7", - "bundled": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "bundled": true + "dev": true, + "optional": true }, - "json-stable-stringify": { - "version": "1.0.1", + "tar": { + "version": "2.2.1", "bundled": true, + "dev": true, "requires": { - "jsonify": "0.0.0" + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" } }, - "json3": { - "version": "3.3.2", - "bundled": true - }, - "json5": { - "version": "0.5.1", - "bundled": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true - }, - "kind-of": { - "version": "3.2.2", + "tar-pack": { + "version": "3.4.0", "bundled": true, + "dev": true, + "optional": true, "requires": { - "is-buffer": "1.1.5" + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" } }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true - }, - "lcid": { - "version": "1.0.0", + "tough-cookie": { + "version": "2.3.2", "bundled": true, + "dev": true, + "optional": true, "requires": { - "invert-kv": "1.0.0" + "punycode": "1.4.1" } }, - "load-json-file": { - "version": "2.0.0", + "tunnel-agent": { + "version": "0.6.0", "bundled": true, + "dev": true, + "optional": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "safe-buffer": "5.0.1" } }, - "loader-runner": { - "version": "2.3.0", - "bundled": true - }, - "loader-utils": { - "version": "1.1.0", + "tweetnacl": { + "version": "0.14.5", "bundled": true, - "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } + "dev": true, + "optional": true }, - "locate-path": { - "version": "2.0.0", + "uid-number": { + "version": "0.0.6", "bundled": true, - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - } - }, - "lodash": { - "version": "4.17.4", - "bundled": true + "dev": true, + "optional": true }, - "lodash._baseassign": { - "version": "3.2.0", + "util-deprecate": { + "version": "1.0.2", "bundled": true, - "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" - } + "dev": true }, - "lodash._basecopy": { + "uuid": { "version": "3.0.1", - "bundled": true - }, - "lodash._basecreate": { - "version": "3.0.3", - "bundled": true - }, - "lodash._getnative": { - "version": "3.9.1", - "bundled": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "bundled": true - }, - "lodash.create": { - "version": "3.1.1", "bundled": true, - "requires": { - "lodash._baseassign": "3.2.0", - "lodash._basecreate": "3.0.3", - "lodash._isiterateecall": "3.0.9" - } - }, - "lodash.isarguments": { - "version": "3.1.0", - "bundled": true - }, - "lodash.isarray": { - "version": "3.0.4", - "bundled": true + "dev": true, + "optional": true }, - "lodash.keys": { - "version": "3.1.2", + "verror": { + "version": "1.3.6", "bundled": true, + "dev": true, + "optional": true, "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" + "extsprintf": "1.0.2" } }, - "longest": { - "version": "1.0.1", - "bundled": true - }, - "lru-cache": { - "version": "4.1.1", + "wide-align": { + "version": "1.1.2", "bundled": true, + "dev": true, + "optional": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "string-width": "1.0.2" } }, - "md5.js": { - "version": "1.3.4", - "bundled": true, - "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" - }, - "dependencies": { - "hash-base": { - "version": "3.0.4", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - } - } - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "requires": { - "mimic-fn": "1.1.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "bundled": true, - "requires": { - "errno": "0.1.4", - "readable-stream": "2.3.3" - } - }, - "micromatch": { - "version": "2.3.11", + "wrappy": { + "version": "1.0.2", "bundled": true, + "dev": true + } + } + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "is-extglob": "2.1.1" } + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true }, - "miller-rabin": { + "kind-of": { "version": "4.0.0", - "bundled": true, - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" - } - }, - "mime-db": { - "version": "1.30.0", - "bundled": true - }, - "mime-types": { - "version": "2.1.17", - "bundled": true, - "requires": { - "mime-db": "1.30.0" - } - }, - "mimic-fn": { - "version": "1.1.0", - "bundled": true - }, - "minimalistic-assert": { - "version": "1.0.0", - "bundled": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "3.5.3", - "bundled": true, - "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.6.8", - "diff": "3.2.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.1", - "growl": "1.9.2", - "he": "1.1.1", - "json3": "3.3.2", - "lodash.create": "3.1.1", - "mkdirp": "0.5.1", - "supports-color": "3.1.2" - } - }, - "moment": { - "version": "2.18.1", - "bundled": true - }, - "ms": { - "version": "2.0.0", - "bundled": true - }, - "node-fetch": { - "version": "1.7.3", - "bundled": true, - "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" - } - }, - "node-libs-browser": { - "version": "2.0.0", - "bundled": true, - "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.1.4", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.11.1", - "domain-browser": "1.1.7", - "events": "1.1.1", - "https-browserify": "0.0.1", - "os-browserify": "0.2.1", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.3", - "stream-browserify": "2.0.1", - "stream-http": "2.7.2", - "string_decoder": "0.10.31", - "timers-browserify": "2.0.4", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4" - }, - "dependencies": { - "string_decoder": { - "version": "0.10.31", - "bundled": true - } - } - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "bundled": true, - "requires": { - "remove-trailing-separator": "1.1.0" - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "requires": { - "path-key": "2.0.1" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "object.omit": { - "version": "2.0.1", - "bundled": true, - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-browserify": { - "version": "0.2.1", - "bundled": true - }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true - }, - "p-limit": { - "version": "1.1.0", - "bundled": true - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-limit": "1.1.0" - } - }, - "pako": { - "version": "0.2.9", - "bundled": true - }, - "parse-asn1": { - "version": "5.1.0", - "bundled": true, - "requires": { - "asn1.js": "4.9.1", - "browserify-aes": "1.0.8", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.14" - } - }, - "parse-glob": { - "version": "3.0.4", - "bundled": true, - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } - }, - "parse-json": { - "version": "2.2.0", - "bundled": true, - "requires": { - "error-ex": "1.3.1" - } - }, - "path-browserify": { - "version": "0.0.0", - "bundled": true - }, - "path-exists": { - "version": "3.0.0", - "bundled": true - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true - }, - "path-type": { - "version": "2.0.0", - "bundled": true, - "requires": { - "pify": "2.3.0" - } - }, - "pbkdf2": { - "version": "3.0.14", - "bundled": true, + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, "requires": { - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.8" + "is-buffer": "1.1.6" } - }, - "pify": { - "version": "2.3.0", - "bundled": true - }, - "preserve": { - "version": "0.2.0", - "bundled": true - }, - "process": { - "version": "0.11.10", - "bundled": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true - }, - "prr": { - "version": "0.0.0", - "bundled": true - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true - }, - "public-encrypt": { + } + } + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "hosted-git-info": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "dev": true + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "ieee754": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", + "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.2.tgz", + "integrity": "sha512-imvkm8cOGKeZ/NwkAd+FAURi0hsL9gr3kvdi0r3MnqChcOdPaQRIOQiOU+sD40XzUIe6nFmSHYtQjbkDvaQbEg==" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "dev": true, + "requires": { + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { "version": "4.0.0", - "bundled": true, - "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "parse-asn1": "5.1.0", - "randombytes": "2.0.5" - } - }, - "punycode": { - "version": "1.4.1", - "bundled": true - }, - "querystring": { - "version": "0.2.0", - "bundled": true - }, - "querystring-es3": { - "version": "0.2.1", - "bundled": true - }, - "querystringify": { - "version": "1.0.0", - "bundled": true - }, - "randomatic": { - "version": "1.1.7", - "bundled": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-buffer": "1.1.5" - } - } - } - }, - "randombytes": { - "version": "2.0.5", - "bundled": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "read-pkg": { - "version": "2.0.0", - "bundled": true, - "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "bundled": true, - "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" - } - }, - "readable-stream": { - "version": "2.3.3", - "bundled": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "readdirp": { - "version": "2.1.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.3", - "set-immediate-shim": "1.0.1" - } - }, - "regex-cache": { - "version": "0.4.4", - "bundled": true, - "requires": { - "is-equal-shallow": "0.1.3" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "bundled": true - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true - }, - "require-directory": { - "version": "2.1.1", - "bundled": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true - }, - "requires-port": { - "version": "1.0.0", - "bundled": true - }, - "resolve": { - "version": "1.4.0", - "bundled": true, - "requires": { - "path-parse": "1.0.5" - } - }, - "right-align": { - "version": "0.1.3", - "bundled": true, - "requires": { - "align-text": "0.1.4" - } - }, - "ripemd160": { - "version": "2.0.1", - "bundled": true, - "requires": { - "hash-base": "2.0.2", - "inherits": "2.0.3" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true - }, - "semver": { - "version": "5.4.1", - "bundled": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "bundled": true - }, - "setimmediate": { - "version": "1.0.5", - "bundled": true - }, - "sha.js": { - "version": "2.4.8", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "requires": { - "shebang-regex": "1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true - }, - "should": { - "version": "5.2.0", - "bundled": true, - "requires": { - "should-equal": "0.3.1", - "should-format": "0.0.7", - "should-type": "0.0.4" - } - }, - "should-equal": { - "version": "0.3.1", - "bundled": true, - "requires": { - "should-type": "0.0.4" - } - }, - "should-format": { - "version": "0.0.7", - "bundled": true, - "requires": { - "should-type": "0.0.4" - } - }, - "should-type": { - "version": "0.0.4", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "source-list-map": { - "version": "2.0.0", - "bundled": true - }, - "source-map": { - "version": "0.5.7", - "bundled": true - }, - "spdx-correct": { - "version": "1.0.2", - "bundled": true, - "requires": { - "spdx-license-ids": "1.2.2" - } - }, - "spdx-expression-parse": { - "version": "1.0.4", - "bundled": true - }, - "spdx-license-ids": { - "version": "1.2.2", - "bundled": true - }, - "stream-browserify": { - "version": "2.0.1", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" - } - }, - "stream-http": { - "version": "2.7.2", - "bundled": true, - "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" - } - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "string_decoder": { - "version": "1.0.3", - "bundled": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "bundled": true - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true - }, - "supports-color": { - "version": "3.1.2", - "bundled": true, - "requires": { - "has-flag": "1.0.0" - } - }, - "tapable": { - "version": "0.2.8", - "bundled": true - }, - "timers-browserify": { - "version": "2.0.4", - "bundled": true, - "requires": { - "setimmediate": "1.0.5" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "bundled": true - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "requires": { - "punycode": "1.4.1" - } - }, - "ts-loader": { - "version": "2.3.7", - "bundled": true, - "requires": { - "chalk": "2.1.0", - "enhanced-resolve": "3.4.1", - "loader-utils": "1.1.0", - "semver": "5.4.1" - } - }, - "tslib": { - "version": "1.7.1", - "bundled": true - }, - "tslint": { - "version": "5.7.0", - "bundled": true, - "requires": { - "babel-code-frame": "6.26.0", - "colors": "1.1.2", - "commander": "2.9.0", - "diff": "3.2.0", - "glob": "7.1.1", - "minimatch": "3.0.4", - "resolve": "1.4.0", - "semver": "5.4.1", - "tslib": "1.7.1", - "tsutils": "2.8.2" - } - }, - "tsutils": { - "version": "2.8.2", - "bundled": true, - "requires": { - "tslib": "1.7.1" - } - }, - "tty-browserify": { - "version": "0.0.0", - "bundled": true - }, - "typescript": { - "version": "2.5.2", - "bundled": true - }, - "uglify-es": { - "version": "3.1.0", - "bundled": true, - "requires": { - "commander": "2.11.0", - "source-map": "0.5.7" - }, - "dependencies": { - "commander": { - "version": "2.11.0", - "bundled": true - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "uglifyjs-webpack-plugin": { - "version": "0.4.6", - "bundled": true, - "requires": { - "source-map": "0.5.7", - "uglify-js": "2.8.29", - "webpack-sources": "1.0.1" - }, - "dependencies": { - "uglify-js": { - "version": "2.8.29", - "bundled": true, - "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - } - }, - "yargs": { - "version": "3.10.0", - "bundled": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - } - } - }, - "url": { - "version": "0.11.0", - "bundled": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "bundled": true - } - } - }, - "url-parse": { - "version": "1.1.9", - "bundled": true, - "requires": { - "querystringify": "1.0.0", - "requires-port": "1.0.0" - } - }, - "util": { - "version": "0.10.3", - "bundled": true, - "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "bundled": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "uuid": { - "version": "3.1.0", - "bundled": true - }, - "validate-npm-package-license": { - "version": "3.0.1", - "bundled": true, - "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" - } - }, - "vm-browserify": { - "version": "0.0.4", - "bundled": true, - "requires": { - "indexof": "0.0.1" - } - }, - "watchpack": { - "version": "1.4.0", - "bundled": true, - "requires": { - "async": "2.5.0", - "chokidar": "1.7.0", - "graceful-fs": "4.1.11" - } - }, - "webpack": { - "version": "3.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", + "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.0" + } + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + } + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._basecreate": "3.0.3", + "lodash._isiterateecall": "3.0.9" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "lru-cache": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "1.0.1" + } + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, "requires": { - "acorn": "5.1.2", - "acorn-dynamic-import": "2.0.2", - "ajv": "5.2.2", - "ajv-keywords": "2.1.0", - "async": "2.5.0", - "enhanced-resolve": "3.4.1", - "escope": "3.6.0", - "interpret": "1.0.4", - "json-loader": "0.5.7", - "json5": "0.5.1", - "loader-runner": "2.3.0", - "loader-utils": "1.1.0", - "memory-fs": "0.4.1", - "mkdirp": "0.5.1", - "node-libs-browser": "2.0.0", - "source-map": "0.5.7", - "supports-color": "4.4.0", - "tapable": "0.2.8", - "uglifyjs-webpack-plugin": "0.4.6", - "watchpack": "1.4.0", - "webpack-sources": "1.0.1", - "yargs": "8.0.2" - }, - "dependencies": { - "has-flag": { - "version": "2.0.0", - "bundled": true - }, - "supports-color": { - "version": "4.4.0", - "bundled": true, - "requires": { - "has-flag": "2.0.0" - } - } + "inherits": "2.0.3", + "safe-buffer": "5.1.1" } - }, - "webpack-sources": { + } + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.2.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.7", + "readable-stream": "2.3.5" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "1.33.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { "version": "1.0.1", - "bundled": true, - "requires": { - "source-list-map": "2.0.0", - "source-map": "0.5.7" - } - }, - "which": { - "version": "1.3.0", - "bundled": true, - "requires": { - "isexe": "2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true - }, - "window-size": { - "version": "0.1.0", - "bundled": true - }, - "wordwrap": { - "version": "0.0.2", - "bundled": true - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } + "is-plain-object": "2.0.4" } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "xtend": { - "version": "4.0.1", - "bundled": true - }, - "y18n": { - "version": "3.2.1", - "bundled": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true - }, - "yargs": { - "version": "8.0.2", - "bundled": true, + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", + "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "he": "1.1.1", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + } + }, + "moment": { + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.0.tgz", + "integrity": "sha512-1muXCh8jb1N/gHRbn9VDUBr0GYb8A/aVcHlII9QSB68a50spqEVLIGN6KVmCOnSvJrUhC0edGgKU5ofnGXdYdg==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "ms-rest-js": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.2.8.tgz", + "integrity": "sha512-KgiSsbJzKcPLx0Zaca5PEdGOwm8X4Np+aTukK6stMl2eAqSrHvncjteyeXi6v6O0ECLYeUWVbqcPJfpw1PjnZQ==", + "requires": { + "@types/form-data": "2.2.1", + "@types/is-stream": "1.1.0", + "@types/node": "9.6.1", + "@types/node-fetch": "1.6.7", + "@types/uuid": "3.4.3", + "fetch-cookie": "0.7.0", + "fetch-ponyfill": "github:amarzavery/fetch-ponyfill#136e6f8192bdb2aa0b7983f0b3b4361c357be9db", + "form-data": "2.3.2", + "is-buffer": "2.0.2", + "is-stream": "1.1.0", + "moment": "2.22.0", + "url-parse": "1.2.0", + "uuid": "3.2.1" + }, + "dependencies": { + "fetch-ponyfill": { + "version": "github:amarzavery/fetch-ponyfill#136e6f8192bdb2aa0b7983f0b3b4361c357be9db", "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "7.0.0" + "fetch-cookie": "0.6.0", + "node-fetch": "1.7.3" }, "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true - }, - "cliui": { - "version": "3.2.0", - "bundled": true, + "fetch-cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.6.0.tgz", + "integrity": "sha1-T+xOQIzAAH9sBOVTYYr0s97jf2k=", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } + "es6-denodeify": "0.1.5", + "tough-cookie": "2.3.4" } } } - }, - "yargs-parser": { - "version": "7.0.0", - "bundled": true, - "requires": { - "camelcase": "4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true - } - } } } }, + "nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "neo-async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.0.tgz", + "integrity": "sha512-nJmSswG4As/MkRq7QZFuH/sf/yuv8ODdMZrY4Bedjp77a5MK4A6s7YbBB64c9u79EBUOfXUXBvArmvzTD0X+6g==", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } + }, "node-libs-browser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", - "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", "dev": true, "requires": { "assert": "1.4.1", - "browserify-zlib": "0.1.4", + "browserify-zlib": "0.2.0", "buffer": "4.9.1", "console-browserify": "1.1.0", "constants-browserify": "1.0.0", - "crypto-browserify": "3.11.1", - "domain-browser": "1.1.7", + "crypto-browserify": "3.12.0", + "domain-browser": "1.2.0", "events": "1.1.1", - "https-browserify": "0.0.1", - "os-browserify": "0.2.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", "path-browserify": "0.0.0", "process": "0.11.10", "punycode": "1.4.1", "querystring-es3": "0.2.1", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "stream-browserify": "2.0.1", - "stream-http": "2.7.2", - "string_decoder": "0.10.31", - "timers-browserify": "2.0.4", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4" - }, - "dependencies": { - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } + "stream-http": "2.8.1", + "string_decoder": "1.0.3", + "timers-browserify": "2.0.6", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" } }, "normalize-package-data": { @@ -3763,10 +3194,10 @@ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { - "hosted-git-info": "2.5.0", + "hosted-git-info": "2.6.0", "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" } }, "normalize-path": { @@ -3799,14 +3230,81 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "isobject": "3.0.1" } }, "once": { @@ -3819,9 +3317,9 @@ } }, "os-browserify": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", - "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, "os-locale": { @@ -3842,10 +3340,13 @@ "dev": true }, "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "requires": { + "p-try": "1.0.0" + } }, "p-locate": { "version": "2.0.0", @@ -3853,13 +3354,19 @@ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "1.1.0" + "p-limit": "1.2.0" } }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", "dev": true }, "parse-asn1": { @@ -3868,25 +3375,13 @@ "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", "dev": true, "requires": { - "asn1.js": "4.9.1", - "browserify-aes": "1.0.8", + "asn1.js": "4.10.1", + "browserify-aes": "1.1.1", "create-hash": "1.1.3", "evp_bytestokey": "1.0.3", "pbkdf2": "3.0.14" } }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } - }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -3896,12 +3391,24 @@ "error-ex": "1.3.1" } }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, "path-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", "dev": true }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -3945,7 +3452,7 @@ "create-hmac": "1.1.6", "ripemd160": "2.0.1", "safe-buffer": "5.1.1", - "sha.js": "2.4.8" + "sha.js": "2.4.11" } }, "pify": { @@ -3954,10 +3461,10 @@ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, "process": { @@ -3967,15 +3474,15 @@ "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true }, "prr": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, "pseudomap": { @@ -3994,14 +3501,13 @@ "browserify-rsa": "4.0.1", "create-hash": "1.1.3", "parse-asn1": "5.1.0", - "randombytes": "2.0.5" + "randombytes": "2.0.6" } }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, "querystring": { "version": "0.2.0", @@ -4015,53 +3521,27 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "querystringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=" + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } - } + "safe-buffer": "5.1.1" } }, - "randombytes": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", - "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dev": true, "requires": { + "randombytes": "2.0.6", "safe-buffer": "5.1.1" } }, @@ -4087,15 +3567,15 @@ } }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", - "process-nextick-args": "1.0.7", + "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" @@ -4109,17 +3589,18 @@ "requires": { "graceful-fs": "4.1.11", "minimatch": "3.0.4", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "set-immediate-shim": "1.0.1" } }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, "requires": { - "is-equal-shallow": "0.1.3" + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" } }, "remove-trailing-separator": { @@ -4152,15 +3633,32 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, "resolve": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", - "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.6.0.tgz", + "integrity": "sha512-mw7JQNu5ExIkcw4LPih0owX/TZXjD/ZUF/ZQ/pDnkw3ZKhDcZZw5klmBlj6gVMwjQ3Pz5Jgu7F3d0jcDVuEWdw==", "dev": true, "requires": { "path-parse": "1.0.5" } }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", @@ -4186,10 +3684,19 @@ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "0.1.15" + } + }, "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true }, "set-blocking": { @@ -4204,109 +3711,398 @@ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", "dev": true }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", "dev": true }, - "sha.js": { - "version": "2.4.8", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", - "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "should": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/should/-/should-5.2.0.tgz", + "integrity": "sha1-mkUZtEe4te7c6e7ZavNCDUUaVAs=", + "dev": true, + "requires": { + "should-equal": "0.3.1", + "should-format": "0.0.7", + "should-type": "0.0.4" + } + }, + "should-equal": { + "version": "0.3.1", + "resolved": "http://registry.npmjs.org/should-equal/-/should-equal-0.3.1.tgz", + "integrity": "sha1-vY6pemdI45+tR2o75v1y68LnK/A=", + "dev": true, + "requires": { + "should-type": "0.0.4" + } + }, + "should-format": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/should-format/-/should-format-0.0.7.tgz", + "integrity": "sha1-Hi74a9kdqcLgQSM1tWq6vZov3hI=", + "dev": true, + "requires": { + "should-type": "0.0.4" + } + }, + "should-type": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/should-type/-/should-type-0.0.4.tgz", + "integrity": "sha1-ATKgVBemEmhmQmrPEW8e1WI6XNA=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.8", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "requires": { - "inherits": "2.0.3" + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + } } }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { - "shebang-regex": "1.0.0" + "kind-of": "3.2.2" } }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", "dev": true }, - "should": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/should/-/should-5.2.0.tgz", - "integrity": "sha1-mkUZtEe4te7c6e7ZavNCDUUaVAs=", - "dev": true, - "requires": { - "should-equal": "0.3.1", - "should-format": "0.0.7", - "should-type": "0.0.4" - } + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true }, - "should-equal": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-0.3.1.tgz", - "integrity": "sha1-vY6pemdI45+tR2o75v1y68LnK/A=", + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", "dev": true, "requires": { - "should-type": "0.0.4" + "atob": "2.1.0", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" } }, - "should-format": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/should-format/-/should-format-0.0.7.tgz", - "integrity": "sha1-Hi74a9kdqcLgQSM1tWq6vZov3hI=", + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "dev": true, "requires": { - "should-type": "0.0.4" + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" } }, - "should-type": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/should-type/-/should-type-0.0.4.tgz", - "integrity": "sha1-ATKgVBemEmhmQmrPEW8e1WI6XNA=", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", "dev": true }, - "source-list-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", - "dev": true + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", "dev": true }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { - "spdx-license-ids": "1.2.2" + "extend-shallow": "3.0.2" } }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", - "dev": true + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } }, "stream-browserify": { "version": "2.0.1", @@ -4315,18 +4111,18 @@ "dev": true, "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.3" + "readable-stream": "2.3.5" } }, "stream-http": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", - "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.1.tgz", + "integrity": "sha512-cQ0jo17BLca2r0GfRdZKYAGLU6JRoIWxqSOakUMuKOT6MOK7AAlE856L33QuDmAy/eeOrhLee3dZKX0Uadu93A==", "dev": true, "requires": { "builtin-status-codes": "3.0.0", "inherits": "2.0.3", - "readable-stream": "2.3.3", + "readable-stream": "2.3.5", "to-arraybuffer": "1.0.1", "xtend": "4.0.1" } @@ -4410,9 +4206,9 @@ "dev": true }, "timers-browserify": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", - "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", + "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", "dev": true, "requires": { "setimmediate": "1.0.5" @@ -4424,49 +4220,98 @@ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", "dev": true }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + } + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "requires": { + "punycode": "1.4.1" + } + }, "ts-loader": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-2.3.7.tgz", "integrity": "sha512-8t3bu2FcEkXb+D4L+Cn8qiK2E2C6Ms4/GQChvz6IMbVurcFHLXrhW4EMtfaol1a1ASQACZGDUGit4NHnX9g7hQ==", "dev": true, "requires": { - "chalk": "2.1.0", + "chalk": "2.3.2", "enhanced-resolve": "3.4.1", "loader-utils": "1.1.0", - "semver": "5.4.1" + "semver": "5.5.0" } }, "tslib": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz", - "integrity": "sha1-vIAEFkaRkjp5/oN4u+s9ogF1OOw=", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==", "dev": true }, "tslint": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.7.0.tgz", - "integrity": "sha1-wl4NDJL6EgHCvDDoROCOaCtPNVI=", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz", + "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", "dev": true, "requires": { "babel-code-frame": "6.26.0", - "colors": "1.1.2", - "commander": "2.9.0", + "builtin-modules": "1.1.1", + "chalk": "2.3.2", + "commander": "2.15.1", "diff": "3.2.0", "glob": "7.1.1", + "js-yaml": "3.11.0", "minimatch": "3.0.4", - "resolve": "1.4.0", - "semver": "5.4.1", - "tslib": "1.7.1", - "tsutils": "2.8.2" + "resolve": "1.6.0", + "semver": "5.5.0", + "tslib": "1.9.0", + "tsutils": "2.25.1" + }, + "dependencies": { + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + } } }, "tsutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.8.2.tgz", - "integrity": "sha1-LBSGukMSYIRbCsb5Aq/Z1wio6mo=", + "version": "2.25.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.25.1.tgz", + "integrity": "sha512-xHiTER5XIRYlWbylk4vpGZSYo8FUTVn32bAxxM1rJopXs2DYG7lWp40LqNvM3iMNpXa50wmnC9bFXsPTV6xAiQ==", "dev": true, "requires": { - "tslib": "1.7.1" + "tslib": "1.9.0" } }, "tty-browserify": { @@ -4476,25 +4321,25 @@ "dev": true }, "typescript": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.5.2.tgz", - "integrity": "sha1-A4qV99m7tCCxvzW6MdTFwd0//jQ=", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.1.tgz", + "integrity": "sha512-Ao/f6d/4EPLq0YwzsQz8iXflezpTkQzqAyenTiw4kCUGr1uPiFLC3+fZ+gMZz6eeI/qdRUqvC+HxIJzUAzEFdg==", "dev": true }, "uglify-es": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.1.0.tgz", - "integrity": "sha512-368gRJ/ww3e9c8eJLAFM6sco4ndsg7d2MskNusejep0kvd7VCqNj/q/zrDG/1KwS+EWfTxJKTj7UyLN+zz+gyg==", + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", "dev": true, "requires": { - "commander": "2.11.0", - "source-map": "0.5.7" + "commander": "2.13.0", + "source-map": "0.6.1" }, "dependencies": { "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", "dev": true } } @@ -4514,9 +4359,15 @@ "requires": { "source-map": "0.5.7", "uglify-js": "2.8.29", - "webpack-sources": "1.0.1" + "webpack-sources": "1.1.0" }, "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", @@ -4542,6 +4393,110 @@ } } }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.4.tgz", + "integrity": "sha512-d4SJySNBXDaQp+DPrziv3xGS6w3d2Xt69FijJr86zMPBy23JEloMCEOUBBzuN7xCtjLCnmB9tI/z7SBCahHBOw==", + "dev": true + }, + "uri-js": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz", + "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=", + "dev": true, + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", @@ -4560,6 +4515,32 @@ } } }, + "url-parse": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", + "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + } + }, + "use": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", @@ -4583,14 +4564,19 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + }, "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "dev": true, "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" } }, "vm-browserify": { @@ -4603,43 +4589,43 @@ } }, "watchpack": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", - "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.5.0.tgz", + "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", "dev": true, "requires": { - "async": "2.5.0", - "chokidar": "1.7.0", - "graceful-fs": "4.1.11" + "chokidar": "2.0.3", + "graceful-fs": "4.1.11", + "neo-async": "2.5.0" } }, "webpack": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.6.0.tgz", - "integrity": "sha512-OsHT3D0W0KmPPh60tC7asNnOmST6bKTiR90UyEdT9QYoaJ4OYN4Gg7WK1k3VxHK07ZoiYWPsKvlS/gAjwL/vRA==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.11.0.tgz", + "integrity": "sha512-3kOFejWqj5ISpJk4Qj/V7w98h9Vl52wak3CLiw/cDOfbVTq7FeoZ0SdoHHY9PYlHr50ZS42OfvzE2vB4nncKQg==", "dev": true, "requires": { - "acorn": "5.1.2", + "acorn": "5.5.3", "acorn-dynamic-import": "2.0.2", - "ajv": "5.2.2", - "ajv-keywords": "2.1.0", - "async": "2.5.0", + "ajv": "6.4.0", + "ajv-keywords": "3.1.0", + "async": "2.6.0", "enhanced-resolve": "3.4.1", "escope": "3.6.0", - "interpret": "1.0.4", + "interpret": "1.1.0", "json-loader": "0.5.7", "json5": "0.5.1", "loader-runner": "2.3.0", "loader-utils": "1.1.0", "memory-fs": "0.4.1", "mkdirp": "0.5.1", - "node-libs-browser": "2.0.0", + "node-libs-browser": "2.1.0", "source-map": "0.5.7", - "supports-color": "4.4.0", + "supports-color": "4.5.0", "tapable": "0.2.8", "uglifyjs-webpack-plugin": "0.4.6", - "watchpack": "1.4.0", - "webpack-sources": "1.0.1", + "watchpack": "1.5.0", + "webpack-sources": "1.1.0", "yargs": "8.0.2" }, "dependencies": { @@ -4649,10 +4635,16 @@ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", - "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { "has-flag": "2.0.0" @@ -4661,13 +4653,13 @@ } }, "webpack-sources": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", - "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", "dev": true, "requires": { "source-list-map": "2.0.0", - "source-map": "0.5.7" + "source-map": "0.6.1" } }, "which": { diff --git a/package.json b/package.json index 618bf5ec360e..7f8697f65ddd 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.2.1", + "version": "0.2.8", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -29,7 +29,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "^0.2.3" + "ms-rest-js": "^0.2.8" }, "devDependencies": { "@types/mocha": "^2.2.43", From f689de6144d7430a80ff9d1dc8f0ba4294505175 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Mon, 2 Apr 2018 18:05:19 -0700 Subject: [PATCH 015/289] Bump ms-rest-js dependency version to ^0.3.0 --- package-lock.json | 349 ++++++++++++++++++++++++++++++---------------- package.json | 2 +- 2 files changed, 232 insertions(+), 119 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5ae9fc62eba1..1cd1f6b34a87 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1275,13 +1275,15 @@ "dependencies": { "abbrev": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", "dev": true, "optional": true }, "ajv": { "version": "4.11.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, "optional": true, "requires": { @@ -1291,18 +1293,21 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "aproba": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", + "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "dev": true, "optional": true, "requires": { @@ -1312,42 +1317,49 @@ }, "asn1": { "version": "0.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", "dev": true, "optional": true }, "assert-plus": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", "dev": true, "optional": true }, "asynckit": { "version": "0.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true, "optional": true }, "aws-sign2": { "version": "0.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", "dev": true, "optional": true }, "aws4": { "version": "1.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", "dev": true, "optional": true }, "balanced-match": { "version": "0.4.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", "dev": true }, "bcrypt-pbkdf": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "dev": true, "optional": true, "requires": { @@ -1356,7 +1368,8 @@ }, "block-stream": { "version": "0.0.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "dev": true, "requires": { "inherits": "2.0.3" @@ -1364,7 +1377,8 @@ }, "boom": { "version": "2.10.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "requires": { "hoek": "2.16.3" @@ -1372,7 +1386,8 @@ }, "brace-expansion": { "version": "1.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", + "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", "dev": true, "requires": { "balanced-match": "0.4.2", @@ -1381,29 +1396,34 @@ }, "buffer-shims": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", "dev": true }, "caseless": { "version": "0.12.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true, "optional": true }, "co": { "version": "4.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "combined-stream": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "dev": true, "requires": { "delayed-stream": "1.0.0" @@ -1411,22 +1431,26 @@ }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, "core-util-is": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, "cryptiles": { "version": "2.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "requires": { "boom": "2.10.1" @@ -1434,7 +1458,8 @@ }, "dashdash": { "version": "1.14.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "optional": true, "requires": { @@ -1443,7 +1468,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "optional": true } @@ -1451,7 +1477,8 @@ }, "debug": { "version": "2.6.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", "dev": true, "optional": true, "requires": { @@ -1460,30 +1487,35 @@ }, "deep-extend": { "version": "0.4.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", "dev": true, "optional": true }, "delayed-stream": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, "delegates": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true, "optional": true }, "detect-libc": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.2.tgz", + "integrity": "sha1-ca1dIEvxempsqPRQxhRUBm70YeE=", "dev": true, "optional": true }, "ecc-jsbn": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "dev": true, "optional": true, "requires": { @@ -1492,24 +1524,28 @@ }, "extend": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true, "optional": true }, "extsprintf": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", "dev": true }, "forever-agent": { "version": "0.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true, "optional": true }, "form-data": { "version": "2.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "dev": true, "optional": true, "requires": { @@ -1520,12 +1556,14 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "fstream": { "version": "1.0.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -1536,7 +1574,8 @@ }, "fstream-ignore": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", "dev": true, "optional": true, "requires": { @@ -1547,7 +1586,8 @@ }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "optional": true, "requires": { @@ -1563,7 +1603,8 @@ }, "getpass": { "version": "0.1.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "optional": true, "requires": { @@ -1572,7 +1613,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "optional": true } @@ -1580,7 +1622,8 @@ }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -1593,18 +1636,21 @@ }, "graceful-fs": { "version": "4.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, "har-schema": { "version": "1.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", "dev": true, "optional": true }, "har-validator": { "version": "4.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "dev": true, "optional": true, "requires": { @@ -1614,13 +1660,15 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true, "optional": true }, "hawk": { "version": "3.1.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, "requires": { "boom": "2.10.1", @@ -1631,12 +1679,14 @@ }, "hoek": { "version": "2.16.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", "dev": true }, "http-signature": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "dev": true, "optional": true, "requires": { @@ -1647,7 +1697,8 @@ }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "1.4.0", @@ -1656,18 +1707,21 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "ini": { "version": "1.3.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -1675,24 +1729,28 @@ }, "is-typedarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true, "optional": true }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isstream": { "version": "0.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true, "optional": true }, "jodid25519": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", "dev": true, "optional": true, "requires": { @@ -1701,19 +1759,22 @@ }, "jsbn": { "version": "0.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true, "optional": true }, "json-schema": { "version": "0.2.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true, "optional": true }, "json-stable-stringify": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, "optional": true, "requires": { @@ -1722,19 +1783,22 @@ }, "json-stringify-safe": { "version": "5.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true, "optional": true }, "jsonify": { "version": "0.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true, "optional": true }, "jsprim": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", "dev": true, "optional": true, "requires": { @@ -1746,7 +1810,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "optional": true } @@ -1754,12 +1819,14 @@ }, "mime-db": { "version": "1.27.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", "dev": true }, "mime-types": { "version": "2.1.15", - "bundled": true, + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", "dev": true, "requires": { "mime-db": "1.27.0" @@ -1767,7 +1834,8 @@ }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "1.1.7" @@ -1775,12 +1843,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -1788,13 +1858,15 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true, "optional": true }, "node-pre-gyp": { "version": "0.6.39", - "bundled": true, + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz", + "integrity": "sha512-OsJV74qxnvz/AMGgcfZoDaeDXKD3oY3QVIbBmwszTFkRisTSXbMQyn4UWzUMOtA5SVhrBZOTp0wcoSBgfMfMmQ==", "dev": true, "optional": true, "requires": { @@ -1813,7 +1885,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "dev": true, "optional": true, "requires": { @@ -1823,7 +1896,8 @@ }, "npmlog": { "version": "4.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", + "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", "dev": true, "optional": true, "requires": { @@ -1835,24 +1909,28 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "oauth-sign": { "version": "0.8.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", "dev": true, "optional": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true, "optional": true }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1.0.2" @@ -1860,19 +1938,22 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true, "optional": true }, "osenv": { "version": "0.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", "dev": true, "optional": true, "requires": { @@ -1882,35 +1963,41 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "performance-now": { "version": "0.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", "dev": true, "optional": true }, "process-nextick-args": { "version": "1.0.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, "punycode": { "version": "1.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true, "optional": true }, "qs": { "version": "6.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", "dev": true, "optional": true }, "rc": { "version": "1.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", "dev": true, "optional": true, "requires": { @@ -1922,7 +2009,8 @@ "dependencies": { "minimist": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true, "optional": true } @@ -1930,7 +2018,8 @@ }, "readable-stream": { "version": "2.2.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", "dev": true, "requires": { "buffer-shims": "1.0.0", @@ -1944,7 +2033,8 @@ }, "request": { "version": "2.81.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", "dev": true, "optional": true, "requires": { @@ -1974,7 +2064,8 @@ }, "rimraf": { "version": "2.6.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", "dev": true, "requires": { "glob": "7.1.2" @@ -1982,30 +2073,35 @@ }, "safe-buffer": { "version": "5.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", "dev": true }, "semver": { "version": "5.3.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true, "optional": true }, "sntp": { "version": "1.0.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "requires": { "hoek": "2.16.3" @@ -2013,7 +2109,8 @@ }, "sshpk": { "version": "1.13.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", + "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", "dev": true, "optional": true, "requires": { @@ -2030,7 +2127,8 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true, "optional": true } @@ -2038,7 +2136,8 @@ }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "1.1.0", @@ -2048,7 +2147,8 @@ }, "string_decoder": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", + "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", "dev": true, "requires": { "safe-buffer": "5.0.1" @@ -2056,13 +2156,15 @@ }, "stringstream": { "version": "0.0.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", "dev": true, "optional": true }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -2070,13 +2172,15 @@ }, "strip-json-comments": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true, "optional": true }, "tar": { "version": "2.2.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { "block-stream": "0.0.9", @@ -2086,7 +2190,8 @@ }, "tar-pack": { "version": "3.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", + "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", "dev": true, "optional": true, "requires": { @@ -2102,7 +2207,8 @@ }, "tough-cookie": { "version": "2.3.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", "dev": true, "optional": true, "requires": { @@ -2111,7 +2217,8 @@ }, "tunnel-agent": { "version": "0.6.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "optional": true, "requires": { @@ -2120,30 +2227,35 @@ }, "tweetnacl": { "version": "0.14.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true, "optional": true }, "uid-number": { "version": "0.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", "dev": true, "optional": true }, "util-deprecate": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, "uuid": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", + "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", "dev": true, "optional": true }, "verror": { "version": "1.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", "dev": true, "optional": true, "requires": { @@ -2152,7 +2264,8 @@ }, "wide-align": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, "optional": true, "requires": { @@ -2161,7 +2274,8 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true } } @@ -2928,7 +3042,7 @@ "dev": true }, "ms-rest-js": { - "version": "file:../ms-rest-js", + "version": "0.3.0", "requires": { "@types/form-data": "2.2.1", "@types/is-stream": "1.1.0", @@ -2936,7 +3050,7 @@ "@types/node-fetch": "1.6.7", "@types/uuid": "3.4.3", "fetch-cookie": "0.7.0", - "fetch-ponyfill": "4.1.0", + "fetch-ponyfill": "github:amarzavery/fetch-ponyfill#136e6f8192bdb2aa0b7983f0b3b4361c357be9db", "form-data": "2.3.2", "is-buffer": "2.0.2", "is-stream": "1.1.0", @@ -3973,7 +4087,7 @@ } }, "fetch-ponyfill": { - "version": "4.1.0", + "version": "github:amarzavery/fetch-ponyfill#136e6f8192bdb2aa0b7983f0b3b4361c357be9db", "bundled": true, "requires": { "fetch-cookie": "0.6.0", @@ -5761,7 +5875,6 @@ "bundled": true }, "randomatic": { - "version": "", "bundled": true }, "randombytes": { diff --git a/package.json b/package.json index 13ea94968f67..679eec73a16c 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "file:~/src/ms-rest-js" + "ms-rest-js": "^0.3.0" }, "devDependencies": { "@types/mocha": "^2.2.43", From 555b47751a4cf746bcee3d20002b430d8c3f98cc Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Mon, 2 Apr 2018 18:10:55 -0700 Subject: [PATCH 016/289] Fix linter error --- lib/credentials/cognitiveServicesCredentials.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/credentials/cognitiveServicesCredentials.ts b/lib/credentials/cognitiveServicesCredentials.ts index 98ec2c0b9eac..0c3600fa4645 100644 --- a/lib/credentials/cognitiveServicesCredentials.ts +++ b/lib/credentials/cognitiveServicesCredentials.ts @@ -18,7 +18,7 @@ export class CognitiveServicesCredentials extends ApiKeyCredentials { const options = { inHeader: { "Ocp-Apim-Subscription-Key": subscriptionKey, - "X-BingApis-SDK-Client": 'node-SDK' + "X-BingApis-SDK-Client": "node-SDK" } }; super(options); From 2c06a7f41ef190cb8e9a617e5ffaa52e7d49ded3 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Mon, 2 Apr 2018 18:12:16 -0700 Subject: [PATCH 017/289] Update build products --- dist/lib/credentials/cognitiveServicesCredentials.js | 2 +- msRestAzureBundle.js | 2 +- msRestAzureBundle.js.map | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/lib/credentials/cognitiveServicesCredentials.js b/dist/lib/credentials/cognitiveServicesCredentials.js index 8e3801783330..713dab11a35f 100644 --- a/dist/lib/credentials/cognitiveServicesCredentials.js +++ b/dist/lib/credentials/cognitiveServicesCredentials.js @@ -17,7 +17,7 @@ class CognitiveServicesCredentials extends ms_rest_js_1.ApiKeyCredentials { const options = { inHeader: { "Ocp-Apim-Subscription-Key": subscriptionKey, - "X-BingApis-SDK-Client": 'node-SDK' + "X-BingApis-SDK-Client": "node-SDK" } }; super(options); diff --git a/msRestAzureBundle.js b/msRestAzureBundle.js index 750c9f2d8dc8..15d0748c463e 100644 --- a/msRestAzureBundle.js +++ b/msRestAzureBundle.js @@ -698,7 +698,7 @@ class CognitiveServicesCredentials extends ms_rest_js_1.ApiKeyCredentials { const options = { inHeader: { "Ocp-Apim-Subscription-Key": subscriptionKey, - "X-BingApis-SDK-Client": 'node-SDK' + "X-BingApis-SDK-Client": "node-SDK" } }; super(options); diff --git a/msRestAzureBundle.js.map b/msRestAzureBundle.js.map index d1b8ba310bdf..d3ad30bc96d8 100644 --- a/msRestAzureBundle.js.map +++ b/msRestAzureBundle.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap 0bfd749cbce229220f8c","webpack:///external \"msRest\"","webpack:///./lib/util/constants.ts","webpack:///./lib/msRestAzure.ts","webpack:///./lib/azureServiceClient.ts","webpack:///./lib/pollingState.ts","webpack:///./lib/cloudError.ts","webpack:///./lib/baseResource.ts","webpack:///./lib/credentials/cognitiveServicesCredentials.ts"],"names":[],"mappings":"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","file":"msRestAzureBundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 0bfd749cbce229220f8c","module.exports = msRest;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"msRest\"\n// module id = 0\n// module chunks = 0","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nconst Constants = {\n /**\n * Defines constants for long running operation states.\n *\n * @const\n * @type {string}\n */\n LongRunningOperationStates: {\n InProgress: \"InProgress\",\n Succeeded: \"Succeeded\",\n Failed: \"Failed\",\n Canceled: \"Canceled\"\n },\n\n /**\n * The default language in the request header.\n *\n * @const\n * @type {string}\n */\n DEFAULT_LANGUAGE: \"en-us\",\n\n /**\n * The ms-rest-azure version.\n * @const\n * @type {string}\n */\n msRestAzureVersion: \"0.1.0\"\n};\n\nexport default Constants;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/util/constants.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport { AzureServiceClientOptions, AzureServiceClient } from \"./azureServiceClient\";\nimport Constants from \"./util/constants\";\nimport { CloudError, CloudErrorMapper } from \"./cloudError\";\nimport { BaseResource, BaseResourceMapper } from \"./baseResource\";\nimport { CognitiveServicesCredentials } from \"./credentials/cognitiveServicesCredentials\";\nexport { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper, CognitiveServicesCredentials };\n\n\n\n// WEBPACK FOOTER //\n// ./lib/msRestAzure.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport * as msRest from \"ms-rest-js\";\nimport Constants from \"./util/constants\";\nimport PollingState from \"./pollingState\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * Options to be provided while creating the client.\n */\nexport interface AzureServiceClientOptions extends msRest.ServiceClientOptions {\n /**\n * @property {string} [options.acceptLanguage] - Gets or sets the preferred language for the response. Default value is: \"en-US\".\n */\n acceptLanguage?: string;\n\n /**\n * @property {boolean} [options.generateClientRequestId] - When set to true a unique x-ms-client-request-id value\n * is generated and included in each request. Default is true.\n */\n generateClientRequestId?: boolean;\n\n /**\n * @property {number} [options.longRunningOperationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * Long Running Operations. Default value is 30.\n */\n longRunningOperationRetryTimeout?: number;\n\n /**\n * @property {number} [rpRegistrationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * AutomaticRPRegistration. Default value is 30 seconds.\n */\n rpRegistrationRetryTimeout?: number;\n}\n\n/**\n * @class\n * Initializes a new instance of the AzureServiceClient class.\n * @constructor\n *\n * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or\n * UserTokenCredentials object used for authentication.\n * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient\n */\nexport class AzureServiceClient extends msRest.ServiceClient {\n acceptLanguage: string = Constants.DEFAULT_LANGUAGE;\n generateClientRequestId = true;\n longRunningOperationRetryTimeout = 30;\n rpRegistrationRetryTimeout = 30;\n\n constructor(credentials: msRest.ServiceClientCredentials, options?: AzureServiceClientOptions) {\n super(credentials, options);\n this.acceptLanguage = Constants.DEFAULT_LANGUAGE;\n this.generateClientRequestId = true;\n this.longRunningOperationRetryTimeout = 30;\n if (!options) options = {};\n\n if (options.acceptLanguage !== null && options.acceptLanguage !== undefined) {\n this.acceptLanguage = options.acceptLanguage;\n }\n\n if (options.generateClientRequestId !== null && options.generateClientRequestId !== undefined) {\n this.generateClientRequestId = options.generateClientRequestId;\n }\n\n if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) {\n this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout;\n }\n\n if (options.rpRegistrationRetryTimeout !== null && options.rpRegistrationRetryTimeout !== undefined) {\n this.rpRegistrationRetryTimeout = options.rpRegistrationRetryTimeout;\n }\n\n try {\n const moduleName = \"ms-rest-azure\";\n const moduleVersion = Constants.msRestAzureVersion;\n this.addUserAgentInfo(`${moduleName}/${moduleVersion}`);\n } catch (err) {\n // do nothing\n }\n }\n\n /**\n * Provides a mechanism to make a request that will poll and provide the final result.\n * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object\n * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request\n * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody.\n */\n async sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n let initialResponse: msRest.HttpOperationResponse;\n try {\n initialResponse = await self.sendRequest(request);\n } catch (err) {\n return Promise.reject(err);\n }\n let finalResponse: msRest.HttpOperationResponse;\n try {\n finalResponse = await self.getLongRunningOperationResult(initialResponse, options);\n } catch (err) {\n return Promise.reject(err);\n }\n return Promise.resolve(finalResponse);\n }\n\n /**\n * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request.\n * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation.\n */\n private checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResponse): boolean {\n const statusCode = initialResponse.response.status;\n const method = initialResponse.request.method;\n if (statusCode === 200 || statusCode === 202 ||\n (statusCode === 201 && method === \"PUT\") ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n return false;\n } else {\n return true;\n }\n }\n\n /**\n * Poll Azure long running PUT, PATCH, POST or DELETE operations.\n * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation.\n * @param {msRest.RequestOptionsBase} [options] - custom request options.\n * @returns {Promise} result - The final response after polling is complete.\n */\n async getLongRunningOperationResult(resultOfInitialRequest: msRest.HttpOperationResponse, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n const initialRequestMethod: string = resultOfInitialRequest.request.method as msRest.HttpMethods;\n\n if (self.checkResponseStatusCodeFailed(resultOfInitialRequest)) {\n return Promise.reject(`Unexpected polling status code from long running operation ` +\n `\"${resultOfInitialRequest.response.status}\" for method \"${initialRequestMethod}\".`);\n }\n let pollingState: PollingState;\n try {\n pollingState = new PollingState(resultOfInitialRequest, self.longRunningOperationRetryTimeout);\n pollingState.optionsOfInitialRequest = options as msRest.RequestOptionsBase;\n } catch (error) {\n return Promise.reject(error);\n }\n const resourceUrl: string = resultOfInitialRequest.request.url;\n while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) {\n await msRest.delay(pollingState.getTimeout());\n if (pollingState.azureAsyncOperationHeaderLink) {\n await self.updateStateFromAzureAsyncOperationHeader(pollingState, true);\n } else if (pollingState.locationHeaderLink) {\n await self.updateStateFromLocationHeader(initialRequestMethod, pollingState);\n } else if (initialRequestMethod === \"PUT\") {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n } else {\n return Promise.reject(new Error(\"Location header is missing from long running operation.\"));\n }\n }\n\n if (pollingState.status === LroStates.Succeeded) {\n if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) &&\n (initialRequestMethod === \"PUT\" || initialRequestMethod === \"PATCH\")) {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n return Promise.resolve(pollingState.getOperationResponse());\n } else {\n return Promise.resolve(pollingState.getOperationResponse());\n }\n } else {\n return Promise.reject(pollingState.getRestError());\n }\n }\n\n /**\n * Retrieve operation status by polling from \"azure-asyncoperation\" header.\n * @param {PollingState} pollingState - The object to persist current operation state.\n * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation.\n */\n private async updateStateFromAzureAsyncOperationHeader(pollingState: PollingState, inPostOrDelete = false): Promise {\n let result: msRest.HttpOperationResponse;\n\n try {\n result = await this.getStatus(pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.parsedBody as { [key: string]: any };\n\n if (!parsedResponse) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n } else if (parsedResponse && !parsedResponse.status) {\n return Promise.reject(new Error(`The response \"${result.bodyAsText}\" from long running operation does not contain the status property.`));\n }\n pollingState.status = parsedResponse.status;\n pollingState.error = parsedResponse.error;\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = undefined;\n if (inPostOrDelete) {\n pollingState.resource = result.parsedBody;\n }\n return Promise.resolve();\n }\n\n /**\n * Retrieve PUT operation status by polling from \"location\" header.\n * @param {string} method - The HTTP method.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromLocationHeader(method: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.parsedBody as { [key: string]: any };\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n const statusCode = result.response.status;\n if (statusCode === 202) {\n pollingState.status = LroStates.InProgress;\n } else if (statusCode === 200 ||\n (statusCode === 201 && (method === \"PUT\" || method === \"PATCH\")) ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n pollingState.status = LroStates.Succeeded;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n } else {\n return Promise.reject(new Error(`The response with status code ${statusCode} from polling for ` +\n `long running operation url \"${pollingState.locationHeaderLink}\" is not valid.`));\n }\n }\n\n /**\n * Polling for resource status.\n * @param {string} resourceUrl - The url of resource.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromGetResourceOperation(resourceUrl: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n if (!result.parsedBody) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n }\n\n const parsedResponse = result.parsedBody as { [key: string]: any };\n pollingState.status = LroStates.Succeeded;\n if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) {\n pollingState.status = parsedResponse.properties.provisioningState;\n }\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n return Promise.resolve();\n }\n\n /**\n * Retrieves operation status by querying the operation URL.\n * @param {string} operationUrl - URL used to poll operation result.\n * @param {object} options - Options that can be set on the request object\n */\n private async getStatus(operationUrl: string, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n // Construct URL\n const requestUrl = operationUrl.replace(\" \", \"%20\");\n // Create HTTP request object\n const httpRequest: msRest.RequestPrepareOptions = {\n method: \"GET\",\n url: requestUrl,\n headers: {}\n };\n if (options) {\n const customHeaders: { [key: string]: string } = (options.customHeaders as { [key: string]: string });\n for (const headerName in customHeaders) {\n if (customHeaders.hasOwnProperty(headerName)) {\n (httpRequest.headers as { [key: string]: string })[headerName] = customHeaders[headerName];\n }\n }\n }\n let operationResponse: msRest.HttpOperationResponse;\n try {\n operationResponse = await self.sendRequest(httpRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n const statusCode = operationResponse.response.status;\n const responseBody = operationResponse.parsedBody;\n if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) {\n const error = new msRest.RestError(`Invalid status code with response body \"${operationResponse.bodyAsText}\" occurred ` +\n `when polling for operation status.`);\n error.statusCode = statusCode;\n error.request = msRest.stripRequest(operationResponse.request);\n error.response = operationResponse.response;\n try {\n error.body = responseBody;\n } catch (badResponse) {\n error.message += ` Error \"${badResponse}\" occured while deserializing the response body - \"${operationResponse.bodyAsText}\".`;\n error.body = operationResponse.bodyAsText;\n }\n return Promise.reject(error);\n }\n\n return Promise.resolve(operationResponse);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/azureServiceClient.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport Constants from \"./util/constants\";\nimport * as msRest from \"ms-rest-js\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * @class\n * Initializes a new instance of the PollingState class.\n */\nexport default class PollingState {\n /**\n * @param {msRest.HttpOperationResponse} [response] - Response of the initial request that was made as a part of the asynchronous operation.\n */\n resultOfInitialRequest: msRest.HttpOperationResponse;\n /**\n * @param {msRest.RequestOptionsBase} [optionsOfInitialRequest] - Request options that were provided as a part of the initial request.\n */\n optionsOfInitialRequest!: msRest.RequestOptionsBase;\n /**\n * @param {msRest.WebResource} [request] - provides information about the request made for polling.\n */\n request: msRest.WebResource;\n /**\n * @param {Response} [response] - The response object to extract longrunning operation status.\n */\n response!: Response;\n /**\n * @param {any} [resource] - Provides information about the response body received in the polling request. Particularly useful when polling via provisioningState.\n */\n resource: any;\n /**\n * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30.\n */\n retryTimeout = 30;\n /**\n * @param {string} [azureAsyncOperationHeaderLink] - The url that is present in \"azure-asyncoperation\" response header.\n */\n azureAsyncOperationHeaderLink?: string;\n /**\n * @param {string} [locationHeaderLink] - The url that is present in \"Location\" response header.\n */\n locationHeaderLink?: string;\n /**\n * @param {string} [status] - The status of polling. \"Succeeded, Failed, Cancelled, Updating, Creating, etc.\"\n */\n status?: string;\n /**\n * @param {msRest.RestError} [error] - Provides information about the error that happened while polling.\n */\n error?: msRest.RestError;\n\n constructor(resultOfInitialRequest: msRest.HttpOperationResponse, retryTimeout = 30) {\n this.resultOfInitialRequest = resultOfInitialRequest;\n this.retryTimeout = retryTimeout;\n this.updateResponse(resultOfInitialRequest.response);\n this.request = resultOfInitialRequest.request;\n // Parse response.body & assign it as the resource.\n try {\n if (resultOfInitialRequest.bodyAsText && resultOfInitialRequest.bodyAsText.length > 0) {\n this.resource = JSON.parse(resultOfInitialRequest.bodyAsText);\n } else {\n this.resource = resultOfInitialRequest.parsedBody;\n }\n } catch (error) {\n const deserializationError = new msRest.RestError(`Error \"${error}\" occurred in parsing the responseBody \" +\n \"while creating the PollingState for Long Running Operation- \"${resultOfInitialRequest.bodyAsText}\"`);\n deserializationError.request = resultOfInitialRequest.request;\n deserializationError.response = resultOfInitialRequest.response;\n throw deserializationError;\n }\n switch (this.response.status) {\n case 202:\n this.status = LroStates.InProgress;\n break;\n\n case 204:\n this.status = LroStates.Succeeded;\n break;\n\n case 201:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.InProgress;\n }\n break;\n\n case 200:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.Succeeded;\n }\n break;\n\n default:\n this.status = LroStates.Failed;\n break;\n }\n }\n\n /**\n * Update cached data using the provided response object\n * @param {Response} [response] - provider response object.\n */\n updateResponse(response: Response) {\n this.response = response;\n if (response && response.headers) {\n const asyncOperationHeader: string | null | undefined = response.headers.get(\"azure-asyncoperation\");\n const locationHeader: string | null | undefined = response.headers.get(\"location\");\n if (asyncOperationHeader) {\n this.azureAsyncOperationHeaderLink = asyncOperationHeader;\n }\n\n if (locationHeader) {\n this.locationHeaderLink = locationHeader;\n }\n }\n }\n\n /**\n * Gets timeout in milliseconds.\n * @returns {number} timeout\n */\n getTimeout() {\n if (this.retryTimeout || this.retryTimeout === 0) {\n return this.retryTimeout * 1000;\n }\n if (this.response) {\n const retryAfter: string | null | undefined = this.response.headers.get(\"retry-after\");\n if (retryAfter) {\n return parseInt(retryAfter) * 1000;\n }\n }\n return 30 * 1000;\n }\n\n /**\n * Returns long running operation result.\n * @returns {msRest.HttpOperationResponse} HttpOperationResponse\n */\n getOperationResponse(): msRest.HttpOperationResponse {\n const result = new msRest.HttpOperationResponse(this.request, this.response);\n if (this.resource && typeof this.resource.valueOf() === \"string\") {\n result.bodyAsText = this.resource;\n result.parsedBody = JSON.parse(this.resource);\n } else {\n result.parsedBody = this.resource;\n result.bodyAsText = JSON.stringify(this.resource);\n }\n return result;\n }\n\n /**\n * Returns an Error on operation failure.\n * @param {Error} err - The error object.\n * @returns {msRest.RestError} The RestError defined in the runtime.\n */\n getRestError(err?: Error): msRest.RestError {\n let errMsg: string;\n let errCode: string | undefined = undefined;\n\n const error = new msRest.RestError(\"\");\n error.request = msRest.stripRequest(this.request);\n error.response = this.response;\n const parsedResponse = this.resource as { [key: string]: any };\n\n if (err && err.message) {\n errMsg = `Long running operation failed with error: \"${err.message}\".`;\n } else {\n errMsg = `Long running operation failed with status: \"${this.status}\".`;\n }\n\n if (parsedResponse) {\n if (parsedResponse.error && parsedResponse.error.message) {\n errMsg = `Long running operation failed with error: \"${parsedResponse.error.message}\".`;\n }\n if (parsedResponse.error && parsedResponse.error.code) {\n errCode = parsedResponse.error.code as string;\n }\n }\n\n error.message = errMsg;\n if (errCode) error.code = errCode;\n error.body = parsedResponse;\n return error;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/pollingState.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * Provides additional information about an http error response returned from a Microsoft Azure service.\n */\nexport interface CloudError extends Error {\n /**\n * @property {string} code The error code parsed from the body of the http error response.\n */\n code: string;\n /**\n * @property {string} message The error message parsed from the body of the http error response.\n */\n message: string;\n /**\n * @property {string} [target] The target of the error.\n */\n target?: string;\n /**\n * @property {Array} [details] An array of CloudError objects specifying the details.\n */\n details?: Array;\n}\n\nexport const CloudErrorMapper = {\n required: false,\n serializedName: \"CloudError\",\n type: {\n name: \"Composite\",\n className: \"CloudError\",\n modelProperties: {\n code: {\n required: true,\n serializedName: \"code\",\n type: {\n name: \"String\"\n }\n },\n message: {\n required: true,\n serializedName: \"message\",\n type: {\n name: \"String\"\n }\n },\n target: {\n required: false,\n serializedName: \"target\",\n type: {\n name: \"String\"\n }\n },\n details: {\n required: false,\n serializedName: \"details\",\n type: {\n name: \"Sequence\",\n element: {\n required: false,\n serializedName: \"CloudErrorElementType\",\n type: {\n name: \"Composite\",\n className: \"CloudError\"\n }\n }\n }\n }\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/cloudError.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * An empty interface.\n */\nexport interface BaseResource { }\n\nexport const BaseResourceMapper = {\n required: false,\n serializedName: \"BaseResource\",\n type: {\n name: \"Composite\",\n className: \"BaseResource\",\n modelProperties: {\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/baseResource.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport { ApiKeyCredentials } from \"ms-rest-js\";\n\n/**\n * Creates a new CognitiveServicesCredentials object.\n *\n * @constructor\n * @param {string} subscriptionKey The CognitiveServices subscription key\n */\nexport class CognitiveServicesCredentials extends ApiKeyCredentials {\n constructor(subscriptionKey: string) {\n if (!subscriptionKey || (subscriptionKey && typeof subscriptionKey.valueOf() !== \"string\")) {\n throw new Error(\"subscriptionKey cannot be null or undefined and must be of type string.\");\n }\n\n const options = {\n inHeader: {\n \"Ocp-Apim-Subscription-Key\": subscriptionKey,\n \"X-BingApis-SDK-Client\": 'node-SDK'\n }\n };\n super(options);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/credentials/cognitiveServicesCredentials.ts"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap 88f9f6e20cc43c86608e","webpack:///external \"msRest\"","webpack:///./lib/util/constants.ts","webpack:///./lib/msRestAzure.ts","webpack:///./lib/azureServiceClient.ts","webpack:///./lib/pollingState.ts","webpack:///./lib/cloudError.ts","webpack:///./lib/baseResource.ts","webpack:///./lib/credentials/cognitiveServicesCredentials.ts"],"names":[],"mappings":"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","file":"msRestAzureBundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 88f9f6e20cc43c86608e","module.exports = msRest;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"msRest\"\n// module id = 0\n// module chunks = 0","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nconst Constants = {\n /**\n * Defines constants for long running operation states.\n *\n * @const\n * @type {string}\n */\n LongRunningOperationStates: {\n InProgress: \"InProgress\",\n Succeeded: \"Succeeded\",\n Failed: \"Failed\",\n Canceled: \"Canceled\"\n },\n\n /**\n * The default language in the request header.\n *\n * @const\n * @type {string}\n */\n DEFAULT_LANGUAGE: \"en-us\",\n\n /**\n * The ms-rest-azure version.\n * @const\n * @type {string}\n */\n msRestAzureVersion: \"0.1.0\"\n};\n\nexport default Constants;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/util/constants.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport { AzureServiceClientOptions, AzureServiceClient } from \"./azureServiceClient\";\nimport Constants from \"./util/constants\";\nimport { CloudError, CloudErrorMapper } from \"./cloudError\";\nimport { BaseResource, BaseResourceMapper } from \"./baseResource\";\nimport { CognitiveServicesCredentials } from \"./credentials/cognitiveServicesCredentials\";\nexport { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper, CognitiveServicesCredentials };\n\n\n\n// WEBPACK FOOTER //\n// ./lib/msRestAzure.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport * as msRest from \"ms-rest-js\";\nimport Constants from \"./util/constants\";\nimport PollingState from \"./pollingState\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * Options to be provided while creating the client.\n */\nexport interface AzureServiceClientOptions extends msRest.ServiceClientOptions {\n /**\n * @property {string} [options.acceptLanguage] - Gets or sets the preferred language for the response. Default value is: \"en-US\".\n */\n acceptLanguage?: string;\n\n /**\n * @property {boolean} [options.generateClientRequestId] - When set to true a unique x-ms-client-request-id value\n * is generated and included in each request. Default is true.\n */\n generateClientRequestId?: boolean;\n\n /**\n * @property {number} [options.longRunningOperationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * Long Running Operations. Default value is 30.\n */\n longRunningOperationRetryTimeout?: number;\n\n /**\n * @property {number} [rpRegistrationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * AutomaticRPRegistration. Default value is 30 seconds.\n */\n rpRegistrationRetryTimeout?: number;\n}\n\n/**\n * @class\n * Initializes a new instance of the AzureServiceClient class.\n * @constructor\n *\n * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or\n * UserTokenCredentials object used for authentication.\n * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient\n */\nexport class AzureServiceClient extends msRest.ServiceClient {\n acceptLanguage: string = Constants.DEFAULT_LANGUAGE;\n generateClientRequestId = true;\n longRunningOperationRetryTimeout = 30;\n rpRegistrationRetryTimeout = 30;\n\n constructor(credentials: msRest.ServiceClientCredentials, options?: AzureServiceClientOptions) {\n super(credentials, options);\n this.acceptLanguage = Constants.DEFAULT_LANGUAGE;\n this.generateClientRequestId = true;\n this.longRunningOperationRetryTimeout = 30;\n if (!options) options = {};\n\n if (options.acceptLanguage !== null && options.acceptLanguage !== undefined) {\n this.acceptLanguage = options.acceptLanguage;\n }\n\n if (options.generateClientRequestId !== null && options.generateClientRequestId !== undefined) {\n this.generateClientRequestId = options.generateClientRequestId;\n }\n\n if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) {\n this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout;\n }\n\n if (options.rpRegistrationRetryTimeout !== null && options.rpRegistrationRetryTimeout !== undefined) {\n this.rpRegistrationRetryTimeout = options.rpRegistrationRetryTimeout;\n }\n\n try {\n const moduleName = \"ms-rest-azure\";\n const moduleVersion = Constants.msRestAzureVersion;\n this.addUserAgentInfo(`${moduleName}/${moduleVersion}`);\n } catch (err) {\n // do nothing\n }\n }\n\n /**\n * Provides a mechanism to make a request that will poll and provide the final result.\n * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object\n * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request\n * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody.\n */\n async sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n let initialResponse: msRest.HttpOperationResponse;\n try {\n initialResponse = await self.sendRequest(request);\n } catch (err) {\n return Promise.reject(err);\n }\n let finalResponse: msRest.HttpOperationResponse;\n try {\n finalResponse = await self.getLongRunningOperationResult(initialResponse, options);\n } catch (err) {\n return Promise.reject(err);\n }\n return Promise.resolve(finalResponse);\n }\n\n /**\n * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request.\n * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation.\n */\n private checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResponse): boolean {\n const statusCode = initialResponse.response.status;\n const method = initialResponse.request.method;\n if (statusCode === 200 || statusCode === 202 ||\n (statusCode === 201 && method === \"PUT\") ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n return false;\n } else {\n return true;\n }\n }\n\n /**\n * Poll Azure long running PUT, PATCH, POST or DELETE operations.\n * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation.\n * @param {msRest.RequestOptionsBase} [options] - custom request options.\n * @returns {Promise} result - The final response after polling is complete.\n */\n async getLongRunningOperationResult(resultOfInitialRequest: msRest.HttpOperationResponse, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n const initialRequestMethod: string = resultOfInitialRequest.request.method as msRest.HttpMethods;\n\n if (self.checkResponseStatusCodeFailed(resultOfInitialRequest)) {\n return Promise.reject(`Unexpected polling status code from long running operation ` +\n `\"${resultOfInitialRequest.response.status}\" for method \"${initialRequestMethod}\".`);\n }\n let pollingState: PollingState;\n try {\n pollingState = new PollingState(resultOfInitialRequest, self.longRunningOperationRetryTimeout);\n pollingState.optionsOfInitialRequest = options as msRest.RequestOptionsBase;\n } catch (error) {\n return Promise.reject(error);\n }\n const resourceUrl: string = resultOfInitialRequest.request.url;\n while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) {\n await msRest.delay(pollingState.getTimeout());\n if (pollingState.azureAsyncOperationHeaderLink) {\n await self.updateStateFromAzureAsyncOperationHeader(pollingState, true);\n } else if (pollingState.locationHeaderLink) {\n await self.updateStateFromLocationHeader(initialRequestMethod, pollingState);\n } else if (initialRequestMethod === \"PUT\") {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n } else {\n return Promise.reject(new Error(\"Location header is missing from long running operation.\"));\n }\n }\n\n if (pollingState.status === LroStates.Succeeded) {\n if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) &&\n (initialRequestMethod === \"PUT\" || initialRequestMethod === \"PATCH\")) {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n return Promise.resolve(pollingState.getOperationResponse());\n } else {\n return Promise.resolve(pollingState.getOperationResponse());\n }\n } else {\n return Promise.reject(pollingState.getRestError());\n }\n }\n\n /**\n * Retrieve operation status by polling from \"azure-asyncoperation\" header.\n * @param {PollingState} pollingState - The object to persist current operation state.\n * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation.\n */\n private async updateStateFromAzureAsyncOperationHeader(pollingState: PollingState, inPostOrDelete = false): Promise {\n let result: msRest.HttpOperationResponse;\n\n try {\n result = await this.getStatus(pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.parsedBody as { [key: string]: any };\n\n if (!parsedResponse) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n } else if (parsedResponse && !parsedResponse.status) {\n return Promise.reject(new Error(`The response \"${result.bodyAsText}\" from long running operation does not contain the status property.`));\n }\n pollingState.status = parsedResponse.status;\n pollingState.error = parsedResponse.error;\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = undefined;\n if (inPostOrDelete) {\n pollingState.resource = result.parsedBody;\n }\n return Promise.resolve();\n }\n\n /**\n * Retrieve PUT operation status by polling from \"location\" header.\n * @param {string} method - The HTTP method.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromLocationHeader(method: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.parsedBody as { [key: string]: any };\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n const statusCode = result.response.status;\n if (statusCode === 202) {\n pollingState.status = LroStates.InProgress;\n } else if (statusCode === 200 ||\n (statusCode === 201 && (method === \"PUT\" || method === \"PATCH\")) ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n pollingState.status = LroStates.Succeeded;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n } else {\n return Promise.reject(new Error(`The response with status code ${statusCode} from polling for ` +\n `long running operation url \"${pollingState.locationHeaderLink}\" is not valid.`));\n }\n }\n\n /**\n * Polling for resource status.\n * @param {string} resourceUrl - The url of resource.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromGetResourceOperation(resourceUrl: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n if (!result.parsedBody) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n }\n\n const parsedResponse = result.parsedBody as { [key: string]: any };\n pollingState.status = LroStates.Succeeded;\n if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) {\n pollingState.status = parsedResponse.properties.provisioningState;\n }\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n return Promise.resolve();\n }\n\n /**\n * Retrieves operation status by querying the operation URL.\n * @param {string} operationUrl - URL used to poll operation result.\n * @param {object} options - Options that can be set on the request object\n */\n private async getStatus(operationUrl: string, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n // Construct URL\n const requestUrl = operationUrl.replace(\" \", \"%20\");\n // Create HTTP request object\n const httpRequest: msRest.RequestPrepareOptions = {\n method: \"GET\",\n url: requestUrl,\n headers: {}\n };\n if (options) {\n const customHeaders: { [key: string]: string } = (options.customHeaders as { [key: string]: string });\n for (const headerName in customHeaders) {\n if (customHeaders.hasOwnProperty(headerName)) {\n (httpRequest.headers as { [key: string]: string })[headerName] = customHeaders[headerName];\n }\n }\n }\n let operationResponse: msRest.HttpOperationResponse;\n try {\n operationResponse = await self.sendRequest(httpRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n const statusCode = operationResponse.response.status;\n const responseBody = operationResponse.parsedBody;\n if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) {\n const error = new msRest.RestError(`Invalid status code with response body \"${operationResponse.bodyAsText}\" occurred ` +\n `when polling for operation status.`);\n error.statusCode = statusCode;\n error.request = msRest.stripRequest(operationResponse.request);\n error.response = operationResponse.response;\n try {\n error.body = responseBody;\n } catch (badResponse) {\n error.message += ` Error \"${badResponse}\" occured while deserializing the response body - \"${operationResponse.bodyAsText}\".`;\n error.body = operationResponse.bodyAsText;\n }\n return Promise.reject(error);\n }\n\n return Promise.resolve(operationResponse);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/azureServiceClient.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport Constants from \"./util/constants\";\nimport * as msRest from \"ms-rest-js\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * @class\n * Initializes a new instance of the PollingState class.\n */\nexport default class PollingState {\n /**\n * @param {msRest.HttpOperationResponse} [response] - Response of the initial request that was made as a part of the asynchronous operation.\n */\n resultOfInitialRequest: msRest.HttpOperationResponse;\n /**\n * @param {msRest.RequestOptionsBase} [optionsOfInitialRequest] - Request options that were provided as a part of the initial request.\n */\n optionsOfInitialRequest!: msRest.RequestOptionsBase;\n /**\n * @param {msRest.WebResource} [request] - provides information about the request made for polling.\n */\n request: msRest.WebResource;\n /**\n * @param {Response} [response] - The response object to extract longrunning operation status.\n */\n response!: Response;\n /**\n * @param {any} [resource] - Provides information about the response body received in the polling request. Particularly useful when polling via provisioningState.\n */\n resource: any;\n /**\n * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30.\n */\n retryTimeout = 30;\n /**\n * @param {string} [azureAsyncOperationHeaderLink] - The url that is present in \"azure-asyncoperation\" response header.\n */\n azureAsyncOperationHeaderLink?: string;\n /**\n * @param {string} [locationHeaderLink] - The url that is present in \"Location\" response header.\n */\n locationHeaderLink?: string;\n /**\n * @param {string} [status] - The status of polling. \"Succeeded, Failed, Cancelled, Updating, Creating, etc.\"\n */\n status?: string;\n /**\n * @param {msRest.RestError} [error] - Provides information about the error that happened while polling.\n */\n error?: msRest.RestError;\n\n constructor(resultOfInitialRequest: msRest.HttpOperationResponse, retryTimeout = 30) {\n this.resultOfInitialRequest = resultOfInitialRequest;\n this.retryTimeout = retryTimeout;\n this.updateResponse(resultOfInitialRequest.response);\n this.request = resultOfInitialRequest.request;\n // Parse response.body & assign it as the resource.\n try {\n if (resultOfInitialRequest.bodyAsText && resultOfInitialRequest.bodyAsText.length > 0) {\n this.resource = JSON.parse(resultOfInitialRequest.bodyAsText);\n } else {\n this.resource = resultOfInitialRequest.parsedBody;\n }\n } catch (error) {\n const deserializationError = new msRest.RestError(`Error \"${error}\" occurred in parsing the responseBody \" +\n \"while creating the PollingState for Long Running Operation- \"${resultOfInitialRequest.bodyAsText}\"`);\n deserializationError.request = resultOfInitialRequest.request;\n deserializationError.response = resultOfInitialRequest.response;\n throw deserializationError;\n }\n switch (this.response.status) {\n case 202:\n this.status = LroStates.InProgress;\n break;\n\n case 204:\n this.status = LroStates.Succeeded;\n break;\n\n case 201:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.InProgress;\n }\n break;\n\n case 200:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.Succeeded;\n }\n break;\n\n default:\n this.status = LroStates.Failed;\n break;\n }\n }\n\n /**\n * Update cached data using the provided response object\n * @param {Response} [response] - provider response object.\n */\n updateResponse(response: Response) {\n this.response = response;\n if (response && response.headers) {\n const asyncOperationHeader: string | null | undefined = response.headers.get(\"azure-asyncoperation\");\n const locationHeader: string | null | undefined = response.headers.get(\"location\");\n if (asyncOperationHeader) {\n this.azureAsyncOperationHeaderLink = asyncOperationHeader;\n }\n\n if (locationHeader) {\n this.locationHeaderLink = locationHeader;\n }\n }\n }\n\n /**\n * Gets timeout in milliseconds.\n * @returns {number} timeout\n */\n getTimeout() {\n if (this.retryTimeout || this.retryTimeout === 0) {\n return this.retryTimeout * 1000;\n }\n if (this.response) {\n const retryAfter: string | null | undefined = this.response.headers.get(\"retry-after\");\n if (retryAfter) {\n return parseInt(retryAfter) * 1000;\n }\n }\n return 30 * 1000;\n }\n\n /**\n * Returns long running operation result.\n * @returns {msRest.HttpOperationResponse} HttpOperationResponse\n */\n getOperationResponse(): msRest.HttpOperationResponse {\n const result = new msRest.HttpOperationResponse(this.request, this.response);\n if (this.resource && typeof this.resource.valueOf() === \"string\") {\n result.bodyAsText = this.resource;\n result.parsedBody = JSON.parse(this.resource);\n } else {\n result.parsedBody = this.resource;\n result.bodyAsText = JSON.stringify(this.resource);\n }\n return result;\n }\n\n /**\n * Returns an Error on operation failure.\n * @param {Error} err - The error object.\n * @returns {msRest.RestError} The RestError defined in the runtime.\n */\n getRestError(err?: Error): msRest.RestError {\n let errMsg: string;\n let errCode: string | undefined = undefined;\n\n const error = new msRest.RestError(\"\");\n error.request = msRest.stripRequest(this.request);\n error.response = this.response;\n const parsedResponse = this.resource as { [key: string]: any };\n\n if (err && err.message) {\n errMsg = `Long running operation failed with error: \"${err.message}\".`;\n } else {\n errMsg = `Long running operation failed with status: \"${this.status}\".`;\n }\n\n if (parsedResponse) {\n if (parsedResponse.error && parsedResponse.error.message) {\n errMsg = `Long running operation failed with error: \"${parsedResponse.error.message}\".`;\n }\n if (parsedResponse.error && parsedResponse.error.code) {\n errCode = parsedResponse.error.code as string;\n }\n }\n\n error.message = errMsg;\n if (errCode) error.code = errCode;\n error.body = parsedResponse;\n return error;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/pollingState.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * Provides additional information about an http error response returned from a Microsoft Azure service.\n */\nexport interface CloudError extends Error {\n /**\n * @property {string} code The error code parsed from the body of the http error response.\n */\n code: string;\n /**\n * @property {string} message The error message parsed from the body of the http error response.\n */\n message: string;\n /**\n * @property {string} [target] The target of the error.\n */\n target?: string;\n /**\n * @property {Array} [details] An array of CloudError objects specifying the details.\n */\n details?: Array;\n}\n\nexport const CloudErrorMapper = {\n required: false,\n serializedName: \"CloudError\",\n type: {\n name: \"Composite\",\n className: \"CloudError\",\n modelProperties: {\n code: {\n required: true,\n serializedName: \"code\",\n type: {\n name: \"String\"\n }\n },\n message: {\n required: true,\n serializedName: \"message\",\n type: {\n name: \"String\"\n }\n },\n target: {\n required: false,\n serializedName: \"target\",\n type: {\n name: \"String\"\n }\n },\n details: {\n required: false,\n serializedName: \"details\",\n type: {\n name: \"Sequence\",\n element: {\n required: false,\n serializedName: \"CloudErrorElementType\",\n type: {\n name: \"Composite\",\n className: \"CloudError\"\n }\n }\n }\n }\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/cloudError.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * An empty interface.\n */\nexport interface BaseResource { }\n\nexport const BaseResourceMapper = {\n required: false,\n serializedName: \"BaseResource\",\n type: {\n name: \"Composite\",\n className: \"BaseResource\",\n modelProperties: {\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/baseResource.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport { ApiKeyCredentials } from \"ms-rest-js\";\n\n/**\n * Creates a new CognitiveServicesCredentials object.\n *\n * @constructor\n * @param {string} subscriptionKey The CognitiveServices subscription key\n */\nexport class CognitiveServicesCredentials extends ApiKeyCredentials {\n constructor(subscriptionKey: string) {\n if (!subscriptionKey || (subscriptionKey && typeof subscriptionKey.valueOf() !== \"string\")) {\n throw new Error(\"subscriptionKey cannot be null or undefined and must be of type string.\");\n }\n\n const options = {\n inHeader: {\n \"Ocp-Apim-Subscription-Key\": subscriptionKey,\n \"X-BingApis-SDK-Client\": \"node-SDK\"\n }\n };\n super(options);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/credentials/cognitiveServicesCredentials.ts"],"sourceRoot":""} \ No newline at end of file From e307eb4ced0588c5a1db15495f60b8aff94bfd9d Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Tue, 10 Apr 2018 15:45:58 -0700 Subject: [PATCH 018/289] Remove build products and update configs --- .gitignore | 7 +- .npmignore | 11 +- dist/lib/azureServiceClient.js | 306 - dist/lib/azureServiceClient.js.map | 1 - dist/lib/baseResource.js | 14 - dist/lib/baseResource.js.map | 1 - dist/lib/cloudError.js | 51 - dist/lib/cloudError.js.map | 1 - .../cognitiveServicesCredentials.js | 27 - .../cognitiveServicesCredentials.js.map | 1 - dist/lib/msRestAzure.js | 15 - dist/lib/msRestAzure.js.map | 1 - dist/lib/pollingState.js | 149 - dist/lib/pollingState.js.map | 1 - dist/lib/util/constants.js | 33 - dist/lib/util/constants.js.map | 1 - gulpfile.js | 30 - msRestAzureBundle.js | 712 --- msRestAzureBundle.js.map | 1 - msRestAzureBundle.min.js | 1 - msRestAzureBundle.min.js.map | 1 - package-lock.json | 5318 +++-------------- package.json | 22 +- test/mocha.opts | 5 + tsconfig.json | 13 +- typings/lib/azureServiceClient.d.ts | 84 - typings/lib/baseResource.d.ts | 15 - typings/lib/cloudError.d.ts | 68 - .../cognitiveServicesCredentials.d.ts | 10 - typings/lib/msRestAzure.d.ts | 6 - typings/lib/pollingState.d.ts | 69 - typings/lib/util/constants.d.ts | 11 - 32 files changed, 919 insertions(+), 6067 deletions(-) delete mode 100644 dist/lib/azureServiceClient.js delete mode 100644 dist/lib/azureServiceClient.js.map delete mode 100644 dist/lib/baseResource.js delete mode 100644 dist/lib/baseResource.js.map delete mode 100644 dist/lib/cloudError.js delete mode 100644 dist/lib/cloudError.js.map delete mode 100644 dist/lib/credentials/cognitiveServicesCredentials.js delete mode 100644 dist/lib/credentials/cognitiveServicesCredentials.js.map delete mode 100644 dist/lib/msRestAzure.js delete mode 100644 dist/lib/msRestAzure.js.map delete mode 100644 dist/lib/pollingState.js delete mode 100644 dist/lib/pollingState.js.map delete mode 100644 dist/lib/util/constants.js delete mode 100644 dist/lib/util/constants.js.map delete mode 100644 gulpfile.js delete mode 100644 msRestAzureBundle.js delete mode 100644 msRestAzureBundle.js.map delete mode 100644 msRestAzureBundle.min.js delete mode 100644 msRestAzureBundle.min.js.map create mode 100644 test/mocha.opts delete mode 100644 typings/lib/azureServiceClient.d.ts delete mode 100644 typings/lib/baseResource.d.ts delete mode 100644 typings/lib/cloudError.d.ts delete mode 100644 typings/lib/credentials/cognitiveServicesCredentials.d.ts delete mode 100644 typings/lib/msRestAzure.d.ts delete mode 100644 typings/lib/pollingState.d.ts delete mode 100644 typings/lib/util/constants.d.ts diff --git a/.gitignore b/.gitignore index 9d3ac0b878cf..2188f394e418 100644 --- a/.gitignore +++ b/.gitignore @@ -82,5 +82,10 @@ node_modules SdkCodeGen output/* + # Typescript output -dist/ms-rest/* +dist/ +typings/ +*.js +*.js.map + diff --git a/.npmignore b/.npmignore index 9eb0e6fb7fa2..1e911efaac97 100644 --- a/.npmignore +++ b/.npmignore @@ -1,8 +1,13 @@ .vscode/ -node_modules/ +.idea/ samples/ +lib/ test/ .travis.yml -gulpfile.js .gitignore -.git \ No newline at end of file +gulpfile.js +.git +.DS_Store +tsconfig.json +tslint.json +webpack.config.ts \ No newline at end of file diff --git a/dist/lib/azureServiceClient.js b/dist/lib/azureServiceClient.js deleted file mode 100644 index 0aa9438b0f03..000000000000 --- a/dist/lib/azureServiceClient.js +++ /dev/null @@ -1,306 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const msRest = require("ms-rest-js"); -const constants_1 = require("./util/constants"); -const pollingState_1 = require("./pollingState"); -const LroStates = constants_1.default.LongRunningOperationStates; -/** - * @class - * Initializes a new instance of the AzureServiceClient class. - * @constructor - * - * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or - * UserTokenCredentials object used for authentication. - * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient - */ -class AzureServiceClient extends msRest.ServiceClient { - constructor(credentials, options) { - super(credentials, options); - this.acceptLanguage = constants_1.default.DEFAULT_LANGUAGE; - this.generateClientRequestId = true; - this.longRunningOperationRetryTimeout = 30; - this.rpRegistrationRetryTimeout = 30; - this.acceptLanguage = constants_1.default.DEFAULT_LANGUAGE; - this.generateClientRequestId = true; - this.longRunningOperationRetryTimeout = 30; - if (!options) - options = {}; - if (options.acceptLanguage !== null && options.acceptLanguage !== undefined) { - this.acceptLanguage = options.acceptLanguage; - } - if (options.generateClientRequestId !== null && options.generateClientRequestId !== undefined) { - this.generateClientRequestId = options.generateClientRequestId; - } - if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) { - this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout; - } - if (options.rpRegistrationRetryTimeout !== null && options.rpRegistrationRetryTimeout !== undefined) { - this.rpRegistrationRetryTimeout = options.rpRegistrationRetryTimeout; - } - try { - const moduleName = "ms-rest-azure"; - const moduleVersion = constants_1.default.msRestAzureVersion; - this.addUserAgentInfo(`${moduleName}/${moduleVersion}`); - } - catch (err) { - // do nothing - } - } - /** - * Provides a mechanism to make a request that will poll and provide the final result. - * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object - * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request - * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody. - */ - sendLongRunningRequest(request, options) { - return __awaiter(this, void 0, void 0, function* () { - const self = this; - let initialResponse; - try { - initialResponse = yield self.sendRequest(request); - } - catch (err) { - return Promise.reject(err); - } - let finalResponse; - try { - finalResponse = yield self.getLongRunningOperationResult(initialResponse, options); - } - catch (err) { - return Promise.reject(err); - } - return Promise.resolve(finalResponse); - }); - } - /** - * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request. - * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation. - */ - checkResponseStatusCodeFailed(initialResponse) { - const statusCode = initialResponse.response.status; - const method = initialResponse.request.method; - if (statusCode === 200 || statusCode === 202 || - (statusCode === 201 && method === "PUT") || - (statusCode === 204 && (method === "DELETE" || method === "POST"))) { - return false; - } - else { - return true; - } - } - /** - * Poll Azure long running PUT, PATCH, POST or DELETE operations. - * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation. - * @param {msRest.RequestOptionsBase} [options] - custom request options. - * @returns {Promise} result - The final response after polling is complete. - */ - getLongRunningOperationResult(resultOfInitialRequest, options) { - return __awaiter(this, void 0, void 0, function* () { - const self = this; - const initialRequestMethod = resultOfInitialRequest.request.method; - if (self.checkResponseStatusCodeFailed(resultOfInitialRequest)) { - return Promise.reject(`Unexpected polling status code from long running operation ` + - `"${resultOfInitialRequest.response.status}" for method "${initialRequestMethod}".`); - } - let pollingState; - try { - pollingState = new pollingState_1.default(resultOfInitialRequest, self.longRunningOperationRetryTimeout); - pollingState.optionsOfInitialRequest = options; - } - catch (error) { - return Promise.reject(error); - } - const resourceUrl = resultOfInitialRequest.request.url; - while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) { - yield msRest.delay(pollingState.getTimeout()); - if (pollingState.azureAsyncOperationHeaderLink) { - yield self.updateStateFromAzureAsyncOperationHeader(pollingState, true); - } - else if (pollingState.locationHeaderLink) { - yield self.updateStateFromLocationHeader(initialRequestMethod, pollingState); - } - else if (initialRequestMethod === "PUT") { - yield self.updateStateFromGetResourceOperation(resourceUrl, pollingState); - } - else { - return Promise.reject(new Error("Location header is missing from long running operation.")); - } - } - if (pollingState.status === LroStates.Succeeded) { - if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) && - (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH")) { - yield self.updateStateFromGetResourceOperation(resourceUrl, pollingState); - return Promise.resolve(pollingState.getOperationResponse()); - } - else { - return Promise.resolve(pollingState.getOperationResponse()); - } - } - else { - return Promise.reject(pollingState.getRestError()); - } - }); - } - /** - * Retrieve operation status by polling from "azure-asyncoperation" header. - * @param {PollingState} pollingState - The object to persist current operation state. - * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation. - */ - updateStateFromAzureAsyncOperationHeader(pollingState, inPostOrDelete = false) { - return __awaiter(this, void 0, void 0, function* () { - let result; - try { - result = yield this.getStatus(pollingState.azureAsyncOperationHeaderLink, pollingState.optionsOfInitialRequest); - } - catch (err) { - return Promise.reject(err); - } - const parsedResponse = result.parsedBody; - if (!parsedResponse) { - return Promise.reject(new Error("The response from long running operation does not contain a body.")); - } - else if (parsedResponse && !parsedResponse.status) { - return Promise.reject(new Error(`The response "${result.bodyAsText}" from long running operation does not contain the status property.`)); - } - pollingState.status = parsedResponse.status; - pollingState.error = parsedResponse.error; - pollingState.updateResponse(result.response); - pollingState.request = result.request; - pollingState.resource = undefined; - if (inPostOrDelete) { - pollingState.resource = result.parsedBody; - } - return Promise.resolve(); - }); - } - /** - * Retrieve PUT operation status by polling from "location" header. - * @param {string} method - The HTTP method. - * @param {PollingState} pollingState - The object to persist current operation state. - */ - updateStateFromLocationHeader(method, pollingState) { - return __awaiter(this, void 0, void 0, function* () { - let result; - try { - result = yield this.getStatus(pollingState.locationHeaderLink, pollingState.optionsOfInitialRequest); - } - catch (err) { - return Promise.reject(err); - } - const parsedResponse = result.parsedBody; - pollingState.updateResponse(result.response); - pollingState.request = result.request; - const statusCode = result.response.status; - if (statusCode === 202) { - pollingState.status = LroStates.InProgress; - } - else if (statusCode === 200 || - (statusCode === 201 && (method === "PUT" || method === "PATCH")) || - (statusCode === 204 && (method === "DELETE" || method === "POST"))) { - pollingState.status = LroStates.Succeeded; - pollingState.resource = parsedResponse; - // we might not throw an error, but initialize here just in case. - pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); - pollingState.error.code = pollingState.status; - } - else { - return Promise.reject(new Error(`The response with status code ${statusCode} from polling for ` + - `long running operation url "${pollingState.locationHeaderLink}" is not valid.`)); - } - }); - } - /** - * Polling for resource status. - * @param {string} resourceUrl - The url of resource. - * @param {PollingState} pollingState - The object to persist current operation state. - */ - updateStateFromGetResourceOperation(resourceUrl, pollingState) { - return __awaiter(this, void 0, void 0, function* () { - let result; - try { - result = yield this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest); - } - catch (err) { - return Promise.reject(err); - } - if (!result.parsedBody) { - return Promise.reject(new Error("The response from long running operation does not contain a body.")); - } - const parsedResponse = result.parsedBody; - pollingState.status = LroStates.Succeeded; - if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) { - pollingState.status = parsedResponse.properties.provisioningState; - } - pollingState.updateResponse(result.response); - pollingState.request = result.request; - pollingState.resource = parsedResponse; - // we might not throw an error, but initialize here just in case. - pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); - pollingState.error.code = pollingState.status; - return Promise.resolve(); - }); - } - /** - * Retrieves operation status by querying the operation URL. - * @param {string} operationUrl - URL used to poll operation result. - * @param {object} options - Options that can be set on the request object - */ - getStatus(operationUrl, options) { - return __awaiter(this, void 0, void 0, function* () { - const self = this; - // Construct URL - const requestUrl = operationUrl.replace(" ", "%20"); - // Create HTTP request object - const httpRequest = { - method: "GET", - url: requestUrl, - headers: {} - }; - if (options) { - const customHeaders = options.customHeaders; - for (const headerName in customHeaders) { - if (customHeaders.hasOwnProperty(headerName)) { - httpRequest.headers[headerName] = customHeaders[headerName]; - } - } - } - let operationResponse; - try { - operationResponse = yield self.sendRequest(httpRequest); - } - catch (err) { - return Promise.reject(err); - } - const statusCode = operationResponse.response.status; - const responseBody = operationResponse.parsedBody; - if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { - const error = new msRest.RestError(`Invalid status code with response body "${operationResponse.bodyAsText}" occurred ` + - `when polling for operation status.`); - error.statusCode = statusCode; - error.request = msRest.stripRequest(operationResponse.request); - error.response = operationResponse.response; - try { - error.body = responseBody; - } - catch (badResponse) { - error.message += ` Error "${badResponse}" occured while deserializing the response body - "${operationResponse.bodyAsText}".`; - error.body = operationResponse.bodyAsText; - } - return Promise.reject(error); - } - return Promise.resolve(operationResponse); - }); - } -} -exports.AzureServiceClient = AzureServiceClient; -//# sourceMappingURL=azureServiceClient.js.map \ No newline at end of file diff --git a/dist/lib/azureServiceClient.js.map b/dist/lib/azureServiceClient.js.map deleted file mode 100644 index 62c1a8e39409..000000000000 --- a/dist/lib/azureServiceClient.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"azureServiceClient.js","sourceRoot":"","sources":["../../lib/azureServiceClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/lib/baseResource.js b/dist/lib/baseResource.js deleted file mode 100644 index 81291d596ba2..000000000000 --- a/dist/lib/baseResource.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.BaseResourceMapper = { - required: false, - serializedName: "BaseResource", - type: { - name: "Composite", - className: "BaseResource", - modelProperties: {} - } -}; -//# sourceMappingURL=baseResource.js.map \ No newline at end of file diff --git a/dist/lib/baseResource.js.map b/dist/lib/baseResource.js.map deleted file mode 100644 index aa76b0cb1350..000000000000 --- a/dist/lib/baseResource.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"baseResource.js","sourceRoot":"","sources":["../../lib/baseResource.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,+FAA+F;;AAQlF,QAAA,kBAAkB,GAAG;IAChC,QAAQ,EAAE,KAAK;IACf,cAAc,EAAE,cAAc;IAC9B,IAAI,EAAE;QACJ,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,cAAc;QACzB,eAAe,EAAE,EAChB;KACF;CACF,CAAC"} \ No newline at end of file diff --git a/dist/lib/cloudError.js b/dist/lib/cloudError.js deleted file mode 100644 index fc138ac46af8..000000000000 --- a/dist/lib/cloudError.js +++ /dev/null @@ -1,51 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CloudErrorMapper = { - required: false, - serializedName: "CloudError", - type: { - name: "Composite", - className: "CloudError", - modelProperties: { - code: { - required: true, - serializedName: "code", - type: { - name: "String" - } - }, - message: { - required: true, - serializedName: "message", - type: { - name: "String" - } - }, - target: { - required: false, - serializedName: "target", - type: { - name: "String" - } - }, - details: { - required: false, - serializedName: "details", - type: { - name: "Sequence", - element: { - required: false, - serializedName: "CloudErrorElementType", - type: { - name: "Composite", - className: "CloudError" - } - } - } - } - } - } -}; -//# sourceMappingURL=cloudError.js.map \ No newline at end of file diff --git a/dist/lib/cloudError.js.map b/dist/lib/cloudError.js.map deleted file mode 100644 index 016f1c95dd71..000000000000 --- a/dist/lib/cloudError.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cloudError.js","sourceRoot":"","sources":["../../lib/cloudError.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,+FAA+F;;AAyBlF,QAAA,gBAAgB,GAAG;IAC9B,QAAQ,EAAE,KAAK;IACf,cAAc,EAAE,YAAY;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,YAAY;QACvB,eAAe,EAAE;YACf,IAAI,EAAE;gBACJ,QAAQ,EAAE,IAAI;gBACd,cAAc,EAAE,MAAM;gBACtB,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;iBACf;aACF;YACD,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI;gBACd,cAAc,EAAE,SAAS;gBACzB,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;iBACf;aACF;YACD,MAAM,EAAE;gBACN,QAAQ,EAAE,KAAK;gBACf,cAAc,EAAE,QAAQ;gBACxB,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;iBACf;aACF;YACD,OAAO,EAAE;gBACP,QAAQ,EAAE,KAAK;gBACf,cAAc,EAAE,SAAS;gBACzB,IAAI,EAAE;oBACJ,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE;wBACP,QAAQ,EAAE,KAAK;wBACf,cAAc,EAAE,uBAAuB;wBACvC,IAAI,EAAE;4BACJ,IAAI,EAAE,WAAW;4BACjB,SAAS,EAAE,YAAY;yBACxB;qBACF;iBACF;aACF;SACF;KACF;CACF,CAAC"} \ No newline at end of file diff --git a/dist/lib/credentials/cognitiveServicesCredentials.js b/dist/lib/credentials/cognitiveServicesCredentials.js deleted file mode 100644 index 713dab11a35f..000000000000 --- a/dist/lib/credentials/cognitiveServicesCredentials.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. -Object.defineProperty(exports, "__esModule", { value: true }); -const ms_rest_js_1 = require("ms-rest-js"); -/** - * Creates a new CognitiveServicesCredentials object. - * - * @constructor - * @param {string} subscriptionKey The CognitiveServices subscription key - */ -class CognitiveServicesCredentials extends ms_rest_js_1.ApiKeyCredentials { - constructor(subscriptionKey) { - if (!subscriptionKey || (subscriptionKey && typeof subscriptionKey.valueOf() !== "string")) { - throw new Error("subscriptionKey cannot be null or undefined and must be of type string."); - } - const options = { - inHeader: { - "Ocp-Apim-Subscription-Key": subscriptionKey, - "X-BingApis-SDK-Client": "node-SDK" - } - }; - super(options); - } -} -exports.CognitiveServicesCredentials = CognitiveServicesCredentials; -//# sourceMappingURL=cognitiveServicesCredentials.js.map \ No newline at end of file diff --git a/dist/lib/credentials/cognitiveServicesCredentials.js.map b/dist/lib/credentials/cognitiveServicesCredentials.js.map deleted file mode 100644 index 49be24739a52..000000000000 --- a/dist/lib/credentials/cognitiveServicesCredentials.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cognitiveServicesCredentials.js","sourceRoot":"","sources":["../../../lib/credentials/cognitiveServicesCredentials.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,+FAA+F;;AAE/F,2CAA+C;AAE/C;;;;;GAKG;AACH,kCAA0C,SAAQ,8BAAiB;IACjE,YAAY,eAAuB;QACjC,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,IAAI,OAAO,eAAe,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,EAAE;YAC1F,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;SAC5F;QAED,MAAM,OAAO,GAAG;YACd,QAAQ,EAAE;gBACR,2BAA2B,EAAE,eAAe;gBAC5C,uBAAuB,EAAE,UAAU;aACpC;SACF,CAAC;QACF,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AAdD,oEAcC"} \ No newline at end of file diff --git a/dist/lib/msRestAzure.js b/dist/lib/msRestAzure.js deleted file mode 100644 index 1cd2e6f15866..000000000000 --- a/dist/lib/msRestAzure.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. -Object.defineProperty(exports, "__esModule", { value: true }); -const azureServiceClient_1 = require("./azureServiceClient"); -exports.AzureServiceClient = azureServiceClient_1.AzureServiceClient; -const constants_1 = require("./util/constants"); -exports.Constants = constants_1.default; -const cloudError_1 = require("./cloudError"); -exports.CloudErrorMapper = cloudError_1.CloudErrorMapper; -const baseResource_1 = require("./baseResource"); -exports.BaseResourceMapper = baseResource_1.BaseResourceMapper; -const cognitiveServicesCredentials_1 = require("./credentials/cognitiveServicesCredentials"); -exports.CognitiveServicesCredentials = cognitiveServicesCredentials_1.CognitiveServicesCredentials; -//# sourceMappingURL=msRestAzure.js.map \ No newline at end of file diff --git a/dist/lib/msRestAzure.js.map b/dist/lib/msRestAzure.js.map deleted file mode 100644 index ce57270390b6..000000000000 --- a/dist/lib/msRestAzure.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"msRestAzure.js","sourceRoot":"","sources":["../../lib/msRestAzure.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,+FAA+F;;AAE/F,6DAAqF;AAK5E,6BAL2B,uCAAkB,CAK3B;AAJ3B,gDAAyC;AAIe,oBAJjD,mBAAS,CAIiD;AAHjE,6CAA4D;AAGmB,2BAH1D,6BAAgB,CAG0D;AAF/F,iDAAkE;AAE6C,6BAFxF,iCAAkB,CAEwF;AADjI,6FAA0F;AACyC,uCAD1H,2DAA4B,CAC0H"} \ No newline at end of file diff --git a/dist/lib/pollingState.js b/dist/lib/pollingState.js deleted file mode 100644 index 84974e5fb998..000000000000 --- a/dist/lib/pollingState.js +++ /dev/null @@ -1,149 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. -Object.defineProperty(exports, "__esModule", { value: true }); -const constants_1 = require("./util/constants"); -const msRest = require("ms-rest-js"); -const LroStates = constants_1.default.LongRunningOperationStates; -/** - * @class - * Initializes a new instance of the PollingState class. - */ -class PollingState { - constructor(resultOfInitialRequest, retryTimeout = 30) { - /** - * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30. - */ - this.retryTimeout = 30; - this.resultOfInitialRequest = resultOfInitialRequest; - this.retryTimeout = retryTimeout; - this.updateResponse(resultOfInitialRequest.response); - this.request = resultOfInitialRequest.request; - // Parse response.body & assign it as the resource. - try { - if (resultOfInitialRequest.bodyAsText && resultOfInitialRequest.bodyAsText.length > 0) { - this.resource = JSON.parse(resultOfInitialRequest.bodyAsText); - } - else { - this.resource = resultOfInitialRequest.parsedBody; - } - } - catch (error) { - const deserializationError = new msRest.RestError(`Error "${error}" occurred in parsing the responseBody " + - "while creating the PollingState for Long Running Operation- "${resultOfInitialRequest.bodyAsText}"`); - deserializationError.request = resultOfInitialRequest.request; - deserializationError.response = resultOfInitialRequest.response; - throw deserializationError; - } - switch (this.response.status) { - case 202: - this.status = LroStates.InProgress; - break; - case 204: - this.status = LroStates.Succeeded; - break; - case 201: - if (this.resource && this.resource.properties && this.resource.properties.provisioningState) { - this.status = this.resource.properties.provisioningState; - } - else { - this.status = LroStates.InProgress; - } - break; - case 200: - if (this.resource && this.resource.properties && this.resource.properties.provisioningState) { - this.status = this.resource.properties.provisioningState; - } - else { - this.status = LroStates.Succeeded; - } - break; - default: - this.status = LroStates.Failed; - break; - } - } - /** - * Update cached data using the provided response object - * @param {Response} [response] - provider response object. - */ - updateResponse(response) { - this.response = response; - if (response && response.headers) { - const asyncOperationHeader = response.headers.get("azure-asyncoperation"); - const locationHeader = response.headers.get("location"); - if (asyncOperationHeader) { - this.azureAsyncOperationHeaderLink = asyncOperationHeader; - } - if (locationHeader) { - this.locationHeaderLink = locationHeader; - } - } - } - /** - * Gets timeout in milliseconds. - * @returns {number} timeout - */ - getTimeout() { - if (this.retryTimeout || this.retryTimeout === 0) { - return this.retryTimeout * 1000; - } - if (this.response) { - const retryAfter = this.response.headers.get("retry-after"); - if (retryAfter) { - return parseInt(retryAfter) * 1000; - } - } - return 30 * 1000; - } - /** - * Returns long running operation result. - * @returns {msRest.HttpOperationResponse} HttpOperationResponse - */ - getOperationResponse() { - const result = new msRest.HttpOperationResponse(this.request, this.response); - if (this.resource && typeof this.resource.valueOf() === "string") { - result.bodyAsText = this.resource; - result.parsedBody = JSON.parse(this.resource); - } - else { - result.parsedBody = this.resource; - result.bodyAsText = JSON.stringify(this.resource); - } - return result; - } - /** - * Returns an Error on operation failure. - * @param {Error} err - The error object. - * @returns {msRest.RestError} The RestError defined in the runtime. - */ - getRestError(err) { - let errMsg; - let errCode = undefined; - const error = new msRest.RestError(""); - error.request = msRest.stripRequest(this.request); - error.response = this.response; - const parsedResponse = this.resource; - if (err && err.message) { - errMsg = `Long running operation failed with error: "${err.message}".`; - } - else { - errMsg = `Long running operation failed with status: "${this.status}".`; - } - if (parsedResponse) { - if (parsedResponse.error && parsedResponse.error.message) { - errMsg = `Long running operation failed with error: "${parsedResponse.error.message}".`; - } - if (parsedResponse.error && parsedResponse.error.code) { - errCode = parsedResponse.error.code; - } - } - error.message = errMsg; - if (errCode) - error.code = errCode; - error.body = parsedResponse; - return error; - } -} -exports.default = PollingState; -//# sourceMappingURL=pollingState.js.map \ No newline at end of file diff --git a/dist/lib/pollingState.js.map b/dist/lib/pollingState.js.map deleted file mode 100644 index e7c11010b272..000000000000 --- a/dist/lib/pollingState.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pollingState.js","sourceRoot":"","sources":["../../lib/pollingState.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/lib/util/constants.js b/dist/lib/util/constants.js deleted file mode 100644 index 3d5bb0014d4d..000000000000 --- a/dist/lib/util/constants.js +++ /dev/null @@ -1,33 +0,0 @@ -"use strict"; -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. -Object.defineProperty(exports, "__esModule", { value: true }); -const Constants = { - /** - * Defines constants for long running operation states. - * - * @const - * @type {string} - */ - LongRunningOperationStates: { - InProgress: "InProgress", - Succeeded: "Succeeded", - Failed: "Failed", - Canceled: "Canceled" - }, - /** - * The default language in the request header. - * - * @const - * @type {string} - */ - DEFAULT_LANGUAGE: "en-us", - /** - * The ms-rest-azure version. - * @const - * @type {string} - */ - msRestAzureVersion: "0.1.0" -}; -exports.default = Constants; -//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/dist/lib/util/constants.js.map b/dist/lib/util/constants.js.map deleted file mode 100644 index 4125e3154908..000000000000 --- a/dist/lib/util/constants.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../lib/util/constants.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,+FAA+F;;AAE/F,MAAM,SAAS,GAAG;IAChB;;;;;OAKG;IACH,0BAA0B,EAAE;QAC1B,UAAU,EAAE,YAAY;QACxB,SAAS,EAAE,WAAW;QACtB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,UAAU;KACrB;IAED;;;;;OAKG;IACH,gBAAgB,EAAE,OAAO;IAEzB;;;;OAIG;IACH,kBAAkB,EAAE,OAAO;CAC5B,CAAC;AAEF,kBAAe,SAAS,CAAC"} \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js deleted file mode 100644 index d6dc9342364d..000000000000 --- a/gulpfile.js +++ /dev/null @@ -1,30 +0,0 @@ -var gulp = require("gulp"), - tslint = require("gulp-tslint"), - tsc = require("gulp-typescript"), - sourcemaps = require("gulp-sourcemaps"), - runSequence = require("run-sequence"), - mocha = require("gulp-mocha"); - -gulp.task('default', function () { - console.log("run gulp -T to see all available tasks.\n"); -}); - -gulp.task("lint", () => - gulp.src([ - "lib/**/**.ts", - "test/**/**.ts" - ]) - .pipe(tslint({ - formatter: "verbose" - })) - .pipe(tslint.report()) -); - -// TODO: Doesn't yet confirm to folder structure -gulp.task("build", () => - gulp.src([ - "lib/**/**.ts" - ]) - .pipe(tsc(tsc.createProject("tsconfig.json"))) - .js.pipe(gulp.dest("dist/lib/")) -); diff --git a/msRestAzureBundle.js b/msRestAzureBundle.js deleted file mode 100644 index 15d0748c463e..000000000000 --- a/msRestAzureBundle.js +++ /dev/null @@ -1,712 +0,0 @@ -var msRestAzure = -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 2); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -module.exports = msRest; - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. -Object.defineProperty(exports, "__esModule", { value: true }); -const Constants = { - /** - * Defines constants for long running operation states. - * - * @const - * @type {string} - */ - LongRunningOperationStates: { - InProgress: "InProgress", - Succeeded: "Succeeded", - Failed: "Failed", - Canceled: "Canceled" - }, - /** - * The default language in the request header. - * - * @const - * @type {string} - */ - DEFAULT_LANGUAGE: "en-us", - /** - * The ms-rest-azure version. - * @const - * @type {string} - */ - msRestAzureVersion: "0.1.0" -}; -exports.default = Constants; - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. -Object.defineProperty(exports, "__esModule", { value: true }); -const azureServiceClient_1 = __webpack_require__(3); -exports.AzureServiceClient = azureServiceClient_1.AzureServiceClient; -const constants_1 = __webpack_require__(1); -exports.Constants = constants_1.default; -const cloudError_1 = __webpack_require__(5); -exports.CloudErrorMapper = cloudError_1.CloudErrorMapper; -const baseResource_1 = __webpack_require__(6); -exports.BaseResourceMapper = baseResource_1.BaseResourceMapper; -const cognitiveServicesCredentials_1 = __webpack_require__(7); -exports.CognitiveServicesCredentials = cognitiveServicesCredentials_1.CognitiveServicesCredentials; - - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const msRest = __webpack_require__(0); -const constants_1 = __webpack_require__(1); -const pollingState_1 = __webpack_require__(4); -const LroStates = constants_1.default.LongRunningOperationStates; -/** - * @class - * Initializes a new instance of the AzureServiceClient class. - * @constructor - * - * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or - * UserTokenCredentials object used for authentication. - * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient - */ -class AzureServiceClient extends msRest.ServiceClient { - constructor(credentials, options) { - super(credentials, options); - this.acceptLanguage = constants_1.default.DEFAULT_LANGUAGE; - this.generateClientRequestId = true; - this.longRunningOperationRetryTimeout = 30; - this.rpRegistrationRetryTimeout = 30; - this.acceptLanguage = constants_1.default.DEFAULT_LANGUAGE; - this.generateClientRequestId = true; - this.longRunningOperationRetryTimeout = 30; - if (!options) - options = {}; - if (options.acceptLanguage !== null && options.acceptLanguage !== undefined) { - this.acceptLanguage = options.acceptLanguage; - } - if (options.generateClientRequestId !== null && options.generateClientRequestId !== undefined) { - this.generateClientRequestId = options.generateClientRequestId; - } - if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) { - this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout; - } - if (options.rpRegistrationRetryTimeout !== null && options.rpRegistrationRetryTimeout !== undefined) { - this.rpRegistrationRetryTimeout = options.rpRegistrationRetryTimeout; - } - try { - const moduleName = "ms-rest-azure"; - const moduleVersion = constants_1.default.msRestAzureVersion; - this.addUserAgentInfo(`${moduleName}/${moduleVersion}`); - } - catch (err) { - // do nothing - } - } - /** - * Provides a mechanism to make a request that will poll and provide the final result. - * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object - * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request - * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody. - */ - sendLongRunningRequest(request, options) { - return __awaiter(this, void 0, void 0, function* () { - const self = this; - let initialResponse; - try { - initialResponse = yield self.sendRequest(request); - } - catch (err) { - return Promise.reject(err); - } - let finalResponse; - try { - finalResponse = yield self.getLongRunningOperationResult(initialResponse, options); - } - catch (err) { - return Promise.reject(err); - } - return Promise.resolve(finalResponse); - }); - } - /** - * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request. - * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation. - */ - checkResponseStatusCodeFailed(initialResponse) { - const statusCode = initialResponse.response.status; - const method = initialResponse.request.method; - if (statusCode === 200 || statusCode === 202 || - (statusCode === 201 && method === "PUT") || - (statusCode === 204 && (method === "DELETE" || method === "POST"))) { - return false; - } - else { - return true; - } - } - /** - * Poll Azure long running PUT, PATCH, POST or DELETE operations. - * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation. - * @param {msRest.RequestOptionsBase} [options] - custom request options. - * @returns {Promise} result - The final response after polling is complete. - */ - getLongRunningOperationResult(resultOfInitialRequest, options) { - return __awaiter(this, void 0, void 0, function* () { - const self = this; - const initialRequestMethod = resultOfInitialRequest.request.method; - if (self.checkResponseStatusCodeFailed(resultOfInitialRequest)) { - return Promise.reject(`Unexpected polling status code from long running operation ` + - `"${resultOfInitialRequest.response.status}" for method "${initialRequestMethod}".`); - } - let pollingState; - try { - pollingState = new pollingState_1.default(resultOfInitialRequest, self.longRunningOperationRetryTimeout); - pollingState.optionsOfInitialRequest = options; - } - catch (error) { - return Promise.reject(error); - } - const resourceUrl = resultOfInitialRequest.request.url; - while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) { - yield msRest.delay(pollingState.getTimeout()); - if (pollingState.azureAsyncOperationHeaderLink) { - yield self.updateStateFromAzureAsyncOperationHeader(pollingState, true); - } - else if (pollingState.locationHeaderLink) { - yield self.updateStateFromLocationHeader(initialRequestMethod, pollingState); - } - else if (initialRequestMethod === "PUT") { - yield self.updateStateFromGetResourceOperation(resourceUrl, pollingState); - } - else { - return Promise.reject(new Error("Location header is missing from long running operation.")); - } - } - if (pollingState.status === LroStates.Succeeded) { - if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) && - (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH")) { - yield self.updateStateFromGetResourceOperation(resourceUrl, pollingState); - return Promise.resolve(pollingState.getOperationResponse()); - } - else { - return Promise.resolve(pollingState.getOperationResponse()); - } - } - else { - return Promise.reject(pollingState.getRestError()); - } - }); - } - /** - * Retrieve operation status by polling from "azure-asyncoperation" header. - * @param {PollingState} pollingState - The object to persist current operation state. - * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation. - */ - updateStateFromAzureAsyncOperationHeader(pollingState, inPostOrDelete = false) { - return __awaiter(this, void 0, void 0, function* () { - let result; - try { - result = yield this.getStatus(pollingState.azureAsyncOperationHeaderLink, pollingState.optionsOfInitialRequest); - } - catch (err) { - return Promise.reject(err); - } - const parsedResponse = result.parsedBody; - if (!parsedResponse) { - return Promise.reject(new Error("The response from long running operation does not contain a body.")); - } - else if (parsedResponse && !parsedResponse.status) { - return Promise.reject(new Error(`The response "${result.bodyAsText}" from long running operation does not contain the status property.`)); - } - pollingState.status = parsedResponse.status; - pollingState.error = parsedResponse.error; - pollingState.updateResponse(result.response); - pollingState.request = result.request; - pollingState.resource = undefined; - if (inPostOrDelete) { - pollingState.resource = result.parsedBody; - } - return Promise.resolve(); - }); - } - /** - * Retrieve PUT operation status by polling from "location" header. - * @param {string} method - The HTTP method. - * @param {PollingState} pollingState - The object to persist current operation state. - */ - updateStateFromLocationHeader(method, pollingState) { - return __awaiter(this, void 0, void 0, function* () { - let result; - try { - result = yield this.getStatus(pollingState.locationHeaderLink, pollingState.optionsOfInitialRequest); - } - catch (err) { - return Promise.reject(err); - } - const parsedResponse = result.parsedBody; - pollingState.updateResponse(result.response); - pollingState.request = result.request; - const statusCode = result.response.status; - if (statusCode === 202) { - pollingState.status = LroStates.InProgress; - } - else if (statusCode === 200 || - (statusCode === 201 && (method === "PUT" || method === "PATCH")) || - (statusCode === 204 && (method === "DELETE" || method === "POST"))) { - pollingState.status = LroStates.Succeeded; - pollingState.resource = parsedResponse; - // we might not throw an error, but initialize here just in case. - pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); - pollingState.error.code = pollingState.status; - } - else { - return Promise.reject(new Error(`The response with status code ${statusCode} from polling for ` + - `long running operation url "${pollingState.locationHeaderLink}" is not valid.`)); - } - }); - } - /** - * Polling for resource status. - * @param {string} resourceUrl - The url of resource. - * @param {PollingState} pollingState - The object to persist current operation state. - */ - updateStateFromGetResourceOperation(resourceUrl, pollingState) { - return __awaiter(this, void 0, void 0, function* () { - let result; - try { - result = yield this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest); - } - catch (err) { - return Promise.reject(err); - } - if (!result.parsedBody) { - return Promise.reject(new Error("The response from long running operation does not contain a body.")); - } - const parsedResponse = result.parsedBody; - pollingState.status = LroStates.Succeeded; - if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) { - pollingState.status = parsedResponse.properties.provisioningState; - } - pollingState.updateResponse(result.response); - pollingState.request = result.request; - pollingState.resource = parsedResponse; - // we might not throw an error, but initialize here just in case. - pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); - pollingState.error.code = pollingState.status; - return Promise.resolve(); - }); - } - /** - * Retrieves operation status by querying the operation URL. - * @param {string} operationUrl - URL used to poll operation result. - * @param {object} options - Options that can be set on the request object - */ - getStatus(operationUrl, options) { - return __awaiter(this, void 0, void 0, function* () { - const self = this; - // Construct URL - const requestUrl = operationUrl.replace(" ", "%20"); - // Create HTTP request object - const httpRequest = { - method: "GET", - url: requestUrl, - headers: {} - }; - if (options) { - const customHeaders = options.customHeaders; - for (const headerName in customHeaders) { - if (customHeaders.hasOwnProperty(headerName)) { - httpRequest.headers[headerName] = customHeaders[headerName]; - } - } - } - let operationResponse; - try { - operationResponse = yield self.sendRequest(httpRequest); - } - catch (err) { - return Promise.reject(err); - } - const statusCode = operationResponse.response.status; - const responseBody = operationResponse.parsedBody; - if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { - const error = new msRest.RestError(`Invalid status code with response body "${operationResponse.bodyAsText}" occurred ` + - `when polling for operation status.`); - error.statusCode = statusCode; - error.request = msRest.stripRequest(operationResponse.request); - error.response = operationResponse.response; - try { - error.body = responseBody; - } - catch (badResponse) { - error.message += ` Error "${badResponse}" occured while deserializing the response body - "${operationResponse.bodyAsText}".`; - error.body = operationResponse.bodyAsText; - } - return Promise.reject(error); - } - return Promise.resolve(operationResponse); - }); - } -} -exports.AzureServiceClient = AzureServiceClient; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. -Object.defineProperty(exports, "__esModule", { value: true }); -const constants_1 = __webpack_require__(1); -const msRest = __webpack_require__(0); -const LroStates = constants_1.default.LongRunningOperationStates; -/** - * @class - * Initializes a new instance of the PollingState class. - */ -class PollingState { - constructor(resultOfInitialRequest, retryTimeout = 30) { - /** - * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30. - */ - this.retryTimeout = 30; - this.resultOfInitialRequest = resultOfInitialRequest; - this.retryTimeout = retryTimeout; - this.updateResponse(resultOfInitialRequest.response); - this.request = resultOfInitialRequest.request; - // Parse response.body & assign it as the resource. - try { - if (resultOfInitialRequest.bodyAsText && resultOfInitialRequest.bodyAsText.length > 0) { - this.resource = JSON.parse(resultOfInitialRequest.bodyAsText); - } - else { - this.resource = resultOfInitialRequest.parsedBody; - } - } - catch (error) { - const deserializationError = new msRest.RestError(`Error "${error}" occurred in parsing the responseBody " + - "while creating the PollingState for Long Running Operation- "${resultOfInitialRequest.bodyAsText}"`); - deserializationError.request = resultOfInitialRequest.request; - deserializationError.response = resultOfInitialRequest.response; - throw deserializationError; - } - switch (this.response.status) { - case 202: - this.status = LroStates.InProgress; - break; - case 204: - this.status = LroStates.Succeeded; - break; - case 201: - if (this.resource && this.resource.properties && this.resource.properties.provisioningState) { - this.status = this.resource.properties.provisioningState; - } - else { - this.status = LroStates.InProgress; - } - break; - case 200: - if (this.resource && this.resource.properties && this.resource.properties.provisioningState) { - this.status = this.resource.properties.provisioningState; - } - else { - this.status = LroStates.Succeeded; - } - break; - default: - this.status = LroStates.Failed; - break; - } - } - /** - * Update cached data using the provided response object - * @param {Response} [response] - provider response object. - */ - updateResponse(response) { - this.response = response; - if (response && response.headers) { - const asyncOperationHeader = response.headers.get("azure-asyncoperation"); - const locationHeader = response.headers.get("location"); - if (asyncOperationHeader) { - this.azureAsyncOperationHeaderLink = asyncOperationHeader; - } - if (locationHeader) { - this.locationHeaderLink = locationHeader; - } - } - } - /** - * Gets timeout in milliseconds. - * @returns {number} timeout - */ - getTimeout() { - if (this.retryTimeout || this.retryTimeout === 0) { - return this.retryTimeout * 1000; - } - if (this.response) { - const retryAfter = this.response.headers.get("retry-after"); - if (retryAfter) { - return parseInt(retryAfter) * 1000; - } - } - return 30 * 1000; - } - /** - * Returns long running operation result. - * @returns {msRest.HttpOperationResponse} HttpOperationResponse - */ - getOperationResponse() { - const result = new msRest.HttpOperationResponse(this.request, this.response); - if (this.resource && typeof this.resource.valueOf() === "string") { - result.bodyAsText = this.resource; - result.parsedBody = JSON.parse(this.resource); - } - else { - result.parsedBody = this.resource; - result.bodyAsText = JSON.stringify(this.resource); - } - return result; - } - /** - * Returns an Error on operation failure. - * @param {Error} err - The error object. - * @returns {msRest.RestError} The RestError defined in the runtime. - */ - getRestError(err) { - let errMsg; - let errCode = undefined; - const error = new msRest.RestError(""); - error.request = msRest.stripRequest(this.request); - error.response = this.response; - const parsedResponse = this.resource; - if (err && err.message) { - errMsg = `Long running operation failed with error: "${err.message}".`; - } - else { - errMsg = `Long running operation failed with status: "${this.status}".`; - } - if (parsedResponse) { - if (parsedResponse.error && parsedResponse.error.message) { - errMsg = `Long running operation failed with error: "${parsedResponse.error.message}".`; - } - if (parsedResponse.error && parsedResponse.error.code) { - errCode = parsedResponse.error.code; - } - } - error.message = errMsg; - if (errCode) - error.code = errCode; - error.body = parsedResponse; - return error; - } -} -exports.default = PollingState; - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CloudErrorMapper = { - required: false, - serializedName: "CloudError", - type: { - name: "Composite", - className: "CloudError", - modelProperties: { - code: { - required: true, - serializedName: "code", - type: { - name: "String" - } - }, - message: { - required: true, - serializedName: "message", - type: { - name: "String" - } - }, - target: { - required: false, - serializedName: "target", - type: { - name: "String" - } - }, - details: { - required: false, - serializedName: "details", - type: { - name: "Sequence", - element: { - required: false, - serializedName: "CloudErrorElementType", - type: { - name: "Composite", - className: "CloudError" - } - } - } - } - } - } -}; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.BaseResourceMapper = { - required: false, - serializedName: "BaseResource", - type: { - name: "Composite", - className: "BaseResource", - modelProperties: {} - } -}; - - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. -Object.defineProperty(exports, "__esModule", { value: true }); -const ms_rest_js_1 = __webpack_require__(0); -/** - * Creates a new CognitiveServicesCredentials object. - * - * @constructor - * @param {string} subscriptionKey The CognitiveServices subscription key - */ -class CognitiveServicesCredentials extends ms_rest_js_1.ApiKeyCredentials { - constructor(subscriptionKey) { - if (!subscriptionKey || (subscriptionKey && typeof subscriptionKey.valueOf() !== "string")) { - throw new Error("subscriptionKey cannot be null or undefined and must be of type string."); - } - const options = { - inHeader: { - "Ocp-Apim-Subscription-Key": subscriptionKey, - "X-BingApis-SDK-Client": "node-SDK" - } - }; - super(options); - } -} -exports.CognitiveServicesCredentials = CognitiveServicesCredentials; - - -/***/ }) -/******/ ]); -//# sourceMappingURL=msRestAzureBundle.js.map \ No newline at end of file diff --git a/msRestAzureBundle.js.map b/msRestAzureBundle.js.map deleted file mode 100644 index d3ad30bc96d8..000000000000 --- a/msRestAzureBundle.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap 88f9f6e20cc43c86608e","webpack:///external \"msRest\"","webpack:///./lib/util/constants.ts","webpack:///./lib/msRestAzure.ts","webpack:///./lib/azureServiceClient.ts","webpack:///./lib/pollingState.ts","webpack:///./lib/cloudError.ts","webpack:///./lib/baseResource.ts","webpack:///./lib/credentials/cognitiveServicesCredentials.ts"],"names":[],"mappings":"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","file":"msRestAzureBundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 88f9f6e20cc43c86608e","module.exports = msRest;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"msRest\"\n// module id = 0\n// module chunks = 0","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nconst Constants = {\n /**\n * Defines constants for long running operation states.\n *\n * @const\n * @type {string}\n */\n LongRunningOperationStates: {\n InProgress: \"InProgress\",\n Succeeded: \"Succeeded\",\n Failed: \"Failed\",\n Canceled: \"Canceled\"\n },\n\n /**\n * The default language in the request header.\n *\n * @const\n * @type {string}\n */\n DEFAULT_LANGUAGE: \"en-us\",\n\n /**\n * The ms-rest-azure version.\n * @const\n * @type {string}\n */\n msRestAzureVersion: \"0.1.0\"\n};\n\nexport default Constants;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/util/constants.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport { AzureServiceClientOptions, AzureServiceClient } from \"./azureServiceClient\";\nimport Constants from \"./util/constants\";\nimport { CloudError, CloudErrorMapper } from \"./cloudError\";\nimport { BaseResource, BaseResourceMapper } from \"./baseResource\";\nimport { CognitiveServicesCredentials } from \"./credentials/cognitiveServicesCredentials\";\nexport { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper, CognitiveServicesCredentials };\n\n\n\n// WEBPACK FOOTER //\n// ./lib/msRestAzure.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport * as msRest from \"ms-rest-js\";\nimport Constants from \"./util/constants\";\nimport PollingState from \"./pollingState\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * Options to be provided while creating the client.\n */\nexport interface AzureServiceClientOptions extends msRest.ServiceClientOptions {\n /**\n * @property {string} [options.acceptLanguage] - Gets or sets the preferred language for the response. Default value is: \"en-US\".\n */\n acceptLanguage?: string;\n\n /**\n * @property {boolean} [options.generateClientRequestId] - When set to true a unique x-ms-client-request-id value\n * is generated and included in each request. Default is true.\n */\n generateClientRequestId?: boolean;\n\n /**\n * @property {number} [options.longRunningOperationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * Long Running Operations. Default value is 30.\n */\n longRunningOperationRetryTimeout?: number;\n\n /**\n * @property {number} [rpRegistrationRetryTimeout] - Gets or sets the retry timeout in seconds for\n * AutomaticRPRegistration. Default value is 30 seconds.\n */\n rpRegistrationRetryTimeout?: number;\n}\n\n/**\n * @class\n * Initializes a new instance of the AzureServiceClient class.\n * @constructor\n *\n * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or\n * UserTokenCredentials object used for authentication.\n * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient\n */\nexport class AzureServiceClient extends msRest.ServiceClient {\n acceptLanguage: string = Constants.DEFAULT_LANGUAGE;\n generateClientRequestId = true;\n longRunningOperationRetryTimeout = 30;\n rpRegistrationRetryTimeout = 30;\n\n constructor(credentials: msRest.ServiceClientCredentials, options?: AzureServiceClientOptions) {\n super(credentials, options);\n this.acceptLanguage = Constants.DEFAULT_LANGUAGE;\n this.generateClientRequestId = true;\n this.longRunningOperationRetryTimeout = 30;\n if (!options) options = {};\n\n if (options.acceptLanguage !== null && options.acceptLanguage !== undefined) {\n this.acceptLanguage = options.acceptLanguage;\n }\n\n if (options.generateClientRequestId !== null && options.generateClientRequestId !== undefined) {\n this.generateClientRequestId = options.generateClientRequestId;\n }\n\n if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) {\n this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout;\n }\n\n if (options.rpRegistrationRetryTimeout !== null && options.rpRegistrationRetryTimeout !== undefined) {\n this.rpRegistrationRetryTimeout = options.rpRegistrationRetryTimeout;\n }\n\n try {\n const moduleName = \"ms-rest-azure\";\n const moduleVersion = Constants.msRestAzureVersion;\n this.addUserAgentInfo(`${moduleName}/${moduleVersion}`);\n } catch (err) {\n // do nothing\n }\n }\n\n /**\n * Provides a mechanism to make a request that will poll and provide the final result.\n * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object\n * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request\n * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody.\n */\n async sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n let initialResponse: msRest.HttpOperationResponse;\n try {\n initialResponse = await self.sendRequest(request);\n } catch (err) {\n return Promise.reject(err);\n }\n let finalResponse: msRest.HttpOperationResponse;\n try {\n finalResponse = await self.getLongRunningOperationResult(initialResponse, options);\n } catch (err) {\n return Promise.reject(err);\n }\n return Promise.resolve(finalResponse);\n }\n\n /**\n * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request.\n * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation.\n */\n private checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResponse): boolean {\n const statusCode = initialResponse.response.status;\n const method = initialResponse.request.method;\n if (statusCode === 200 || statusCode === 202 ||\n (statusCode === 201 && method === \"PUT\") ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n return false;\n } else {\n return true;\n }\n }\n\n /**\n * Poll Azure long running PUT, PATCH, POST or DELETE operations.\n * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation.\n * @param {msRest.RequestOptionsBase} [options] - custom request options.\n * @returns {Promise} result - The final response after polling is complete.\n */\n async getLongRunningOperationResult(resultOfInitialRequest: msRest.HttpOperationResponse, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n const initialRequestMethod: string = resultOfInitialRequest.request.method as msRest.HttpMethods;\n\n if (self.checkResponseStatusCodeFailed(resultOfInitialRequest)) {\n return Promise.reject(`Unexpected polling status code from long running operation ` +\n `\"${resultOfInitialRequest.response.status}\" for method \"${initialRequestMethod}\".`);\n }\n let pollingState: PollingState;\n try {\n pollingState = new PollingState(resultOfInitialRequest, self.longRunningOperationRetryTimeout);\n pollingState.optionsOfInitialRequest = options as msRest.RequestOptionsBase;\n } catch (error) {\n return Promise.reject(error);\n }\n const resourceUrl: string = resultOfInitialRequest.request.url;\n while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) {\n await msRest.delay(pollingState.getTimeout());\n if (pollingState.azureAsyncOperationHeaderLink) {\n await self.updateStateFromAzureAsyncOperationHeader(pollingState, true);\n } else if (pollingState.locationHeaderLink) {\n await self.updateStateFromLocationHeader(initialRequestMethod, pollingState);\n } else if (initialRequestMethod === \"PUT\") {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n } else {\n return Promise.reject(new Error(\"Location header is missing from long running operation.\"));\n }\n }\n\n if (pollingState.status === LroStates.Succeeded) {\n if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) &&\n (initialRequestMethod === \"PUT\" || initialRequestMethod === \"PATCH\")) {\n await self.updateStateFromGetResourceOperation(resourceUrl, pollingState);\n return Promise.resolve(pollingState.getOperationResponse());\n } else {\n return Promise.resolve(pollingState.getOperationResponse());\n }\n } else {\n return Promise.reject(pollingState.getRestError());\n }\n }\n\n /**\n * Retrieve operation status by polling from \"azure-asyncoperation\" header.\n * @param {PollingState} pollingState - The object to persist current operation state.\n * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation.\n */\n private async updateStateFromAzureAsyncOperationHeader(pollingState: PollingState, inPostOrDelete = false): Promise {\n let result: msRest.HttpOperationResponse;\n\n try {\n result = await this.getStatus(pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.parsedBody as { [key: string]: any };\n\n if (!parsedResponse) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n } else if (parsedResponse && !parsedResponse.status) {\n return Promise.reject(new Error(`The response \"${result.bodyAsText}\" from long running operation does not contain the status property.`));\n }\n pollingState.status = parsedResponse.status;\n pollingState.error = parsedResponse.error;\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = undefined;\n if (inPostOrDelete) {\n pollingState.resource = result.parsedBody;\n }\n return Promise.resolve();\n }\n\n /**\n * Retrieve PUT operation status by polling from \"location\" header.\n * @param {string} method - The HTTP method.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromLocationHeader(method: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n\n const parsedResponse = result.parsedBody as { [key: string]: any };\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n const statusCode = result.response.status;\n if (statusCode === 202) {\n pollingState.status = LroStates.InProgress;\n } else if (statusCode === 200 ||\n (statusCode === 201 && (method === \"PUT\" || method === \"PATCH\")) ||\n (statusCode === 204 && (method === \"DELETE\" || method === \"POST\"))) {\n pollingState.status = LroStates.Succeeded;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n } else {\n return Promise.reject(new Error(`The response with status code ${statusCode} from polling for ` +\n `long running operation url \"${pollingState.locationHeaderLink}\" is not valid.`));\n }\n }\n\n /**\n * Polling for resource status.\n * @param {string} resourceUrl - The url of resource.\n * @param {PollingState} pollingState - The object to persist current operation state.\n */\n private async updateStateFromGetResourceOperation(resourceUrl: string, pollingState: PollingState): Promise {\n let result: msRest.HttpOperationResponse;\n try {\n result = await this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n if (!result.parsedBody) {\n return Promise.reject(new Error(\"The response from long running operation does not contain a body.\"));\n }\n\n const parsedResponse = result.parsedBody as { [key: string]: any };\n pollingState.status = LroStates.Succeeded;\n if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) {\n pollingState.status = parsedResponse.properties.provisioningState;\n }\n pollingState.updateResponse(result.response);\n pollingState.request = result.request;\n pollingState.resource = parsedResponse;\n // we might not throw an error, but initialize here just in case.\n pollingState.error = new msRest.RestError(`Long running operation failed with status \"${pollingState.status}\".`);\n pollingState.error.code = pollingState.status;\n return Promise.resolve();\n }\n\n /**\n * Retrieves operation status by querying the operation URL.\n * @param {string} operationUrl - URL used to poll operation result.\n * @param {object} options - Options that can be set on the request object\n */\n private async getStatus(operationUrl: string, options?: msRest.RequestOptionsBase): Promise {\n const self = this;\n // Construct URL\n const requestUrl = operationUrl.replace(\" \", \"%20\");\n // Create HTTP request object\n const httpRequest: msRest.RequestPrepareOptions = {\n method: \"GET\",\n url: requestUrl,\n headers: {}\n };\n if (options) {\n const customHeaders: { [key: string]: string } = (options.customHeaders as { [key: string]: string });\n for (const headerName in customHeaders) {\n if (customHeaders.hasOwnProperty(headerName)) {\n (httpRequest.headers as { [key: string]: string })[headerName] = customHeaders[headerName];\n }\n }\n }\n let operationResponse: msRest.HttpOperationResponse;\n try {\n operationResponse = await self.sendRequest(httpRequest);\n } catch (err) {\n return Promise.reject(err);\n }\n const statusCode = operationResponse.response.status;\n const responseBody = operationResponse.parsedBody;\n if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) {\n const error = new msRest.RestError(`Invalid status code with response body \"${operationResponse.bodyAsText}\" occurred ` +\n `when polling for operation status.`);\n error.statusCode = statusCode;\n error.request = msRest.stripRequest(operationResponse.request);\n error.response = operationResponse.response;\n try {\n error.body = responseBody;\n } catch (badResponse) {\n error.message += ` Error \"${badResponse}\" occured while deserializing the response body - \"${operationResponse.bodyAsText}\".`;\n error.body = operationResponse.bodyAsText;\n }\n return Promise.reject(error);\n }\n\n return Promise.resolve(operationResponse);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/azureServiceClient.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport Constants from \"./util/constants\";\nimport * as msRest from \"ms-rest-js\";\nconst LroStates = Constants.LongRunningOperationStates;\n\n/**\n * @class\n * Initializes a new instance of the PollingState class.\n */\nexport default class PollingState {\n /**\n * @param {msRest.HttpOperationResponse} [response] - Response of the initial request that was made as a part of the asynchronous operation.\n */\n resultOfInitialRequest: msRest.HttpOperationResponse;\n /**\n * @param {msRest.RequestOptionsBase} [optionsOfInitialRequest] - Request options that were provided as a part of the initial request.\n */\n optionsOfInitialRequest!: msRest.RequestOptionsBase;\n /**\n * @param {msRest.WebResource} [request] - provides information about the request made for polling.\n */\n request: msRest.WebResource;\n /**\n * @param {Response} [response] - The response object to extract longrunning operation status.\n */\n response!: Response;\n /**\n * @param {any} [resource] - Provides information about the response body received in the polling request. Particularly useful when polling via provisioningState.\n */\n resource: any;\n /**\n * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30.\n */\n retryTimeout = 30;\n /**\n * @param {string} [azureAsyncOperationHeaderLink] - The url that is present in \"azure-asyncoperation\" response header.\n */\n azureAsyncOperationHeaderLink?: string;\n /**\n * @param {string} [locationHeaderLink] - The url that is present in \"Location\" response header.\n */\n locationHeaderLink?: string;\n /**\n * @param {string} [status] - The status of polling. \"Succeeded, Failed, Cancelled, Updating, Creating, etc.\"\n */\n status?: string;\n /**\n * @param {msRest.RestError} [error] - Provides information about the error that happened while polling.\n */\n error?: msRest.RestError;\n\n constructor(resultOfInitialRequest: msRest.HttpOperationResponse, retryTimeout = 30) {\n this.resultOfInitialRequest = resultOfInitialRequest;\n this.retryTimeout = retryTimeout;\n this.updateResponse(resultOfInitialRequest.response);\n this.request = resultOfInitialRequest.request;\n // Parse response.body & assign it as the resource.\n try {\n if (resultOfInitialRequest.bodyAsText && resultOfInitialRequest.bodyAsText.length > 0) {\n this.resource = JSON.parse(resultOfInitialRequest.bodyAsText);\n } else {\n this.resource = resultOfInitialRequest.parsedBody;\n }\n } catch (error) {\n const deserializationError = new msRest.RestError(`Error \"${error}\" occurred in parsing the responseBody \" +\n \"while creating the PollingState for Long Running Operation- \"${resultOfInitialRequest.bodyAsText}\"`);\n deserializationError.request = resultOfInitialRequest.request;\n deserializationError.response = resultOfInitialRequest.response;\n throw deserializationError;\n }\n switch (this.response.status) {\n case 202:\n this.status = LroStates.InProgress;\n break;\n\n case 204:\n this.status = LroStates.Succeeded;\n break;\n\n case 201:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.InProgress;\n }\n break;\n\n case 200:\n if (this.resource && this.resource.properties && this.resource.properties.provisioningState) {\n this.status = this.resource.properties.provisioningState;\n } else {\n this.status = LroStates.Succeeded;\n }\n break;\n\n default:\n this.status = LroStates.Failed;\n break;\n }\n }\n\n /**\n * Update cached data using the provided response object\n * @param {Response} [response] - provider response object.\n */\n updateResponse(response: Response) {\n this.response = response;\n if (response && response.headers) {\n const asyncOperationHeader: string | null | undefined = response.headers.get(\"azure-asyncoperation\");\n const locationHeader: string | null | undefined = response.headers.get(\"location\");\n if (asyncOperationHeader) {\n this.azureAsyncOperationHeaderLink = asyncOperationHeader;\n }\n\n if (locationHeader) {\n this.locationHeaderLink = locationHeader;\n }\n }\n }\n\n /**\n * Gets timeout in milliseconds.\n * @returns {number} timeout\n */\n getTimeout() {\n if (this.retryTimeout || this.retryTimeout === 0) {\n return this.retryTimeout * 1000;\n }\n if (this.response) {\n const retryAfter: string | null | undefined = this.response.headers.get(\"retry-after\");\n if (retryAfter) {\n return parseInt(retryAfter) * 1000;\n }\n }\n return 30 * 1000;\n }\n\n /**\n * Returns long running operation result.\n * @returns {msRest.HttpOperationResponse} HttpOperationResponse\n */\n getOperationResponse(): msRest.HttpOperationResponse {\n const result = new msRest.HttpOperationResponse(this.request, this.response);\n if (this.resource && typeof this.resource.valueOf() === \"string\") {\n result.bodyAsText = this.resource;\n result.parsedBody = JSON.parse(this.resource);\n } else {\n result.parsedBody = this.resource;\n result.bodyAsText = JSON.stringify(this.resource);\n }\n return result;\n }\n\n /**\n * Returns an Error on operation failure.\n * @param {Error} err - The error object.\n * @returns {msRest.RestError} The RestError defined in the runtime.\n */\n getRestError(err?: Error): msRest.RestError {\n let errMsg: string;\n let errCode: string | undefined = undefined;\n\n const error = new msRest.RestError(\"\");\n error.request = msRest.stripRequest(this.request);\n error.response = this.response;\n const parsedResponse = this.resource as { [key: string]: any };\n\n if (err && err.message) {\n errMsg = `Long running operation failed with error: \"${err.message}\".`;\n } else {\n errMsg = `Long running operation failed with status: \"${this.status}\".`;\n }\n\n if (parsedResponse) {\n if (parsedResponse.error && parsedResponse.error.message) {\n errMsg = `Long running operation failed with error: \"${parsedResponse.error.message}\".`;\n }\n if (parsedResponse.error && parsedResponse.error.code) {\n errCode = parsedResponse.error.code as string;\n }\n }\n\n error.message = errMsg;\n if (errCode) error.code = errCode;\n error.body = parsedResponse;\n return error;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./lib/pollingState.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * Provides additional information about an http error response returned from a Microsoft Azure service.\n */\nexport interface CloudError extends Error {\n /**\n * @property {string} code The error code parsed from the body of the http error response.\n */\n code: string;\n /**\n * @property {string} message The error message parsed from the body of the http error response.\n */\n message: string;\n /**\n * @property {string} [target] The target of the error.\n */\n target?: string;\n /**\n * @property {Array} [details] An array of CloudError objects specifying the details.\n */\n details?: Array;\n}\n\nexport const CloudErrorMapper = {\n required: false,\n serializedName: \"CloudError\",\n type: {\n name: \"Composite\",\n className: \"CloudError\",\n modelProperties: {\n code: {\n required: true,\n serializedName: \"code\",\n type: {\n name: \"String\"\n }\n },\n message: {\n required: true,\n serializedName: \"message\",\n type: {\n name: \"String\"\n }\n },\n target: {\n required: false,\n serializedName: \"target\",\n type: {\n name: \"String\"\n }\n },\n details: {\n required: false,\n serializedName: \"details\",\n type: {\n name: \"Sequence\",\n element: {\n required: false,\n serializedName: \"CloudErrorElementType\",\n type: {\n name: \"Composite\",\n className: \"CloudError\"\n }\n }\n }\n }\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/cloudError.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\n/**\n * @class\n * An empty interface.\n */\nexport interface BaseResource { }\n\nexport const BaseResourceMapper = {\n required: false,\n serializedName: \"BaseResource\",\n type: {\n name: \"Composite\",\n className: \"BaseResource\",\n modelProperties: {\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./lib/baseResource.ts","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the project root for license information.\n\nimport { ApiKeyCredentials } from \"ms-rest-js\";\n\n/**\n * Creates a new CognitiveServicesCredentials object.\n *\n * @constructor\n * @param {string} subscriptionKey The CognitiveServices subscription key\n */\nexport class CognitiveServicesCredentials extends ApiKeyCredentials {\n constructor(subscriptionKey: string) {\n if (!subscriptionKey || (subscriptionKey && typeof subscriptionKey.valueOf() !== \"string\")) {\n throw new Error(\"subscriptionKey cannot be null or undefined and must be of type string.\");\n }\n\n const options = {\n inHeader: {\n \"Ocp-Apim-Subscription-Key\": subscriptionKey,\n \"X-BingApis-SDK-Client\": \"node-SDK\"\n }\n };\n super(options);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/credentials/cognitiveServicesCredentials.ts"],"sourceRoot":""} \ No newline at end of file diff --git a/msRestAzureBundle.min.js b/msRestAzureBundle.min.js deleted file mode 100644 index b190576544df..000000000000 --- a/msRestAzureBundle.min.js +++ /dev/null @@ -1 +0,0 @@ -var msRestAzure=function(e){var t={};function r(s){if(t[s])return t[s].exports;var o=t[s]={i:s,l:!1,exports:{}};return e[s].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,s){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:s})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=2)}([function(e,t){e.exports=msRest},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={LongRunningOperationStates:{InProgress:"InProgress",Succeeded:"Succeeded",Failed:"Failed",Canceled:"Canceled"},DEFAULT_LANGUAGE:"en-us",msRestAzureVersion:"0.1.0"}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=r(3);t.AzureServiceClient=s.AzureServiceClient;const o=r(1);t.Constants=o.default;const n=r(5);t.CloudErrorMapper=n.CloudErrorMapper;const i=r(6);t.BaseResourceMapper=i.BaseResourceMapper;const a=r(7);t.CognitiveServicesCredentials=a.CognitiveServicesCredentials},function(e,t,r){"use strict";var s=this&&this.__awaiter||function(e,t,r,s){return new(r||(r=Promise))(function(o,n){function i(e){try{u(s.next(e))}catch(e){n(e)}}function a(e){try{u(s.throw(e))}catch(e){n(e)}}function u(e){e.done?o(e.value):new r(function(t){t(e.value)}).then(i,a)}u((s=s.apply(e,t||[])).next())})};Object.defineProperty(t,"__esModule",{value:!0});const o=r(0),n=r(1),i=r(4),a=n.default.LongRunningOperationStates;t.AzureServiceClient=class extends o.ServiceClient{constructor(e,t){super(e,t),this.acceptLanguage=n.default.DEFAULT_LANGUAGE,this.generateClientRequestId=!0,this.longRunningOperationRetryTimeout=30,this.rpRegistrationRetryTimeout=30,this.acceptLanguage=n.default.DEFAULT_LANGUAGE,this.generateClientRequestId=!0,this.longRunningOperationRetryTimeout=30,t||(t={}),null!==t.acceptLanguage&&void 0!==t.acceptLanguage&&(this.acceptLanguage=t.acceptLanguage),null!==t.generateClientRequestId&&void 0!==t.generateClientRequestId&&(this.generateClientRequestId=t.generateClientRequestId),null!==t.longRunningOperationRetryTimeout&&void 0!==t.longRunningOperationRetryTimeout&&(this.longRunningOperationRetryTimeout=t.longRunningOperationRetryTimeout),null!==t.rpRegistrationRetryTimeout&&void 0!==t.rpRegistrationRetryTimeout&&(this.rpRegistrationRetryTimeout=t.rpRegistrationRetryTimeout);try{const e="ms-rest-azure",t=n.default.msRestAzureVersion;this.addUserAgentInfo(`${e}/${t}`)}catch(e){}}sendLongRunningRequest(e,t){return s(this,void 0,void 0,function*(){const r=this;let s,o;try{s=yield r.sendRequest(e)}catch(e){return Promise.reject(e)}try{o=yield r.getLongRunningOperationResult(s,t)}catch(e){return Promise.reject(e)}return Promise.resolve(o)})}checkResponseStatusCodeFailed(e){const t=e.response.status,r=e.request.method;return 200!==t&&202!==t&&(201!==t||"PUT"!==r)&&(204!==t||"DELETE"!==r&&"POST"!==r)}getLongRunningOperationResult(e,t){return s(this,void 0,void 0,function*(){const r=this,s=e.request.method;if(r.checkResponseStatusCodeFailed(e))return Promise.reject("Unexpected polling status code from long running operation "+`"${e.response.status}" for method "${s}".`);let n;try{(n=new i.default(e,r.longRunningOperationRetryTimeout)).optionsOfInitialRequest=t}catch(e){return Promise.reject(e)}const u=e.request.url;for(;![a.Succeeded,a.Failed,a.Canceled].some(e=>e===n.status);)if(yield o.delay(n.getTimeout()),n.azureAsyncOperationHeaderLink)yield r.updateStateFromAzureAsyncOperationHeader(n,!0);else if(n.locationHeaderLink)yield r.updateStateFromLocationHeader(s,n);else{if("PUT"!==s)return Promise.reject(new Error("Location header is missing from long running operation."));yield r.updateStateFromGetResourceOperation(u,n)}return n.status===a.Succeeded?!n.azureAsyncOperationHeaderLink&&n.resource||"PUT"!==s&&"PATCH"!==s?Promise.resolve(n.getOperationResponse()):(yield r.updateStateFromGetResourceOperation(u,n),Promise.resolve(n.getOperationResponse())):Promise.reject(n.getRestError())})}updateStateFromAzureAsyncOperationHeader(e,t=!1){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(e.azureAsyncOperationHeaderLink,e.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}const s=r.parsedBody;return s?s&&!s.status?Promise.reject(new Error(`The response "${r.bodyAsText}" from long running operation does not contain the status property.`)):(e.status=s.status,e.error=s.error,e.updateResponse(r.response),e.request=r.request,e.resource=void 0,t&&(e.resource=r.parsedBody),Promise.resolve()):Promise.reject(new Error("The response from long running operation does not contain a body."))})}updateStateFromLocationHeader(e,t){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(t.locationHeaderLink,t.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}const s=r.parsedBody;t.updateResponse(r.response),t.request=r.request;const n=r.response.status;if(202===n)t.status=a.InProgress;else{if(200!==n&&(201!==n||"PUT"!==e&&"PATCH"!==e)&&(204!==n||"DELETE"!==e&&"POST"!==e))return Promise.reject(new Error(`The response with status code ${n} from polling for `+`long running operation url "${t.locationHeaderLink}" is not valid.`));t.status=a.Succeeded,t.resource=s,t.error=new o.RestError(`Long running operation failed with status "${t.status}".`),t.error.code=t.status}})}updateStateFromGetResourceOperation(e,t){return s(this,void 0,void 0,function*(){let r;try{r=yield this.getStatus(e,t.optionsOfInitialRequest)}catch(e){return Promise.reject(e)}if(!r.parsedBody)return Promise.reject(new Error("The response from long running operation does not contain a body."));const s=r.parsedBody;return t.status=a.Succeeded,s&&s.properties&&s.properties.provisioningState&&(t.status=s.properties.provisioningState),t.updateResponse(r.response),t.request=r.request,t.resource=s,t.error=new o.RestError(`Long running operation failed with status "${t.status}".`),t.error.code=t.status,Promise.resolve()})}getStatus(e,t){return s(this,void 0,void 0,function*(){const r=this,s={method:"GET",url:e.replace(" ","%20"),headers:{}};if(t){const e=t.customHeaders;for(const t in e)e.hasOwnProperty(t)&&(s.headers[t]=e[t])}let n;try{n=yield r.sendRequest(s)}catch(e){return Promise.reject(e)}const i=n.response.status,a=n.parsedBody;if(200!==i&&201!==i&&202!==i&&204!==i){const e=new o.RestError(`Invalid status code with response body "${n.bodyAsText}" occurred `+"when polling for operation status.");e.statusCode=i,e.request=o.stripRequest(n.request),e.response=n.response;try{e.body=a}catch(t){e.message+=` Error "${t}" occured while deserializing the response body - "${n.bodyAsText}".`,e.body=n.bodyAsText}return Promise.reject(e)}return Promise.resolve(n)})}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=r(1),o=r(0),n=s.default.LongRunningOperationStates;t.default=class{constructor(e,t=30){this.retryTimeout=30,this.resultOfInitialRequest=e,this.retryTimeout=t,this.updateResponse(e.response),this.request=e.request;try{e.bodyAsText&&e.bodyAsText.length>0?this.resource=JSON.parse(e.bodyAsText):this.resource=e.parsedBody}catch(t){const r=new o.RestError(`Error "${t}" occurred in parsing the responseBody " +\n "while creating the PollingState for Long Running Operation- "${e.bodyAsText}"`);throw r.request=e.request,r.response=e.response,r}switch(this.response.status){case 202:this.status=n.InProgress;break;case 204:this.status=n.Succeeded;break;case 201:this.resource&&this.resource.properties&&this.resource.properties.provisioningState?this.status=this.resource.properties.provisioningState:this.status=n.InProgress;break;case 200:this.resource&&this.resource.properties&&this.resource.properties.provisioningState?this.status=this.resource.properties.provisioningState:this.status=n.Succeeded;break;default:this.status=n.Failed}}updateResponse(e){if(this.response=e,e&&e.headers){const t=e.headers.get("azure-asyncoperation"),r=e.headers.get("location");t&&(this.azureAsyncOperationHeaderLink=t),r&&(this.locationHeaderLink=r)}}getTimeout(){if(this.retryTimeout||0===this.retryTimeout)return 1e3*this.retryTimeout;if(this.response){const e=this.response.headers.get("retry-after");if(e)return 1e3*parseInt(e)}return 3e4}getOperationResponse(){const e=new o.HttpOperationResponse(this.request,this.response);return this.resource&&"string"==typeof this.resource.valueOf()?(e.bodyAsText=this.resource,e.parsedBody=JSON.parse(this.resource)):(e.parsedBody=this.resource,e.bodyAsText=JSON.stringify(this.resource)),e}getRestError(e){let t,r=void 0;const s=new o.RestError("");s.request=o.stripRequest(this.request),s.response=this.response;const n=this.resource;return t=e&&e.message?`Long running operation failed with error: "${e.message}".`:`Long running operation failed with status: "${this.status}".`,n&&(n.error&&n.error.message&&(t=`Long running operation failed with error: "${n.error.message}".`),n.error&&n.error.code&&(r=n.error.code)),s.message=t,r&&(s.code=r),s.body=n,s}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CloudErrorMapper={required:!1,serializedName:"CloudError",type:{name:"Composite",className:"CloudError",modelProperties:{code:{required:!0,serializedName:"code",type:{name:"String"}},message:{required:!0,serializedName:"message",type:{name:"String"}},target:{required:!1,serializedName:"target",type:{name:"String"}},details:{required:!1,serializedName:"details",type:{name:"Sequence",element:{required:!1,serializedName:"CloudErrorElementType",type:{name:"Composite",className:"CloudError"}}}}}}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseResourceMapper={required:!1,serializedName:"BaseResource",type:{name:"Composite",className:"BaseResource",modelProperties:{}}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=r(0);t.CognitiveServicesCredentials=class extends s.ApiKeyCredentials{constructor(e){if(!e||e&&"string"!=typeof e.valueOf())throw new Error("subscriptionKey cannot be null or undefined and must be of type string.");super({inHeader:{"Ocp-Apim-Subscription-Key":e,"X-BingApis-SDK-Client":"node-SDK"}})}}}]); \ No newline at end of file diff --git a/msRestAzureBundle.min.js.map b/msRestAzureBundle.min.js.map deleted file mode 100644 index a7cf5fa06911..000000000000 --- a/msRestAzureBundle.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["msRestAzureBundle.js"],"names":["msRestAzure","modules","installedModules","__webpack_require__","moduleId","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","msRest","value","default","LongRunningOperationStates","InProgress","Succeeded","Failed","Canceled","DEFAULT_LANGUAGE","msRestAzureVersion","azureServiceClient_1","AzureServiceClient","constants_1","Constants","cloudError_1","CloudErrorMapper","baseResource_1","BaseResourceMapper","cognitiveServicesCredentials_1","CognitiveServicesCredentials","__awaiter","this","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","result","done","then","apply","pollingState_1","LroStates","ServiceClient","[object Object]","credentials","options","super","acceptLanguage","generateClientRequestId","longRunningOperationRetryTimeout","rpRegistrationRetryTimeout","undefined","moduleName","moduleVersion","addUserAgentInfo","err","request","self","initialResponse","finalResponse","sendRequest","getLongRunningOperationResult","statusCode","response","status","method","resultOfInitialRequest","initialRequestMethod","checkResponseStatusCodeFailed","pollingState","optionsOfInitialRequest","error","resourceUrl","url","some","delay","getTimeout","azureAsyncOperationHeaderLink","updateStateFromAzureAsyncOperationHeader","locationHeaderLink","updateStateFromLocationHeader","Error","updateStateFromGetResourceOperation","resource","getOperationResponse","getRestError","inPostOrDelete","getStatus","parsedResponse","parsedBody","bodyAsText","updateResponse","RestError","code","properties","provisioningState","operationUrl","httpRequest","replace","headers","customHeaders","headerName","operationResponse","responseBody","stripRequest","body","badResponse","message","retryTimeout","length","JSON","parse","deserializationError","asyncOperationHeader","locationHeader","retryAfter","parseInt","HttpOperationResponse","valueOf","stringify","errMsg","errCode","required","serializedName","type","className","modelProperties","target","details","element","ms_rest_js_1","ApiKeyCredentials","subscriptionKey","inHeader","Ocp-Apim-Subscription-Key","X-BingApis-SDK-Client"],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 1cd1f6b34a87..7d4d3b66f32f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,18 +4,55 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@types/form-data": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", + "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", + "requires": { + "@types/node": "9.6.4" + } + }, + "@types/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@types/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==", + "requires": { + "@types/node": "9.6.4" + } + }, "@types/mocha": { "version": "2.2.48", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.48.tgz", "integrity": "sha512-nlK/iyETgafGli8Zh9zJVCTicvU3iajSkRwOh3Hhiva598CMqNJ4NcVCGMTGKpGpTYj/9R8RLzS9NAykSSCqGw==", "dev": true }, + "@types/node": { + "version": "9.6.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.4.tgz", + "integrity": "sha512-Awg4BcUYiZtNKoveGOu654JVPt11V/KIC77iBz8NweyoOAZpz5rUJfPDwwD+ajfTs2HndbTCEB8IuLfX9m/mmw==" + }, + "@types/node-fetch": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-1.6.8.tgz", + "integrity": "sha512-O8DUwXf7KUBu036HAbF5RKRaA1vvE0BsaPfAnC9YD7Xy4eNoJmNIdEjBIEEHAVszozRgH4m9JnVCsueSKiKXMA==", + "requires": { + "@types/node": "9.6.4" + } + }, "@types/should": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/@types/should/-/should-8.3.0.tgz", "integrity": "sha1-4rRgJDaF2+N3GC857zjTf00Veto=", "dev": true }, + "@types/uuid": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.3.tgz", + "integrity": "sha512-5fRLCYhLtDb3hMWqQyH10qtF+Ud2JnNCXTCZ+9ktNdCcgslcuXkDTkFcJNk++MT29yDntDnlF1+jD+uVGumsbw==", + "requires": { + "@types/node": "9.6.4" + } + }, "acorn": { "version": "5.5.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", @@ -120,12 +157,36 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true + }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, "asn1.js": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", @@ -167,6 +228,11 @@ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, "atob": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.0.tgz", @@ -240,6 +306,41 @@ "requires": { "is-descriptor": "1.0.2" } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -278,18 +379,16 @@ } }, "braces": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", - "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { "arr-flatten": "1.1.0", "array-unique": "0.3.2", - "define-property": "1.0.0", "extend-shallow": "2.0.1", "fill-range": "4.0.0", "isobject": "3.0.1", - "kind-of": "6.0.2", "repeat-element": "1.1.2", "snapdragon": "0.8.2", "snapdragon-node": "2.1.1", @@ -297,15 +396,6 @@ "to-regex": "3.0.2" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", @@ -314,12 +404,6 @@ "requires": { "is-extendable": "0.1.1" } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -336,9 +420,9 @@ "dev": true }, "browserify-aes": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", - "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { "buffer-xor": "1.0.3", @@ -355,7 +439,7 @@ "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", "dev": true, "requires": { - "browserify-aes": "1.1.1", + "browserify-aes": "1.2.0", "browserify-des": "1.0.0", "evp_bytestokey": "1.0.3" } @@ -503,7 +587,7 @@ "requires": { "anymatch": "2.0.0", "async-each": "1.0.1", - "braces": "2.3.1", + "braces": "2.3.2", "fsevents": "1.1.3", "glob-parent": "3.1.0", "inherits": "2.0.3", @@ -545,63 +629,6 @@ "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true } } }, @@ -647,6 +674,14 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "1.0.0" + } + }, "commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", @@ -797,6 +832,16 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", @@ -805,8 +850,50 @@ "requires": { "is-descriptor": "1.0.2", "isobject": "3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", @@ -840,6 +927,12 @@ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, "elliptic": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", @@ -861,6 +954,14 @@ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "0.4.21" + } + }, "enhanced-resolve": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", @@ -891,6 +992,30 @@ "is-arrayish": "0.2.1" } }, + "es-abstract": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", + "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", + "dev": true, + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, "es5-ext": { "version": "0.10.42", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz", @@ -902,6 +1027,11 @@ "next-tick": "1.0.0" } }, + "es6-denodeify": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-denodeify/-/es6-denodeify-0.1.5.tgz", + "integrity": "sha1-MdTV/pxVA+ElRgQ5MQ4WoqPznB8=" + }, "es6-iterator": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", @@ -1017,6 +1147,21 @@ "es5-ext": "0.10.42" } }, + "event-stream": { + "version": "3.3.4", + "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", + "dev": true, + "requires": { + "duplexer": "0.1.1", + "from": "0.1.7", + "map-stream": "0.1.0", + "pause-stream": "0.0.11", + "split": "0.3.3", + "stream-combiner": "0.0.4", + "through": "2.3.8" + } + }, "events": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", @@ -1080,63 +1225,6 @@ "requires": { "is-extendable": "0.1.1" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true } } }, @@ -1194,6 +1282,41 @@ "requires": { "is-extendable": "0.1.1" } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -1209,6 +1332,33 @@ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "dev": true }, + "fetch-cookie": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.7.0.tgz", + "integrity": "sha512-Mm5pGlT3agW6t71xVM7vMZPIvI7T4FaTuFW4jari6dVzYHFDb3WZZsGpN22r/o3XMdkM0E7sPd1EGeyVbH2Tgg==", + "requires": { + "es6-denodeify": "0.1.5", + "tough-cookie": "2.3.4" + } + }, + "fetch-ponyfill": { + "version": "github:amarzavery/fetch-ponyfill#136e6f8192bdb2aa0b7983f0b3b4361c357be9db", + "requires": { + "fetch-cookie": "0.6.0", + "node-fetch": "1.7.3" + }, + "dependencies": { + "fetch-cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.6.0.tgz", + "integrity": "sha1-T+xOQIzAAH9sBOVTYYr0s97jf2k=", + "requires": { + "es6-denodeify": "0.1.5", + "tough-cookie": "2.3.4" + } + } + } + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -1247,8 +1397,24 @@ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "fragment-cache": { - "version": "0.2.1", + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "fragment-cache": { + "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, @@ -1256,6 +1422,12 @@ "map-cache": "0.2.2" } }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1275,15 +1447,13 @@ "dependencies": { "abbrev": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", - "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", + "bundled": true, "dev": true, "optional": true }, "ajv": { "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1293,21 +1463,18 @@ }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "aproba": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", - "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", + "bundled": true, "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1317,49 +1484,42 @@ }, "asn1": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "bundled": true, "dev": true, "optional": true }, "assert-plus": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "bundled": true, "dev": true, "optional": true }, "asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "bundled": true, "dev": true, "optional": true }, "aws-sign2": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "bundled": true, "dev": true, "optional": true }, "aws4": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "bundled": true, "dev": true, "optional": true }, "balanced-match": { "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "bundled": true, "dev": true }, "bcrypt-pbkdf": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1368,8 +1528,7 @@ }, "block-stream": { "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "bundled": true, "dev": true, "requires": { "inherits": "2.0.3" @@ -1377,8 +1536,7 @@ }, "boom": { "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "bundled": true, "dev": true, "requires": { "hoek": "2.16.3" @@ -1386,8 +1544,7 @@ }, "brace-expansion": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", - "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", + "bundled": true, "dev": true, "requires": { "balanced-match": "0.4.2", @@ -1396,34 +1553,29 @@ }, "buffer-shims": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "bundled": true, "dev": true }, "caseless": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "bundled": true, "dev": true, "optional": true }, "co": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "bundled": true, "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "combined-stream": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "bundled": true, "dev": true, "requires": { "delayed-stream": "1.0.0" @@ -1431,26 +1583,22 @@ }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "bundled": true, "dev": true }, "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "bundled": true, "dev": true }, "cryptiles": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "bundled": true, "dev": true, "requires": { "boom": "2.10.1" @@ -1458,8 +1606,7 @@ }, "dashdash": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1468,8 +1615,7 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "bundled": true, "dev": true, "optional": true } @@ -1477,8 +1623,7 @@ }, "debug": { "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1487,35 +1632,30 @@ }, "deep-extend": { "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "bundled": true, "dev": true, "optional": true }, "delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "bundled": true, "dev": true }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "bundled": true, "dev": true, "optional": true }, "detect-libc": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.2.tgz", - "integrity": "sha1-ca1dIEvxempsqPRQxhRUBm70YeE=", + "bundled": true, "dev": true, "optional": true }, "ecc-jsbn": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1524,28 +1664,24 @@ }, "extend": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "bundled": true, "dev": true, "optional": true }, "extsprintf": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", + "bundled": true, "dev": true }, "forever-agent": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "bundled": true, "dev": true, "optional": true }, "form-data": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1556,14 +1692,12 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "fstream": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -1574,8 +1708,7 @@ }, "fstream-ignore": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1586,8 +1719,7 @@ }, "gauge": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1603,8 +1735,7 @@ }, "getpass": { "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1613,8 +1744,7 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "bundled": true, "dev": true, "optional": true } @@ -1622,8 +1752,7 @@ }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -1636,21 +1765,18 @@ }, "graceful-fs": { "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "bundled": true, "dev": true }, "har-schema": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "bundled": true, "dev": true, "optional": true }, "har-validator": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1660,15 +1786,13 @@ }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "bundled": true, "dev": true, "optional": true }, "hawk": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "bundled": true, "dev": true, "requires": { "boom": "2.10.1", @@ -1679,14 +1803,12 @@ }, "hoek": { "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "bundled": true, "dev": true }, "http-signature": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1697,8 +1819,7 @@ }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "1.4.0", @@ -1707,21 +1828,18 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "ini": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "bundled": true, "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" @@ -1729,28 +1847,24 @@ }, "is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "bundled": true, "dev": true, "optional": true }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true }, "isstream": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "bundled": true, "dev": true, "optional": true }, "jodid25519": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1759,22 +1873,19 @@ }, "jsbn": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "bundled": true, "dev": true, "optional": true }, "json-schema": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "bundled": true, "dev": true, "optional": true }, "json-stable-stringify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1783,22 +1894,19 @@ }, "json-stringify-safe": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "bundled": true, "dev": true, "optional": true }, "jsonify": { "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "bundled": true, "dev": true, "optional": true }, "jsprim": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", - "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1810,8 +1918,7 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "bundled": true, "dev": true, "optional": true } @@ -1819,14 +1926,12 @@ }, "mime-db": { "version": "1.27.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", + "bundled": true, "dev": true }, "mime-types": { "version": "2.1.15", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", - "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "bundled": true, "dev": true, "requires": { "mime-db": "1.27.0" @@ -1834,8 +1939,7 @@ }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "1.1.7" @@ -1843,14 +1947,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -1858,15 +1960,13 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true, "optional": true }, "node-pre-gyp": { "version": "0.6.39", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz", - "integrity": "sha512-OsJV74qxnvz/AMGgcfZoDaeDXKD3oY3QVIbBmwszTFkRisTSXbMQyn4UWzUMOtA5SVhrBZOTp0wcoSBgfMfMmQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1885,8 +1985,7 @@ }, "nopt": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1896,8 +1995,7 @@ }, "npmlog": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", - "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1909,28 +2007,24 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "oauth-sign": { "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "bundled": true, "dev": true, "optional": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true, "optional": true }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1.0.2" @@ -1938,22 +2032,19 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "bundled": true, "dev": true, "optional": true }, "osenv": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1963,41 +2054,35 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "performance-now": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "bundled": true, "dev": true, "optional": true }, "process-nextick-args": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "bundled": true, "dev": true }, "punycode": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "bundled": true, "dev": true, "optional": true }, "qs": { "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "bundled": true, "dev": true, "optional": true }, "rc": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2009,8 +2094,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "bundled": true, "dev": true, "optional": true } @@ -2018,8 +2102,7 @@ }, "readable-stream": { "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "bundled": true, "dev": true, "requires": { "buffer-shims": "1.0.0", @@ -2033,8 +2116,7 @@ }, "request": { "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2064,8 +2146,7 @@ }, "rimraf": { "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "bundled": true, "dev": true, "requires": { "glob": "7.1.2" @@ -2073,35 +2154,30 @@ }, "safe-buffer": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", + "bundled": true, "dev": true }, "semver": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "bundled": true, "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true, "optional": true }, "sntp": { "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "bundled": true, "dev": true, "requires": { "hoek": "2.16.3" @@ -2109,8 +2185,7 @@ }, "sshpk": { "version": "1.13.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", - "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2127,8 +2202,7 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "bundled": true, "dev": true, "optional": true } @@ -2136,8 +2210,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", @@ -2147,8 +2220,7 @@ }, "string_decoder": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", - "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", + "bundled": true, "dev": true, "requires": { "safe-buffer": "5.0.1" @@ -2156,15 +2228,13 @@ }, "stringstream": { "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "bundled": true, "dev": true, "optional": true }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" @@ -2172,15 +2242,13 @@ }, "strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "bundled": true, "dev": true, "optional": true }, "tar": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "bundled": true, "dev": true, "requires": { "block-stream": "0.0.9", @@ -2190,8 +2258,7 @@ }, "tar-pack": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", - "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2207,8 +2274,7 @@ }, "tough-cookie": { "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2217,8 +2283,7 @@ }, "tunnel-agent": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2227,35 +2292,30 @@ }, "tweetnacl": { "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "bundled": true, "dev": true, "optional": true }, "uid-number": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", + "bundled": true, "dev": true, "optional": true }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "bundled": true, "dev": true }, "uuid": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", - "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", + "bundled": true, "dev": true, "optional": true }, "verror": { "version": "1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2264,8 +2324,7 @@ }, "wide-align": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2274,12 +2333,17 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true } } }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", @@ -2351,6 +2415,15 @@ "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", "dev": true }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "1.1.1" + } + }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -2387,6 +2460,12 @@ "kind-of": "4.0.0" }, "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -2446,6 +2525,14 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, + "iconv-lite": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", + "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", + "requires": { + "safer-buffer": "2.1.2" + } + }, "ieee754": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", @@ -2487,20 +2574,12 @@ "dev": true }, "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "kind-of": "3.2.2" } }, "is-arrayish": { @@ -2519,10 +2598,9 @@ } }, "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.2.tgz", + "integrity": "sha512-imvkm8cOGKeZ/NwkAd+FAURi0hsL9gr3kvdi0r3MnqChcOdPaQRIOQiOU+sD40XzUIe6nFmSHYtQjbkDvaQbEg==" }, "is-builtin-module": { "version": "1.0.0", @@ -2533,38 +2611,42 @@ "builtin-modules": "1.1.1" } }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "kind-of": "3.2.2" } }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" }, "dependencies": { "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } @@ -2634,10 +2716,24 @@ "isobject": "3.0.1" } }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.1" + } + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", "dev": true }, "is-windows": { @@ -2686,6 +2782,12 @@ "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", "dev": true }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, "json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", @@ -2704,6 +2806,12 @@ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -2711,6 +2819,14 @@ "dev": true, "requires": { "is-buffer": "1.1.6" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + } } }, "lazy-cache": { @@ -2857,12 +2973,24 @@ "yallist": "2.1.2" } }, + "make-error": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz", + "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==", + "dev": true + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, + "map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", + "dev": true + }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -2910,9 +3038,15 @@ "dev": true, "requires": { "errno": "0.1.7", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -2921,7 +3055,7 @@ "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", - "braces": "2.3.1", + "braces": "2.3.2", "define-property": "2.0.2", "extend-shallow": "3.0.2", "extglob": "2.0.4", @@ -2952,6 +3086,19 @@ "brorand": "1.1.0" } }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "1.33.0" + } + }, "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", @@ -3035,6 +3182,11 @@ "supports-color": "3.1.2" } }, + "moment": { + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.0.tgz", + "integrity": "sha512-1muXCh8jb1N/gHRbn9VDUBr0GYb8A/aVcHlII9QSB68a50spqEVLIGN6KVmCOnSvJrUhC0edGgKU5ofnGXdYdg==" + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -3042,3855 +3194,24 @@ "dev": true }, "ms-rest-js": { - "version": "0.3.0", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.3.1.tgz", + "integrity": "sha512-9ULpc9mIwxJ3ia5cH5e3bhcdqByhWH6GJEKEWkJArsahj4+CfMaE8Pdz6F7fHFyKsHbvYThu61kwIbYE6xqIbQ==", "requires": { "@types/form-data": "2.2.1", "@types/is-stream": "1.1.0", - "@types/node": "9.6.0", - "@types/node-fetch": "1.6.7", + "@types/node": "9.6.4", + "@types/node-fetch": "1.6.8", "@types/uuid": "3.4.3", "fetch-cookie": "0.7.0", "fetch-ponyfill": "github:amarzavery/fetch-ponyfill#136e6f8192bdb2aa0b7983f0b3b4361c357be9db", - "form-data": "2.3.2", - "is-buffer": "2.0.2", - "is-stream": "1.1.0", - "moment": "2.21.0", - "url-parse": "1.2.0", - "uuid": "3.2.1", - "xml2js": "0.4.19" - }, - "dependencies": { - "@types/form-data": { - "version": "2.2.1", - "bundled": true, - "requires": { - "@types/node": "9.6.0" - } - }, - "@types/is-stream": { - "version": "1.1.0", - "bundled": true, - "requires": { - "@types/node": "9.6.0" - } - }, - "@types/mocha": { - "version": "2.2.48", - "bundled": true - }, - "@types/node": { - "version": "9.6.0", - "bundled": true - }, - "@types/node-fetch": { - "version": "1.6.7", - "bundled": true, - "requires": { - "@types/node": "9.6.0" - } - }, - "@types/should": { - "version": "8.3.0", - "bundled": true - }, - "@types/uuid": { - "version": "3.4.3", - "bundled": true, - "requires": { - "@types/node": "9.6.0" - } - }, - "@types/xml2js": { - "version": "0.4.2", - "bundled": true, - "requires": { - "@types/node": "9.6.0" - } - }, - "acorn": { - "version": "5.5.3", - "bundled": true - }, - "acorn-dynamic-import": { - "version": "2.0.2", - "bundled": true, - "requires": { - "acorn": "4.0.13" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "bundled": true - } - } - }, - "ajv": { - "version": "6.4.0", - "bundled": true, - "requires": { - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1", - "uri-js": "3.0.2" - } - }, - "ajv-keywords": { - "version": "3.1.0", - "bundled": true - }, - "align-text": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "ansi-styles": { - "version": "3.2.1", - "bundled": true, - "requires": { - "color-convert": "1.9.1" - } - }, - "anymatch": { - "version": "2.0.0", - "bundled": true, - "requires": { - "micromatch": "3.1.10", - "normalize-path": "2.1.1" - } - }, - "argparse": { - "version": "1.0.10", - "bundled": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, - "arr-diff": { - "version": "4.0.0", - "bundled": true - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true - }, - "arr-union": { - "version": "3.1.0", - "bundled": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true - }, - "asn1.js": { - "version": "4.10.1", - "bundled": true, - "requires": { - "bn.js": "4.11.8", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "bundled": true, - "requires": { - "util": "0.10.3" - } - }, - "assign-symbols": { - "version": "1.0.0", - "bundled": true - }, - "async": { - "version": "2.6.0", - "bundled": true, - "requires": { - "lodash": "4.17.5" - } - }, - "async-each": { - "version": "1.0.1", - "bundled": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true - }, - "atob": { - "version": "2.0.3", - "bundled": true - }, - "babel-code-frame": { - "version": "6.26.0", - "bundled": true, - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "bundled": true - }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "base": { - "version": "0.11.2", - "bundled": true, - "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "1.0.2" - } - } - } - }, - "base64-js": { - "version": "1.2.3", - "bundled": true - }, - "big.js": { - "version": "3.2.0", - "bundled": true - }, - "binary-extensions": { - "version": "1.11.0", - "bundled": true - }, - "bn.js": { - "version": "4.11.8", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.1", - "bundled": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "kind-of": "6.0.2", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "brorand": { - "version": "1.1.0", - "bundled": true - }, - "browser-stdout": { - "version": "1.3.0", - "bundled": true - }, - "browserify-aes": { - "version": "1.1.1", - "bundled": true, - "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "browserify-cipher": { - "version": "1.0.0", - "bundled": true, - "requires": { - "browserify-aes": "1.1.1", - "browserify-des": "1.0.0", - "evp_bytestokey": "1.0.3" - } - }, - "browserify-des": { - "version": "1.0.0", - "bundled": true, - "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.0", - "inherits": "2.0.3" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "bundled": true, - "requires": { - "bn.js": "4.11.8", - "randombytes": "2.0.6" - } - }, - "browserify-sign": { - "version": "4.0.4", - "bundled": true, - "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "elliptic": "6.4.0", - "inherits": "2.0.3", - "parse-asn1": "5.1.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "bundled": true, - "requires": { - "pako": "1.0.6" - } - }, - "buffer": { - "version": "4.9.1", - "bundled": true, - "requires": { - "base64-js": "1.2.3", - "ieee754": "1.1.11", - "isarray": "1.0.0" - } - }, - "buffer-xor": { - "version": "1.0.3", - "bundled": true - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "bundled": true - }, - "cache-base": { - "version": "1.0.1", - "bundled": true, - "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" - } - }, - "camelcase": { - "version": "1.2.1", - "bundled": true - }, - "center-align": { - "version": "0.1.3", - "bundled": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "chalk": { - "version": "2.3.2", - "bundled": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.3.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "bundled": true - }, - "supports-color": { - "version": "5.3.0", - "bundled": true, - "requires": { - "has-flag": "3.0.0" - } - } - } - }, - "chokidar": { - "version": "2.0.3", - "bundled": true, - "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.1", - "fsevents": "1.1.3", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.0", - "normalize-path": "2.1.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0", - "upath": "1.0.4" - } - }, - "cipher-base": { - "version": "1.0.4", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "class-utils": { - "version": "0.3.6", - "bundled": true, - "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "bundled": true - } - } - }, - "cliui": { - "version": "2.1.0", - "bundled": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "collection-visit": { - "version": "1.0.0", - "bundled": true, - "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" - } - }, - "color-convert": { - "version": "1.9.1", - "bundled": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "bundled": true - }, - "combined-stream": { - "version": "1.0.6", - "bundled": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "commander": { - "version": "2.9.0", - "bundled": true, - "requires": { - "graceful-readlink": "1.0.1" - } - }, - "component-emitter": { - "version": "1.2.1", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-browserify": { - "version": "1.1.0", - "bundled": true, - "requires": { - "date-now": "0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "bundled": true - }, - "copy-descriptor": { - "version": "0.1.1", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "create-ecdh": { - "version": "4.0.0", - "bundled": true, - "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.0" - } - }, - "create-hash": { - "version": "1.1.3", - "bundled": true, - "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "sha.js": "2.4.11" - } - }, - "create-hmac": { - "version": "1.1.6", - "bundled": true, - "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.11" - } - }, - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "requires": { - "lru-cache": "4.1.2", - "shebang-command": "1.2.0", - "which": "1.3.0" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "bundled": true, - "requires": { - "browserify-cipher": "1.0.0", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.0", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "diffie-hellman": "5.0.2", - "inherits": "2.0.3", - "pbkdf2": "3.0.14", - "public-encrypt": "4.0.0", - "randombytes": "2.0.6", - "randomfill": "1.0.4" - } - }, - "d": { - "version": "1.0.0", - "bundled": true, - "requires": { - "es5-ext": "0.10.41" - } - }, - "date-now": { - "version": "0.1.4", - "bundled": true - }, - "debug": { - "version": "2.6.8", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "bundled": true - }, - "decode-uri-component": { - "version": "0.2.0", - "bundled": true - }, - "define-property": { - "version": "2.0.2", - "bundled": true, - "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true - }, - "des.js": { - "version": "1.0.0", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, - "diff": { - "version": "3.2.0", - "bundled": true - }, - "diffie-hellman": { - "version": "5.0.2", - "bundled": true, - "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.1", - "randombytes": "2.0.6" - } - }, - "domain-browser": { - "version": "1.2.0", - "bundled": true - }, - "elliptic": { - "version": "6.4.0", - "bundled": true, - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.3", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "emojis-list": { - "version": "2.1.0", - "bundled": true - }, - "encoding": { - "version": "0.1.12", - "bundled": true, - "requires": { - "iconv-lite": "0.4.19" - } - }, - "enhanced-resolve": { - "version": "3.4.1", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "object-assign": "4.1.1", - "tapable": "0.2.8" - } - }, - "errno": { - "version": "0.1.7", - "bundled": true, - "requires": { - "prr": "1.0.1" - } - }, - "error-ex": { - "version": "1.3.1", - "bundled": true, - "requires": { - "is-arrayish": "0.2.1" - } - }, - "es5-ext": { - "version": "0.10.41", - "bundled": true, - "requires": { - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1", - "next-tick": "1.0.0" - } - }, - "es6-denodeify": { - "version": "0.1.5", - "bundled": true - }, - "es6-iterator": { - "version": "2.0.3", - "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.41", - "es6-symbol": "3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.41", - "es6-iterator": "2.0.3", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-set": { - "version": "0.1.5", - "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.41", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-symbol": { - "version": "3.1.1", - "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.41" - } - }, - "es6-weak-map": { - "version": "2.0.2", - "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.41", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true - }, - "escope": { - "version": "3.6.0", - "bundled": true, - "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.2.1", - "estraverse": "4.2.0" - } - }, - "esprima": { - "version": "4.0.0", - "bundled": true - }, - "esrecurse": { - "version": "4.2.1", - "bundled": true, - "requires": { - "estraverse": "4.2.0" - } - }, - "estraverse": { - "version": "4.2.0", - "bundled": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true - }, - "event-emitter": { - "version": "0.3.5", - "bundled": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.41" - } - }, - "events": { - "version": "1.1.1", - "bundled": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "bundled": true, - "requires": { - "md5.js": "1.3.4", - "safe-buffer": "5.1.1" - } - }, - "execa": { - "version": "0.7.0", - "bundled": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "requires": { - "debug": "2.6.8", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "bundled": true - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "bundled": true, - "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-plain-object": "2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "fast-deep-equal": { - "version": "1.1.0", - "bundled": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "bundled": true - }, - "fetch-cookie": { - "version": "0.7.0", - "bundled": true, - "requires": { - "es6-denodeify": "0.1.5", - "tough-cookie": "2.3.4" - } - }, - "fetch-ponyfill": { - "version": "github:amarzavery/fetch-ponyfill#136e6f8192bdb2aa0b7983f0b3b4361c357be9db", - "bundled": true, - "requires": { - "fetch-cookie": "0.6.0", - "node-fetch": "1.7.3" - }, - "dependencies": { - "fetch-cookie": { - "version": "0.6.0", - "bundled": true, - "requires": { - "es6-denodeify": "0.1.5", - "tough-cookie": "2.3.4" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "for-in": { - "version": "1.0.2", - "bundled": true - }, - "form-data": { - "version": "2.3.2", - "bundled": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" - } - }, - "fragment-cache": { - "version": "0.2.1", - "bundled": true, - "requires": { - "map-cache": "0.2.2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "fsevents": { - "version": "1.1.3", - "bundled": true, - "optional": true, - "requires": { - "nan": "2.10.0", - "node-pre-gyp": "0.6.39" - }, - "dependencies": { - "abbrev": { - "version": "1.1.0", - "bundled": true, - "optional": true - }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" - } - }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "bundled": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.7", - "bundled": true, - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - } - }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "optional": true - }, - "co": { - "version": "4.6.0", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "bundled": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.4.2", - "bundled": true, - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "optional": true, - "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "bundled": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.4", - "bundled": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", - "bundled": true - }, - "mime-types": { - "version": "2.1.15", - "bundled": true, - "requires": { - "mime-db": "1.27.0" - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.39", - "bundled": true, - "optional": true, - "requires": { - "detect-libc": "1.0.2", - "hawk": "3.1.3", - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" - } - }, - "npmlog": { - "version": "4.1.0", - "bundled": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.4", - "bundled": true, - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.1", - "bundled": true, - "optional": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "bundled": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.81.0", - "bundled": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, - "rimraf": { - "version": "2.6.1", - "bundled": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.0.1", - "bundled": true - }, - "semver": { - "version": "5.3.0", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, - "optional": true - }, - "verror": { - "version": "1.3.6", - "bundled": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - } - } - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "get-value": { - "version": "2.0.6", - "bundled": true - }, - "glob": { - "version": "7.1.1", - "bundled": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "bundled": true, - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "bundled": true, - "requires": { - "is-extglob": "2.1.1" - } - } - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "graceful-readlink": { - "version": "1.0.1", - "bundled": true - }, - "growl": { - "version": "1.9.2", - "bundled": true - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-flag": { - "version": "1.0.0", - "bundled": true - }, - "has-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" - } - }, - "has-values": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "bundled": true - }, - "kind-of": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "hash-base": { - "version": "2.0.2", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - }, - "hash.js": { - "version": "1.1.3", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, - "he": { - "version": "1.1.1", - "bundled": true - }, - "hmac-drbg": { - "version": "1.0.1", - "bundled": true, - "requires": { - "hash.js": "1.1.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "hosted-git-info": { - "version": "2.6.0", - "bundled": true - }, - "https-browserify": { - "version": "1.0.0", - "bundled": true - }, - "iconv-lite": { - "version": "0.4.19", - "bundled": true - }, - "ieee754": { - "version": "1.1.11", - "bundled": true - }, - "indexof": { - "version": "0.0.1", - "bundled": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "interpret": { - "version": "1.1.0", - "bundled": true - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true - }, - "is-binary-path": { - "version": "1.0.1", - "bundled": true, - "requires": { - "binary-extensions": "1.11.0" - } - }, - "is-buffer": { - "version": "2.0.2", - "bundled": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true - }, - "is-extglob": { - "version": "2.1.1", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-glob": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-extglob": "2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-odd": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-number": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "bundled": true - } - } - }, - "is-plain-object": { - "version": "2.0.4", - "bundled": true, - "requires": { - "isobject": "3.0.1" - } - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "is-windows": { - "version": "1.0.2", - "bundled": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true - }, - "isobject": { - "version": "3.0.1", - "bundled": true - }, - "js-tokens": { - "version": "3.0.2", - "bundled": true - }, - "js-yaml": { - "version": "3.11.0", - "bundled": true, - "requires": { - "argparse": "1.0.10", - "esprima": "4.0.0" - } - }, - "json-loader": { - "version": "0.5.7", - "bundled": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "bundled": true - }, - "json3": { - "version": "3.3.2", - "bundled": true - }, - "json5": { - "version": "0.5.1", - "bundled": true - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "bundled": true - } - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "requires": { - "invert-kv": "1.0.0" - } - }, - "load-json-file": { - "version": "2.0.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" - } - }, - "loader-runner": { - "version": "2.3.0", - "bundled": true - }, - "loader-utils": { - "version": "1.1.0", - "bundled": true, - "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - }, - "locate-path": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - } - }, - "lodash": { - "version": "4.17.5", - "bundled": true - }, - "lodash._baseassign": { - "version": "3.2.0", - "bundled": true, - "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "bundled": true - }, - "lodash._basecreate": { - "version": "3.0.3", - "bundled": true - }, - "lodash._getnative": { - "version": "3.9.1", - "bundled": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "bundled": true - }, - "lodash.create": { - "version": "3.1.1", - "bundled": true, - "requires": { - "lodash._baseassign": "3.2.0", - "lodash._basecreate": "3.0.3", - "lodash._isiterateecall": "3.0.9" - } - }, - "lodash.isarguments": { - "version": "3.1.0", - "bundled": true - }, - "lodash.isarray": { - "version": "3.0.4", - "bundled": true - }, - "lodash.keys": { - "version": "3.1.2", - "bundled": true, - "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" - } - }, - "longest": { - "version": "1.0.1", - "bundled": true - }, - "lru-cache": { - "version": "4.1.2", - "bundled": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "map-cache": { - "version": "0.2.2", - "bundled": true - }, - "map-visit": { - "version": "1.0.0", - "bundled": true, - "requires": { - "object-visit": "1.0.1" - } - }, - "md5.js": { - "version": "1.3.4", - "bundled": true, - "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" - }, - "dependencies": { - "hash-base": { - "version": "3.0.4", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - } - } - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "requires": { - "mimic-fn": "1.2.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "bundled": true, - "requires": { - "errno": "0.1.7", - "readable-stream": "2.3.5" - } - }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.1", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "miller-rabin": { - "version": "4.0.1", - "bundled": true, - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" - } - }, - "mime-db": { - "version": "1.33.0", - "bundled": true - }, - "mime-types": { - "version": "2.1.18", - "bundled": true, - "requires": { - "mime-db": "1.33.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "bundled": true - }, - "minimalistic-assert": { - "version": "1.0.0", - "bundled": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.11" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "mixin-deep": { - "version": "1.3.1", - "bundled": true, - "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-plain-object": "2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "3.5.3", - "bundled": true, - "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.6.8", - "diff": "3.2.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.1", - "growl": "1.9.2", - "he": "1.1.1", - "json3": "3.3.2", - "lodash.create": "3.1.1", - "mkdirp": "0.5.1", - "supports-color": "3.1.2" - } - }, - "moment": { - "version": "2.21.0", - "bundled": true - }, - "ms": { - "version": "2.0.0", - "bundled": true - }, - "nan": { - "version": "2.10.0", - "bundled": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.9", - "bundled": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-odd": "2.0.0", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "neo-async": { - "version": "2.5.0", - "bundled": true - }, - "next-tick": { - "version": "1.0.0", - "bundled": true - }, - "node-fetch": { - "version": "1.7.3", - "bundled": true, - "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" - } - }, - "node-libs-browser": { - "version": "2.1.0", - "bundled": true, - "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.2.0", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.12.0", - "domain-browser": "1.2.0", - "events": "1.1.1", - "https-browserify": "1.0.0", - "os-browserify": "0.3.0", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.5", - "stream-browserify": "2.0.1", - "stream-http": "2.8.1", - "string_decoder": "1.0.3", - "timers-browserify": "2.0.6", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "requires": { - "hosted-git-info": "2.6.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" - } - }, - "normalize-path": { - "version": "2.1.1", - "bundled": true, - "requires": { - "remove-trailing-separator": "1.1.0" - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "requires": { - "path-key": "2.0.1" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "object-copy": { - "version": "0.1.0", - "bundled": true, - "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "bundled": true - } - } - } - } - }, - "object-visit": { - "version": "1.0.1", - "bundled": true, - "requires": { - "isobject": "3.0.1" - } - }, - "object.pick": { - "version": "1.3.0", - "bundled": true, - "requires": { - "isobject": "3.0.1" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-browserify": { - "version": "0.3.0", - "bundled": true - }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true - }, - "p-limit": { - "version": "1.2.0", - "bundled": true, - "requires": { - "p-try": "1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-limit": "1.2.0" - } - }, - "p-try": { - "version": "1.0.0", - "bundled": true - }, - "pako": { - "version": "1.0.6", - "bundled": true - }, - "parse-asn1": { - "version": "5.1.0", - "bundled": true, - "requires": { - "asn1.js": "4.10.1", - "browserify-aes": "1.1.1", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.14" - } - }, - "parse-json": { - "version": "2.2.0", - "bundled": true, - "requires": { - "error-ex": "1.3.1" - } - }, - "pascalcase": { - "version": "0.1.1", - "bundled": true - }, - "path-browserify": { - "version": "0.0.0", - "bundled": true - }, - "path-dirname": { - "version": "1.0.2", - "bundled": true - }, - "path-exists": { - "version": "3.0.0", - "bundled": true - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true - }, - "path-type": { - "version": "2.0.0", - "bundled": true, - "requires": { - "pify": "2.3.0" - } - }, - "pbkdf2": { - "version": "3.0.14", - "bundled": true, - "requires": { - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.11" - } - }, - "pify": { - "version": "2.3.0", - "bundled": true - }, - "posix-character-classes": { - "version": "0.1.1", - "bundled": true - }, - "process": { - "version": "0.11.10", - "bundled": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true - }, - "prr": { - "version": "1.0.1", - "bundled": true - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true - }, - "public-encrypt": { - "version": "4.0.0", - "bundled": true, - "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "parse-asn1": "5.1.0", - "randombytes": "2.0.6" - } - }, - "punycode": { - "version": "1.4.1", - "bundled": true - }, - "querystring": { - "version": "0.2.0", - "bundled": true - }, - "querystring-es3": { - "version": "0.2.1", - "bundled": true - }, - "querystringify": { - "version": "1.0.0", - "bundled": true - }, - "randomatic": { - "bundled": true - }, - "randombytes": { - "version": "2.0.6", - "bundled": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "randomfill": { - "version": "1.0.4", - "bundled": true, - "requires": { - "randombytes": "2.0.6", - "safe-buffer": "5.1.1" - } - }, - "read-pkg": { - "version": "2.0.0", - "bundled": true, - "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "bundled": true, - "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" - } - }, - "readable-stream": { - "version": "2.3.5", - "bundled": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "readdirp": { - "version": "2.1.0", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.5", - "set-immediate-shim": "1.0.1" - } - }, - "regex-not": { - "version": "1.0.2", - "bundled": true, - "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "bundled": true - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true - }, - "require-directory": { - "version": "2.1.1", - "bundled": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true - }, - "requires-port": { - "version": "1.0.0", - "bundled": true - }, - "resolve": { - "version": "1.6.0", - "bundled": true, - "requires": { - "path-parse": "1.0.5" - } - }, - "resolve-url": { - "version": "0.2.1", - "bundled": true - }, - "ret": { - "version": "0.1.15", - "bundled": true - }, - "right-align": { - "version": "0.1.3", - "bundled": true, - "requires": { - "align-text": "0.1.4" - } - }, - "ripemd160": { - "version": "2.0.1", - "bundled": true, - "requires": { - "hash-base": "2.0.2", - "inherits": "2.0.3" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true - }, - "safe-regex": { - "version": "1.1.0", - "bundled": true, - "requires": { - "ret": "0.1.15" - } - }, - "sax": { - "version": "1.2.4", - "bundled": true - }, - "semver": { - "version": "5.5.0", - "bundled": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "bundled": true - }, - "set-value": { - "version": "2.0.0", - "bundled": true, - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "bundled": true - }, - "sha.js": { - "version": "2.4.11", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "requires": { - "shebang-regex": "1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true - }, - "should": { - "version": "5.2.0", - "bundled": true, - "requires": { - "should-equal": "0.3.1", - "should-format": "0.0.7", - "should-type": "0.0.4" - } - }, - "should-equal": { - "version": "0.3.1", - "bundled": true, - "requires": { - "should-type": "0.0.4" - } - }, - "should-format": { - "version": "0.0.7", - "bundled": true, - "requires": { - "should-type": "0.0.4" - } - }, - "should-type": { - "version": "0.0.4", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "snapdragon": { - "version": "0.8.2", - "bundled": true, - "requires": { - "base": "0.11.2", - "debug": "2.6.8", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.1", - "use": "3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "bundled": true - }, - "source-map": { - "version": "0.5.7", - "bundled": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "bundled": true, - "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "1.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "source-list-map": { - "version": "2.0.0", - "bundled": true - }, - "source-map": { - "version": "0.6.1", - "bundled": true - }, - "source-map-resolve": { - "version": "0.5.1", - "bundled": true, - "requires": { - "atob": "2.0.3", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "bundled": true - }, - "spdx-correct": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "bundled": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "bundled": true - }, - "split-string": { - "version": "3.1.0", - "bundled": true, - "requires": { - "extend-shallow": "3.0.2" - } - }, - "sprintf-js": { - "version": "1.0.3", - "bundled": true - }, - "static-extend": { - "version": "0.1.2", - "bundled": true, - "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "bundled": true - } - } - }, - "stream-browserify": { - "version": "2.0.1", - "bundled": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.5" - } - }, - "stream-http": { - "version": "2.8.1", - "bundled": true, - "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.5", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" - } - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "string_decoder": { - "version": "1.0.3", - "bundled": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "bundled": true - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true - }, - "supports-color": { - "version": "3.1.2", - "bundled": true, - "requires": { - "has-flag": "1.0.0" - } - }, - "tapable": { - "version": "0.2.8", - "bundled": true - }, - "timers-browserify": { - "version": "2.0.6", - "bundled": true, - "requires": { - "setimmediate": "1.0.5" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "bundled": true - }, - "to-object-path": { - "version": "0.3.0", - "bundled": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "to-regex": { - "version": "3.0.2", - "bundled": true, - "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" - } - }, - "tough-cookie": { - "version": "2.3.4", - "bundled": true, - "requires": { - "punycode": "1.4.1" - } - }, - "ts-loader": { - "version": "2.3.7", - "bundled": true, - "requires": { - "chalk": "2.3.2", - "enhanced-resolve": "3.4.1", - "loader-utils": "1.1.0", - "semver": "5.5.0" - } - }, - "tslib": { - "version": "1.9.0", - "bundled": true - }, - "tslint": { - "version": "5.9.1", - "bundled": true, - "requires": { - "babel-code-frame": "6.26.0", - "builtin-modules": "1.1.1", - "chalk": "2.3.2", - "commander": "2.15.1", - "diff": "3.2.0", - "glob": "7.1.1", - "js-yaml": "3.11.0", - "minimatch": "3.0.4", - "resolve": "1.6.0", - "semver": "5.5.0", - "tslib": "1.9.0", - "tsutils": "2.22.2" - }, - "dependencies": { - "commander": { - "version": "2.15.1", - "bundled": true - } - } - }, - "tsutils": { - "version": "2.22.2", - "bundled": true, - "requires": { - "tslib": "1.9.0" - } - }, - "tty-browserify": { - "version": "0.0.0", - "bundled": true - }, - "typescript": { - "version": "2.7.2", - "bundled": true - }, - "uglify-es": { - "version": "3.3.9", - "bundled": true, - "requires": { - "commander": "2.13.0", - "source-map": "0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.13.0", - "bundled": true - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "uglifyjs-webpack-plugin": { - "version": "0.4.6", - "bundled": true, - "requires": { - "source-map": "0.5.7", - "uglify-js": "2.8.29", - "webpack-sources": "1.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "bundled": true - }, - "uglify-js": { - "version": "2.8.29", - "bundled": true, - "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - } - }, - "yargs": { - "version": "3.10.0", - "bundled": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - } - } - }, - "union-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "set-value": { - "version": "0.4.3", - "bundled": true, - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" - } - } - } - }, - "unset-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "bundled": true, - "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "bundled": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "bundled": true - } - } - }, - "upath": { - "version": "1.0.4", - "bundled": true - }, - "uri-js": { - "version": "3.0.2", - "bundled": true, - "requires": { - "punycode": "2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.0", - "bundled": true - } - } - }, - "urix": { - "version": "0.1.0", - "bundled": true - }, - "url": { - "version": "0.11.0", - "bundled": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "bundled": true - } - } - }, - "url-parse": { - "version": "1.2.0", - "bundled": true, - "requires": { - "querystringify": "1.0.0", - "requires-port": "1.0.0" - } - }, - "use": { - "version": "3.1.0", - "bundled": true, - "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true - } - } - }, - "util": { - "version": "0.10.3", - "bundled": true, - "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "bundled": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "uuid": { - "version": "3.2.1", - "bundled": true - }, - "validate-npm-package-license": { - "version": "3.0.3", - "bundled": true, - "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" - } - }, - "vm-browserify": { - "version": "0.0.4", - "bundled": true, - "requires": { - "indexof": "0.0.1" - } - }, - "watchpack": { - "version": "1.5.0", - "bundled": true, - "requires": { - "chokidar": "2.0.3", - "graceful-fs": "4.1.11", - "neo-async": "2.5.0" - } - }, - "webpack": { - "version": "3.11.0", - "bundled": true, - "requires": { - "acorn": "5.5.3", - "acorn-dynamic-import": "2.0.2", - "ajv": "6.4.0", - "ajv-keywords": "3.1.0", - "async": "2.6.0", - "enhanced-resolve": "3.4.1", - "escope": "3.6.0", - "interpret": "1.1.0", - "json-loader": "0.5.7", - "json5": "0.5.1", - "loader-runner": "2.3.0", - "loader-utils": "1.1.0", - "memory-fs": "0.4.1", - "mkdirp": "0.5.1", - "node-libs-browser": "2.1.0", - "source-map": "0.5.7", - "supports-color": "4.5.0", - "tapable": "0.2.8", - "uglifyjs-webpack-plugin": "0.4.6", - "watchpack": "1.5.0", - "webpack-sources": "1.1.0", - "yargs": "8.0.2" - }, - "dependencies": { - "has-flag": { - "version": "2.0.0", - "bundled": true - }, - "source-map": { - "version": "0.5.7", - "bundled": true - }, - "supports-color": { - "version": "4.5.0", - "bundled": true, - "requires": { - "has-flag": "2.0.0" - } - } - } - }, - "webpack-sources": { - "version": "1.1.0", - "bundled": true, - "requires": { - "source-list-map": "2.0.0", - "source-map": "0.6.1" - } - }, - "which": { - "version": "1.3.0", - "bundled": true, - "requires": { - "isexe": "2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true - }, - "window-size": { - "version": "0.1.0", - "bundled": true - }, - "wordwrap": { - "version": "0.0.2", - "bundled": true - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "xml2js": { - "version": "0.4.19", - "bundled": true, - "requires": { - "sax": "1.2.4", - "xmlbuilder": "9.0.7" - } - }, - "xmlbuilder": { - "version": "9.0.7", - "bundled": true - }, - "xtend": { - "version": "4.0.1", - "bundled": true - }, - "y18n": { - "version": "3.2.1", - "bundled": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true - }, - "yargs": { - "version": "8.0.2", - "bundled": true, - "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "7.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true - }, - "cliui": { - "version": "3.2.0", - "bundled": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - } - } - } - } - }, - "yargs-parser": { - "version": "7.0.0", - "bundled": true, - "requires": { - "camelcase": "4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true - } - } - } + "form-data": "2.3.2", + "is-buffer": "2.0.2", + "is-stream": "1.1.0", + "moment": "2.22.0", + "url-parse": "1.3.0", + "uuid": "3.2.1", + "xml2js": "0.4.19" } }, "nan": { @@ -6940,6 +3261,15 @@ "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } + }, "node-libs-browser": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", @@ -6960,23 +3290,15 @@ "process": "0.11.10", "punycode": "1.4.1", "querystring-es3": "0.2.1", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "stream-browserify": "2.0.1", "stream-http": "2.8.1", - "string_decoder": "1.0.3", + "string_decoder": "1.1.1", "timers-browserify": "2.0.6", "tty-browserify": "0.0.0", "url": "0.11.0", "util": "0.10.3", "vm-browserify": "0.0.4" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } } }, "normalize-package-data": { @@ -7000,6 +3322,73 @@ "remove-trailing-separator": "1.1.0" } }, + "npm-run-all": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.2.tgz", + "integrity": "sha512-Z2aRlajMK4SQ8u19ZA75NZZu7wupfCNQWdYosIi8S6FgBdGf/8Y6Hgyjdc8zU2cYmIRVCx1nM80tJPkdEd+UYg==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "chalk": "2.3.2", + "cross-spawn": "5.1.0", + "memorystream": "0.3.1", + "minimatch": "3.0.4", + "ps-tree": "1.1.0", + "read-pkg": "3.0.0", + "shell-quote": "1.6.1", + "string.prototype.padend": "3.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.2" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "4.0.0", + "normalize-package-data": "2.4.0", + "path-type": "3.0.0" + } + } + } + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -7040,46 +3429,15 @@ "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } } } }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -7167,7 +3525,7 @@ "dev": true, "requires": { "asn1.js": "4.10.1", - "browserify-aes": "1.1.1", + "browserify-aes": "1.2.0", "create-hash": "1.1.3", "evp_bytestokey": "1.0.3", "pbkdf2": "3.0.14" @@ -7233,6 +3591,15 @@ "pify": "2.3.0" } }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", + "dev": true, + "requires": { + "through": "2.3.8" + } + }, "pbkdf2": { "version": "3.0.14", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", @@ -7276,6 +3643,15 @@ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, + "ps-tree": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", + "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", + "dev": true, + "requires": { + "event-stream": "3.3.4" + } + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -7296,10 +3672,9 @@ } }, "punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", - "dev": true + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, "querystring": { "version": "0.2.0", @@ -7313,6 +3688,11 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, + "querystringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=" + }, "randombytes": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", @@ -7354,9 +3734,9 @@ } }, "readable-stream": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", - "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { "core-util-is": "1.0.2", @@ -7364,7 +3744,7 @@ "isarray": "1.0.0", "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", + "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } }, @@ -7376,7 +3756,7 @@ "requires": { "graceful-fs": "4.1.11", "minimatch": "3.0.4", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "set-immediate-shim": "1.0.1" } }, @@ -7420,10 +3800,15 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, "resolve": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.6.0.tgz", - "integrity": "sha512-mw7JQNu5ExIkcw4LPih0owX/TZXjD/ZUF/ZQ/pDnkw3ZKhDcZZw5klmBlj6gVMwjQ3Pz5Jgu7F3d0jcDVuEWdw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.0.tgz", + "integrity": "sha512-QdgZ5bjR1WAlpLaO5yHepFvC+o3rCr6wpfE2tpJNMkXdulf2jKomQBdNRQITF3ZKHNlT71syG98yQP03gasgnA==", "dev": true, "requires": { "path-parse": "1.0.5" @@ -7475,6 +3860,16 @@ "ret": "0.1.15" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", @@ -7547,6 +3942,18 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "requires": { + "array-filter": "0.0.1", + "array-map": "0.0.0", + "array-reduce": "0.0.0", + "jsonify": "0.0.0" + } + }, "should": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/should/-/should-5.2.0.tgz", @@ -7622,63 +4029,6 @@ "is-extendable": "0.1.1" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -7706,6 +4056,41 @@ "requires": { "is-descriptor": "1.0.2" } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -7743,6 +4128,15 @@ "urix": "0.1.0" } }, + "source-map-support": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", + "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", + "dev": true, + "requires": { + "source-map": "0.6.1" + } + }, "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", @@ -7781,6 +4175,15 @@ "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", "dev": true }, + "split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "dev": true, + "requires": { + "through": "2.3.8" + } + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -7814,63 +4217,6 @@ "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true } } }, @@ -7881,7 +4227,16 @@ "dev": true, "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" + } + }, + "stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", + "dev": true, + "requires": { + "duplexer": "0.1.1" } }, "stream-http": { @@ -7892,7 +4247,7 @@ "requires": { "builtin-status-codes": "3.0.0", "inherits": "2.0.3", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "to-arraybuffer": "1.0.1", "xtend": "4.0.1" } @@ -7930,10 +4285,21 @@ } } }, + "string.prototype.padend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", + "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.11.0", + "function-bind": "1.1.1" + } + }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "5.1.1" @@ -7975,6 +4341,12 @@ "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", "dev": true }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, "timers-browserify": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", @@ -8021,6 +4393,14 @@ "repeat-string": "1.6.1" } }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "requires": { + "punycode": "1.4.1" + } + }, "ts-loader": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-2.3.7.tgz", @@ -8033,6 +4413,30 @@ "semver": "5.5.0" } }, + "ts-node": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-5.0.1.tgz", + "integrity": "sha512-XK7QmDcNHVmZkVtkiwNDWiERRHPyU8nBqZB1+iv2UhOG0q3RQ9HsZ2CMqISlFbxjrYFGfG2mX7bW4dAyxBVzUw==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "chalk": "2.3.2", + "diff": "3.2.0", + "make-error": "1.3.4", + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "source-map-support": "0.5.4", + "yn": "2.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, "tslib": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", @@ -8053,10 +4457,10 @@ "glob": "7.1.1", "js-yaml": "3.11.0", "minimatch": "3.0.4", - "resolve": "1.6.0", + "resolve": "1.7.0", "semver": "5.5.0", "tslib": "1.9.0", - "tsutils": "2.25.1" + "tsutils": "2.26.1" }, "dependencies": { "commander": { @@ -8068,9 +4472,9 @@ } }, "tsutils": { - "version": "2.25.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.25.1.tgz", - "integrity": "sha512-xHiTER5XIRYlWbylk4vpGZSYo8FUTVn32bAxxM1rJopXs2DYG7lWp40LqNvM3iMNpXa50wmnC9bFXsPTV6xAiQ==", + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.26.1.tgz", + "integrity": "sha512-bnm9bcjOqOr1UljleL94wVCDlpa6KjfGaTkefeLch4GRafgDkROxPizbB/FxTEdI++5JqhxczRy/Qub0syNqZA==", "dev": true, "requires": { "tslib": "1.9.0" @@ -8243,6 +4647,14 @@ "dev": true, "requires": { "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true + } } }, "urix": { @@ -8269,6 +4681,15 @@ } } }, + "url-parse": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.3.0.tgz", + "integrity": "sha512-zPvPA3T7P6M+0iNsgX+iAcAz4GshKrowtQBHHc/28tVsBc8jK7VRCNX+2GEcoE6zDB6XqXhcyiUWPVZY6C70Cg==", + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + } + }, "use": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", @@ -8309,6 +4730,11 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + }, "validate-npm-package-license": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", @@ -8458,6 +4884,20 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "requires": { + "sax": "1.2.4", + "xmlbuilder": "9.0.7" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", @@ -8545,6 +4985,12 @@ "dev": true } } + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true } } } diff --git a/package.json b/package.json index 679eec73a16c..bae511f23aaa 100644 --- a/package.json +++ b/package.json @@ -35,12 +35,14 @@ "@types/mocha": "^2.2.43", "@types/should": "^8.1.30", "mocha": "^3.5.3", + "npm-run-all": "^4.1.2", "should": "5.2.0", "ts-loader": "^2.3.7", + "ts-node": "^5.0.1", "tslint": "^5.7.0", "typescript": "^2.5.2", - "webpack": "^3.6.0", - "uglify-es": "^3.1.0" + "uglify-es": "^3.1.0", + "webpack": "^3.6.0" }, "homepage": "https://github.com/Azure/ms-rest-azure-js", "repository": { @@ -51,10 +53,14 @@ "url": "http://github.com/Azure/ms-rest-azure-js/issues" }, "scripts": { - "tsc": "tsc -p tsconfig.json", - "test": "npm -s run-script tslint", - "unit": "mocha -t 50000 dist/test", - "build": "npm -s run-script tsc && webpack && node node_modules/uglify-es/bin/uglifyjs --source-map -c -m -o msRestAzureBundle.min.js msRestAzureBundle.js", - "tslint": "tslint -p . -c tslint.json --exclude test/**/*.ts" + "build": "run-p build:node build:browser", + "build:node": "tsc", + "build:browser": "webpack && node node_modules/uglify-es/bin/uglifyjs --source-map -c -m -o msRestAzureBundle.min.js msRestAzureBundle.js", + "watch:node": "tsc -w", + "watch:browser": "webpack -w", + "test": "run-p test:tslint test:unit", + "test:unit": "mocha", + "test:tslint": "tslint -p . -c tslint.json --exclude test/**/*.ts", + "prepare": "npm run build" } -} +} \ No newline at end of file diff --git a/test/mocha.opts b/test/mocha.opts new file mode 100644 index 000000000000..01f156a1c8b5 --- /dev/null +++ b/test/mocha.opts @@ -0,0 +1,5 @@ +--require ts-node/register +--timeout 50000 +--reporter list +--colors +test/**/*.ts \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 1e09e397a2ea..e1ba7b4e12ea 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,23 +1,18 @@ { "compilerOptions": { - "alwaysStrict": true, "module": "commonjs", - "noImplicitAny": true, "preserveConstEnums": true, "sourceMap": true, "newLine": "LF", - "target": "es6", + "target": "es5", "moduleResolution": "node", "noImplicitReturns": true, - "noImplicitThis": true, "noUnusedLocals": true, "noUnusedParameters": true, - "outDir": "dist/lib", - "declaration": true, - "declarationDir": "typings/lib", - "allowJs": false, + "outDir": "dist", "strict": true, - "strictNullChecks": true, + "declaration": true, + "declarationDir": "./typings", "lib": [ "dom", "dom.iterable", diff --git a/typings/lib/azureServiceClient.d.ts b/typings/lib/azureServiceClient.d.ts deleted file mode 100644 index d3c23855a8b6..000000000000 --- a/typings/lib/azureServiceClient.d.ts +++ /dev/null @@ -1,84 +0,0 @@ -import * as msRest from "ms-rest-js"; -/** - * Options to be provided while creating the client. - */ -export interface AzureServiceClientOptions extends msRest.ServiceClientOptions { - /** - * @property {string} [options.acceptLanguage] - Gets or sets the preferred language for the response. Default value is: "en-US". - */ - acceptLanguage?: string; - /** - * @property {boolean} [options.generateClientRequestId] - When set to true a unique x-ms-client-request-id value - * is generated and included in each request. Default is true. - */ - generateClientRequestId?: boolean; - /** - * @property {number} [options.longRunningOperationRetryTimeout] - Gets or sets the retry timeout in seconds for - * Long Running Operations. Default value is 30. - */ - longRunningOperationRetryTimeout?: number; - /** - * @property {number} [rpRegistrationRetryTimeout] - Gets or sets the retry timeout in seconds for - * AutomaticRPRegistration. Default value is 30 seconds. - */ - rpRegistrationRetryTimeout?: number; -} -/** - * @class - * Initializes a new instance of the AzureServiceClient class. - * @constructor - * - * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or - * UserTokenCredentials object used for authentication. - * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient - */ -export declare class AzureServiceClient extends msRest.ServiceClient { - acceptLanguage: string; - generateClientRequestId: boolean; - longRunningOperationRetryTimeout: number; - rpRegistrationRetryTimeout: number; - constructor(credentials: msRest.ServiceClientCredentials, options?: AzureServiceClientOptions); - /** - * Provides a mechanism to make a request that will poll and provide the final result. - * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object - * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request - * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody. - */ - sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise; - /** - * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request. - * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation. - */ - private checkResponseStatusCodeFailed(initialResponse); - /** - * Poll Azure long running PUT, PATCH, POST or DELETE operations. - * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation. - * @param {msRest.RequestOptionsBase} [options] - custom request options. - * @returns {Promise} result - The final response after polling is complete. - */ - getLongRunningOperationResult(resultOfInitialRequest: msRest.HttpOperationResponse, options?: msRest.RequestOptionsBase): Promise; - /** - * Retrieve operation status by polling from "azure-asyncoperation" header. - * @param {PollingState} pollingState - The object to persist current operation state. - * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation. - */ - private updateStateFromAzureAsyncOperationHeader(pollingState, inPostOrDelete?); - /** - * Retrieve PUT operation status by polling from "location" header. - * @param {string} method - The HTTP method. - * @param {PollingState} pollingState - The object to persist current operation state. - */ - private updateStateFromLocationHeader(method, pollingState); - /** - * Polling for resource status. - * @param {string} resourceUrl - The url of resource. - * @param {PollingState} pollingState - The object to persist current operation state. - */ - private updateStateFromGetResourceOperation(resourceUrl, pollingState); - /** - * Retrieves operation status by querying the operation URL. - * @param {string} operationUrl - URL used to poll operation result. - * @param {object} options - Options that can be set on the request object - */ - private getStatus(operationUrl, options?); -} diff --git a/typings/lib/baseResource.d.ts b/typings/lib/baseResource.d.ts deleted file mode 100644 index 4a8f7e43b5f0..000000000000 --- a/typings/lib/baseResource.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * @class - * An empty interface. - */ -export interface BaseResource { -} -export declare const BaseResourceMapper: { - required: boolean; - serializedName: string; - type: { - name: string; - className: string; - modelProperties: {}; - }; -}; diff --git a/typings/lib/cloudError.d.ts b/typings/lib/cloudError.d.ts deleted file mode 100644 index 4c84a0b5df1e..000000000000 --- a/typings/lib/cloudError.d.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @class - * Provides additional information about an http error response returned from a Microsoft Azure service. - */ -export interface CloudError extends Error { - /** - * @property {string} code The error code parsed from the body of the http error response. - */ - code: string; - /** - * @property {string} message The error message parsed from the body of the http error response. - */ - message: string; - /** - * @property {string} [target] The target of the error. - */ - target?: string; - /** - * @property {Array} [details] An array of CloudError objects specifying the details. - */ - details?: Array; -} -export declare const CloudErrorMapper: { - required: boolean; - serializedName: string; - type: { - name: string; - className: string; - modelProperties: { - code: { - required: boolean; - serializedName: string; - type: { - name: string; - }; - }; - message: { - required: boolean; - serializedName: string; - type: { - name: string; - }; - }; - target: { - required: boolean; - serializedName: string; - type: { - name: string; - }; - }; - details: { - required: boolean; - serializedName: string; - type: { - name: string; - element: { - required: boolean; - serializedName: string; - type: { - name: string; - className: string; - }; - }; - }; - }; - }; - }; -}; diff --git a/typings/lib/credentials/cognitiveServicesCredentials.d.ts b/typings/lib/credentials/cognitiveServicesCredentials.d.ts deleted file mode 100644 index 2a3bcc0d1e2b..000000000000 --- a/typings/lib/credentials/cognitiveServicesCredentials.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { ApiKeyCredentials } from "ms-rest-js"; -/** - * Creates a new CognitiveServicesCredentials object. - * - * @constructor - * @param {string} subscriptionKey The CognitiveServices subscription key - */ -export declare class CognitiveServicesCredentials extends ApiKeyCredentials { - constructor(subscriptionKey: string); -} diff --git a/typings/lib/msRestAzure.d.ts b/typings/lib/msRestAzure.d.ts deleted file mode 100644 index 6d9e534df1e1..000000000000 --- a/typings/lib/msRestAzure.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { AzureServiceClientOptions, AzureServiceClient } from "./azureServiceClient"; -import Constants from "./util/constants"; -import { CloudError, CloudErrorMapper } from "./cloudError"; -import { BaseResource, BaseResourceMapper } from "./baseResource"; -import { CognitiveServicesCredentials } from "./credentials/cognitiveServicesCredentials"; -export { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper, CognitiveServicesCredentials }; diff --git a/typings/lib/pollingState.d.ts b/typings/lib/pollingState.d.ts deleted file mode 100644 index 7f03d988b783..000000000000 --- a/typings/lib/pollingState.d.ts +++ /dev/null @@ -1,69 +0,0 @@ -import * as msRest from "ms-rest-js"; -/** - * @class - * Initializes a new instance of the PollingState class. - */ -export default class PollingState { - /** - * @param {msRest.HttpOperationResponse} [response] - Response of the initial request that was made as a part of the asynchronous operation. - */ - resultOfInitialRequest: msRest.HttpOperationResponse; - /** - * @param {msRest.RequestOptionsBase} [optionsOfInitialRequest] - Request options that were provided as a part of the initial request. - */ - optionsOfInitialRequest: msRest.RequestOptionsBase; - /** - * @param {msRest.WebResource} [request] - provides information about the request made for polling. - */ - request: msRest.WebResource; - /** - * @param {Response} [response] - The response object to extract longrunning operation status. - */ - response: Response; - /** - * @param {any} [resource] - Provides information about the response body received in the polling request. Particularly useful when polling via provisioningState. - */ - resource: any; - /** - * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30. - */ - retryTimeout: number; - /** - * @param {string} [azureAsyncOperationHeaderLink] - The url that is present in "azure-asyncoperation" response header. - */ - azureAsyncOperationHeaderLink?: string; - /** - * @param {string} [locationHeaderLink] - The url that is present in "Location" response header. - */ - locationHeaderLink?: string; - /** - * @param {string} [status] - The status of polling. "Succeeded, Failed, Cancelled, Updating, Creating, etc." - */ - status?: string; - /** - * @param {msRest.RestError} [error] - Provides information about the error that happened while polling. - */ - error?: msRest.RestError; - constructor(resultOfInitialRequest: msRest.HttpOperationResponse, retryTimeout?: number); - /** - * Update cached data using the provided response object - * @param {Response} [response] - provider response object. - */ - updateResponse(response: Response): void; - /** - * Gets timeout in milliseconds. - * @returns {number} timeout - */ - getTimeout(): number; - /** - * Returns long running operation result. - * @returns {msRest.HttpOperationResponse} HttpOperationResponse - */ - getOperationResponse(): msRest.HttpOperationResponse; - /** - * Returns an Error on operation failure. - * @param {Error} err - The error object. - * @returns {msRest.RestError} The RestError defined in the runtime. - */ - getRestError(err?: Error): msRest.RestError; -} diff --git a/typings/lib/util/constants.d.ts b/typings/lib/util/constants.d.ts deleted file mode 100644 index 45284b610d40..000000000000 --- a/typings/lib/util/constants.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -declare const Constants: { - LongRunningOperationStates: { - InProgress: string; - Succeeded: string; - Failed: string; - Canceled: string; - }; - DEFAULT_LANGUAGE: string; - msRestAzureVersion: string; -}; -export default Constants; From 93ce7dbc7245f7027a2de781de010ac557389f16 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Tue, 10 Apr 2018 15:59:50 -0700 Subject: [PATCH 019/289] Add placeholder test --- package.json | 2 +- test/placeholder.ts | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 test/placeholder.ts diff --git a/package.json b/package.json index bae511f23aaa..e82a514e9ad8 100644 --- a/package.json +++ b/package.json @@ -63,4 +63,4 @@ "test:tslint": "tslint -p . -c tslint.json --exclude test/**/*.ts", "prepare": "npm run build" } -} \ No newline at end of file +} diff --git a/test/placeholder.ts b/test/placeholder.ts new file mode 100644 index 000000000000..8407a21cd92e --- /dev/null +++ b/test/placeholder.ts @@ -0,0 +1,7 @@ +import * as assert from 'assert'; + +describe('ms-rest-azure-js', function() { + it("doesn't have any tests", function() { + assert.fail('Please add some tests'); + }); +}); From 8deed500567d012d9dfa80f356261c284b7f5204 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Tue, 8 May 2018 13:23:20 -0700 Subject: [PATCH 020/289] Change ms-rest-js to be a GitHub reference --- package-lock.json | 2438 +++++++++++++++++++-------------------------- package.json | 2 +- 2 files changed, 1047 insertions(+), 1393 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7d4d3b66f32f..bbc3494e305e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", "requires": { - "@types/node": "9.6.4" + "@types/node": "*" } }, "@types/is-stream": { @@ -17,7 +17,7 @@ "resolved": "https://registry.npmjs.org/@types/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==", "requires": { - "@types/node": "9.6.4" + "@types/node": "*" } }, "@types/mocha": { @@ -27,16 +27,16 @@ "dev": true }, "@types/node": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.4.tgz", - "integrity": "sha512-Awg4BcUYiZtNKoveGOu654JVPt11V/KIC77iBz8NweyoOAZpz5rUJfPDwwD+ajfTs2HndbTCEB8IuLfX9m/mmw==" + "version": "9.6.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.13.tgz", + "integrity": "sha512-rAlzcc9b66uY+pwvBCjhl9/Nm/mr3rt1/pfHVHDMd0Bfg4olE0UlvaEZh+TM/uwzEFYVnLbDZHG9mVjZrHdv8g==" }, "@types/node-fetch": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-1.6.8.tgz", - "integrity": "sha512-O8DUwXf7KUBu036HAbF5RKRaA1vvE0BsaPfAnC9YD7Xy4eNoJmNIdEjBIEEHAVszozRgH4m9JnVCsueSKiKXMA==", + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-1.6.9.tgz", + "integrity": "sha512-n2r6WLoY7+uuPT7pnEtKJCmPUGyJ+cbyBR8Avnu4+m1nzz7DwBVuyIvvlBzCZ/nrpC7rIgb3D6pNavL7rFEa9g==", "requires": { - "@types/node": "9.6.4" + "@types/node": "*" } }, "@types/should": { @@ -50,7 +50,15 @@ "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.3.tgz", "integrity": "sha512-5fRLCYhLtDb3hMWqQyH10qtF+Ud2JnNCXTCZ+9ktNdCcgslcuXkDTkFcJNk++MT29yDntDnlF1+jD+uVGumsbw==", "requires": { - "@types/node": "9.6.4" + "@types/node": "*" + } + }, + "@types/xml2js": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.2.tgz", + "integrity": "sha512-8aKUBSj3oGcnuiBmDLm3BIk09RYg01mz9HlQ2u4aS17oJ25DxjQrEUVGFSBVNOfM45pQW4OjcBPplq6r/exJdA==", + "requires": { + "@types/node": "*" } }, "acorn": { @@ -65,7 +73,7 @@ "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", "dev": true, "requires": { - "acorn": "4.0.13" + "acorn": "^4.0.3" }, "dependencies": { "acorn": { @@ -82,16 +90,16 @@ "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", "dev": true, "requires": { - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1", - "uri-js": "3.0.2" + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0", + "uri-js": "^3.0.2" } }, "ajv-keywords": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz", - "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", "dev": true }, "align-text": { @@ -100,9 +108,9 @@ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } }, "ansi-regex": { @@ -117,7 +125,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" } }, "anymatch": { @@ -126,8 +134,8 @@ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "micromatch": "3.1.10", - "normalize-path": "2.1.1" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" } }, "argparse": { @@ -136,7 +144,7 @@ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "arr-diff": { @@ -193,9 +201,9 @@ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "dev": true, "requires": { - "bn.js": "4.11.8", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "assert": { @@ -219,7 +227,7 @@ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.14.0" } }, "async-each": { @@ -234,9 +242,9 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "atob": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.0.tgz", - "integrity": "sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", "dev": true }, "babel-code-frame": { @@ -245,9 +253,9 @@ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" }, "dependencies": { "ansi-styles": { @@ -262,11 +270,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "supports-color": { @@ -289,13 +297,13 @@ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { "define-property": { @@ -304,7 +312,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { @@ -313,7 +321,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -322,7 +330,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -331,9 +339,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "kind-of": { @@ -345,9 +353,9 @@ } }, "base64-js": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", - "integrity": "sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", "dev": true }, "big.js": { @@ -374,7 +382,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -384,16 +392,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { "extend-shallow": { @@ -402,7 +410,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -425,34 +433,34 @@ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "browserify-cipher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", - "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dev": true, "requires": { - "browserify-aes": "1.2.0", - "browserify-des": "1.0.0", - "evp_bytestokey": "1.0.3" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, "browserify-des": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", - "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", + "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", "dev": true, "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.0", - "inherits": "2.0.3" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1" } }, "browserify-rsa": { @@ -461,8 +469,8 @@ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { - "bn.js": "4.11.8", - "randombytes": "2.0.6" + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" } }, "browserify-sign": { @@ -471,13 +479,13 @@ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "dev": true, "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "elliptic": "6.4.0", - "inherits": "2.0.3", - "parse-asn1": "5.1.0" + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" } }, "browserify-zlib": { @@ -486,7 +494,7 @@ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dev": true, "requires": { - "pako": "1.0.6" + "pako": "~1.0.5" } }, "buffer": { @@ -495,11 +503,17 @@ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { - "base64-js": "1.2.3", - "ieee754": "1.1.11", - "isarray": "1.0.0" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "dev": true + }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", @@ -524,15 +538,15 @@ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" } }, "camelcase": { @@ -547,19 +561,19 @@ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, "chalk": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.3.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "dependencies": { "has-flag": { @@ -569,12 +583,12 @@ "dev": true }, "supports-color": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } @@ -585,18 +599,18 @@ "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", "dev": true, "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.2", - "fsevents": "1.1.3", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.0", - "normalize-path": "2.1.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0", - "upath": "1.0.4" + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.1.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.0" } }, "cipher-base": { @@ -605,8 +619,8 @@ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "class-utils": { @@ -615,10 +629,10 @@ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { "define-property": { @@ -627,7 +641,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -638,8 +652,8 @@ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" } }, @@ -655,8 +669,8 @@ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, "color-convert": { @@ -665,7 +679,7 @@ "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" } }, "color-name": { @@ -679,7 +693,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -688,7 +702,7 @@ "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" } }, "component-emitter": { @@ -709,7 +723,7 @@ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "dev": true, "requires": { - "date-now": "0.1.4" + "date-now": "^0.1.4" } }, "constants-browserify": { @@ -731,50 +745,53 @@ "dev": true }, "create-ecdh": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", - "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "dev": true, "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.0" + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" } }, "create-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", - "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "sha.js": "2.4.11" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, "create-hmac": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", - "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.11" + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "lru-cache": "4.1.2", - "shebang-command": "1.2.0", - "which": "1.3.0" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "crypto-browserify": { @@ -783,17 +800,17 @@ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { - "browserify-cipher": "1.0.0", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.0", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "diffie-hellman": "5.0.2", - "inherits": "2.0.3", - "pbkdf2": "3.0.14", - "public-encrypt": "4.0.0", - "randombytes": "2.0.6", - "randomfill": "1.0.4" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" } }, "d": { @@ -802,7 +819,7 @@ "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "es5-ext": "0.10.42" + "es5-ext": "^0.10.9" } }, "date-now": { @@ -838,8 +855,8 @@ "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", "dev": true, "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" + "foreach": "^2.0.5", + "object-keys": "^1.0.8" } }, "define-property": { @@ -848,8 +865,8 @@ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { "is-accessor-descriptor": { @@ -858,7 +875,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -867,7 +884,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -876,9 +893,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "kind-of": { @@ -900,8 +917,8 @@ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", "dev": true, "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "diff": { @@ -911,14 +928,14 @@ "dev": true }, "diffie-hellman": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", - "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.1", - "randombytes": "2.0.6" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" } }, "domain-browser": { @@ -939,13 +956,13 @@ "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", "dev": true, "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.3", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" } }, "emojis-list": { @@ -959,7 +976,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.21" + "iconv-lite": "~0.4.13" } }, "enhanced-resolve": { @@ -968,10 +985,10 @@ "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "object-assign": "4.1.1", - "tapable": "0.2.8" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "object-assign": "^4.0.1", + "tapable": "^0.2.7" } }, "errno": { @@ -980,7 +997,7 @@ "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "dev": true, "requires": { - "prr": "1.0.1" + "prr": "~1.0.1" } }, "error-ex": { @@ -989,7 +1006,7 @@ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "es-abstract": { @@ -998,11 +1015,11 @@ "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", "dev": true, "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.1", - "has": "1.0.1", - "is-callable": "1.1.3", - "is-regex": "1.0.4" + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" } }, "es-to-primitive": { @@ -1011,9 +1028,9 @@ "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", "dev": true, "requires": { - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-symbol": "1.0.1" + "is-callable": "^1.1.1", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.1" } }, "es5-ext": { @@ -1022,9 +1039,9 @@ "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", "dev": true, "requires": { - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1", - "next-tick": "1.0.0" + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" } }, "es6-denodeify": { @@ -1038,9 +1055,9 @@ "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-symbol": "3.1.1" + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" } }, "es6-map": { @@ -1049,12 +1066,12 @@ "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-iterator": "2.0.3", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" } }, "es6-set": { @@ -1063,11 +1080,11 @@ "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-iterator": "2.0.3", + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" + "event-emitter": "~0.3.5" } }, "es6-symbol": { @@ -1076,8 +1093,8 @@ "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42" + "d": "1", + "es5-ext": "~0.10.14" } }, "es6-weak-map": { @@ -1086,10 +1103,10 @@ "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" + "d": "1", + "es5-ext": "^0.10.14", + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" } }, "escape-string-regexp": { @@ -1104,10 +1121,10 @@ "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", "dev": true, "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.2.1", - "estraverse": "4.2.0" + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, "esprima": { @@ -1122,7 +1139,7 @@ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.1.0" } }, "estraverse": { @@ -1143,8 +1160,8 @@ "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42" + "d": "1", + "es5-ext": "~0.10.14" } }, "event-stream": { @@ -1153,13 +1170,13 @@ "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "dev": true, "requires": { - "duplexer": "0.1.1", - "from": "0.1.7", - "map-stream": "0.1.0", + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", "pause-stream": "0.0.11", - "split": "0.3.3", - "stream-combiner": "0.0.4", - "through": "2.3.8" + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" } }, "events": { @@ -1174,8 +1191,8 @@ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, "requires": { - "md5.js": "1.3.4", - "safe-buffer": "5.1.1" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, "execa": { @@ -1184,13 +1201,26 @@ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } } }, "expand-brackets": { @@ -1199,13 +1229,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "debug": "2.6.8", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -1214,7 +1244,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -1223,7 +1253,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -1234,8 +1264,8 @@ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -1244,7 +1274,7 @@ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -1255,14 +1285,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -1271,7 +1301,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -1280,7 +1310,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -1289,7 +1319,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -1298,7 +1328,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -1307,9 +1337,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "kind-of": { @@ -1337,15 +1367,16 @@ "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.7.0.tgz", "integrity": "sha512-Mm5pGlT3agW6t71xVM7vMZPIvI7T4FaTuFW4jari6dVzYHFDb3WZZsGpN22r/o3XMdkM0E7sPd1EGeyVbH2Tgg==", "requires": { - "es6-denodeify": "0.1.5", - "tough-cookie": "2.3.4" + "es6-denodeify": "^0.1.1", + "tough-cookie": "^2.3.1" } }, "fetch-ponyfill": { "version": "github:amarzavery/fetch-ponyfill#136e6f8192bdb2aa0b7983f0b3b4361c357be9db", + "from": "github:amarzavery/fetch-ponyfill#master", "requires": { - "fetch-cookie": "0.6.0", - "node-fetch": "1.7.3" + "fetch-cookie": "~0.6.0", + "node-fetch": "~1.7.1" }, "dependencies": { "fetch-cookie": { @@ -1353,8 +1384,8 @@ "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.6.0.tgz", "integrity": "sha1-T+xOQIzAAH9sBOVTYYr0s97jf2k=", "requires": { - "es6-denodeify": "0.1.5", - "tough-cookie": "2.3.4" + "es6-denodeify": "^0.1.1", + "tough-cookie": "^2.3.1" } } } @@ -1365,10 +1396,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -1377,7 +1408,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -1388,7 +1419,7 @@ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "for-in": { @@ -1408,9 +1439,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "asynckit": "0.4.0", + "asynckit": "^0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "mime-types": "^2.1.12" } }, "fragment-cache": { @@ -1419,7 +1450,7 @@ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { - "map-cache": "0.2.2" + "map-cache": "^0.2.2" } }, "from": { @@ -1435,39 +1466,29 @@ "dev": true }, "fsevents": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", - "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.3.tgz", + "integrity": "sha512-X+57O5YkDTiEQGiw8i7wYc2nQgweIekqkepI8Q3y4wVlurgBt2SuwxTeYUYMZIGpLZH3r/TsMjczCMXE5ZOt7Q==", "dev": true, "optional": true, "requires": { - "nan": "2.10.0", - "node-pre-gyp": "0.6.39" + "nan": "^2.9.2", + "node-pre-gyp": "^0.9.0" }, "dependencies": { "abbrev": { - "version": "1.1.0", + "version": "1.1.1", "bundled": true, "dev": true, "optional": true }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, "ansi-regex": { "version": "2.1.1", "bundled": true, "dev": true }, "aproba": { - "version": "1.1.1", + "version": "1.2.0", "bundled": true, "dev": true, "optional": true @@ -1478,92 +1499,26 @@ "dev": true, "optional": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "optional": true - }, "balanced-match": { - "version": "0.4.2", + "version": "1.0.0", "bundled": true, "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, "brace-expansion": { - "version": "1.1.7", + "version": "1.1.11", "bundled": true, "dev": true, "requires": { - "balanced-match": "0.4.2", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true - }, - "co": { - "version": "4.6.0", + "chownr": { + "version": "1.0.1", "bundled": true, "dev": true, "optional": true @@ -1573,14 +1528,6 @@ "bundled": true, "dev": true }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, "concat-map": { "version": "0.0.1", "bundled": true, @@ -1594,35 +1541,11 @@ "core-util-is": { "version": "1.0.2", "bundled": true, - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "dev": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } + "optional": true }, "debug": { - "version": "2.6.8", + "version": "2.6.9", "bundled": true, "dev": true, "optional": true, @@ -1636,11 +1559,6 @@ "dev": true, "optional": true }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, "delegates": { "version": "1.0.0", "bundled": true, @@ -1648,74 +1566,25 @@ "optional": true }, "detect-libc": { - "version": "1.0.2", + "version": "1.0.3", "bundled": true, "dev": true, "optional": true }, - "ecc-jsbn": { - "version": "0.1.1", + "fs-minipass": { + "version": "1.2.5", "bundled": true, "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" + "minipass": "^2.2.1" } }, "fs.realpath": { "version": "1.0.0", "bundled": true, - "dev": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } + "optional": true }, "gauge": { "version": "2.7.4", @@ -1723,65 +1592,28 @@ "dev": true, "optional": true, "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, "glob": { "version": "7.1.2", "bundled": true, "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "dev": true, "optional": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "has-unicode": { @@ -1790,40 +1622,32 @@ "dev": true, "optional": true }, - "hawk": { - "version": "3.1.3", + "iconv-lite": { + "version": "0.4.21", "bundled": true, "dev": true, + "optional": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "safer-buffer": "^2.1.0" } }, - "hoek": { - "version": "2.16.3", - "bundled": true, - "dev": true - }, - "http-signature": { - "version": "1.1.1", + "ignore-walk": { + "version": "3.0.1", "bundled": true, "dev": true, "optional": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" + "minimatch": "^3.0.4" } }, "inflight": { "version": "1.0.6", "bundled": true, "dev": true, + "optional": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -1832,7 +1656,7 @@ "dev": true }, "ini": { - "version": "1.3.4", + "version": "1.3.5", "bundled": true, "dev": true, "optional": true @@ -1842,167 +1666,125 @@ "bundled": true, "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, "isarray": { "version": "1.0.0", "bundled": true, - "dev": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, "dev": true, "optional": true }, - "jodid25519": { - "version": "1.0.2", + "minimatch": { + "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { - "jsbn": "0.1.1" + "brace-expansion": "^1.1.7" } }, - "jsbn": { - "version": "0.1.1", + "minimist": { + "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, - "json-schema": { - "version": "0.2.3", + "minipass": { + "version": "2.2.4", "bundled": true, "dev": true, - "optional": true + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } }, - "json-stable-stringify": { - "version": "1.0.1", + "minizlib": { + "version": "1.1.0", "bundled": true, "dev": true, "optional": true, "requires": { - "jsonify": "0.0.0" + "minipass": "^2.2.1" } }, - "json-stringify-safe": { - "version": "5.0.1", + "mkdirp": { + "version": "0.5.1", "bundled": true, "dev": true, - "optional": true + "requires": { + "minimist": "0.0.8" + } }, - "jsonify": { - "version": "0.0.0", + "ms": { + "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, - "jsprim": { - "version": "1.4.0", + "needle": { + "version": "2.2.0", "bundled": true, "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", - "bundled": true, - "dev": true - }, - "mime-types": { - "version": "2.1.15", - "bundled": true, - "dev": true, - "requires": { - "mime-db": "1.27.0" + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" } }, - "minimatch": { - "version": "3.0.4", + "node-pre-gyp": { + "version": "0.9.1", "bundled": true, "dev": true, + "optional": true, "requires": { - "brace-expansion": "1.1.7" + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" } }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mkdirp": { - "version": "0.5.1", + "nopt": { + "version": "4.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { - "minimist": "0.0.8" + "abbrev": "1", + "osenv": "^0.1.4" } }, - "ms": { - "version": "2.0.0", + "npm-bundled": { + "version": "1.0.3", "bundled": true, "dev": true, "optional": true }, - "node-pre-gyp": { - "version": "0.6.39", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "1.0.2", - "hawk": "3.1.3", - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, - "nopt": { - "version": "4.0.1", + "npm-packlist": { + "version": "1.1.10", "bundled": true, "dev": true, "optional": true, "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" } }, "npmlog": { - "version": "4.1.0", + "version": "4.1.2", "bundled": true, "dev": true, "optional": true, "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "number-is-nan": { @@ -2010,12 +1792,6 @@ "bundled": true, "dev": true }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "optional": true - }, "object-assign": { "version": "4.1.1", "bundled": true, @@ -2027,7 +1803,7 @@ "bundled": true, "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os-homedir": { @@ -2043,53 +1819,37 @@ "optional": true }, "osenv": { - "version": "0.1.4", + "version": "0.1.5", "bundled": true, "dev": true, "optional": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "path-is-absolute": { "version": "1.0.1", "bundled": true, - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, "dev": true, "optional": true }, "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "dev": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", + "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, "rc": { - "version": "1.2.1", + "version": "1.2.6", "bundled": true, "dev": true, "optional": true, "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { @@ -2101,143 +1861,89 @@ } }, "readable-stream": { - "version": "2.2.9", - "bundled": true, - "dev": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.81.0", + "version": "2.3.6", "bundled": true, "dev": true, "optional": true, "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "rimraf": { - "version": "2.6.1", + "version": "2.6.2", "bundled": true, "dev": true, + "optional": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { - "version": "5.0.1", + "version": "5.1.1", "bundled": true, "dev": true }, - "semver": { - "version": "5.3.0", + "safer-buffer": { + "version": "2.1.2", "bundled": true, "dev": true, "optional": true }, - "set-blocking": { - "version": "2.0.0", + "sax": { + "version": "1.2.4", "bundled": true, "dev": true, "optional": true }, - "signal-exit": { - "version": "3.0.2", + "semver": { + "version": "5.5.0", "bundled": true, "dev": true, "optional": true }, - "sntp": { - "version": "1.0.9", + "set-blocking": { + "version": "2.0.0", "bundled": true, "dev": true, - "requires": { - "hoek": "2.16.3" - } + "optional": true }, - "sshpk": { - "version": "1.13.0", + "signal-exit": { + "version": "3.0.2", "bundled": true, "dev": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } + "optional": true }, "string-width": { "version": "1.0.2", "bundled": true, "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string_decoder": { - "version": "1.0.1", + "version": "1.1.1", "bundled": true, "dev": true, + "optional": true, "requires": { - "safe-buffer": "5.0.1" + "safe-buffer": "~5.1.0" } }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "dev": true, - "optional": true - }, "strip-ansi": { "version": "3.0.1", "bundled": true, "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-json-comments": { @@ -2247,94 +1953,44 @@ "optional": true }, "tar": { - "version": "2.2.1", - "bundled": true, - "dev": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", + "version": "4.4.1", "bundled": true, "dev": true, "optional": true, "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" } }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "dev": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "dev": true, - "optional": true - }, "util-deprecate": { "version": "1.0.2", "bundled": true, - "dev": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, "dev": true, "optional": true }, - "verror": { - "version": "1.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, "wide-align": { "version": "1.1.2", "bundled": true, "dev": true, "optional": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" } }, "wrappy": { "version": "1.0.2", "bundled": true, "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true } } }, @@ -2368,12 +2024,12 @@ "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-parent": { @@ -2382,8 +2038,8 @@ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" }, "dependencies": { "is-glob": { @@ -2392,7 +2048,7 @@ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.0" } } } @@ -2421,7 +2077,7 @@ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", "dev": true, "requires": { - "function-bind": "1.1.1" + "function-bind": "^1.0.2" } }, "has-ansi": { @@ -2430,7 +2086,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -2445,9 +2101,9 @@ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" } }, "has-values": { @@ -2456,8 +2112,8 @@ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "is-buffer": { @@ -2472,18 +2128,19 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } }, "hash-base": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", - "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "hash.js": { @@ -2492,8 +2149,8 @@ "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", "dev": true, "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" } }, "he": { @@ -2508,9 +2165,9 @@ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "dev": true, "requires": { - "hash.js": "1.1.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, "hosted-git-info": { @@ -2526,11 +2183,11 @@ "dev": true }, "iconv-lite": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", - "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": ">= 2.1.2 < 3" } }, "ieee754": { @@ -2551,8 +2208,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -2579,7 +2236,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-arrayish": { @@ -2594,7 +2251,7 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.11.0" + "binary-extensions": "^1.0.0" } }, "is-buffer": { @@ -2608,7 +2265,7 @@ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-callable": { @@ -2623,7 +2280,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-date-object": { @@ -2638,9 +2295,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { "kind-of": { @@ -2669,7 +2326,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-glob": { @@ -2678,7 +2335,7 @@ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.1" } }, "is-number": { @@ -2687,7 +2344,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-odd": { @@ -2696,7 +2353,7 @@ "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", "dev": true, "requires": { - "is-number": "4.0.0" + "is-number": "^4.0.0" }, "dependencies": { "is-number": { @@ -2713,7 +2370,7 @@ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" } }, "is-regex": { @@ -2722,7 +2379,7 @@ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "dev": true, "requires": { - "has": "1.0.1" + "has": "^1.0.1" } }, "is-stream": { @@ -2760,6 +2417,15 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "isomorphic-xml2js": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/isomorphic-xml2js/-/isomorphic-xml2js-0.0.3.tgz", + "integrity": "sha512-t86X20d5kcxKHD6iTItHpyXIG9qWAlGLnk4sejrqCyP64L7peSmHE9Xxcpg5WVOY4H2J+TBWuJ7vMlgc/Kov9Q==", + "requires": { + "@types/xml2js": "^0.4.2", + "xml2js": "^0.4.19" + } + }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", @@ -2772,8 +2438,8 @@ "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", "dev": true, "requires": { - "argparse": "1.0.10", - "esprima": "4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "json-loader": { @@ -2818,7 +2484,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" }, "dependencies": { "is-buffer": { @@ -2841,19 +2507,19 @@ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" } }, "loader-runner": { @@ -2868,9 +2534,9 @@ "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", "dev": true, "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" } }, "locate-path": { @@ -2879,14 +2545,14 @@ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true }, "lodash._baseassign": { @@ -2895,8 +2561,8 @@ "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", "dev": true, "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" } }, "lodash._basecopy": { @@ -2929,9 +2595,9 @@ "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", "dev": true, "requires": { - "lodash._baseassign": "3.2.0", - "lodash._basecreate": "3.0.3", - "lodash._isiterateecall": "3.0.9" + "lodash._baseassign": "^3.0.0", + "lodash._basecreate": "^3.0.0", + "lodash._isiterateecall": "^3.0.0" } }, "lodash.isarguments": { @@ -2952,9 +2618,9 @@ "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", "dev": true, "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" } }, "longest": { @@ -2964,13 +2630,13 @@ "dev": true }, "lru-cache": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", - "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "make-error": { @@ -2997,7 +2663,7 @@ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { - "object-visit": "1.0.1" + "object-visit": "^1.0.0" } }, "md5.js": { @@ -3006,20 +2672,8 @@ "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", "dev": true, "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" - }, - "dependencies": { - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - } + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, "mem": { @@ -3028,7 +2682,7 @@ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "memory-fs": { @@ -3037,8 +2691,8 @@ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, "requires": { - "errno": "0.1.7", - "readable-stream": "2.3.6" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" } }, "memorystream": { @@ -3053,19 +2707,19 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" }, "dependencies": { "kind-of": { @@ -3082,8 +2736,8 @@ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" } }, "mime-db": { @@ -3096,7 +2750,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "1.33.0" + "mime-db": "~1.33.0" } }, "mimic-fn": { @@ -3106,9 +2760,9 @@ "dev": true }, "minimalistic-assert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, "minimalistic-crypto-utils": { @@ -3123,7 +2777,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -3138,8 +2792,8 @@ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -3148,7 +2802,7 @@ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -3182,11 +2836,6 @@ "supports-color": "3.1.2" } }, - "moment": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.0.tgz", - "integrity": "sha512-1muXCh8jb1N/gHRbn9VDUBr0GYb8A/aVcHlII9QSB68a50spqEVLIGN6KVmCOnSvJrUhC0edGgKU5ofnGXdYdg==" - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -3194,24 +2843,22 @@ "dev": true }, "ms-rest-js": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.3.1.tgz", - "integrity": "sha512-9ULpc9mIwxJ3ia5cH5e3bhcdqByhWH6GJEKEWkJArsahj4+CfMaE8Pdz6F7fHFyKsHbvYThu61kwIbYE6xqIbQ==", - "requires": { - "@types/form-data": "2.2.1", - "@types/is-stream": "1.1.0", - "@types/node": "9.6.4", - "@types/node-fetch": "1.6.8", - "@types/uuid": "3.4.3", - "fetch-cookie": "0.7.0", + "version": "github:Azure/ms-rest-js#64e0b016a38b315e04a8d04b4c3959fcfe5027d5", + "from": "github:Azure/ms-rest-js", + "requires": { + "@types/form-data": "^2.2.1", + "@types/is-stream": "^1.1.0", + "@types/node": "^9.4.6", + "@types/node-fetch": "^1.6.7", + "@types/uuid": "^3.4.3", + "fetch-cookie": "^0.7.0", "fetch-ponyfill": "github:amarzavery/fetch-ponyfill#136e6f8192bdb2aa0b7983f0b3b4361c357be9db", - "form-data": "2.3.2", - "is-buffer": "2.0.2", - "is-stream": "1.1.0", - "moment": "2.22.0", - "url-parse": "1.3.0", - "uuid": "3.2.1", - "xml2js": "0.4.19" + "form-data": "^2.3.2", + "is-buffer": "^2.0.0", + "is-stream": "^1.1.0", + "isomorphic-xml2js": "^0.0.3", + "url-parse": "^1.2.0", + "uuid": "^3.2.1" } }, "nan": { @@ -3227,18 +2874,18 @@ "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-odd": "2.0.0", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "kind-of": { @@ -3250,9 +2897,9 @@ } }, "neo-async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.0.tgz", - "integrity": "sha512-nJmSswG4As/MkRq7QZFuH/sf/yuv8ODdMZrY4Bedjp77a5MK4A6s7YbBB64c9u79EBUOfXUXBvArmvzTD0X+6g==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", + "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==", "dev": true }, "next-tick": { @@ -3261,13 +2908,19 @@ "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, + "nice-try": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", + "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", + "dev": true + }, "node-fetch": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" + "encoding": "^0.1.11", + "is-stream": "^1.0.1" } }, "node-libs-browser": { @@ -3276,28 +2929,28 @@ "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", "dev": true, "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.2.0", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.12.0", - "domain-browser": "1.2.0", - "events": "1.1.1", - "https-browserify": "1.0.0", - "os-browserify": "0.3.0", + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^1.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.6", - "stream-browserify": "2.0.1", - "stream-http": "2.8.1", - "string_decoder": "1.1.1", - "timers-browserify": "2.0.6", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", + "url": "^0.11.0", + "util": "^0.10.3", "vm-browserify": "0.0.4" } }, @@ -3307,10 +2960,10 @@ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { - "hosted-git-info": "2.6.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "normalize-path": { @@ -3319,74 +2972,24 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "npm-run-all": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.2.tgz", - "integrity": "sha512-Z2aRlajMK4SQ8u19ZA75NZZu7wupfCNQWdYosIi8S6FgBdGf/8Y6Hgyjdc8zU2cYmIRVCx1nM80tJPkdEd+UYg==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "chalk": "2.3.2", - "cross-spawn": "5.1.0", - "memorystream": "0.3.1", - "minimatch": "3.0.4", - "ps-tree": "1.1.0", - "read-pkg": "3.0.0", - "shell-quote": "1.6.1", - "string.prototype.padend": "3.0.0" - }, - "dependencies": { - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "4.0.0", - "pify": "3.0.0", - "strip-bom": "3.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.2" - } - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "4.0.0", - "normalize-package-data": "2.4.0", - "path-type": "3.0.0" - } - } + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.3.tgz", + "integrity": "sha512-aOG0N3Eo/WW+q6sUIdzcV2COS8VnTZCmdji0VQIAZF3b+a3YWb0AD0vFIyjKec18A7beLGbaQ5jFTNI2bPt9Cg==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.4", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "ps-tree": "^1.1.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" } }, "npm-run-path": { @@ -3395,7 +2998,7 @@ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } }, "number-is-nan": { @@ -3416,9 +3019,9 @@ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "dependencies": { "define-property": { @@ -3427,7 +3030,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -3444,7 +3047,7 @@ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.0" } }, "object.pick": { @@ -3453,7 +3056,7 @@ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" } }, "once": { @@ -3462,7 +3065,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os-browserify": { @@ -3477,9 +3080,9 @@ "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, "p-finally": { @@ -3494,7 +3097,7 @@ "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", "dev": true, "requires": { - "p-try": "1.0.0" + "p-try": "^1.0.0" } }, "p-locate": { @@ -3503,7 +3106,7 @@ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "1.2.0" + "p-limit": "^1.1.0" } }, "p-try": { @@ -3519,25 +3122,26 @@ "dev": true }, "parse-asn1": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", - "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", "dev": true, "requires": { - "asn1.js": "4.10.1", - "browserify-aes": "1.2.0", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.14" + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" } }, "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, "pascalcase": { @@ -3583,12 +3187,12 @@ "dev": true }, "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "pify": "2.3.0" + "pify": "^3.0.0" } }, "pause-stream": { @@ -3597,26 +3201,26 @@ "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "dev": true, "requires": { - "through": "2.3.8" + "through": "~2.3" } }, "pbkdf2": { - "version": "3.0.14", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", - "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", + "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", "dev": true, "requires": { - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.11" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, "posix-character-classes": { @@ -3649,7 +3253,7 @@ "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", "dev": true, "requires": { - "event-stream": "3.3.4" + "event-stream": "~3.3.0" } }, "pseudomap": { @@ -3659,16 +3263,16 @@ "dev": true }, "public-encrypt": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", - "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", + "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", "dev": true, "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "parse-asn1": "5.1.0", - "randombytes": "2.0.6" + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" } }, "punycode": { @@ -3689,9 +3293,9 @@ "dev": true }, "querystringify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", - "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", + "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==" }, "randombytes": { "version": "2.0.6", @@ -3699,7 +3303,7 @@ "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.1.0" } }, "randomfill": { @@ -3708,19 +3312,19 @@ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dev": true, "requires": { - "randombytes": "2.0.6", - "safe-buffer": "5.1.1" + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" } }, "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" } }, "read-pkg-up": { @@ -3729,8 +3333,57 @@ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + } } }, "readable-stream": { @@ -3739,13 +3392,13 @@ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "readdirp": { @@ -3754,10 +3407,10 @@ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.6", - "set-immediate-shim": "1.0.1" + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" } }, "regex-not": { @@ -3766,8 +3419,8 @@ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" } }, "remove-trailing-separator": { @@ -3806,12 +3459,12 @@ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, "resolve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.0.tgz", - "integrity": "sha512-QdgZ5bjR1WAlpLaO5yHepFvC+o3rCr6wpfE2tpJNMkXdulf2jKomQBdNRQITF3ZKHNlT71syG98yQP03gasgnA==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", "dev": true, "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } }, "resolve-url": { @@ -3832,23 +3485,23 @@ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "ripemd160": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", - "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, "requires": { - "hash-base": "2.0.2", - "inherits": "2.0.3" + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, "safe-regex": { @@ -3857,7 +3510,7 @@ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { - "ret": "0.1.15" + "ret": "~0.1.10" } }, "safer-buffer": { @@ -3894,10 +3547,10 @@ "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" }, "dependencies": { "extend-shallow": { @@ -3906,7 +3559,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -3923,8 +3576,8 @@ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "shebang-command": { @@ -3933,7 +3586,7 @@ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -3948,10 +3601,10 @@ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", "dev": true, "requires": { - "array-filter": "0.0.1", - "array-map": "0.0.0", - "array-reduce": "0.0.0", - "jsonify": "0.0.0" + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" } }, "should": { @@ -4001,14 +3654,14 @@ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, "requires": { - "base": "0.11.2", - "debug": "2.6.8", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.1", - "use": "3.1.0" + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" }, "dependencies": { "define-property": { @@ -4017,7 +3670,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -4026,7 +3679,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "source-map": { @@ -4043,9 +3696,9 @@ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" }, "dependencies": { "define-property": { @@ -4054,7 +3707,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { @@ -4063,7 +3716,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -4072,7 +3725,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -4081,9 +3734,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "kind-of": { @@ -4100,7 +3753,7 @@ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.2.0" } }, "source-list-map": { @@ -4121,20 +3774,21 @@ "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", "dev": true, "requires": { - "atob": "2.1.0", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" + "atob": "^2.0.0", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" } }, "source-map-support": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", - "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz", + "integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==", "dev": true, "requires": { - "source-map": "0.6.1" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, "source-map-url": { @@ -4149,8 +3803,8 @@ "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "dev": true, "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { @@ -4165,8 +3819,8 @@ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { @@ -4181,7 +3835,7 @@ "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", "dev": true, "requires": { - "through": "2.3.8" + "through": "2" } }, "split-string": { @@ -4190,7 +3844,7 @@ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { - "extend-shallow": "3.0.2" + "extend-shallow": "^3.0.0" } }, "sprintf-js": { @@ -4205,8 +3859,8 @@ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" + "define-property": "^0.2.5", + "object-copy": "^0.1.0" }, "dependencies": { "define-property": { @@ -4215,7 +3869,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -4226,8 +3880,8 @@ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" } }, "stream-combiner": { @@ -4236,7 +3890,7 @@ "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", "dev": true, "requires": { - "duplexer": "0.1.1" + "duplexer": "~0.1.1" } }, "stream-http": { @@ -4245,11 +3899,11 @@ "integrity": "sha512-cQ0jo17BLca2r0GfRdZKYAGLU6JRoIWxqSOakUMuKOT6MOK7AAlE856L33QuDmAy/eeOrhLee3dZKX0Uadu93A==", "dev": true, "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.3", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" } }, "string-width": { @@ -4258,8 +3912,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "dependencies": { "ansi-regex": { @@ -4280,7 +3934,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -4291,9 +3945,9 @@ "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", "dev": true, "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.11.0", - "function-bind": "1.1.1" + "define-properties": "^1.1.2", + "es-abstract": "^1.4.3", + "function-bind": "^1.0.2" } }, "string_decoder": { @@ -4302,7 +3956,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "strip-ansi": { @@ -4311,7 +3965,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -4332,7 +3986,7 @@ "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } }, "tapable": { @@ -4348,12 +4002,12 @@ "dev": true }, "timers-browserify": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", - "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", "dev": true, "requires": { - "setimmediate": "1.0.5" + "setimmediate": "^1.0.4" } }, "to-arraybuffer": { @@ -4368,7 +4022,7 @@ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "to-regex": { @@ -4377,10 +4031,10 @@ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" } }, "to-regex-range": { @@ -4389,8 +4043,8 @@ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" } }, "tough-cookie": { @@ -4398,7 +4052,7 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "ts-loader": { @@ -4407,10 +4061,10 @@ "integrity": "sha512-8t3bu2FcEkXb+D4L+Cn8qiK2E2C6Ms4/GQChvz6IMbVurcFHLXrhW4EMtfaol1a1ASQACZGDUGit4NHnX9g7hQ==", "dev": true, "requires": { - "chalk": "2.3.2", - "enhanced-resolve": "3.4.1", - "loader-utils": "1.1.0", - "semver": "5.5.0" + "chalk": "^2.0.1", + "enhanced-resolve": "^3.0.0", + "loader-utils": "^1.0.2", + "semver": "^5.0.1" } }, "ts-node": { @@ -4419,14 +4073,14 @@ "integrity": "sha512-XK7QmDcNHVmZkVtkiwNDWiERRHPyU8nBqZB1+iv2UhOG0q3RQ9HsZ2CMqISlFbxjrYFGfG2mX7bW4dAyxBVzUw==", "dev": true, "requires": { - "arrify": "1.0.1", - "chalk": "2.3.2", - "diff": "3.2.0", - "make-error": "1.3.4", - "minimist": "1.2.0", - "mkdirp": "0.5.1", - "source-map-support": "0.5.4", - "yn": "2.0.0" + "arrify": "^1.0.0", + "chalk": "^2.3.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.3", + "yn": "^2.0.0" }, "dependencies": { "minimist": { @@ -4444,23 +4098,23 @@ "dev": true }, "tslint": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz", - "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "builtin-modules": "1.1.1", - "chalk": "2.3.2", - "commander": "2.15.1", - "diff": "3.2.0", - "glob": "7.1.1", - "js-yaml": "3.11.0", - "minimatch": "3.0.4", - "resolve": "1.7.0", - "semver": "5.5.0", - "tslib": "1.9.0", - "tsutils": "2.26.1" + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.10.0.tgz", + "integrity": "sha1-EeJrzLiK+gLdDZlWyuPUVAtfVMM=", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.12.1" }, "dependencies": { "commander": { @@ -4472,12 +4126,12 @@ } }, "tsutils": { - "version": "2.26.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.26.1.tgz", - "integrity": "sha512-bnm9bcjOqOr1UljleL94wVCDlpa6KjfGaTkefeLch4GRafgDkROxPizbB/FxTEdI++5JqhxczRy/Qub0syNqZA==", + "version": "2.26.2", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.26.2.tgz", + "integrity": "sha512-uzwnhmrSbyinPCiwfzGsOY3IulBTwoky7r83HmZdz9QNCjhSCzavkh47KLWuU0zF2F2WbpmmzoJUIEiYyd+jEQ==", "dev": true, "requires": { - "tslib": "1.9.0" + "tslib": "^1.8.1" } }, "tty-browserify": { @@ -4487,9 +4141,9 @@ "dev": true }, "typescript": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.1.tgz", - "integrity": "sha512-Ao/f6d/4EPLq0YwzsQz8iXflezpTkQzqAyenTiw4kCUGr1uPiFLC3+fZ+gMZz6eeI/qdRUqvC+HxIJzUAzEFdg==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.3.tgz", + "integrity": "sha512-K7g15Bb6Ra4lKf7Iq2l/I5/En+hLIHmxWZGq3D4DIRNFxMNV6j2SHSvDOqs2tGd4UvD/fJvrwopzQXjLrT7Itw==", "dev": true }, "uglify-es": { @@ -4498,8 +4152,8 @@ "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", "dev": true, "requires": { - "commander": "2.13.0", - "source-map": "0.6.1" + "commander": "~2.13.0", + "source-map": "~0.6.1" }, "dependencies": { "commander": { @@ -4523,9 +4177,9 @@ "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", "dev": true, "requires": { - "source-map": "0.5.7", - "uglify-js": "2.8.29", - "webpack-sources": "1.1.0" + "source-map": "^0.5.6", + "uglify-js": "^2.8.29", + "webpack-sources": "^1.0.1" }, "dependencies": { "source-map": { @@ -4540,9 +4194,9 @@ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" } }, "yargs": { @@ -4551,9 +4205,9 @@ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" } } @@ -4565,10 +4219,10 @@ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "dev": true, "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" }, "dependencies": { "extend-shallow": { @@ -4577,7 +4231,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "set-value": { @@ -4586,10 +4240,10 @@ "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" } } } @@ -4600,8 +4254,8 @@ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" + "has-value": "^0.3.1", + "isobject": "^3.0.0" }, "dependencies": { "has-value": { @@ -4610,9 +4264,9 @@ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" }, "dependencies": { "isobject": { @@ -4635,9 +4289,9 @@ } }, "upath": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.4.tgz", - "integrity": "sha512-d4SJySNBXDaQp+DPrziv3xGS6w3d2Xt69FijJr86zMPBy23JEloMCEOUBBzuN7xCtjLCnmB9tI/z7SBCahHBOw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.5.tgz", + "integrity": "sha512-qbKn90aDQ0YEwvXoLqj0oiuUYroLX2lVHZ+b+xwjozFasAOC4GneDq5+OaIG5Zj+jFmbz/uO+f7a9qxjktJQww==", "dev": true }, "uri-js": { @@ -4646,7 +4300,7 @@ "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=", "dev": true, "requires": { - "punycode": "2.1.0" + "punycode": "^2.1.0" }, "dependencies": { "punycode": { @@ -4682,12 +4336,12 @@ } }, "url-parse": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.3.0.tgz", - "integrity": "sha512-zPvPA3T7P6M+0iNsgX+iAcAz4GshKrowtQBHHc/28tVsBc8jK7VRCNX+2GEcoE6zDB6XqXhcyiUWPVZY6C70Cg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.0.tgz", + "integrity": "sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg==", "requires": { - "querystringify": "1.0.0", - "requires-port": "1.0.0" + "querystringify": "^2.0.0", + "requires-port": "^1.0.0" } }, "use": { @@ -4696,7 +4350,7 @@ "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.2" }, "dependencies": { "kind-of": { @@ -4741,8 +4395,8 @@ "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "dev": true, "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "vm-browserify": { @@ -4755,14 +4409,14 @@ } }, "watchpack": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.5.0.tgz", - "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", "dev": true, "requires": { - "chokidar": "2.0.3", - "graceful-fs": "4.1.11", - "neo-async": "2.5.0" + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" } }, "webpack": { @@ -4771,28 +4425,28 @@ "integrity": "sha512-3kOFejWqj5ISpJk4Qj/V7w98h9Vl52wak3CLiw/cDOfbVTq7FeoZ0SdoHHY9PYlHr50ZS42OfvzE2vB4nncKQg==", "dev": true, "requires": { - "acorn": "5.5.3", - "acorn-dynamic-import": "2.0.2", - "ajv": "6.4.0", - "ajv-keywords": "3.1.0", - "async": "2.6.0", - "enhanced-resolve": "3.4.1", - "escope": "3.6.0", - "interpret": "1.1.0", - "json-loader": "0.5.7", - "json5": "0.5.1", - "loader-runner": "2.3.0", - "loader-utils": "1.1.0", - "memory-fs": "0.4.1", - "mkdirp": "0.5.1", - "node-libs-browser": "2.1.0", - "source-map": "0.5.7", - "supports-color": "4.5.0", - "tapable": "0.2.8", - "uglifyjs-webpack-plugin": "0.4.6", - "watchpack": "1.5.0", - "webpack-sources": "1.1.0", - "yargs": "8.0.2" + "acorn": "^5.0.0", + "acorn-dynamic-import": "^2.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "async": "^2.1.2", + "enhanced-resolve": "^3.4.0", + "escope": "^3.6.0", + "interpret": "^1.0.0", + "json-loader": "^0.5.4", + "json5": "^0.5.1", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "mkdirp": "~0.5.0", + "node-libs-browser": "^2.0.0", + "source-map": "^0.5.3", + "supports-color": "^4.2.1", + "tapable": "^0.2.7", + "uglifyjs-webpack-plugin": "^0.4.6", + "watchpack": "^1.4.0", + "webpack-sources": "^1.0.1", + "yargs": "^8.0.2" }, "dependencies": { "has-flag": { @@ -4813,7 +4467,7 @@ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } } } @@ -4824,8 +4478,8 @@ "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", "dev": true, "requires": { - "source-list-map": "2.0.0", - "source-map": "0.6.1" + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" } }, "which": { @@ -4834,7 +4488,7 @@ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -4861,8 +4515,8 @@ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { "string-width": { @@ -4871,9 +4525,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } } } @@ -4889,8 +4543,8 @@ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", "requires": { - "sax": "1.2.4", - "xmlbuilder": "9.0.7" + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" } }, "xmlbuilder": { @@ -4922,19 +4576,19 @@ "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", "dev": true, "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "7.0.0" + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^7.0.0" }, "dependencies": { "camelcase": { @@ -4949,9 +4603,9 @@ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" }, "dependencies": { "string-width": { @@ -4960,9 +4614,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } } } @@ -4975,7 +4629,7 @@ "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" }, "dependencies": { "camelcase": { diff --git a/package.json b/package.json index e82a514e9ad8..6432c43c291a 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "^0.3.0" + "ms-rest-js": "github:Azure/ms-rest-js" }, "devDependencies": { "@types/mocha": "^2.2.43", From e1239724cb5c66e751e48d3b32a5675f46d5a88a Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Tue, 8 May 2018 15:46:22 -0700 Subject: [PATCH 021/289] Remove github: prefix from ms-rest-js dependency --- package-lock.json | 28 ++++++++++++++-------------- package.json | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index bbc3494e305e..411c04d62b86 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,9 +27,9 @@ "dev": true }, "@types/node": { - "version": "9.6.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.13.tgz", - "integrity": "sha512-rAlzcc9b66uY+pwvBCjhl9/Nm/mr3rt1/pfHVHDMd0Bfg4olE0UlvaEZh+TM/uwzEFYVnLbDZHG9mVjZrHdv8g==" + "version": "9.6.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.14.tgz", + "integrity": "sha512-a0mGovBom+nXeDQkgS13AgHGpN+DLR+qTuRWZA7y9FTEiuTbDlXUwhz4+yShOobZGebmjBcl+tTEirTwBlA2LA==" }, "@types/node-fetch": { "version": "1.6.9", @@ -85,15 +85,15 @@ } }, "ajv": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", - "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", + "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", "dev": true, "requires": { - "fast-deep-equal": "^1.0.0", + "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.3.0", - "uri-js": "^3.0.2" + "uri-js": "^4.2.1" } }, "ajv-keywords": { @@ -1351,9 +1351,9 @@ } }, "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, "fast-json-stable-stringify": { @@ -4295,9 +4295,9 @@ "dev": true }, "uri-js": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz", - "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.1.tgz", + "integrity": "sha512-jpKCA3HjsBfSDOEgxRDAxQCNyHfCPSbq57PqCkd3gAyBuPb3IWxw54EHncqESznIdqSetHfw3D7ylThu2Kcc9A==", "dev": true, "requires": { "punycode": "^2.1.0" diff --git a/package.json b/package.json index 6432c43c291a..241238b4fe3b 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "github:Azure/ms-rest-js" + "ms-rest-js": "Azure/ms-rest-js" }, "devDependencies": { "@types/mocha": "^2.2.43", From 218825db75e872f0b52413b4f2679400a4e04063 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Tue, 15 May 2018 11:11:13 -0700 Subject: [PATCH 022/289] Fixes for ms-rest-js#HttpClient changes --- lib/azureServiceClient.ts | 16 ++++++++-------- lib/pollingState.ts | 10 +++++----- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index 64cc27a431a1..fcc8b97deb00 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -109,7 +109,7 @@ export class AzureServiceClient extends msRest.ServiceClient { * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation. */ private checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResponse): boolean { - const statusCode = initialResponse.response.status; + const statusCode = initialResponse.status; const method = initialResponse.request.method; if (statusCode === 200 || statusCode === 202 || (statusCode === 201 && method === "PUT") || @@ -132,7 +132,7 @@ export class AzureServiceClient extends msRest.ServiceClient { if (self.checkResponseStatusCodeFailed(resultOfInitialRequest)) { return Promise.reject(`Unexpected polling status code from long running operation ` + - `"${resultOfInitialRequest.response.status}" for method "${initialRequestMethod}".`); + `"${resultOfInitialRequest.status}" for method "${initialRequestMethod}".`); } let pollingState: PollingState; try { @@ -191,7 +191,7 @@ export class AzureServiceClient extends msRest.ServiceClient { } pollingState.status = parsedResponse.status; pollingState.error = parsedResponse.error; - pollingState.updateResponse(result.response); + pollingState.updateResponse(result); pollingState.request = result.request; pollingState.resource = undefined; if (inPostOrDelete) { @@ -214,9 +214,9 @@ export class AzureServiceClient extends msRest.ServiceClient { } const parsedResponse = result.parsedBody as { [key: string]: any }; - pollingState.updateResponse(result.response); + pollingState.updateResponse(result); pollingState.request = result.request; - const statusCode = result.response.status; + const statusCode = result.status; if (statusCode === 202) { pollingState.status = LroStates.InProgress; } else if (statusCode === 200 || @@ -254,7 +254,7 @@ export class AzureServiceClient extends msRest.ServiceClient { if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) { pollingState.status = parsedResponse.properties.provisioningState; } - pollingState.updateResponse(result.response); + pollingState.updateResponse(result); pollingState.request = result.request; pollingState.resource = parsedResponse; // we might not throw an error, but initialize here just in case. @@ -292,14 +292,14 @@ export class AzureServiceClient extends msRest.ServiceClient { } catch (err) { return Promise.reject(err); } - const statusCode = operationResponse.response.status; + const statusCode = operationResponse.status; const responseBody = operationResponse.parsedBody; if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { const error = new msRest.RestError(`Invalid status code with response body "${operationResponse.bodyAsText}" occurred ` + `when polling for operation status.`); error.statusCode = statusCode; error.request = msRest.stripRequest(operationResponse.request); - error.response = operationResponse.response; + error.response = operationResponse; try { error.body = responseBody; } catch (badResponse) { diff --git a/lib/pollingState.ts b/lib/pollingState.ts index 0a5c113712cf..7d9210c1979d 100644 --- a/lib/pollingState.ts +++ b/lib/pollingState.ts @@ -25,7 +25,7 @@ export default class PollingState { /** * @param {Response} [response] - The response object to extract longrunning operation status. */ - response!: Response; + response!: msRest.HttpOperationResponse; /** * @param {any} [resource] - Provides information about the response body received in the polling request. Particularly useful when polling via provisioningState. */ @@ -54,7 +54,7 @@ export default class PollingState { constructor(resultOfInitialRequest: msRest.HttpOperationResponse, retryTimeout = 30) { this.resultOfInitialRequest = resultOfInitialRequest; this.retryTimeout = retryTimeout; - this.updateResponse(resultOfInitialRequest.response); + this.updateResponse(resultOfInitialRequest); this.request = resultOfInitialRequest.request; // Parse response.body & assign it as the resource. try { @@ -67,7 +67,7 @@ export default class PollingState { const deserializationError = new msRest.RestError(`Error "${error}" occurred in parsing the responseBody " + "while creating the PollingState for Long Running Operation- "${resultOfInitialRequest.bodyAsText}"`); deserializationError.request = resultOfInitialRequest.request; - deserializationError.response = resultOfInitialRequest.response; + deserializationError.response = resultOfInitialRequest; throw deserializationError; } switch (this.response.status) { @@ -105,7 +105,7 @@ export default class PollingState { * Update cached data using the provided response object * @param {Response} [response] - provider response object. */ - updateResponse(response: Response) { + updateResponse(response: msRest.HttpOperationResponse) { this.response = response; if (response && response.headers) { const asyncOperationHeader: string | null | undefined = response.headers.get("azure-asyncoperation"); @@ -142,7 +142,7 @@ export default class PollingState { * @returns {msRest.HttpOperationResponse} HttpOperationResponse */ getOperationResponse(): msRest.HttpOperationResponse { - const result = new msRest.HttpOperationResponse(this.request, this.response); + const result = { ...this.response, headers: this.response.headers.clone() }; if (this.resource && typeof this.resource.valueOf() === "string") { result.bodyAsText = this.resource; result.parsedBody = JSON.parse(this.resource); From 702ac9dfd74084ce3e9be17c512087b02167a4c3 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Wed, 16 May 2018 13:31:17 -0700 Subject: [PATCH 023/289] Add publish scripts --- .scripts/publish.js | 19 +++++++++++++++++++ package.json | 5 +++-- 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 .scripts/publish.js diff --git a/.scripts/publish.js b/.scripts/publish.js new file mode 100644 index 000000000000..963816dca6bf --- /dev/null +++ b/.scripts/publish.js @@ -0,0 +1,19 @@ +const semver = require("semver"); +const util = require("util"); +const cp= require("child_process"); +const exec=util.promisify(cp.exec); + +async function main() { + const package_json = require("../package.json"); + const baseVersion = (package_json.version).trim() + const v = (await exec("git rev-list --parents HEAD --count --full-history")).stdout.trim(); + + const version = `${semver.major(baseVersion)}.${semver.minor(baseVersion)}.${v}` + + console.log(`Using version ${version}`); + process.argv.push(`publish`,`--access`,`public`,`--tag`,`preview`,`--new-version`,`${version}`, `--no-git-tag-version`); + // now, on with the publish... + require( "yarn/lib/cli.js" ); +} + +main(); \ No newline at end of file diff --git a/package.json b/package.json index e82a514e9ad8..abff6ade2d47 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ "test": "run-p test:tslint test:unit", "test:unit": "mocha", "test:tslint": "tslint -p . -c tslint.json --exclude test/**/*.ts", - "prepare": "npm run build" + "prepare": "npm run build", + "publish-preview": "npm test && shx rm -rf dist/test && node ./.scripts/publish" } -} +} \ No newline at end of file From b656d0ea0ad80d1e2e0357651461c30474ed8767 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Wed, 16 May 2018 14:23:44 -0700 Subject: [PATCH 024/289] Explicitly unignore dist and typings when packing --- .npmignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.npmignore b/.npmignore index 1e911efaac97..a12b7f4f9395 100644 --- a/.npmignore +++ b/.npmignore @@ -1,3 +1,5 @@ +!dist/lib/**/*.js +!typings/lib/**/*.d.ts .vscode/ .idea/ samples/ @@ -10,4 +12,5 @@ gulpfile.js .DS_Store tsconfig.json tslint.json -webpack.config.ts \ No newline at end of file +webpack.config.ts +*.js.map From f41537233c0b225af5787eee331ea2701a84c9c4 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Wed, 16 May 2018 14:29:02 -0700 Subject: [PATCH 025/289] Update ms-rest-js version --- package-lock.json | 67 +++++++++++++++++++++++++++++++++++++++++++---- package.json | 4 +-- 2 files changed, 64 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 411c04d62b86..4b3b1bdc329b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,47 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@types/body-parser": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz", + "integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.32", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", + "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==", + "requires": { + "@types/node": "*" + } + }, + "@types/events": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", + "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==" + }, + "@types/express": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.11.1.tgz", + "integrity": "sha512-ttWle8cnPA5rAelauSWeWJimtY2RsUf2aspYZs7xPHiWgOlPn6nnUfBMtrkcnjFJuIHJF4gNOdVvpLK2Zmvh6g==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.11.1.tgz", + "integrity": "sha512-EehCl3tpuqiM8RUb+0255M8PhhSwTtLfmO7zBBdv0ay/VTd/zmrqDfQdZFsa5z/PVMbH2yCMZPXsnrImpATyIw==", + "requires": { + "@types/events": "*", + "@types/node": "*" + } + }, "@types/form-data": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", @@ -20,6 +61,11 @@ "@types/node": "*" } }, + "@types/mime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz", + "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==" + }, "@types/mocha": { "version": "2.2.48", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.48.tgz", @@ -27,9 +73,9 @@ "dev": true }, "@types/node": { - "version": "9.6.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.14.tgz", - "integrity": "sha512-a0mGovBom+nXeDQkgS13AgHGpN+DLR+qTuRWZA7y9FTEiuTbDlXUwhz4+yShOobZGebmjBcl+tTEirTwBlA2LA==" + "version": "9.6.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.16.tgz", + "integrity": "sha512-fwUW7S8gaSVNpPa1XUdzI0URY71xqXsc90S9vKr2uFIUpVCKV+8ysnN9vvAFK8np4H03A7QGRkHpQvgah0964Q==" }, "@types/node-fetch": { "version": "1.6.9", @@ -39,6 +85,15 @@ "@types/node": "*" } }, + "@types/serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==", + "requires": { + "@types/express-serve-static-core": "*", + "@types/mime": "*" + } + }, "@types/should": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/@types/should/-/should-8.3.0.tgz", @@ -2843,9 +2898,11 @@ "dev": true }, "ms-rest-js": { - "version": "github:Azure/ms-rest-js#64e0b016a38b315e04a8d04b4c3959fcfe5027d5", - "from": "github:Azure/ms-rest-js", + "version": "0.5.143", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.5.143.tgz", + "integrity": "sha1-WAV99QpaXZIAOKLBcaJnt25bzRA=", "requires": { + "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", "@types/is-stream": "^1.1.0", "@types/node": "^9.4.6", diff --git a/package.json b/package.json index 36e92c2d8a1f..f581240a8fd0 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "Azure/ms-rest-js" + "ms-rest-js": "0.5.143" }, "devDependencies": { "@types/mocha": "^2.2.43", @@ -64,4 +64,4 @@ "prepare": "npm run build", "publish-preview": "npm test && shx rm -rf dist/test && node ./.scripts/publish" } -} \ No newline at end of file +} From 0521ffebb4a16900f7fba1bb38e3be1789fb6d3d Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Wed, 16 May 2018 14:29:33 -0700 Subject: [PATCH 026/289] Add shx and yarn deps --- package-lock.json | 1670 +++++++++++++++++++++++---------------------- package.json | 6 +- 2 files changed, 865 insertions(+), 811 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7d4d3b66f32f..393008d96d0b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", "requires": { - "@types/node": "9.6.4" + "@types/node": "*" } }, "@types/is-stream": { @@ -17,7 +17,7 @@ "resolved": "https://registry.npmjs.org/@types/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==", "requires": { - "@types/node": "9.6.4" + "@types/node": "*" } }, "@types/mocha": { @@ -36,7 +36,7 @@ "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-1.6.8.tgz", "integrity": "sha512-O8DUwXf7KUBu036HAbF5RKRaA1vvE0BsaPfAnC9YD7Xy4eNoJmNIdEjBIEEHAVszozRgH4m9JnVCsueSKiKXMA==", "requires": { - "@types/node": "9.6.4" + "@types/node": "*" } }, "@types/should": { @@ -50,7 +50,7 @@ "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.3.tgz", "integrity": "sha512-5fRLCYhLtDb3hMWqQyH10qtF+Ud2JnNCXTCZ+9ktNdCcgslcuXkDTkFcJNk++MT29yDntDnlF1+jD+uVGumsbw==", "requires": { - "@types/node": "9.6.4" + "@types/node": "*" } }, "acorn": { @@ -65,7 +65,7 @@ "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", "dev": true, "requires": { - "acorn": "4.0.13" + "acorn": "^4.0.3" }, "dependencies": { "acorn": { @@ -82,10 +82,10 @@ "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", "dev": true, "requires": { - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1", - "uri-js": "3.0.2" + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0", + "uri-js": "^3.0.2" } }, "ajv-keywords": { @@ -100,9 +100,9 @@ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } }, "ansi-regex": { @@ -117,7 +117,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" } }, "anymatch": { @@ -126,8 +126,8 @@ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "micromatch": "3.1.10", - "normalize-path": "2.1.1" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" } }, "argparse": { @@ -136,7 +136,7 @@ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "arr-diff": { @@ -193,9 +193,9 @@ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "dev": true, "requires": { - "bn.js": "4.11.8", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "assert": { @@ -219,7 +219,7 @@ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.14.0" } }, "async-each": { @@ -245,9 +245,9 @@ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" }, "dependencies": { "ansi-styles": { @@ -262,11 +262,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "supports-color": { @@ -289,13 +289,13 @@ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { "define-property": { @@ -304,7 +304,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { @@ -313,7 +313,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -322,7 +322,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -331,9 +331,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "kind-of": { @@ -374,7 +374,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -384,16 +384,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { "extend-shallow": { @@ -402,7 +402,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -425,12 +425,12 @@ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "browserify-cipher": { @@ -439,9 +439,9 @@ "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", "dev": true, "requires": { - "browserify-aes": "1.2.0", - "browserify-des": "1.0.0", - "evp_bytestokey": "1.0.3" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, "browserify-des": { @@ -450,9 +450,9 @@ "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", "dev": true, "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.0", - "inherits": "2.0.3" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1" } }, "browserify-rsa": { @@ -461,8 +461,8 @@ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { - "bn.js": "4.11.8", - "randombytes": "2.0.6" + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" } }, "browserify-sign": { @@ -471,13 +471,13 @@ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "dev": true, "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "elliptic": "6.4.0", - "inherits": "2.0.3", - "parse-asn1": "5.1.0" + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" } }, "browserify-zlib": { @@ -486,7 +486,7 @@ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dev": true, "requires": { - "pako": "1.0.6" + "pako": "~1.0.5" } }, "buffer": { @@ -495,9 +495,9 @@ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { - "base64-js": "1.2.3", - "ieee754": "1.1.11", - "isarray": "1.0.0" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, "buffer-xor": { @@ -524,15 +524,15 @@ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" } }, "camelcase": { @@ -547,8 +547,8 @@ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, "chalk": { @@ -557,9 +557,9 @@ "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.3.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "dependencies": { "has-flag": { @@ -574,7 +574,7 @@ "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } @@ -585,18 +585,18 @@ "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", "dev": true, "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.2", - "fsevents": "1.1.3", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.0", - "normalize-path": "2.1.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0", - "upath": "1.0.4" + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.1.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.0" } }, "cipher-base": { @@ -605,8 +605,8 @@ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "class-utils": { @@ -615,10 +615,10 @@ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { "define-property": { @@ -627,7 +627,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -638,8 +638,8 @@ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" } }, @@ -655,8 +655,8 @@ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, "color-convert": { @@ -665,7 +665,7 @@ "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" } }, "color-name": { @@ -679,7 +679,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -688,7 +688,7 @@ "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" } }, "component-emitter": { @@ -709,7 +709,7 @@ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "dev": true, "requires": { - "date-now": "0.1.4" + "date-now": "^0.1.4" } }, "constants-browserify": { @@ -736,8 +736,8 @@ "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", "dev": true, "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.0" + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" } }, "create-hash": { @@ -746,10 +746,10 @@ "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", "dev": true, "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "sha.js": "2.4.11" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "sha.js": "^2.4.0" } }, "create-hmac": { @@ -758,12 +758,12 @@ "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", "dev": true, "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.11" + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "cross-spawn": { @@ -772,9 +772,9 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.2", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "crypto-browserify": { @@ -783,17 +783,17 @@ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { - "browserify-cipher": "1.0.0", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.0", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "diffie-hellman": "5.0.2", - "inherits": "2.0.3", - "pbkdf2": "3.0.14", - "public-encrypt": "4.0.0", - "randombytes": "2.0.6", - "randomfill": "1.0.4" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" } }, "d": { @@ -802,7 +802,7 @@ "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "es5-ext": "0.10.42" + "es5-ext": "^0.10.9" } }, "date-now": { @@ -838,8 +838,8 @@ "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", "dev": true, "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" + "foreach": "^2.0.5", + "object-keys": "^1.0.8" } }, "define-property": { @@ -848,8 +848,8 @@ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { "is-accessor-descriptor": { @@ -858,7 +858,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -867,7 +867,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -876,9 +876,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "kind-of": { @@ -900,8 +900,8 @@ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", "dev": true, "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "diff": { @@ -916,9 +916,9 @@ "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", "dev": true, "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.1", - "randombytes": "2.0.6" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" } }, "domain-browser": { @@ -939,13 +939,13 @@ "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", "dev": true, "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.3", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" } }, "emojis-list": { @@ -959,7 +959,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.21" + "iconv-lite": "~0.4.13" } }, "enhanced-resolve": { @@ -968,10 +968,10 @@ "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "object-assign": "4.1.1", - "tapable": "0.2.8" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "object-assign": "^4.0.1", + "tapable": "^0.2.7" } }, "errno": { @@ -980,7 +980,7 @@ "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "dev": true, "requires": { - "prr": "1.0.1" + "prr": "~1.0.1" } }, "error-ex": { @@ -989,7 +989,7 @@ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "es-abstract": { @@ -998,11 +998,11 @@ "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", "dev": true, "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.1", - "has": "1.0.1", - "is-callable": "1.1.3", - "is-regex": "1.0.4" + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" } }, "es-to-primitive": { @@ -1011,9 +1011,9 @@ "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", "dev": true, "requires": { - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-symbol": "1.0.1" + "is-callable": "^1.1.1", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.1" } }, "es5-ext": { @@ -1022,9 +1022,9 @@ "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", "dev": true, "requires": { - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1", - "next-tick": "1.0.0" + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" } }, "es6-denodeify": { @@ -1038,9 +1038,9 @@ "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-symbol": "3.1.1" + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" } }, "es6-map": { @@ -1049,25 +1049,31 @@ "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-iterator": "2.0.3", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" } }, + "es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=", + "dev": true + }, "es6-set": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-iterator": "2.0.3", + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" + "event-emitter": "~0.3.5" } }, "es6-symbol": { @@ -1076,8 +1082,8 @@ "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42" + "d": "1", + "es5-ext": "~0.10.14" } }, "es6-weak-map": { @@ -1086,10 +1092,10 @@ "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" + "d": "1", + "es5-ext": "^0.10.14", + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" } }, "escape-string-regexp": { @@ -1104,10 +1110,10 @@ "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", "dev": true, "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.2.1", - "estraverse": "4.2.0" + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, "esprima": { @@ -1122,7 +1128,7 @@ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.1.0" } }, "estraverse": { @@ -1143,8 +1149,8 @@ "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42" + "d": "1", + "es5-ext": "~0.10.14" } }, "event-stream": { @@ -1153,13 +1159,13 @@ "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "dev": true, "requires": { - "duplexer": "0.1.1", - "from": "0.1.7", - "map-stream": "0.1.0", + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", "pause-stream": "0.0.11", - "split": "0.3.3", - "stream-combiner": "0.0.4", - "through": "2.3.8" + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" } }, "events": { @@ -1174,8 +1180,8 @@ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, "requires": { - "md5.js": "1.3.4", - "safe-buffer": "5.1.1" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, "execa": { @@ -1184,13 +1190,13 @@ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "dev": true, "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, "expand-brackets": { @@ -1199,13 +1205,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "debug": "2.6.8", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -1214,7 +1220,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -1223,7 +1229,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -1234,8 +1240,8 @@ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -1244,7 +1250,7 @@ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -1255,14 +1261,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -1271,7 +1277,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -1280,7 +1286,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -1289,7 +1295,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -1298,7 +1304,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -1307,9 +1313,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "kind-of": { @@ -1337,15 +1343,16 @@ "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.7.0.tgz", "integrity": "sha512-Mm5pGlT3agW6t71xVM7vMZPIvI7T4FaTuFW4jari6dVzYHFDb3WZZsGpN22r/o3XMdkM0E7sPd1EGeyVbH2Tgg==", "requires": { - "es6-denodeify": "0.1.5", - "tough-cookie": "2.3.4" + "es6-denodeify": "^0.1.1", + "tough-cookie": "^2.3.1" } }, "fetch-ponyfill": { "version": "github:amarzavery/fetch-ponyfill#136e6f8192bdb2aa0b7983f0b3b4361c357be9db", + "from": "github:amarzavery/fetch-ponyfill#master", "requires": { - "fetch-cookie": "0.6.0", - "node-fetch": "1.7.3" + "fetch-cookie": "~0.6.0", + "node-fetch": "~1.7.1" }, "dependencies": { "fetch-cookie": { @@ -1353,8 +1360,8 @@ "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.6.0.tgz", "integrity": "sha1-T+xOQIzAAH9sBOVTYYr0s97jf2k=", "requires": { - "es6-denodeify": "0.1.5", - "tough-cookie": "2.3.4" + "es6-denodeify": "^0.1.1", + "tough-cookie": "^2.3.1" } } } @@ -1365,10 +1372,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -1377,7 +1384,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -1388,7 +1395,7 @@ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "for-in": { @@ -1408,9 +1415,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "asynckit": "0.4.0", + "asynckit": "^0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "mime-types": "^2.1.12" } }, "fragment-cache": { @@ -1419,7 +1426,7 @@ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { - "map-cache": "0.2.2" + "map-cache": "^0.2.2" } }, "from": { @@ -1441,8 +1448,8 @@ "dev": true, "optional": true, "requires": { - "nan": "2.10.0", - "node-pre-gyp": "0.6.39" + "nan": "^2.3.0", + "node-pre-gyp": "^0.6.39" }, "dependencies": { "abbrev": { @@ -1457,8 +1464,8 @@ "dev": true, "optional": true, "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } }, "ansi-regex": { @@ -1478,8 +1485,8 @@ "dev": true, "optional": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, "asn1": { @@ -1523,7 +1530,7 @@ "dev": true, "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "block-stream": { @@ -1531,7 +1538,7 @@ "bundled": true, "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "boom": { @@ -1539,7 +1546,7 @@ "bundled": true, "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "brace-expansion": { @@ -1547,7 +1554,7 @@ "bundled": true, "dev": true, "requires": { - "balanced-match": "0.4.2", + "balanced-match": "^0.4.1", "concat-map": "0.0.1" } }, @@ -1578,7 +1585,7 @@ "bundled": true, "dev": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "concat-map": { @@ -1601,7 +1608,7 @@ "bundled": true, "dev": true, "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "dashdash": { @@ -1610,7 +1617,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -1659,7 +1666,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "extend": { @@ -1685,9 +1692,9 @@ "dev": true, "optional": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "fs.realpath": { @@ -1700,10 +1707,10 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" } }, "fstream-ignore": { @@ -1712,9 +1719,9 @@ "dev": true, "optional": true, "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" + "fstream": "^1.0.0", + "inherits": "2", + "minimatch": "^3.0.0" } }, "gauge": { @@ -1723,14 +1730,14 @@ "dev": true, "optional": true, "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, "getpass": { @@ -1739,7 +1746,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -1755,12 +1762,12 @@ "bundled": true, "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "graceful-fs": { @@ -1780,8 +1787,8 @@ "dev": true, "optional": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "^4.9.1", + "har-schema": "^1.0.5" } }, "has-unicode": { @@ -1795,10 +1802,10 @@ "bundled": true, "dev": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" } }, "hoek": { @@ -1812,9 +1819,9 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "inflight": { @@ -1822,8 +1829,8 @@ "bundled": true, "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -1842,7 +1849,7 @@ "bundled": true, "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-typedarray": { @@ -1868,7 +1875,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "jsbn": { @@ -1889,7 +1896,7 @@ "dev": true, "optional": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stringify-safe": { @@ -1934,7 +1941,7 @@ "bundled": true, "dev": true, "requires": { - "mime-db": "1.27.0" + "mime-db": "~1.27.0" } }, "minimatch": { @@ -1942,7 +1949,7 @@ "bundled": true, "dev": true, "requires": { - "brace-expansion": "1.1.7" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -1970,17 +1977,17 @@ "dev": true, "optional": true, "requires": { - "detect-libc": "1.0.2", + "detect-libc": "^1.0.2", "hawk": "3.1.3", - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.0.2", + "rc": "^1.1.7", "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^2.2.1", + "tar-pack": "^3.4.0" } }, "nopt": { @@ -1989,8 +1996,8 @@ "dev": true, "optional": true, "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" + "abbrev": "1", + "osenv": "^0.1.4" } }, "npmlog": { @@ -1999,10 +2006,10 @@ "dev": true, "optional": true, "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "number-is-nan": { @@ -2027,7 +2034,7 @@ "bundled": true, "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os-homedir": { @@ -2048,8 +2055,8 @@ "dev": true, "optional": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "path-is-absolute": { @@ -2086,10 +2093,10 @@ "dev": true, "optional": true, "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { @@ -2105,13 +2112,13 @@ "bundled": true, "dev": true, "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" } }, "request": { @@ -2120,28 +2127,28 @@ "dev": true, "optional": true, "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" } }, "rimraf": { @@ -2149,7 +2156,7 @@ "bundled": true, "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -2180,7 +2187,7 @@ "bundled": true, "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "sshpk": { @@ -2189,15 +2196,15 @@ "dev": true, "optional": true, "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jodid25519": "^1.0.0", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" }, "dependencies": { "assert-plus": { @@ -2213,9 +2220,9 @@ "bundled": true, "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string_decoder": { @@ -2223,7 +2230,7 @@ "bundled": true, "dev": true, "requires": { - "safe-buffer": "5.0.1" + "safe-buffer": "^5.0.1" } }, "stringstream": { @@ -2237,7 +2244,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-json-comments": { @@ -2251,9 +2258,9 @@ "bundled": true, "dev": true, "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } }, "tar-pack": { @@ -2262,14 +2269,14 @@ "dev": true, "optional": true, "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" + "debug": "^2.2.0", + "fstream": "^1.0.10", + "fstream-ignore": "^1.0.5", + "once": "^1.3.3", + "readable-stream": "^2.1.4", + "rimraf": "^2.5.1", + "tar": "^2.2.1", + "uid-number": "^0.0.6" } }, "tough-cookie": { @@ -2278,7 +2285,7 @@ "dev": true, "optional": true, "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "tunnel-agent": { @@ -2287,7 +2294,7 @@ "dev": true, "optional": true, "requires": { - "safe-buffer": "5.0.1" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -2328,7 +2335,7 @@ "dev": true, "optional": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" } }, "wrappy": { @@ -2368,12 +2375,12 @@ "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-parent": { @@ -2382,8 +2389,8 @@ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" }, "dependencies": { "is-glob": { @@ -2392,7 +2399,7 @@ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.0" } } } @@ -2421,7 +2428,7 @@ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", "dev": true, "requires": { - "function-bind": "1.1.1" + "function-bind": "^1.0.2" } }, "has-ansi": { @@ -2430,7 +2437,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -2445,9 +2452,9 @@ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" } }, "has-values": { @@ -2456,8 +2463,8 @@ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "is-buffer": { @@ -2472,7 +2479,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2483,7 +2490,7 @@ "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "^2.0.1" } }, "hash.js": { @@ -2492,8 +2499,8 @@ "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", "dev": true, "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" } }, "he": { @@ -2508,9 +2515,9 @@ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "dev": true, "requires": { - "hash.js": "1.1.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, "hosted-git-info": { @@ -2530,7 +2537,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": "^2.1.0" } }, "ieee754": { @@ -2551,8 +2558,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -2579,7 +2586,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-arrayish": { @@ -2594,7 +2601,7 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.11.0" + "binary-extensions": "^1.0.0" } }, "is-buffer": { @@ -2608,7 +2615,7 @@ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-callable": { @@ -2623,7 +2630,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-date-object": { @@ -2638,9 +2645,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { "kind-of": { @@ -2669,7 +2676,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-glob": { @@ -2678,7 +2685,7 @@ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.1" } }, "is-number": { @@ -2687,7 +2694,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-odd": { @@ -2696,7 +2703,7 @@ "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", "dev": true, "requires": { - "is-number": "4.0.0" + "is-number": "^4.0.0" }, "dependencies": { "is-number": { @@ -2713,7 +2720,7 @@ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" } }, "is-regex": { @@ -2722,7 +2729,7 @@ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "dev": true, "requires": { - "has": "1.0.1" + "has": "^1.0.1" } }, "is-stream": { @@ -2772,8 +2779,8 @@ "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", "dev": true, "requires": { - "argparse": "1.0.10", - "esprima": "4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "json-loader": { @@ -2818,7 +2825,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" }, "dependencies": { "is-buffer": { @@ -2841,7 +2848,7 @@ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "load-json-file": { @@ -2850,10 +2857,10 @@ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" } }, "loader-runner": { @@ -2868,9 +2875,9 @@ "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", "dev": true, "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" } }, "locate-path": { @@ -2879,8 +2886,8 @@ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "lodash": { @@ -2895,8 +2902,8 @@ "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", "dev": true, "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" } }, "lodash._basecopy": { @@ -2929,9 +2936,9 @@ "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", "dev": true, "requires": { - "lodash._baseassign": "3.2.0", - "lodash._basecreate": "3.0.3", - "lodash._isiterateecall": "3.0.9" + "lodash._baseassign": "^3.0.0", + "lodash._basecreate": "^3.0.0", + "lodash._isiterateecall": "^3.0.0" } }, "lodash.isarguments": { @@ -2952,9 +2959,9 @@ "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", "dev": true, "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" } }, "longest": { @@ -2969,8 +2976,8 @@ "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "make-error": { @@ -2997,7 +3004,7 @@ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { - "object-visit": "1.0.1" + "object-visit": "^1.0.0" } }, "md5.js": { @@ -3006,8 +3013,8 @@ "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", "dev": true, "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" + "hash-base": "^3.0.0", + "inherits": "^2.0.1" }, "dependencies": { "hash-base": { @@ -3016,8 +3023,8 @@ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "dev": true, "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } } } @@ -3028,7 +3035,7 @@ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "memory-fs": { @@ -3037,8 +3044,8 @@ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, "requires": { - "errno": "0.1.7", - "readable-stream": "2.3.6" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" } }, "memorystream": { @@ -3053,19 +3060,19 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" }, "dependencies": { "kind-of": { @@ -3082,8 +3089,8 @@ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" } }, "mime-db": { @@ -3096,7 +3103,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "requires": { - "mime-db": "1.33.0" + "mime-db": "~1.33.0" } }, "mimic-fn": { @@ -3123,7 +3130,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -3138,8 +3145,8 @@ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -3148,7 +3155,7 @@ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -3198,20 +3205,20 @@ "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.3.1.tgz", "integrity": "sha512-9ULpc9mIwxJ3ia5cH5e3bhcdqByhWH6GJEKEWkJArsahj4+CfMaE8Pdz6F7fHFyKsHbvYThu61kwIbYE6xqIbQ==", "requires": { - "@types/form-data": "2.2.1", - "@types/is-stream": "1.1.0", - "@types/node": "9.6.4", - "@types/node-fetch": "1.6.8", - "@types/uuid": "3.4.3", - "fetch-cookie": "0.7.0", + "@types/form-data": "^2.2.1", + "@types/is-stream": "^1.1.0", + "@types/node": "^9.4.6", + "@types/node-fetch": "^1.6.7", + "@types/uuid": "^3.4.3", + "fetch-cookie": "^0.7.0", "fetch-ponyfill": "github:amarzavery/fetch-ponyfill#136e6f8192bdb2aa0b7983f0b3b4361c357be9db", - "form-data": "2.3.2", - "is-buffer": "2.0.2", - "is-stream": "1.1.0", - "moment": "2.22.0", - "url-parse": "1.3.0", - "uuid": "3.2.1", - "xml2js": "0.4.19" + "form-data": "^2.3.2", + "is-buffer": "^2.0.0", + "is-stream": "^1.1.0", + "moment": "^2.21.0", + "url-parse": "^1.2.0", + "uuid": "^3.2.1", + "xml2js": "^0.4.19" } }, "nan": { @@ -3227,18 +3234,18 @@ "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-odd": "2.0.0", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "kind-of": { @@ -3266,8 +3273,8 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" + "encoding": "^0.1.11", + "is-stream": "^1.0.1" } }, "node-libs-browser": { @@ -3276,28 +3283,28 @@ "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", "dev": true, "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.2.0", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.12.0", - "domain-browser": "1.2.0", - "events": "1.1.1", - "https-browserify": "1.0.0", - "os-browserify": "0.3.0", + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^1.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.6", - "stream-browserify": "2.0.1", - "stream-http": "2.8.1", - "string_decoder": "1.1.1", - "timers-browserify": "2.0.6", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", + "url": "^0.11.0", + "util": "^0.10.3", "vm-browserify": "0.0.4" } }, @@ -3307,10 +3314,10 @@ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { - "hosted-git-info": "2.6.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "normalize-path": { @@ -3319,7 +3326,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "npm-run-all": { @@ -3328,15 +3335,15 @@ "integrity": "sha512-Z2aRlajMK4SQ8u19ZA75NZZu7wupfCNQWdYosIi8S6FgBdGf/8Y6Hgyjdc8zU2cYmIRVCx1nM80tJPkdEd+UYg==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "chalk": "2.3.2", - "cross-spawn": "5.1.0", - "memorystream": "0.3.1", - "minimatch": "3.0.4", - "ps-tree": "1.1.0", - "read-pkg": "3.0.0", - "shell-quote": "1.6.1", - "string.prototype.padend": "3.0.0" + "ansi-styles": "^3.2.0", + "chalk": "^2.1.0", + "cross-spawn": "^5.1.0", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "ps-tree": "^1.1.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" }, "dependencies": { "load-json-file": { @@ -3345,10 +3352,10 @@ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "4.0.0", - "pify": "3.0.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" } }, "parse-json": { @@ -3357,8 +3364,8 @@ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.2" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, "path-type": { @@ -3367,7 +3374,7 @@ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" } }, "pify": { @@ -3382,9 +3389,9 @@ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { - "load-json-file": "4.0.0", - "normalize-package-data": "2.4.0", - "path-type": "3.0.0" + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" } } } @@ -3395,7 +3402,7 @@ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } }, "number-is-nan": { @@ -3416,9 +3423,9 @@ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "dependencies": { "define-property": { @@ -3427,7 +3434,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -3444,7 +3451,7 @@ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.0" } }, "object.pick": { @@ -3453,7 +3460,7 @@ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" } }, "once": { @@ -3462,7 +3469,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os-browserify": { @@ -3477,9 +3484,9 @@ "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, "p-finally": { @@ -3494,7 +3501,7 @@ "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", "dev": true, "requires": { - "p-try": "1.0.0" + "p-try": "^1.0.0" } }, "p-locate": { @@ -3503,7 +3510,7 @@ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "1.2.0" + "p-limit": "^1.1.0" } }, "p-try": { @@ -3524,11 +3531,11 @@ "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", "dev": true, "requires": { - "asn1.js": "4.10.1", - "browserify-aes": "1.2.0", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.14" + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" } }, "parse-json": { @@ -3537,7 +3544,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "pascalcase": { @@ -3588,7 +3595,7 @@ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, "requires": { - "pify": "2.3.0" + "pify": "^2.0.0" } }, "pause-stream": { @@ -3597,7 +3604,7 @@ "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "dev": true, "requires": { - "through": "2.3.8" + "through": "~2.3" } }, "pbkdf2": { @@ -3606,11 +3613,11 @@ "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", "dev": true, "requires": { - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.11" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "pify": { @@ -3649,7 +3656,7 @@ "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", "dev": true, "requires": { - "event-stream": "3.3.4" + "event-stream": "~3.3.0" } }, "pseudomap": { @@ -3664,11 +3671,11 @@ "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", "dev": true, "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "parse-asn1": "5.1.0", - "randombytes": "2.0.6" + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" } }, "punycode": { @@ -3699,7 +3706,7 @@ "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.1.0" } }, "randomfill": { @@ -3708,8 +3715,8 @@ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dev": true, "requires": { - "randombytes": "2.0.6", - "safe-buffer": "5.1.1" + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" } }, "read-pkg": { @@ -3718,9 +3725,9 @@ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "dev": true, "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" } }, "read-pkg-up": { @@ -3729,8 +3736,8 @@ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" } }, "readable-stream": { @@ -3739,13 +3746,13 @@ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "readdirp": { @@ -3754,10 +3761,19 @@ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.6", - "set-immediate-shim": "1.0.1" + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" } }, "regex-not": { @@ -3766,8 +3782,8 @@ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" } }, "remove-trailing-separator": { @@ -3811,7 +3827,7 @@ "integrity": "sha512-QdgZ5bjR1WAlpLaO5yHepFvC+o3rCr6wpfE2tpJNMkXdulf2jKomQBdNRQITF3ZKHNlT71syG98yQP03gasgnA==", "dev": true, "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } }, "resolve-url": { @@ -3832,7 +3848,7 @@ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "ripemd160": { @@ -3841,8 +3857,8 @@ "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", "dev": true, "requires": { - "hash-base": "2.0.2", - "inherits": "2.0.3" + "hash-base": "^2.0.0", + "inherits": "^2.0.1" } }, "safe-buffer": { @@ -3857,7 +3873,7 @@ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { - "ret": "0.1.15" + "ret": "~0.1.10" } }, "safer-buffer": { @@ -3894,10 +3910,10 @@ "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" }, "dependencies": { "extend-shallow": { @@ -3906,7 +3922,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -3923,8 +3939,8 @@ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "shebang-command": { @@ -3933,7 +3949,7 @@ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -3948,10 +3964,21 @@ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", "dev": true, "requires": { - "array-filter": "0.0.1", - "array-map": "0.0.0", - "array-reduce": "0.0.0", - "jsonify": "0.0.0" + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" } }, "should": { @@ -3989,6 +4016,25 @@ "integrity": "sha1-ATKgVBemEmhmQmrPEW8e1WI6XNA=", "dev": true }, + "shx": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/shx/-/shx-0.2.2.tgz", + "integrity": "sha1-CjBNAgsO3xMGrYFXDoDwNG31ijk=", + "dev": true, + "requires": { + "es6-object-assign": "^1.0.3", + "minimist": "^1.2.0", + "shelljs": "^0.7.3" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -4001,14 +4047,14 @@ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, "requires": { - "base": "0.11.2", - "debug": "2.6.8", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.1", - "use": "3.1.0" + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" }, "dependencies": { "define-property": { @@ -4017,7 +4063,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -4026,7 +4072,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "source-map": { @@ -4043,9 +4089,9 @@ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" }, "dependencies": { "define-property": { @@ -4054,7 +4100,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { @@ -4063,7 +4109,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -4072,7 +4118,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -4081,9 +4127,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "kind-of": { @@ -4100,7 +4146,7 @@ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.2.0" } }, "source-list-map": { @@ -4121,11 +4167,11 @@ "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", "dev": true, "requires": { - "atob": "2.1.0", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" + "atob": "^2.0.0", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" } }, "source-map-support": { @@ -4134,7 +4180,7 @@ "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", "dev": true, "requires": { - "source-map": "0.6.1" + "source-map": "^0.6.0" } }, "source-map-url": { @@ -4149,8 +4195,8 @@ "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "dev": true, "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { @@ -4165,8 +4211,8 @@ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { @@ -4181,7 +4227,7 @@ "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", "dev": true, "requires": { - "through": "2.3.8" + "through": "2" } }, "split-string": { @@ -4190,7 +4236,7 @@ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { - "extend-shallow": "3.0.2" + "extend-shallow": "^3.0.0" } }, "sprintf-js": { @@ -4205,8 +4251,8 @@ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" + "define-property": "^0.2.5", + "object-copy": "^0.1.0" }, "dependencies": { "define-property": { @@ -4215,7 +4261,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -4226,8 +4272,8 @@ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" } }, "stream-combiner": { @@ -4236,7 +4282,7 @@ "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", "dev": true, "requires": { - "duplexer": "0.1.1" + "duplexer": "~0.1.1" } }, "stream-http": { @@ -4245,11 +4291,11 @@ "integrity": "sha512-cQ0jo17BLca2r0GfRdZKYAGLU6JRoIWxqSOakUMuKOT6MOK7AAlE856L33QuDmAy/eeOrhLee3dZKX0Uadu93A==", "dev": true, "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.3", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" } }, "string-width": { @@ -4258,8 +4304,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "dependencies": { "ansi-regex": { @@ -4280,7 +4326,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -4291,9 +4337,9 @@ "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", "dev": true, "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.11.0", - "function-bind": "1.1.1" + "define-properties": "^1.1.2", + "es-abstract": "^1.4.3", + "function-bind": "^1.0.2" } }, "string_decoder": { @@ -4302,7 +4348,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "strip-ansi": { @@ -4311,7 +4357,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -4332,7 +4378,7 @@ "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } }, "tapable": { @@ -4353,7 +4399,7 @@ "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", "dev": true, "requires": { - "setimmediate": "1.0.5" + "setimmediate": "^1.0.4" } }, "to-arraybuffer": { @@ -4368,7 +4414,7 @@ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "to-regex": { @@ -4377,10 +4423,10 @@ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" } }, "to-regex-range": { @@ -4389,8 +4435,8 @@ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" } }, "tough-cookie": { @@ -4398,7 +4444,7 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "ts-loader": { @@ -4407,10 +4453,10 @@ "integrity": "sha512-8t3bu2FcEkXb+D4L+Cn8qiK2E2C6Ms4/GQChvz6IMbVurcFHLXrhW4EMtfaol1a1ASQACZGDUGit4NHnX9g7hQ==", "dev": true, "requires": { - "chalk": "2.3.2", - "enhanced-resolve": "3.4.1", - "loader-utils": "1.1.0", - "semver": "5.5.0" + "chalk": "^2.0.1", + "enhanced-resolve": "^3.0.0", + "loader-utils": "^1.0.2", + "semver": "^5.0.1" } }, "ts-node": { @@ -4419,14 +4465,14 @@ "integrity": "sha512-XK7QmDcNHVmZkVtkiwNDWiERRHPyU8nBqZB1+iv2UhOG0q3RQ9HsZ2CMqISlFbxjrYFGfG2mX7bW4dAyxBVzUw==", "dev": true, "requires": { - "arrify": "1.0.1", - "chalk": "2.3.2", - "diff": "3.2.0", - "make-error": "1.3.4", - "minimist": "1.2.0", - "mkdirp": "0.5.1", - "source-map-support": "0.5.4", - "yn": "2.0.0" + "arrify": "^1.0.0", + "chalk": "^2.3.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.3", + "yn": "^2.0.0" }, "dependencies": { "minimist": { @@ -4449,18 +4495,18 @@ "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "builtin-modules": "1.1.1", - "chalk": "2.3.2", - "commander": "2.15.1", - "diff": "3.2.0", - "glob": "7.1.1", - "js-yaml": "3.11.0", - "minimatch": "3.0.4", - "resolve": "1.7.0", - "semver": "5.5.0", - "tslib": "1.9.0", - "tsutils": "2.26.1" + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.12.1" }, "dependencies": { "commander": { @@ -4477,7 +4523,7 @@ "integrity": "sha512-bnm9bcjOqOr1UljleL94wVCDlpa6KjfGaTkefeLch4GRafgDkROxPizbB/FxTEdI++5JqhxczRy/Qub0syNqZA==", "dev": true, "requires": { - "tslib": "1.9.0" + "tslib": "^1.8.1" } }, "tty-browserify": { @@ -4498,8 +4544,8 @@ "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", "dev": true, "requires": { - "commander": "2.13.0", - "source-map": "0.6.1" + "commander": "~2.13.0", + "source-map": "~0.6.1" }, "dependencies": { "commander": { @@ -4523,9 +4569,9 @@ "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", "dev": true, "requires": { - "source-map": "0.5.7", - "uglify-js": "2.8.29", - "webpack-sources": "1.1.0" + "source-map": "^0.5.6", + "uglify-js": "^2.8.29", + "webpack-sources": "^1.0.1" }, "dependencies": { "source-map": { @@ -4540,9 +4586,9 @@ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" } }, "yargs": { @@ -4551,9 +4597,9 @@ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" } } @@ -4565,10 +4611,10 @@ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "dev": true, "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" }, "dependencies": { "extend-shallow": { @@ -4577,7 +4623,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "set-value": { @@ -4586,10 +4632,10 @@ "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" } } } @@ -4600,8 +4646,8 @@ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" + "has-value": "^0.3.1", + "isobject": "^3.0.0" }, "dependencies": { "has-value": { @@ -4610,9 +4656,9 @@ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" }, "dependencies": { "isobject": { @@ -4646,7 +4692,7 @@ "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=", "dev": true, "requires": { - "punycode": "2.1.0" + "punycode": "^2.1.0" }, "dependencies": { "punycode": { @@ -4686,8 +4732,8 @@ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.3.0.tgz", "integrity": "sha512-zPvPA3T7P6M+0iNsgX+iAcAz4GshKrowtQBHHc/28tVsBc8jK7VRCNX+2GEcoE6zDB6XqXhcyiUWPVZY6C70Cg==", "requires": { - "querystringify": "1.0.0", - "requires-port": "1.0.0" + "querystringify": "~1.0.0", + "requires-port": "~1.0.0" } }, "use": { @@ -4696,7 +4742,7 @@ "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.2" }, "dependencies": { "kind-of": { @@ -4741,8 +4787,8 @@ "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "dev": true, "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "vm-browserify": { @@ -4760,9 +4806,9 @@ "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", "dev": true, "requires": { - "chokidar": "2.0.3", - "graceful-fs": "4.1.11", - "neo-async": "2.5.0" + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" } }, "webpack": { @@ -4771,28 +4817,28 @@ "integrity": "sha512-3kOFejWqj5ISpJk4Qj/V7w98h9Vl52wak3CLiw/cDOfbVTq7FeoZ0SdoHHY9PYlHr50ZS42OfvzE2vB4nncKQg==", "dev": true, "requires": { - "acorn": "5.5.3", - "acorn-dynamic-import": "2.0.2", - "ajv": "6.4.0", - "ajv-keywords": "3.1.0", - "async": "2.6.0", - "enhanced-resolve": "3.4.1", - "escope": "3.6.0", - "interpret": "1.1.0", - "json-loader": "0.5.7", - "json5": "0.5.1", - "loader-runner": "2.3.0", - "loader-utils": "1.1.0", - "memory-fs": "0.4.1", - "mkdirp": "0.5.1", - "node-libs-browser": "2.1.0", - "source-map": "0.5.7", - "supports-color": "4.5.0", - "tapable": "0.2.8", - "uglifyjs-webpack-plugin": "0.4.6", - "watchpack": "1.5.0", - "webpack-sources": "1.1.0", - "yargs": "8.0.2" + "acorn": "^5.0.0", + "acorn-dynamic-import": "^2.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "async": "^2.1.2", + "enhanced-resolve": "^3.4.0", + "escope": "^3.6.0", + "interpret": "^1.0.0", + "json-loader": "^0.5.4", + "json5": "^0.5.1", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "mkdirp": "~0.5.0", + "node-libs-browser": "^2.0.0", + "source-map": "^0.5.3", + "supports-color": "^4.2.1", + "tapable": "^0.2.7", + "uglifyjs-webpack-plugin": "^0.4.6", + "watchpack": "^1.4.0", + "webpack-sources": "^1.0.1", + "yargs": "^8.0.2" }, "dependencies": { "has-flag": { @@ -4813,7 +4859,7 @@ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } } } @@ -4824,8 +4870,8 @@ "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", "dev": true, "requires": { - "source-list-map": "2.0.0", - "source-map": "0.6.1" + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" } }, "which": { @@ -4834,7 +4880,7 @@ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -4861,8 +4907,8 @@ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { "string-width": { @@ -4871,9 +4917,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } } } @@ -4889,8 +4935,8 @@ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", "requires": { - "sax": "1.2.4", - "xmlbuilder": "9.0.7" + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" } }, "xmlbuilder": { @@ -4922,19 +4968,19 @@ "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", "dev": true, "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "7.0.0" + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^7.0.0" }, "dependencies": { "camelcase": { @@ -4949,9 +4995,9 @@ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" }, "dependencies": { "string-width": { @@ -4960,9 +5006,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } } } @@ -4975,7 +5021,7 @@ "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" }, "dependencies": { "camelcase": { @@ -4986,6 +5032,12 @@ } } }, + "yarn": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.6.0.tgz", + "integrity": "sha1-nOxveYbcI3057HBc502VFV/lXUs=", + "dev": true + }, "yn": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", diff --git a/package.json b/package.json index abff6ade2d47..365c4b25986b 100644 --- a/package.json +++ b/package.json @@ -37,12 +37,14 @@ "mocha": "^3.5.3", "npm-run-all": "^4.1.2", "should": "5.2.0", + "shx": "^0.2.2", "ts-loader": "^2.3.7", "ts-node": "^5.0.1", "tslint": "^5.7.0", "typescript": "^2.5.2", "uglify-es": "^3.1.0", - "webpack": "^3.6.0" + "webpack": "^3.6.0", + "yarn": "^1.6.0" }, "homepage": "https://github.com/Azure/ms-rest-azure-js", "repository": { @@ -64,4 +66,4 @@ "prepare": "npm run build", "publish-preview": "npm test && shx rm -rf dist/test && node ./.scripts/publish" } -} \ No newline at end of file +} From 16b67d340c4e20459af6f281b76f951c3f85df66 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Wed, 16 May 2018 14:31:56 -0700 Subject: [PATCH 027/289] Don't fail on stub test --- test/placeholder.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/test/placeholder.ts b/test/placeholder.ts index 8407a21cd92e..1cf80277f705 100644 --- a/test/placeholder.ts +++ b/test/placeholder.ts @@ -1,7 +1,4 @@ -import * as assert from 'assert'; describe('ms-rest-azure-js', function() { - it("doesn't have any tests", function() { - assert.fail('Please add some tests'); - }); + it("doesn't have any tests"); }); From 76a9b21ccedf183368d3d2d5048d11d37fd92278 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Wed, 16 May 2018 15:50:44 -0700 Subject: [PATCH 028/289] Add scripts for manipulating ms-rest-js version --- .scripts/dependencies.js | 29 +++++++++++++++++++++++++++++ .scripts/latest.js | 4 ++++ .scripts/local.js | 3 +++ .scripts/preview.js | 4 ++++ package.json | 7 +++++-- 5 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 .scripts/dependencies.js create mode 100644 .scripts/latest.js create mode 100644 .scripts/local.js create mode 100644 .scripts/preview.js diff --git a/.scripts/dependencies.js b/.scripts/dependencies.js new file mode 100644 index 000000000000..7ba9220d4518 --- /dev/null +++ b/.scripts/dependencies.js @@ -0,0 +1,29 @@ +const fs = require("fs"); +const path = require("path"); +const { execSync } = require("child_process"); + +function updatePackageJsonDependency(dependencyName, dependencyVersion) { + const packageJsonFilePath = path.resolve(__dirname, "../package.json"); + + const packageJson = JSON.parse(fs.readFileSync(packageJsonFilePath)); + if (packageJson.dependencies[dependencyName] == dependencyVersion) { + console.log(`"${dependencyName}" is already set to "${dependencyVersion}".`); + } else { + console.log(`Changing "${dependencyName}" to "${dependencyVersion}"`) + packageJson.dependencies[dependencyName] = dependencyVersion; + + fs.writeFileSync(packageJsonFilePath, JSON.stringify(packageJson, undefined, " ")); + + const npmInstallCommand = `npm install ${dependencyName}`; + console.log(npmInstallCommand); + execSync(npmInstallCommand, {stdio:[0,1,2]}); + } +} + +function getNpmPackageVersion(packageName, tag) { + const npmViewResult = JSON.parse(execSync(`npm view ${packageName} --json`, { stdio: ['pipe', 'pipe', 'ignore'] })); + return npmViewResult['dist-tags'][tag]; +} + +exports.updatePackageJsonDependency = updatePackageJsonDependency; +exports.getNpmPackageVersion = getNpmPackageVersion; \ No newline at end of file diff --git a/.scripts/latest.js b/.scripts/latest.js new file mode 100644 index 000000000000..38500e0f10d1 --- /dev/null +++ b/.scripts/latest.js @@ -0,0 +1,4 @@ +const dependencies = require("./dependencies"); + +const previewVersion = dependencies.getNpmPackageVersion("ms-rest-js", "latest"); +dependencies.updatePackageJsonDependency("ms-rest-js", `^${previewVersion}`); \ No newline at end of file diff --git a/.scripts/local.js b/.scripts/local.js new file mode 100644 index 000000000000..8cd654724021 --- /dev/null +++ b/.scripts/local.js @@ -0,0 +1,3 @@ +const dependencies = require("./dependencies"); + +dependencies.updatePackageJsonDependency("ms-rest-js", "file:../ms-rest-js"); \ No newline at end of file diff --git a/.scripts/preview.js b/.scripts/preview.js new file mode 100644 index 000000000000..895afbc7d631 --- /dev/null +++ b/.scripts/preview.js @@ -0,0 +1,4 @@ +const dependencies = require("./dependencies"); + +const previewVersion = dependencies.getNpmPackageVersion("ms-rest-js", "preview"); +dependencies.updatePackageJsonDependency("ms-rest-js", `^${previewVersion}`); \ No newline at end of file diff --git a/package.json b/package.json index 2c741f8a9c28..bcf5a586759a 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "0.5.143" + "ms-rest-js": "^0.5.143" }, "devDependencies": { "@types/mocha": "^2.2.43", @@ -64,6 +64,9 @@ "test:unit": "mocha", "test:tslint": "tslint -p . -c tslint.json --exclude test/**/*.ts", "prepare": "npm run build", - "publish-preview": "npm test && shx rm -rf dist/test && node ./.scripts/publish" + "publish-preview": "npm test && shx rm -rf dist/test && node ./.scripts/publish", + "local": "node ./.scripts/local.js", + "preview": "node ./.scripts/preview.js", + "latest": "node ./.scripts/latest.js" } } From 4829c666c3032a419b6a1d202a3b2a56217defd9 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 17 May 2018 09:11:17 -0700 Subject: [PATCH 029/289] Update dependency scripts to work on all dependencies with cloned repositories --- .scripts/dependencies.js | 79 ++++++++++++++++++++++++++++++++++++++-- .scripts/latest.js | 7 +++- .scripts/local.js | 5 ++- .scripts/preview.js | 10 ++++- package-lock.json | 6 +-- 5 files changed, 95 insertions(+), 12 deletions(-) diff --git a/.scripts/dependencies.js b/.scripts/dependencies.js index 7ba9220d4518..b3192d4b3152 100644 --- a/.scripts/dependencies.js +++ b/.scripts/dependencies.js @@ -2,10 +2,76 @@ const fs = require("fs"); const path = require("path"); const { execSync } = require("child_process"); +/** + * Get the absolute path to the package.json in this repository. + * @returns {string} The absolute path to the package.json. + */ +function getPackageJsonFilePath() { + return path.resolve(__dirname, "../package.json"); +} + +/** + * Get the package.json file contents parsed as a JSON object. + * @param {string=} packageJsonFilePath The path to the package.json file to read. If this is not + * provided, then the package.json file at the root of this repository will be used. + * @returns {{}} The parsed package.json file contents. + */ +function getPackageJson(packageJsonFilePath) { + if (!packageJsonFilePath) { + packageJsonFilePath = getPackageJsonFilePath(); + } + return JSON.parse(fs.readFileSync(packageJsonFilePath)); +} + +/** + * Get the dependencies from the provided dependencies dictionary that have local clones. + * @param {{ [packageName: string]: string }} dependencies A dictionary of package names to package + * versions. + * @param {string[]} clonedRepositoryNames The array to put the names of the local cloned + * repositories into. + * @returns {void} + */ +function getClonedRepositories(dependencies, clonedRepositoryNames) { + if (clonedRepositoryNames && dependencies) { + for (const dependencyName in dependencies) { + if (clonedRepositoryNames.indexOf(dependencyName) === -1) { + const repoFolderPath = path.resolve(__dirname, "..", "..", dependencyName); + if (fs.existsSync(repoFolderPath)) { + clonedRepositoryNames.push(dependencyName); + } + } + } + } +} + +/** + * Get the names of the dependencies of this repository that have local clones. + * @returns {string[]} The names of the dependencies of this repository that have local clones. + */ +function getDependenciesWithClonedRepositories() { + const clonedRepositoryNames = []; + + const packageJson = getPackageJson(); + + getClonedRepositories(packageJson.dependencies, clonedRepositoryNames); + getClonedRepositories(packageJson.devDependencies, clonedRepositoryNames); + + return clonedRepositoryNames; +} +exports.getDependenciesWithClonedRepositories = getDependenciesWithClonedRepositories; + +/** + * Update this repository's package.json file's dependency version with the provided name to the + * provided version. If the dependency version in the package.json file changes, then "npm install" + * will be run for the changed dependency. + * @param {string} dependencyName The name of the dependency to update. + * @param {string} dependencyVersion The version to update the dependency to. + * @returns {void} + */ function updatePackageJsonDependency(dependencyName, dependencyVersion) { - const packageJsonFilePath = path.resolve(__dirname, "../package.json"); + const packageJsonFilePath = getPackageJsonFilePath(); - const packageJson = JSON.parse(fs.readFileSync(packageJsonFilePath)); + const packageJson = getPackageJson(packageJsonFilePath); if (packageJson.dependencies[dependencyName] == dependencyVersion) { console.log(`"${dependencyName}" is already set to "${dependencyVersion}".`); } else { @@ -19,11 +85,16 @@ function updatePackageJsonDependency(dependencyName, dependencyVersion) { execSync(npmInstallCommand, {stdio:[0,1,2]}); } } +exports.updatePackageJsonDependency = updatePackageJsonDependency; +/** + * Get the npm package version of the package with the provided name at the provided tag. + * @param {string} packageName The name of the package. + * @param {string} tag The tag of the version to retrieve. + * @returns {string?} The version of the provided package at the provided tag. + */ function getNpmPackageVersion(packageName, tag) { const npmViewResult = JSON.parse(execSync(`npm view ${packageName} --json`, { stdio: ['pipe', 'pipe', 'ignore'] })); return npmViewResult['dist-tags'][tag]; } - -exports.updatePackageJsonDependency = updatePackageJsonDependency; exports.getNpmPackageVersion = getNpmPackageVersion; \ No newline at end of file diff --git a/.scripts/latest.js b/.scripts/latest.js index 38500e0f10d1..1c2bdb3374bd 100644 --- a/.scripts/latest.js +++ b/.scripts/latest.js @@ -1,4 +1,7 @@ const dependencies = require("./dependencies"); -const previewVersion = dependencies.getNpmPackageVersion("ms-rest-js", "latest"); -dependencies.updatePackageJsonDependency("ms-rest-js", `^${previewVersion}`); \ No newline at end of file +const localDependencies = dependencies.getDependenciesWithClonedRepositories(); +for (const localDependency of localDependencies) { + const version = dependencies.getNpmPackageVersion(localDependency, "latest"); + dependencies.updatePackageJsonDependency(localDependency, `^${version}`); +} \ No newline at end of file diff --git a/.scripts/local.js b/.scripts/local.js index 8cd654724021..14863e48d3f3 100644 --- a/.scripts/local.js +++ b/.scripts/local.js @@ -1,3 +1,6 @@ const dependencies = require("./dependencies"); -dependencies.updatePackageJsonDependency("ms-rest-js", "file:../ms-rest-js"); \ No newline at end of file +const localDependencies = dependencies.getDependenciesWithClonedRepositories(); +for (const localDependency of localDependencies) { + dependencies.updatePackageJsonDependency(localDependency, `file:../${localDependency}`); +} \ No newline at end of file diff --git a/.scripts/preview.js b/.scripts/preview.js index 895afbc7d631..d8fa0e9a1f18 100644 --- a/.scripts/preview.js +++ b/.scripts/preview.js @@ -1,4 +1,10 @@ const dependencies = require("./dependencies"); -const previewVersion = dependencies.getNpmPackageVersion("ms-rest-js", "preview"); -dependencies.updatePackageJsonDependency("ms-rest-js", `^${previewVersion}`); \ No newline at end of file +const localDependencies = dependencies.getDependenciesWithClonedRepositories(); +for (const localDependency of localDependencies) { + let version = dependencies.getNpmPackageVersion(localDependency, "preview"); + if (!version) { + version = dependencies.getNpmPackageVersion(localDependency, "latest"); + } + dependencies.updatePackageJsonDependency(localDependency, `^${version}`); +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 24f4dee95388..9691aa8f2b2a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -73,9 +73,9 @@ "dev": true }, "@types/node": { - "version": "9.6.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.16.tgz", - "integrity": "sha512-fwUW7S8gaSVNpPa1XUdzI0URY71xqXsc90S9vKr2uFIUpVCKV+8ysnN9vvAFK8np4H03A7QGRkHpQvgah0964Q==" + "version": "9.6.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.17.tgz", + "integrity": "sha512-K/pOQpXevFVZYFWI+Oi6yDzVv4j665eEW3w5pXa/GOfWi7kwzHiSkX1kMEDwoAe0LcHFIOIezgOQfXfUXd392Q==" }, "@types/node-fetch": { "version": "1.6.9", From 7a61fc3a9bc2bab57228e4aeb278538b9870c218 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 17 May 2018 10:21:10 -0700 Subject: [PATCH 030/289] Update scripts to change main property and dependant local repos --- .scripts/dependencies.js | 71 ++++++++++++++++++++++++++++++++++++---- .scripts/latest.js | 4 ++- .scripts/local.js | 4 ++- .scripts/preview.js | 4 ++- package-lock.json | 6 ++-- package.json | 2 +- 6 files changed, 77 insertions(+), 14 deletions(-) diff --git a/.scripts/dependencies.js b/.scripts/dependencies.js index b3192d4b3152..cf30aff2db06 100644 --- a/.scripts/dependencies.js +++ b/.scripts/dependencies.js @@ -2,6 +2,16 @@ const fs = require("fs"); const path = require("path"); const { execSync } = require("child_process"); +/** + * Execute the provided command on the shell synchronously. + * @param {string} command The command to execute. + * @returns {void} + */ +function execute(command) { + console.log(command); + execSync(command, {stdio:[0,1,2]}); +} + /** * Get the absolute path to the package.json in this repository. * @returns {string} The absolute path to the package.json. @@ -10,6 +20,15 @@ function getPackageJsonFilePath() { return path.resolve(__dirname, "../package.json"); } +/** + * Get the absolute path to the local clone of the repository with the provided name. + * @param {string} repoName The name of the repository. + * @returns {string} The absolute path to the local clone of the repository. + */ +function getLocalRepositoryPath(repoName) { + return path.resolve(__dirname, "..", "..", repoName); +} + /** * Get the package.json file contents parsed as a JSON object. * @param {string=} packageJsonFilePath The path to the package.json file to read. If this is not @@ -35,7 +54,7 @@ function getClonedRepositories(dependencies, clonedRepositoryNames) { if (clonedRepositoryNames && dependencies) { for (const dependencyName in dependencies) { if (clonedRepositoryNames.indexOf(dependencyName) === -1) { - const repoFolderPath = path.resolve(__dirname, "..", "..", dependencyName); + const repoFolderPath = getLocalRepositoryPath(dependencyName); if (fs.existsSync(repoFolderPath)) { clonedRepositoryNames.push(dependencyName); } @@ -60,6 +79,25 @@ function getDependenciesWithClonedRepositories() { } exports.getDependenciesWithClonedRepositories = getDependenciesWithClonedRepositories; +/** + * Run a script with the provided name in the local clone of the repository with the provided name. + * @param {string} repoName The name of the repository to run the script in. + * @param {string} scriptName The name of the script to run in the local repository. + * @returns {void} + */ +function runLocalRepositoryNPMScript(repoName, scriptName) { + const repoFolderPath = getLocalRepositoryPath(repoName); + const packageJsonFilePath = path.join(repoFolderPath, "package.json"); + const packageJson = getPackageJson(packageJsonFilePath); + const repoScripts = packageJson.scripts; + if (repoScripts && repoScripts[scriptName]) { + execute(`npm run ${scriptName} --prefix ${repoFolderPath}`); + } else { + console.log(`No script named "${scriptName}" is specified in "${packageJsonFilePath}".`); + } +} +exports.runLocalRepositoryNPMScript = runLocalRepositoryNPMScript; + /** * Update this repository's package.json file's dependency version with the provided name to the * provided version. If the dependency version in the package.json file changes, then "npm install" @@ -73,16 +111,14 @@ function updatePackageJsonDependency(dependencyName, dependencyVersion) { const packageJson = getPackageJson(packageJsonFilePath); if (packageJson.dependencies[dependencyName] == dependencyVersion) { - console.log(`"${dependencyName}" is already set to "${dependencyVersion}".`); + console.log(`"${dependencyName}" is already set to "${dependencyVersion}" in "${packageJsonFilePath}".`); } else { - console.log(`Changing "${dependencyName}" to "${dependencyVersion}"`) + console.log(`Changing "${dependencyName}" to "${dependencyVersion}" in "${packageJsonFilePath}"`) packageJson.dependencies[dependencyName] = dependencyVersion; fs.writeFileSync(packageJsonFilePath, JSON.stringify(packageJson, undefined, " ")); - const npmInstallCommand = `npm install ${dependencyName}`; - console.log(npmInstallCommand); - execSync(npmInstallCommand, {stdio:[0,1,2]}); + execute(`npm install ${dependencyName}`); } } exports.updatePackageJsonDependency = updatePackageJsonDependency; @@ -97,4 +133,25 @@ function getNpmPackageVersion(packageName, tag) { const npmViewResult = JSON.parse(execSync(`npm view ${packageName} --json`, { stdio: ['pipe', 'pipe', 'ignore'] })); return npmViewResult['dist-tags'][tag]; } -exports.getNpmPackageVersion = getNpmPackageVersion; \ No newline at end of file +exports.getNpmPackageVersion = getNpmPackageVersion; + +/** + * Update the package.json property values for "main". + * @param {string} mainValue The value that will be used for "main". + * @returns {void} + */ +function updatePackageJsonMain(mainValue) { + const packageJsonFilePath = getPackageJsonFilePath(); + + const packageJson = getPackageJson(packageJsonFilePath); + + if (packageJson.main == mainValue) { + console.log(`"main" is already set to "${mainValue}" in "${packageJsonFilePath}".`); + } else { + console.log(`Changing "main" to "${mainValue}" in "${packageJsonFilePath}"`) + packageJson.main = mainValue; + + fs.writeFileSync(packageJsonFilePath, JSON.stringify(packageJson, undefined, " ")); + } +} +exports.updatePackageJsonMain = updatePackageJsonMain; \ No newline at end of file diff --git a/.scripts/latest.js b/.scripts/latest.js index 1c2bdb3374bd..6123f1d0c9d5 100644 --- a/.scripts/latest.js +++ b/.scripts/latest.js @@ -4,4 +4,6 @@ const localDependencies = dependencies.getDependenciesWithClonedRepositories(); for (const localDependency of localDependencies) { const version = dependencies.getNpmPackageVersion(localDependency, "latest"); dependencies.updatePackageJsonDependency(localDependency, `^${version}`); -} \ No newline at end of file + dependencies.runLocalRepositoryNPMScript(localDependency, "latest"); +} +dependencies.updatePackageJsonMain("./dist/lib/msRestAzure.js"); \ No newline at end of file diff --git a/.scripts/local.js b/.scripts/local.js index 14863e48d3f3..a32eedfe5bfb 100644 --- a/.scripts/local.js +++ b/.scripts/local.js @@ -3,4 +3,6 @@ const dependencies = require("./dependencies"); const localDependencies = dependencies.getDependenciesWithClonedRepositories(); for (const localDependency of localDependencies) { dependencies.updatePackageJsonDependency(localDependency, `file:../${localDependency}`); -} \ No newline at end of file + dependencies.runLocalRepositoryNPMScript(localDependency, "local"); +} +dependencies.updatePackageJsonMain("./lib/msRestAzure.ts"); \ No newline at end of file diff --git a/.scripts/preview.js b/.scripts/preview.js index d8fa0e9a1f18..06062cacaf3a 100644 --- a/.scripts/preview.js +++ b/.scripts/preview.js @@ -7,4 +7,6 @@ for (const localDependency of localDependencies) { version = dependencies.getNpmPackageVersion(localDependency, "latest"); } dependencies.updatePackageJsonDependency(localDependency, `^${version}`); -} \ No newline at end of file + dependencies.runLocalRepositoryNPMScript(localDependency, "preview"); +} +dependencies.updatePackageJsonMain("./dist/lib/msRestAzure.js"); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9691aa8f2b2a..03135e663da9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3382,9 +3382,9 @@ "dev": true }, "ms-rest-js": { - "version": "0.5.143", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.5.143.tgz", - "integrity": "sha1-WAV99QpaXZIAOKLBcaJnt25bzRA=", + "version": "0.5.149", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.5.149.tgz", + "integrity": "sha1-PdxSCQrqW1frMZ1QSGKsP0G9P7M=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", diff --git a/package.json b/package.json index bcf5a586759a..8bfb2a94af0e 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "^0.5.143" + "ms-rest-js": "^0.5.149" }, "devDependencies": { "@types/mocha": "^2.2.43", From 6ca30a186a5bf63fece066ad36d17b5f95d74929 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 17 May 2018 13:10:33 -0700 Subject: [PATCH 031/289] Delete node_modules and package-lock.json before installing all dependencies --- .scripts/dependencies.js | 48 ++++++++++++++++++++++++++++++++++------ .scripts/latest.js | 12 ++++++++-- .scripts/local.js | 10 ++++++++- .scripts/preview.js | 12 ++++++++-- package.json | 2 +- 5 files changed, 71 insertions(+), 13 deletions(-) diff --git a/.scripts/dependencies.js b/.scripts/dependencies.js index cf30aff2db06..8c7c62d79f44 100644 --- a/.scripts/dependencies.js +++ b/.scripts/dependencies.js @@ -5,11 +5,20 @@ const { execSync } = require("child_process"); /** * Execute the provided command on the shell synchronously. * @param {string} command The command to execute. + * @param {string} workingDirectory The working directory to execute the command in. * @returns {void} */ -function execute(command) { - console.log(command); - execSync(command, {stdio:[0,1,2]}); +function execute(command, workingDirectory) { + console.log(`Running "${command}" in "${workingDirectory}"...`); + execSync(command, {cwd: workingDirectory, stdio:[0,1,2]}); +} + +/** + * Get the absolute path to this repository's folder path. + * @returns {string} The absolute path to this repository's folder path. + */ +function getThisRepositoryFolderPath() { + return path.resolve(__dirname, ".."); } /** @@ -91,7 +100,7 @@ function runLocalRepositoryNPMScript(repoName, scriptName) { const packageJson = getPackageJson(packageJsonFilePath); const repoScripts = packageJson.scripts; if (repoScripts && repoScripts[scriptName]) { - execute(`npm run ${scriptName} --prefix ${repoFolderPath}`); + execute(`npm run ${scriptName}`, repoFolderPath); } else { console.log(`No script named "${scriptName}" is specified in "${packageJsonFilePath}".`); } @@ -104,9 +113,11 @@ exports.runLocalRepositoryNPMScript = runLocalRepositoryNPMScript; * will be run for the changed dependency. * @param {string} dependencyName The name of the dependency to update. * @param {string} dependencyVersion The version to update the dependency to. - * @returns {void} + * @returns {boolean} Whether or not the dependency needs to be installed. */ function updatePackageJsonDependency(dependencyName, dependencyVersion) { + let dependencyChanged = false; + const packageJsonFilePath = getPackageJsonFilePath(); const packageJson = getPackageJson(packageJsonFilePath); @@ -117,12 +128,35 @@ function updatePackageJsonDependency(dependencyName, dependencyVersion) { packageJson.dependencies[dependencyName] = dependencyVersion; fs.writeFileSync(packageJsonFilePath, JSON.stringify(packageJson, undefined, " ")); - - execute(`npm install ${dependencyName}`); + + dependencyChanged = true; } + + return dependencyChanged; } exports.updatePackageJsonDependency = updatePackageJsonDependency; +/** + * Run NPM install in this repository + * @returns {void} + */ +function refreshNodeModules() { + if (fs.existsSync("./node_modules")) { + try { + execute(`shx rm ./package-lock.json`, getThisRepositoryFolderPath()); + } catch (error) { + } + try { + execute(`shx rm -rf ./node_modules`, getThisRepositoryFolderPath()); + } catch (error) { + // This will always throw an exception because we're trying to delete shx, which is currently + // running. + } + } + execute(`npm install`, getThisRepositoryFolderPath()); +} +exports.refreshNodeModules = refreshNodeModules; + /** * Get the npm package version of the package with the provided name at the provided tag. * @param {string} packageName The name of the package. diff --git a/.scripts/latest.js b/.scripts/latest.js index 6123f1d0c9d5..d421d3e584d6 100644 --- a/.scripts/latest.js +++ b/.scripts/latest.js @@ -2,8 +2,16 @@ const dependencies = require("./dependencies"); const localDependencies = dependencies.getDependenciesWithClonedRepositories(); for (const localDependency of localDependencies) { - const version = dependencies.getNpmPackageVersion(localDependency, "latest"); - dependencies.updatePackageJsonDependency(localDependency, `^${version}`); dependencies.runLocalRepositoryNPMScript(localDependency, "latest"); } +let refreshNodeModules = false; +for (const localDependency of localDependencies) { + const version = dependencies.getNpmPackageVersion(localDependency, "latest"); + if (dependencies.updatePackageJsonDependency(localDependency, `^${version}`)) { + refreshNodeModules = true; + } +} +if (refreshNodeModules) { + dependencies.refreshNodeModules(); +} dependencies.updatePackageJsonMain("./dist/lib/msRestAzure.js"); \ No newline at end of file diff --git a/.scripts/local.js b/.scripts/local.js index a32eedfe5bfb..6b4971506152 100644 --- a/.scripts/local.js +++ b/.scripts/local.js @@ -2,7 +2,15 @@ const dependencies = require("./dependencies"); const localDependencies = dependencies.getDependenciesWithClonedRepositories(); for (const localDependency of localDependencies) { - dependencies.updatePackageJsonDependency(localDependency, `file:../${localDependency}`); dependencies.runLocalRepositoryNPMScript(localDependency, "local"); } +let refreshNodeModules = false; +for (const localDependency of localDependencies) { + if (dependencies.updatePackageJsonDependency(localDependency, `file:../${localDependency}`)) { + refreshNodeModules = true; + } +} +if (refreshNodeModules) { + dependencies.refreshNodeModules(); +} dependencies.updatePackageJsonMain("./lib/msRestAzure.ts"); \ No newline at end of file diff --git a/.scripts/preview.js b/.scripts/preview.js index 06062cacaf3a..514390914aa9 100644 --- a/.scripts/preview.js +++ b/.scripts/preview.js @@ -1,12 +1,20 @@ const dependencies = require("./dependencies"); const localDependencies = dependencies.getDependenciesWithClonedRepositories(); +for (const localDependency of localDependencies) { + dependencies.runLocalRepositoryNPMScript(localDependency, "preview"); +} +let refreshNodeModules = false; for (const localDependency of localDependencies) { let version = dependencies.getNpmPackageVersion(localDependency, "preview"); if (!version) { version = dependencies.getNpmPackageVersion(localDependency, "latest"); } - dependencies.updatePackageJsonDependency(localDependency, `^${version}`); - dependencies.runLocalRepositoryNPMScript(localDependency, "preview"); + if (dependencies.updatePackageJsonDependency(localDependency, `^${version}`)) { + refreshNodeModules = true; + } +} +if (refreshNodeModules) { + dependencies.refreshNodeModules(); } dependencies.updatePackageJsonMain("./dist/lib/msRestAzure.js"); \ No newline at end of file diff --git a/package.json b/package.json index 8bfb2a94af0e..65c2401c3ffc 100644 --- a/package.json +++ b/package.json @@ -69,4 +69,4 @@ "preview": "node ./.scripts/preview.js", "latest": "node ./.scripts/latest.js" } -} +} \ No newline at end of file From 326e693f81522356e2a1e4ed492b027f58a7c960 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 17 May 2018 13:25:13 -0700 Subject: [PATCH 032/289] Update package-lock.json --- package-lock.json | 1273 ++++++++++++++------------------------------- 1 file changed, 401 insertions(+), 872 deletions(-) diff --git a/package-lock.json b/package-lock.json index 03135e663da9..7ba454fae975 100644 --- a/package-lock.json +++ b/package-lock.json @@ -140,21 +140,21 @@ } }, "ajv": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", - "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", + "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", "dev": true, "requires": { - "fast-deep-equal": "^1.0.0", + "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.3.0", - "uri-js": "^3.0.2" + "uri-js": "^4.2.1" } }, "ajv-keywords": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz", - "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", "dev": true }, "align-text": { @@ -297,9 +297,9 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "atob": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.0.tgz", - "integrity": "sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", "dev": true }, "babel-code-frame": { @@ -408,9 +408,9 @@ } }, "base64-js": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", - "integrity": "sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", "dev": true }, "big.js": { @@ -497,9 +497,9 @@ } }, "browserify-cipher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", - "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dev": true, "requires": { "browserify-aes": "^1.0.4", @@ -508,9 +508,9 @@ } }, "browserify-des": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", - "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", + "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", "dev": true, "requires": { "cipher-base": "^1.0.1", @@ -563,6 +563,12 @@ "isarray": "^1.0.0" } }, + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "dev": true + }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", @@ -615,9 +621,9 @@ } }, "chalk": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -632,9 +638,9 @@ "dev": true }, "supports-color": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -794,9 +800,9 @@ "dev": true }, "create-ecdh": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", - "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "dev": true, "requires": { "bn.js": "^4.1.0", @@ -804,21 +810,22 @@ } }, "create-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", - "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", - "ripemd160": "^2.0.0", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", "sha.js": "^2.4.0" } }, "create-hmac": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", - "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { "cipher-base": "^1.0.3", @@ -830,12 +837,14 @@ } }, "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "lru-cache": "^4.0.1", + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" } @@ -974,9 +983,9 @@ "dev": true }, "diffie-hellman": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", - "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { "bn.js": "^4.1.0", @@ -1260,6 +1269,19 @@ "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } } }, "expand-brackets": { @@ -1390,9 +1412,9 @@ } }, "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, "fast-json-stable-stringify": { @@ -1505,51 +1527,36 @@ "dev": true }, "fsevents": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", - "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", "dev": true, "optional": true, "requires": { - "nan": "^2.3.0", - "node-pre-gyp": "^0.6.39" + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" }, "dependencies": { "abbrev": { - "version": "1.1.0", - "resolved": false, - "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", + "version": "1.1.1", + "bundled": true, "dev": true, "optional": true }, - "ajv": { - "version": "4.11.8", - "resolved": false, - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "optional": true, - "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" - } - }, "ansi-regex": { "version": "2.1.1", - "resolved": false, - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "aproba": { - "version": "1.1.1", - "resolved": false, - "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", + "version": "1.2.0", + "bundled": true, "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.4", - "resolved": false, - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1557,170 +1564,50 @@ "readable-stream": "^2.0.6" } }, - "asn1": { - "version": "0.2.3", - "resolved": false, - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "resolved": false, - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": false, - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": false, - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "resolved": false, - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", - "dev": true, - "optional": true - }, "balanced-match": { - "version": "0.4.2", - "resolved": false, - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "version": "1.0.0", + "bundled": true, "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": false, - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "block-stream": { - "version": "0.0.9", - "resolved": false, - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "requires": { - "inherits": "~2.0.0" - } - }, - "boom": { - "version": "2.10.1", - "resolved": false, - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true, - "requires": { - "hoek": "2.x.x" - } - }, "brace-expansion": { - "version": "1.1.7", - "resolved": false, - "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", + "version": "1.1.11", + "bundled": true, "dev": true, "requires": { - "balanced-match": "^0.4.1", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "buffer-shims": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": false, - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true, - "optional": true - }, - "co": { - "version": "4.6.0", - "resolved": false, - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "chownr": { + "version": "1.0.1", + "bundled": true, "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "resolved": false, - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, - "combined-stream": { - "version": "1.0.5", - "resolved": false, - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, "concat-map": { "version": "0.0.1", - "resolved": false, - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "console-control-strings": { "version": "1.1.0", - "resolved": false, - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "bundled": true, "dev": true }, "core-util-is": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "resolved": false, - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "bundled": true, "dev": true, - "requires": { - "boom": "2.x.x" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": false, - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "^1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - } - } + "optional": true }, "debug": { - "version": "2.6.8", - "resolved": false, - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "version": "2.6.9", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1728,108 +1615,41 @@ } }, "deep-extend": { - "version": "0.4.2", - "resolved": false, - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "version": "0.5.1", + "bundled": true, "dev": true, "optional": true }, - "delayed-stream": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, "delegates": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "bundled": true, "dev": true, "optional": true }, "detect-libc": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-ca1dIEvxempsqPRQxhRUBm70YeE=", + "version": "1.0.3", + "bundled": true, "dev": true, "optional": true }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": false, - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "fs-minipass": { + "version": "1.2.5", + "bundled": true, "dev": true, "optional": true, "requires": { - "jsbn": "~0.1.0" - } - }, - "extend": { - "version": "3.0.1", - "resolved": false, - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": false, - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "resolved": false, - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true, - "optional": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.12" + "minipass": "^2.2.1" } }, "fs.realpath": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fstream": { - "version": "1.0.11", - "resolved": false, - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "bundled": true, "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "resolved": false, - "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", - "dev": true, - "optional": true, - "requires": { - "fstream": "^1.0.0", - "inherits": "2", - "minimatch": "^3.0.0" - } + "optional": true }, "gauge": { "version": "2.7.4", - "resolved": false, - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1843,30 +1663,11 @@ "wide-align": "^1.1.0" } }, - "getpass": { - "version": "0.1.7", - "resolved": false, - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "^1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - } - } - }, "glob": { "version": "7.1.2", - "resolved": false, - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, + "optional": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1876,72 +1677,35 @@ "path-is-absolute": "^1.0.0" } }, - "graceful-fs": { - "version": "4.1.11", - "resolved": false, - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "har-schema": { - "version": "1.0.5", - "resolved": false, - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "resolved": false, - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "dev": true, - "optional": true, - "requires": { - "ajv": "^4.9.1", - "har-schema": "^1.0.5" - } - }, "has-unicode": { "version": "2.0.1", - "resolved": false, - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "bundled": true, "dev": true, "optional": true }, - "hawk": { - "version": "3.1.3", - "resolved": false, - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "iconv-lite": { + "version": "0.4.21", + "bundled": true, "dev": true, + "optional": true, "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" + "safer-buffer": "^2.1.0" } }, - "hoek": { - "version": "2.16.3", - "resolved": false, - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "resolved": false, - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "ignore-walk": { + "version": "3.0.1", + "bundled": true, "dev": true, "optional": true, "requires": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "minimatch": "^3.0.4" } }, "inflight": { "version": "1.0.6", - "resolved": false, - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, + "optional": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -1949,150 +1713,63 @@ }, "inherits": { "version": "2.0.3", - "resolved": false, - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "ini": { - "version": "1.3.4", - "resolved": false, - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "version": "1.3.5", + "bundled": true, "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "^1.0.0" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true, - "optional": true - }, "isarray": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": false, - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "resolved": false, - "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", - "dev": true, - "optional": true, - "requires": { - "jsbn": "~0.1.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": false, - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "bundled": true, "dev": true, "optional": true }, - "json-schema": { - "version": "0.2.3", - "resolved": false, - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": false, - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "optional": true, - "requires": { - "jsonify": "~0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": false, - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": false, - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "resolved": false, - "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "minimatch": { + "version": "3.0.4", + "bundled": true, "dev": true, - "optional": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - } + "brace-expansion": "^1.1.7" } }, - "mime-db": { - "version": "1.27.0", - "resolved": false, - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", + "minimist": { + "version": "0.0.8", + "bundled": true, "dev": true }, - "mime-types": { - "version": "2.1.15", - "resolved": false, - "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "minipass": { + "version": "2.2.4", + "bundled": true, "dev": true, "requires": { - "mime-db": "~1.27.0" + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" } }, - "minimatch": { - "version": "3.0.4", - "resolved": false, - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "minizlib": { + "version": "1.1.0", + "bundled": true, "dev": true, + "optional": true, "requires": { - "brace-expansion": "^1.1.7" + "minipass": "^2.2.1" } }, - "minimist": { - "version": "0.0.8", - "resolved": false, - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, "mkdirp": { "version": "0.5.1", - "resolved": false, - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -2100,35 +1777,42 @@ }, "ms": { "version": "2.0.0", - "resolved": false, - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true, "optional": true }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, "node-pre-gyp": { - "version": "0.6.39", - "resolved": false, - "integrity": "sha512-OsJV74qxnvz/AMGgcfZoDaeDXKD3oY3QVIbBmwszTFkRisTSXbMQyn4UWzUMOtA5SVhrBZOTp0wcoSBgfMfMmQ==", + "version": "0.10.0", + "bundled": true, "dev": true, "optional": true, "requires": { "detect-libc": "^1.0.2", - "hawk": "3.1.3", "mkdirp": "^0.5.1", + "needle": "^2.2.0", "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", "rc": "^1.1.7", - "request": "2.81.0", "rimraf": "^2.6.1", "semver": "^5.3.0", - "tar": "^2.2.1", - "tar-pack": "^3.4.0" + "tar": "^4" } }, "nopt": { "version": "4.0.1", - "resolved": false, - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2136,10 +1820,25 @@ "osenv": "^0.1.4" } }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, "npmlog": { - "version": "4.1.0", - "resolved": false, - "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", + "version": "4.1.2", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2151,28 +1850,18 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": false, - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, - "oauth-sign": { - "version": "0.8.2", - "resolved": false, - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true, - "optional": true - }, "object-assign": { "version": "4.1.1", - "resolved": false, - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true, "optional": true }, "once": { "version": "1.4.0", - "resolved": false, - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1" @@ -2180,22 +1869,19 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "bundled": true, "dev": true, "optional": true }, "osenv": { - "version": "0.1.4", - "resolved": false, - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "version": "0.1.5", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2205,45 +1891,23 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": false, - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "resolved": false, - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "bundled": true, "dev": true, "optional": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": false, - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": false, - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "resolved": false, - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "version": "2.0.0", + "bundled": true, "dev": true, "optional": true }, "rc": { - "version": "1.2.1", - "resolved": false, - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "version": "1.2.7", + "bundled": true, "dev": true, "optional": true, "requires": { - "deep-extend": "~0.4.0", + "deep-extend": "^0.5.1", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" @@ -2251,135 +1915,74 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": false, - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "bundled": true, "dev": true, "optional": true } } }, "readable-stream": { - "version": "2.2.9", - "resolved": false, - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "version": "2.3.6", + "bundled": true, "dev": true, + "optional": true, "requires": { - "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", - "inherits": "~2.0.1", + "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, - "request": { - "version": "2.81.0", - "resolved": false, - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", - "forever-agent": "~0.6.1", - "form-data": "~2.1.1", - "har-validator": "~4.2.1", - "hawk": "~3.1.3", - "http-signature": "~1.1.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "oauth-sign": "~0.8.1", - "performance-now": "^0.2.0", - "qs": "~6.4.0", - "safe-buffer": "^5.0.1", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.0.0" - } - }, "rimraf": { - "version": "2.6.1", - "resolved": false, - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "version": "2.6.2", + "bundled": true, "dev": true, + "optional": true, "requires": { "glob": "^7.0.5" } }, "safe-buffer": { - "version": "5.0.1", - "resolved": false, - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", + "version": "5.1.1", + "bundled": true, "dev": true }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, "semver": { - "version": "5.3.0", - "resolved": false, - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "version": "5.5.0", + "bundled": true, "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "resolved": false, - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "resolved": false, - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true, "optional": true }, - "sntp": { - "version": "1.0.9", - "resolved": false, - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true, - "requires": { - "hoek": "2.x.x" - } - }, - "sshpk": { - "version": "1.13.0", - "resolved": false, - "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", - "dev": true, - "optional": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jodid25519": "^1.0.0", - "jsbn": "~0.1.0", - "tweetnacl": "~0.14.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - } - } - }, "string-width": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -2388,25 +1991,17 @@ } }, "string_decoder": { - "version": "1.0.1", - "resolved": false, - "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", + "version": "1.1.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "~5.1.0" } }, - "stringstream": { - "version": "0.0.5", - "resolved": false, - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true, - "optional": true - }, "strip-ansi": { "version": "3.0.1", - "resolved": false, - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -2414,100 +2009,34 @@ }, "strip-json-comments": { "version": "2.0.1", - "resolved": false, - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "bundled": true, "dev": true, "optional": true }, "tar": { - "version": "2.2.1", - "resolved": false, - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "dev": true, - "requires": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" - } - }, - "tar-pack": { - "version": "3.4.0", - "resolved": false, - "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", + "version": "4.4.1", + "bundled": true, "dev": true, "optional": true, "requires": { - "debug": "^2.2.0", - "fstream": "^1.0.10", - "fstream-ignore": "^1.0.5", - "once": "^1.3.3", - "readable-stream": "^2.1.4", - "rimraf": "^2.5.1", - "tar": "^2.2.1", - "uid-number": "^0.0.6" + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" } }, - "tough-cookie": { - "version": "2.3.2", - "resolved": false, - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", - "dev": true, - "optional": true, - "requires": { - "punycode": "^1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": false, - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": false, - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "resolved": false, - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", - "dev": true, - "optional": true - }, "util-deprecate": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "uuid": { - "version": "3.0.1", - "resolved": false, - "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", + "bundled": true, "dev": true, "optional": true }, - "verror": { - "version": "1.3.6", - "resolved": false, - "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, "wide-align": { "version": "1.1.2", - "resolved": false, - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2516,8 +2045,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, "dev": true } } @@ -2662,12 +2195,13 @@ } }, "hash-base": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", - "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "dev": true, "requires": { - "inherits": "^2.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "hash.js": { @@ -3038,14 +2572,14 @@ } }, "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", + "parse-json": "^4.0.0", + "pify": "^3.0.0", "strip-bom": "^3.0.0" } }, @@ -3077,9 +2611,9 @@ } }, "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true }, "lodash._baseassign": { @@ -3157,9 +2691,9 @@ "dev": true }, "lru-cache": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", - "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -3201,18 +2735,6 @@ "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1" - }, - "dependencies": { - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - } } }, "mem": { @@ -3299,9 +2821,9 @@ "dev": true }, "minimalistic-assert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, "minimalistic-crypto-utils": { @@ -3438,9 +2960,9 @@ } }, "neo-async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.0.tgz", - "integrity": "sha512-nJmSswG4As/MkRq7QZFuH/sf/yuv8ODdMZrY4Bedjp77a5MK4A6s7YbBB64c9u79EBUOfXUXBvArmvzTD0X+6g==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", + "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==", "dev": true }, "next-tick": { @@ -3449,6 +2971,12 @@ "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, + "nice-try": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", + "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", + "dev": true + }, "node-fetch": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", @@ -3511,70 +3039,20 @@ } }, "npm-run-all": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.2.tgz", - "integrity": "sha512-Z2aRlajMK4SQ8u19ZA75NZZu7wupfCNQWdYosIi8S6FgBdGf/8Y6Hgyjdc8zU2cYmIRVCx1nM80tJPkdEd+UYg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.3.tgz", + "integrity": "sha512-aOG0N3Eo/WW+q6sUIdzcV2COS8VnTZCmdji0VQIAZF3b+a3YWb0AD0vFIyjKec18A7beLGbaQ5jFTNI2bPt9Cg==", "dev": true, "requires": { "ansi-styles": "^3.2.0", "chalk": "^2.1.0", - "cross-spawn": "^5.1.0", + "cross-spawn": "^6.0.4", "memorystream": "^0.3.1", "minimatch": "^3.0.4", "ps-tree": "^1.1.0", "read-pkg": "^3.0.0", "shell-quote": "^1.6.1", "string.prototype.padend": "^3.0.0" - }, - "dependencies": { - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - } } }, "npm-run-path": { @@ -3707,9 +3185,9 @@ "dev": true }, "parse-asn1": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", - "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", "dev": true, "requires": { "asn1.js": "^4.0.0", @@ -3720,12 +3198,13 @@ } }, "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "error-ex": "^1.2.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, "pascalcase": { @@ -3771,12 +3250,12 @@ "dev": true }, "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "pify": "^2.0.0" + "pify": "^3.0.0" } }, "pause-stream": { @@ -3789,9 +3268,9 @@ } }, "pbkdf2": { - "version": "3.0.14", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", - "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", + "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -3802,9 +3281,9 @@ } }, "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, "posix-character-classes": { @@ -3847,9 +3326,9 @@ "dev": true }, "public-encrypt": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", - "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", + "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", "dev": true, "requires": { "bn.js": "^4.1.0", @@ -3901,14 +3380,14 @@ } }, "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { - "load-json-file": "^2.0.0", + "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "path-type": "^3.0.0" } }, "read-pkg-up": { @@ -3919,6 +3398,55 @@ "requires": { "find-up": "^2.0.0", "read-pkg": "^2.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + } } }, "readable-stream": { @@ -4003,9 +3531,9 @@ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, "resolve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.0.tgz", - "integrity": "sha512-QdgZ5bjR1WAlpLaO5yHepFvC+o3rCr6wpfE2tpJNMkXdulf2jKomQBdNRQITF3ZKHNlT71syG98yQP03gasgnA==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", "dev": true, "requires": { "path-parse": "^1.0.5" @@ -4033,19 +3561,19 @@ } }, "ripemd160": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", - "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, "requires": { - "hash-base": "^2.0.0", + "hash-base": "^3.0.0", "inherits": "^2.0.1" } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, "safe-regex": { @@ -4343,12 +3871,12 @@ "dev": true }, "source-map-resolve": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", - "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", "dev": true, "requires": { - "atob": "^2.0.0", + "atob": "^2.1.1", "decode-uri-component": "^0.2.0", "resolve-url": "^0.2.1", "source-map-url": "^0.4.0", @@ -4356,11 +3884,12 @@ } }, "source-map-support": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", - "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", + "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", "dev": true, "requires": { + "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, @@ -4467,14 +3996,14 @@ } }, "stream-http": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.1.tgz", - "integrity": "sha512-cQ0jo17BLca2r0GfRdZKYAGLU6JRoIWxqSOakUMuKOT6MOK7AAlE856L33QuDmAy/eeOrhLee3dZKX0Uadu93A==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz", + "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", "dev": true, "requires": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.1", - "readable-stream": "^2.3.3", + "readable-stream": "^2.3.6", "to-arraybuffer": "^1.0.0", "xtend": "^4.0.0" } @@ -4575,9 +4104,9 @@ "dev": true }, "timers-browserify": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", - "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", "dev": true, "requires": { "setimmediate": "^1.0.4" @@ -4665,15 +4194,15 @@ } }, "tslib": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", - "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.1.tgz", + "integrity": "sha512-avfPS28HmGLLc2o4elcc2EIq2FcH++Yo5YxpBZi9Yw93BCTGFthI4HPE4Rpep6vSYQaK8e69PelM44tPj+RaQg==", "dev": true }, "tslint": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz", - "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.10.0.tgz", + "integrity": "sha1-EeJrzLiK+gLdDZlWyuPUVAtfVMM=", "dev": true, "requires": { "babel-code-frame": "^6.22.0", @@ -4699,9 +4228,9 @@ } }, "tsutils": { - "version": "2.26.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.26.1.tgz", - "integrity": "sha512-bnm9bcjOqOr1UljleL94wVCDlpa6KjfGaTkefeLch4GRafgDkROxPizbB/FxTEdI++5JqhxczRy/Qub0syNqZA==", + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.27.0.tgz", + "integrity": "sha512-JcyX25oM9pFcb3zh60OqG1St8p/uSqC5Bgipdo3ieacB/Ao4dPhm7hAtKT9NrEu23CyYrrgJPV3CqYfo+/+T4w==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -4714,9 +4243,9 @@ "dev": true }, "typescript": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.1.tgz", - "integrity": "sha512-Ao/f6d/4EPLq0YwzsQz8iXflezpTkQzqAyenTiw4kCUGr1uPiFLC3+fZ+gMZz6eeI/qdRUqvC+HxIJzUAzEFdg==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.3.tgz", + "integrity": "sha512-K7g15Bb6Ra4lKf7Iq2l/I5/En+hLIHmxWZGq3D4DIRNFxMNV6j2SHSvDOqs2tGd4UvD/fJvrwopzQXjLrT7Itw==", "dev": true }, "uglify-es": { @@ -4862,15 +4391,15 @@ } }, "upath": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.4.tgz", - "integrity": "sha512-d4SJySNBXDaQp+DPrziv3xGS6w3d2Xt69FijJr86zMPBy23JEloMCEOUBBzuN7xCtjLCnmB9tI/z7SBCahHBOw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", "dev": true }, "uri-js": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz", - "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.1.tgz", + "integrity": "sha512-jpKCA3HjsBfSDOEgxRDAxQCNyHfCPSbq57PqCkd3gAyBuPb3IWxw54EHncqESznIdqSetHfw3D7ylThu2Kcc9A==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -4982,9 +4511,9 @@ } }, "watchpack": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.5.0.tgz", - "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", "dev": true, "requires": { "chokidar": "^2.0.2", @@ -4993,9 +4522,9 @@ } }, "webpack": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.11.0.tgz", - "integrity": "sha512-3kOFejWqj5ISpJk4Qj/V7w98h9Vl52wak3CLiw/cDOfbVTq7FeoZ0SdoHHY9PYlHr50ZS42OfvzE2vB4nncKQg==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz", + "integrity": "sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ==", "dev": true, "requires": { "acorn": "^5.0.0", From 51a0763e4b233aa1541595666b179d9f0ccd8956 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Tue, 22 May 2018 13:24:29 -0700 Subject: [PATCH 033/289] Update ms-rest-js depdendency to 0.6.174 --- package-lock.json | 179 ++++++++++++++++++++++------------------------ package.json | 4 +- 2 files changed, 88 insertions(+), 95 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7ba454fae975..bdae002e2adf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -73,17 +73,9 @@ "dev": true }, "@types/node": { - "version": "9.6.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.17.tgz", - "integrity": "sha512-K/pOQpXevFVZYFWI+Oi6yDzVv4j665eEW3w5pXa/GOfWi7kwzHiSkX1kMEDwoAe0LcHFIOIezgOQfXfUXd392Q==" - }, - "@types/node-fetch": { - "version": "1.6.9", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-1.6.9.tgz", - "integrity": "sha512-n2r6WLoY7+uuPT7pnEtKJCmPUGyJ+cbyBR8Avnu4+m1nzz7DwBVuyIvvlBzCZ/nrpC7rIgb3D6pNavL7rFEa9g==", - "requires": { - "@types/node": "*" - } + "version": "9.6.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.18.tgz", + "integrity": "sha512-lywCnJQRSsu0kitHQ5nkb7Ay/ScdJPQjhWRtuf+G1DmNKJnPcdVyP0pYvdiDFKjzReC6NLWLgSyimno3kKfIig==" }, "@types/serve-static": { "version": "1.13.2", @@ -100,6 +92,11 @@ "integrity": "sha1-4rRgJDaF2+N3GC857zjTf00Veto=", "dev": true }, + "@types/tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha512-MDQLxNFRLasqS4UlkWMSACMKeSm1x4Q3TxzUC7KQUsh6RK1ZrQ0VEyE3yzXcBu+K8ejVj4wuX32eUG02yNp+YQ==" + }, "@types/uuid": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.3.tgz", @@ -277,12 +274,12 @@ "dev": true }, "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", "dev": true, "requires": { - "lodash": "^4.14.0" + "lodash": "^4.17.10" } }, "async-each": { @@ -302,6 +299,22 @@ "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", "dev": true }, + "axios": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", + "requires": { + "follow-redirects": "^1.3.0", + "is-buffer": "^1.1.5" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + } + } + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -884,10 +897,9 @@ "dev": true }, "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { "ms": "2.0.0" } @@ -1026,14 +1038,6 @@ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "~0.4.13" - } - }, "enhanced-resolve": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", @@ -1099,11 +1103,6 @@ "next-tick": "1" } }, - "es6-denodeify": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-denodeify/-/es6-denodeify-0.1.5.tgz", - "integrity": "sha1-MdTV/pxVA+ElRgQ5MQ4WoqPznB8=" - }, "es6-iterator": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", @@ -1299,6 +1298,15 @@ "to-regex": "^3.0.1" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", @@ -1423,34 +1431,6 @@ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "dev": true }, - "fetch-cookie": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.7.0.tgz", - "integrity": "sha512-Mm5pGlT3agW6t71xVM7vMZPIvI7T4FaTuFW4jari6dVzYHFDb3WZZsGpN22r/o3XMdkM0E7sPd1EGeyVbH2Tgg==", - "requires": { - "es6-denodeify": "^0.1.1", - "tough-cookie": "^2.3.1" - } - }, - "fetch-ponyfill": { - "version": "github:amarzavery/fetch-ponyfill#136e6f8192bdb2aa0b7983f0b3b4361c357be9db", - "from": "github:amarzavery/fetch-ponyfill#master", - "requires": { - "fetch-cookie": "~0.6.0", - "node-fetch": "~1.7.1" - }, - "dependencies": { - "fetch-cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.6.0.tgz", - "integrity": "sha1-T+xOQIzAAH9sBOVTYYr0s97jf2k=", - "requires": { - "es6-denodeify": "^0.1.1", - "tough-cookie": "^2.3.1" - } - } - } - }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -1483,6 +1463,14 @@ "locate-path": "^2.0.0" } }, + "follow-redirects": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz", + "integrity": "sha512-fdrt472/9qQ6Kgjvb935ig6vJCuofpBUD14f9Vb+SLlm7xIe4Qva5gey8EKtv8lp7ahE1wilg3xL1znpVGtZIA==", + "requires": { + "debug": "^3.1.0" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -2243,14 +2231,6 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, "ieee754": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", @@ -2478,6 +2458,15 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "isomorphic-tough-cookie": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-tough-cookie/-/isomorphic-tough-cookie-0.0.1.tgz", + "integrity": "sha512-9vV3Nl9PpBdd/LHIjBdiMYwWoAU3j+v+WvYJNkVnMrAgFBthgkIwQvwRl+M1J8R1AE51N/Dyv3nT38zzi7FSaw==", + "requires": { + "@types/tough-cookie": "^2.3.3", + "tough-cookie": "^2.3.4" + } + }, "isomorphic-xml2js": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/isomorphic-xml2js/-/isomorphic-xml2js-0.0.3.tgz", @@ -2895,30 +2884,39 @@ "lodash.create": "3.1.1", "mkdirp": "0.5.1", "supports-color": "3.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } } }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.5.149", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.5.149.tgz", - "integrity": "sha1-PdxSCQrqW1frMZ1QSGKsP0G9P7M=", + "version": "0.6.174", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.6.174.tgz", + "integrity": "sha1-5Cvs/qgNqpg7ckOjRSE7gkoCjGk=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", "@types/is-stream": "^1.1.0", "@types/node": "^9.4.6", - "@types/node-fetch": "^1.6.7", "@types/uuid": "^3.4.3", - "fetch-cookie": "^0.7.0", - "fetch-ponyfill": "github:amarzavery/fetch-ponyfill#136e6f8192bdb2aa0b7983f0b3b4361c357be9db", + "axios": "^0.18.0", "form-data": "^2.3.2", "is-buffer": "^2.0.0", "is-stream": "^1.1.0", + "isomorphic-tough-cookie": "^0.0.1", "isomorphic-xml2js": "^0.0.3", "url-parse": "^1.2.0", "uuid": "^3.2.1" @@ -2977,15 +2975,6 @@ "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", "dev": true }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - }, "node-libs-browser": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", @@ -3585,11 +3574,6 @@ "ret": "~0.1.10" } }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -3766,6 +3750,15 @@ "use": "^3.1.0" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", @@ -4228,9 +4221,9 @@ } }, "tsutils": { - "version": "2.27.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.27.0.tgz", - "integrity": "sha512-JcyX25oM9pFcb3zh60OqG1St8p/uSqC5Bgipdo3ieacB/Ao4dPhm7hAtKT9NrEu23CyYrrgJPV3CqYfo+/+T4w==", + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.27.1.tgz", + "integrity": "sha512-AE/7uzp32MmaHvNNFES85hhUDHFdFZp6OAiZcd6y4ZKKIg6orJTm8keYWBhIhrJQH3a4LzNKat7ZPXZt5aTf6w==", "dev": true, "requires": { "tslib": "^1.8.1" diff --git a/package.json b/package.json index 65c2401c3ffc..6a48a524bd2b 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "^0.5.149" + "ms-rest-js": "^0.6.174" }, "devDependencies": { "@types/mocha": "^2.2.43", @@ -69,4 +69,4 @@ "preview": "node ./.scripts/preview.js", "latest": "node ./.scripts/latest.js" } -} \ No newline at end of file +} From 056fed25b88c48c04db168688b483a555423b508 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Tue, 22 May 2018 15:09:05 -0700 Subject: [PATCH 034/289] Refactor writing package.json to file system --- .scripts/dependencies.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/.scripts/dependencies.js b/.scripts/dependencies.js index 8c7c62d79f44..858d7274bd24 100644 --- a/.scripts/dependencies.js +++ b/.scripts/dependencies.js @@ -127,7 +127,7 @@ function updatePackageJsonDependency(dependencyName, dependencyVersion) { console.log(`Changing "${dependencyName}" to "${dependencyVersion}" in "${packageJsonFilePath}"`) packageJson.dependencies[dependencyName] = dependencyVersion; - fs.writeFileSync(packageJsonFilePath, JSON.stringify(packageJson, undefined, " ")); + writePackageJson(packageJson, packageJsonFilePath); dependencyChanged = true; } @@ -185,7 +185,17 @@ function updatePackageJsonMain(mainValue) { console.log(`Changing "main" to "${mainValue}" in "${packageJsonFilePath}"`) packageJson.main = mainValue; - fs.writeFileSync(packageJsonFilePath, JSON.stringify(packageJson, undefined, " ")); + writePackageJson(packageJson, packageJsonFilePath); } } -exports.updatePackageJsonMain = updatePackageJsonMain; \ No newline at end of file +exports.updatePackageJsonMain = updatePackageJsonMain; + +/** + * Write the provided packageJSON object to the file at the provided packageJsonFilePath. + * @param {any} packageJson The package json object to write. + * @param {string} packageJsonFilePath The path to the package.json file. + * @returns {void} + */ +function writePackageJson(packageJson, packageJsonFilePath) { + fs.writeFileSync(packageJsonFilePath, JSON.stringify(packageJson, undefined, " ") + "\n"); +} \ No newline at end of file From 2f09ab50d1f5b415e1005ac69117adc369483c7d Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Wed, 23 May 2018 13:00:42 -0700 Subject: [PATCH 035/289] Update ms-rest-js dependency to ^0.7.184 --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index bdae002e2adf..457b66d14d38 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2903,9 +2903,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.6.174", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.6.174.tgz", - "integrity": "sha1-5Cvs/qgNqpg7ckOjRSE7gkoCjGk=", + "version": "0.7.184", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.7.184.tgz", + "integrity": "sha1-do1QRc2yjVuGK0jKB2GF8mOpqT4=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", @@ -4399,9 +4399,9 @@ }, "dependencies": { "punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true } } diff --git a/package.json b/package.json index 6a48a524bd2b..55c17d6dd018 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "^0.6.174" + "ms-rest-js": "^0.7.184" }, "devDependencies": { "@types/mocha": "^2.2.43", From f39cda959253e7784c678f65cb69fb9fd8498b10 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Wed, 23 May 2018 15:02:40 -0700 Subject: [PATCH 036/289] Remove generateClientRequestId because it's now in ms-rest-js --- lib/azureServiceClient.ts | 24 +++++++++++------------- package-lock.json | 6 +++--- package.json | 2 +- tslint.json | 2 +- 4 files changed, 16 insertions(+), 18 deletions(-) diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index fcc8b97deb00..c810fcabe4b3 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -15,12 +15,6 @@ export interface AzureServiceClientOptions extends msRest.ServiceClientOptions { */ acceptLanguage?: string; - /** - * @property {boolean} [options.generateClientRequestId] - When set to true a unique x-ms-client-request-id value - * is generated and included in each request. Default is true. - */ - generateClientRequestId?: boolean; - /** * @property {number} [options.longRunningOperationRetryTimeout] - Gets or sets the retry timeout in seconds for * Long Running Operations. Default value is 30. @@ -45,14 +39,12 @@ export interface AzureServiceClientOptions extends msRest.ServiceClientOptions { */ export class AzureServiceClient extends msRest.ServiceClient { acceptLanguage: string = Constants.DEFAULT_LANGUAGE; - generateClientRequestId = true; longRunningOperationRetryTimeout = 30; rpRegistrationRetryTimeout = 30; constructor(credentials: msRest.ServiceClientCredentials, options?: AzureServiceClientOptions) { - super(credentials, options); + super(credentials, updateOptionsWithDefaultValues(options)); this.acceptLanguage = Constants.DEFAULT_LANGUAGE; - this.generateClientRequestId = true; this.longRunningOperationRetryTimeout = 30; if (!options) options = {}; @@ -60,10 +52,6 @@ export class AzureServiceClient extends msRest.ServiceClient { this.acceptLanguage = options.acceptLanguage; } - if (options.generateClientRequestId !== null && options.generateClientRequestId !== undefined) { - this.generateClientRequestId = options.generateClientRequestId; - } - if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) { this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout; } @@ -311,4 +299,14 @@ export class AzureServiceClient extends msRest.ServiceClient { return Promise.resolve(operationResponse); } +} + +function updateOptionsWithDefaultValues(options?: AzureServiceClientOptions): AzureServiceClientOptions { + if (!options) { + options = {}; + } + if (options.generateClientRequestIdHeader == undefined) { + options.generateClientRequestIdHeader = true; + } + return options; } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 457b66d14d38..9078b8ec608c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2903,9 +2903,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.7.184", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.7.184.tgz", - "integrity": "sha1-do1QRc2yjVuGK0jKB2GF8mOpqT4=", + "version": "0.7.192", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.7.192.tgz", + "integrity": "sha1-ptjtUdsdpr5ynVQfXutyfyuymSU=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", diff --git a/package.json b/package.json index 55c17d6dd018..84100bef5d21 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "^0.7.184" + "ms-rest-js": "^0.7.192" }, "devDependencies": { "@types/mocha": "^2.2.43", diff --git a/tslint.json b/tslint.json index f8d5f33193a3..5e31e56d91e5 100644 --- a/tslint.json +++ b/tslint.json @@ -49,7 +49,7 @@ "no-null-keyword": true, "prefer-const": true, "no-switch-case-fall-through": true, - "triple-equals": true, + "triple-equals": [true, "allow-undefined-check"], "jsdoc-format": true } } From a2848b8028eb2f1aec95366b3e0550ea468eada7 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 31 May 2018 15:49:50 -0700 Subject: [PATCH 037/289] Bump minor version number --- package-lock.json | 89 +++++++++++++++++++++-------------------------- package.json | 4 +-- 2 files changed, 42 insertions(+), 51 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9078b8ec608c..53d7dc22721a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ms-rest-azure-js", - "version": "0.3.0", + "version": "0.4.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -37,9 +37,9 @@ } }, "@types/express-serve-static-core": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.11.1.tgz", - "integrity": "sha512-EehCl3tpuqiM8RUb+0255M8PhhSwTtLfmO7zBBdv0ay/VTd/zmrqDfQdZFsa5z/PVMbH2yCMZPXsnrImpATyIw==", + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.11.2.tgz", + "integrity": "sha512-5ukJmirhZqJh/jEDFn40GANZYtO95C7Pu3Xd9s8hHCtGhZORDVXiFtKLHKDE/s8T72Uvy4BZSTqsgFQMWGg/RA==", "requires": { "@types/events": "*", "@types/node": "*" @@ -53,14 +53,6 @@ "@types/node": "*" } }, - "@types/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@types/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==", - "requires": { - "@types/node": "*" - } - }, "@types/mime": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz", @@ -73,9 +65,9 @@ "dev": true }, "@types/node": { - "version": "9.6.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.18.tgz", - "integrity": "sha512-lywCnJQRSsu0kitHQ5nkb7Ay/ScdJPQjhWRtuf+G1DmNKJnPcdVyP0pYvdiDFKjzReC6NLWLgSyimno3kKfIig==" + "version": "9.6.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.20.tgz", + "integrity": "sha512-mIMXUbH2MmJAQQjzFUIRpxa+FtA27IaHMrIgoJ1fyu/EfpVN/UZw3ISMNnwVec4lau8R8SM4pNFXSCZpJFX2Bw==" }, "@types/serve-static": { "version": "1.13.2", @@ -114,9 +106,9 @@ } }, "acorn": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.0.tgz", + "integrity": "sha512-QatFQ4C0n+PLqemyC6zXEv04tSqRR0hRqe+uGKPEVgKe2G8kl8wJvHzRYWwz6vqqEqt6idPVMFojZ4P1zlyAzQ==", "dev": true }, "acorn-dynamic-import": { @@ -577,9 +569,9 @@ } }, "buffer-from": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", + "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", "dev": true }, "buffer-xor": { @@ -1069,9 +1061,9 @@ } }, "es-abstract": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", - "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", + "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", "dev": true, "requires": { "es-to-primitive": "^1.1.1", @@ -1093,9 +1085,9 @@ } }, "es5-ext": { - "version": "0.10.42", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz", - "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", + "version": "0.10.44", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.44.tgz", + "integrity": "sha512-TO4Vt9IhW3FzDKLDOpoA8VS9BCV4b9WTf6BqvMOgfoa8wX73F3Kh3y2J7yTstTaXlQ0k1vq4DH2vw6RSs42z+g==", "dev": true, "requires": { "es6-iterator": "~2.0.3", @@ -2426,7 +2418,8 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-symbol": { "version": "1.0.1", @@ -2903,21 +2896,20 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.7.192", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.7.192.tgz", - "integrity": "sha1-ptjtUdsdpr5ynVQfXutyfyuymSU=", + "version": "0.8.235", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.8.235.tgz", + "integrity": "sha1-Gun7hpGhSgwUOzf3Zp/uUQuQots=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", - "@types/is-stream": "^1.1.0", "@types/node": "^9.4.6", "@types/uuid": "^3.4.3", "axios": "^0.18.0", "form-data": "^2.3.2", "is-buffer": "^2.0.0", - "is-stream": "^1.1.0", "isomorphic-tough-cookie": "^0.0.1", "isomorphic-xml2js": "^0.0.3", + "tslib": "^1.9.2", "url-parse": "^1.2.0", "uuid": "^3.2.1" } @@ -4187,10 +4179,9 @@ } }, "tslib": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.1.tgz", - "integrity": "sha512-avfPS28HmGLLc2o4elcc2EIq2FcH++Yo5YxpBZi9Yw93BCTGFthI4HPE4Rpep6vSYQaK8e69PelM44tPj+RaQg==", - "dev": true + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.2.tgz", + "integrity": "sha512-AVP5Xol3WivEr7hnssHDsaM+lVrVXWUvd1cfXTRkTj80b//6g2wIFEH6hZG0muGZRnHGrfttpdzRk3YlBkWjKw==" }, "tslint": { "version": "5.10.0", @@ -4236,9 +4227,9 @@ "dev": true }, "typescript": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.3.tgz", - "integrity": "sha512-K7g15Bb6Ra4lKf7Iq2l/I5/En+hLIHmxWZGq3D4DIRNFxMNV6j2SHSvDOqs2tGd4UvD/fJvrwopzQXjLrT7Itw==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.1.tgz", + "integrity": "sha512-h6pM2f/GDchCFlldnriOhs1QHuwbnmj6/v7499eMHqPeW4V2G0elua2eIc2nu8v2NdHV0Gm+tzX83Hr6nUFjQA==", "dev": true }, "uglify-es": { @@ -4390,9 +4381,9 @@ "dev": true }, "uri-js": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.1.tgz", - "integrity": "sha512-jpKCA3HjsBfSDOEgxRDAxQCNyHfCPSbq57PqCkd3gAyBuPb3IWxw54EHncqESznIdqSetHfw3D7ylThu2Kcc9A==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -4578,9 +4569,9 @@ } }, "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -4736,9 +4727,9 @@ } }, "yarn": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.6.0.tgz", - "integrity": "sha1-nOxveYbcI3057HBc502VFV/lXUs=", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.7.0.tgz", + "integrity": "sha1-AHa5/eYBDgGVBSamCbxTvBde+SU=", "dev": true }, "yn": { diff --git a/package.json b/package.json index 84100bef5d21..48c4d8b0b593 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.3.0", + "version": "0.4.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -29,7 +29,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "^0.7.192" + "ms-rest-js": "^0.8.235" }, "devDependencies": { "@types/mocha": "^2.2.43", From a812af614257cdaca611ade543125bde2d1f732e Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Tue, 5 Jun 2018 08:39:23 -0700 Subject: [PATCH 038/289] Use ~ instead of ^ for ms-rest-js version --- .scripts/latest.js | 2 +- .scripts/preview.js | 2 +- package-lock.json | 137 ++++++++++++++++++++++---------------------- package.json | 2 +- 4 files changed, 71 insertions(+), 72 deletions(-) diff --git a/.scripts/latest.js b/.scripts/latest.js index d421d3e584d6..d0d971e4cdc0 100644 --- a/.scripts/latest.js +++ b/.scripts/latest.js @@ -7,7 +7,7 @@ for (const localDependency of localDependencies) { let refreshNodeModules = false; for (const localDependency of localDependencies) { const version = dependencies.getNpmPackageVersion(localDependency, "latest"); - if (dependencies.updatePackageJsonDependency(localDependency, `^${version}`)) { + if (dependencies.updatePackageJsonDependency(localDependency, `~${version}`)) { refreshNodeModules = true; } } diff --git a/.scripts/preview.js b/.scripts/preview.js index 514390914aa9..8d44176de7b8 100644 --- a/.scripts/preview.js +++ b/.scripts/preview.js @@ -10,7 +10,7 @@ for (const localDependency of localDependencies) { if (!version) { version = dependencies.getNpmPackageVersion(localDependency, "latest"); } - if (dependencies.updatePackageJsonDependency(localDependency, `^${version}`)) { + if (dependencies.updatePackageJsonDependency(localDependency, `~${version}`)) { refreshNodeModules = true; } } diff --git a/package-lock.json b/package-lock.json index 53d7dc22721a..e34b1a0b77fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,9 +27,9 @@ "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==" }, "@types/express": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.11.1.tgz", - "integrity": "sha512-ttWle8cnPA5rAelauSWeWJimtY2RsUf2aspYZs7xPHiWgOlPn6nnUfBMtrkcnjFJuIHJF4gNOdVvpLK2Zmvh6g==", + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.0.tgz", + "integrity": "sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w==", "requires": { "@types/body-parser": "*", "@types/express-serve-static-core": "*", @@ -37,12 +37,13 @@ } }, "@types/express-serve-static-core": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.11.2.tgz", - "integrity": "sha512-5ukJmirhZqJh/jEDFn40GANZYtO95C7Pu3Xd9s8hHCtGhZORDVXiFtKLHKDE/s8T72Uvy4BZSTqsgFQMWGg/RA==", + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.0.tgz", + "integrity": "sha512-lTeoCu5NxJU4OD9moCgm0ESZzweAx0YqsAcab6OB0EB3+As1OaHtKnaGJvcngQxYsi9UNv0abn4/DRavrRxt4w==", "requires": { "@types/events": "*", - "@types/node": "*" + "@types/node": "*", + "@types/range-parser": "*" } }, "@types/form-data": { @@ -69,6 +70,11 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.20.tgz", "integrity": "sha512-mIMXUbH2MmJAQQjzFUIRpxa+FtA27IaHMrIgoJ1fyu/EfpVN/UZw3ISMNnwVec4lau8R8SM4pNFXSCZpJFX2Bw==" }, + "@types/range-parser": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.2.tgz", + "integrity": "sha512-HtKGu+qG1NPvYe1z7ezLsyIaXYyi8SoAVqWDZgDQ8dLrsZvSzUNCwZyfX33uhWxL/SU0ZDQZ3nwZ0nimt507Kw==" + }, "@types/serve-static": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", @@ -106,9 +112,9 @@ } }, "acorn": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.0.tgz", - "integrity": "sha512-QatFQ4C0n+PLqemyC6zXEv04tSqRR0hRqe+uGKPEVgKe2G8kl8wJvHzRYWwz6vqqEqt6idPVMFojZ4P1zlyAzQ==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.2.tgz", + "integrity": "sha512-zUzo1E5dI2Ey8+82egfnttyMlMZ2y0D8xOCO3PNPPlYXpl8NZvF6Qk9L9BEtJs+43FqEmfBViDqc5d1ckRDguw==", "dev": true }, "acorn-dynamic-import": { @@ -257,6 +263,23 @@ "dev": true, "requires": { "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } } }, "assign-symbols": { @@ -298,13 +321,6 @@ "requires": { "follow-redirects": "^1.3.0", "is-buffer": "^1.1.5" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - } } }, "babel-code-frame": { @@ -1085,9 +1101,9 @@ } }, "es5-ext": { - "version": "0.10.44", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.44.tgz", - "integrity": "sha512-TO4Vt9IhW3FzDKLDOpoA8VS9BCV4b9WTf6BqvMOgfoa8wX73F3Kh3y2J7yTstTaXlQ0k1vq4DH2vw6RSs42z+g==", + "version": "0.10.45", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.45.tgz", + "integrity": "sha512-FkfM6Vxxfmztilbxxz5UKSD4ICMf5tSpRFtDNtkAhOxZ0EKtX6qwmXNyH/sFyIbX2P/nU5AMiA9jilWsUGJzCQ==", "dev": true, "requires": { "es6-iterator": "~2.0.3", @@ -2113,12 +2129,12 @@ "dev": true }, "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { - "function-bind": "^1.0.2" + "function-bind": "^1.1.1" } }, "has-ansi": { @@ -2157,12 +2173,6 @@ "kind-of": "^4.0.0" }, "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -2288,9 +2298,9 @@ } }, "is-buffer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.2.tgz", - "integrity": "sha512-imvkm8cOGKeZ/NwkAd+FAURi0hsL9gr3kvdi0r3MnqChcOdPaQRIOQiOU+sD40XzUIe6nFmSHYtQjbkDvaQbEg==" + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-builtin-module": { "version": "1.0.0", @@ -2476,9 +2486,9 @@ "dev": true }, "js-yaml": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", - "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -2528,14 +2538,6 @@ "dev": true, "requires": { "is-buffer": "^1.1.5" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - } } }, "lazy-cache": { @@ -2896,9 +2898,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.8.235", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.8.235.tgz", - "integrity": "sha1-Gun7hpGhSgwUOzf3Zp/uUQuQots=", + "version": "0.8.241", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.8.241.tgz", + "integrity": "sha1-fq3I/rughsd5rGmqYQ0iKupKyDI=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", @@ -2906,7 +2908,6 @@ "@types/uuid": "^3.4.3", "axios": "^0.18.0", "form-data": "^2.3.2", - "is-buffer": "^2.0.0", "isomorphic-tough-cookie": "^0.0.1", "isomorphic-xml2js": "^0.0.3", "tslib": "^1.9.2", @@ -3306,6 +3307,11 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, + "psl": { + "version": "1.1.27", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.27.tgz", + "integrity": "sha512-J8tJX5tAeEp9tQTI2w2aMZ6V1INuU4JmNaNPRuHAqjjVq3ZJ+jV3+tcT3ncgTnBxvwJy740IB/WZrxFus2VdMA==" + }, "public-encrypt": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", @@ -3981,9 +3987,9 @@ } }, "stream-http": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz", - "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", "dev": true, "requires": { "builtin-status-codes": "^3.0.0", @@ -4135,10 +4141,11 @@ } }, "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.2.tgz", + "integrity": "sha512-vahm+X8lSV/KjXziec8x5Vp0OTC9mq8EVCOApIsRAooeuMPSO8aT7PFACYkaL0yZ/3hVqw+8DzhCJwl8H2Ad6w==", "requires": { + "psl": "^1.1.24", "punycode": "^1.4.1" } }, @@ -4422,9 +4429,9 @@ } }, "url-parse": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.0.tgz", - "integrity": "sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.1.tgz", + "integrity": "sha512-x95Td74QcvICAA0+qERaVkRpTGKyBHHYdwL2LXZm5t/gBtCB9KQSO/0zQgSTYEV1p0WcvSg79TLNPSvd5IDJMQ==", "requires": { "querystringify": "^2.0.0", "requires-port": "^1.0.0" @@ -4448,20 +4455,12 @@ } }, "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", "dev": true, "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - } + "inherits": "2.0.3" } }, "util-deprecate": { diff --git a/package.json b/package.json index 48c4d8b0b593..a9b2633364df 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "^0.8.235" + "ms-rest-js": "~0.8.241" }, "devDependencies": { "@types/mocha": "^2.2.43", From b1b8c1fa5043b5b8c1866d42d728706a3444acf1 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Tue, 5 Jun 2018 09:31:09 -0700 Subject: [PATCH 039/289] Add deleteFolder() function --- .scripts/dependencies.js | 84 ++++++++++++++++++++---- package-lock.json | 137 +++++++++++++++++++-------------------- package.json | 2 +- 3 files changed, 139 insertions(+), 84 deletions(-) diff --git a/.scripts/dependencies.js b/.scripts/dependencies.js index 858d7274bd24..204295b19deb 100644 --- a/.scripts/dependencies.js +++ b/.scripts/dependencies.js @@ -2,6 +2,61 @@ const fs = require("fs"); const path = require("path"); const { execSync } = require("child_process"); +/** + * Replace all of the instances of searchValue in text with replaceValue. + * @param {string} text The text to search and replace in. + * @param {string} searchValue The value to search for in text. + * @param {string} replaceValue The value to replace searchValue with in text. + * @returns {string} The value of text after all of the instances of searchValue have been replaced + * by replaceValue. + */ +function replaceAll(text, searchValue, replaceValue) { + return text.split(searchValue).join(replaceValue); +} + +/** + * Normalize the provided path by ensuring that all path separators are forward slashes ('/'). + * @param {string} pathString The path to normalize. + * @returns {string} The normalized path. + */ +function normalizePath(pathString) { + return replaceAll(pathString, "\\", "/") +} + +/** + * Delete the file at the provided file path. + * @param {string} filePath The path to the file to delete. + */ +function deleteFile(filePath) { + fs.unlinkSync(filePath); +} + +/** + * Delete the folder at the provided folder path. + * @param {string} folderPath The path to the folder to delete. + */ +function deleteFolder(folderPath) { + try { + fs.rmdirSync(folderPath); + } catch (error) { + if (error.code === "ENOTEMPTY") { + const folderEntryPaths = fs.readdirSync(folderPath); + for (const entryName of folderEntryPaths) { + const entryPath = normalizePath(path.resolve(folderPath, entryName)); + const entryStats = fs.lstatSync(entryPath); + if (entryStats.isDirectory()) { + deleteFolder(entryPath); + } else { + deleteFile(entryPath); + } + } + fs.rmdirSync(folderPath); + } else { + throw error; + } + } +} + /** * Execute the provided command on the shell synchronously. * @param {string} command The command to execute. @@ -18,7 +73,7 @@ function execute(command, workingDirectory) { * @returns {string} The absolute path to this repository's folder path. */ function getThisRepositoryFolderPath() { - return path.resolve(__dirname, ".."); + return normalizePath(path.resolve(__dirname, "..")); } /** @@ -26,7 +81,7 @@ function getThisRepositoryFolderPath() { * @returns {string} The absolute path to the package.json. */ function getPackageJsonFilePath() { - return path.resolve(__dirname, "../package.json"); + return normalizePath(path.resolve(__dirname, "../package.json")); } /** @@ -35,7 +90,7 @@ function getPackageJsonFilePath() { * @returns {string} The absolute path to the local clone of the repository. */ function getLocalRepositoryPath(repoName) { - return path.resolve(__dirname, "..", "..", repoName); + return normalizePath(path.resolve(__dirname, "..", "..", repoName)); } /** @@ -96,7 +151,7 @@ exports.getDependenciesWithClonedRepositories = getDependenciesWithClonedReposit */ function runLocalRepositoryNPMScript(repoName, scriptName) { const repoFolderPath = getLocalRepositoryPath(repoName); - const packageJsonFilePath = path.join(repoFolderPath, "package.json"); + const packageJsonFilePath = normalizePath(path.join(repoFolderPath, "package.json")); const packageJson = getPackageJson(packageJsonFilePath); const repoScripts = packageJson.scripts; if (repoScripts && repoScripts[scriptName]) { @@ -141,17 +196,18 @@ exports.updatePackageJsonDependency = updatePackageJsonDependency; * @returns {void} */ function refreshNodeModules() { - if (fs.existsSync("./node_modules")) { - try { - execute(`shx rm ./package-lock.json`, getThisRepositoryFolderPath()); - } catch (error) { - } - try { - execute(`shx rm -rf ./node_modules`, getThisRepositoryFolderPath()); - } catch (error) { - // This will always throw an exception because we're trying to delete shx, which is currently - // running. + const thisRepositoryFolderPath = getThisRepositoryFolderPath(); + const nodeModulesFolderPath = normalizePath(path.resolve(thisRepositoryFolderPath, "node_modules")); + if (fs.existsSync(nodeModulesFolderPath)) { + + const packageLockFilePath = normalizePath(path.resolve(thisRepositoryFolderPath, "package-lock.json")); + if (fs.existsSync(packageLockFilePath)) { + console.log(`Deleting "${packageLockFilePath}"...`); + deleteFile(packageLockFilePath); } + + console.log(`Deleting "${nodeModulesFolderPath}"...`); + deleteFolder(nodeModulesFolderPath); } execute(`npm install`, getThisRepositoryFolderPath()); } diff --git a/package-lock.json b/package-lock.json index 53d7dc22721a..e34b1a0b77fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,9 +27,9 @@ "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==" }, "@types/express": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.11.1.tgz", - "integrity": "sha512-ttWle8cnPA5rAelauSWeWJimtY2RsUf2aspYZs7xPHiWgOlPn6nnUfBMtrkcnjFJuIHJF4gNOdVvpLK2Zmvh6g==", + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.0.tgz", + "integrity": "sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w==", "requires": { "@types/body-parser": "*", "@types/express-serve-static-core": "*", @@ -37,12 +37,13 @@ } }, "@types/express-serve-static-core": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.11.2.tgz", - "integrity": "sha512-5ukJmirhZqJh/jEDFn40GANZYtO95C7Pu3Xd9s8hHCtGhZORDVXiFtKLHKDE/s8T72Uvy4BZSTqsgFQMWGg/RA==", + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.0.tgz", + "integrity": "sha512-lTeoCu5NxJU4OD9moCgm0ESZzweAx0YqsAcab6OB0EB3+As1OaHtKnaGJvcngQxYsi9UNv0abn4/DRavrRxt4w==", "requires": { "@types/events": "*", - "@types/node": "*" + "@types/node": "*", + "@types/range-parser": "*" } }, "@types/form-data": { @@ -69,6 +70,11 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.20.tgz", "integrity": "sha512-mIMXUbH2MmJAQQjzFUIRpxa+FtA27IaHMrIgoJ1fyu/EfpVN/UZw3ISMNnwVec4lau8R8SM4pNFXSCZpJFX2Bw==" }, + "@types/range-parser": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.2.tgz", + "integrity": "sha512-HtKGu+qG1NPvYe1z7ezLsyIaXYyi8SoAVqWDZgDQ8dLrsZvSzUNCwZyfX33uhWxL/SU0ZDQZ3nwZ0nimt507Kw==" + }, "@types/serve-static": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", @@ -106,9 +112,9 @@ } }, "acorn": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.0.tgz", - "integrity": "sha512-QatFQ4C0n+PLqemyC6zXEv04tSqRR0hRqe+uGKPEVgKe2G8kl8wJvHzRYWwz6vqqEqt6idPVMFojZ4P1zlyAzQ==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.2.tgz", + "integrity": "sha512-zUzo1E5dI2Ey8+82egfnttyMlMZ2y0D8xOCO3PNPPlYXpl8NZvF6Qk9L9BEtJs+43FqEmfBViDqc5d1ckRDguw==", "dev": true }, "acorn-dynamic-import": { @@ -257,6 +263,23 @@ "dev": true, "requires": { "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } } }, "assign-symbols": { @@ -298,13 +321,6 @@ "requires": { "follow-redirects": "^1.3.0", "is-buffer": "^1.1.5" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - } } }, "babel-code-frame": { @@ -1085,9 +1101,9 @@ } }, "es5-ext": { - "version": "0.10.44", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.44.tgz", - "integrity": "sha512-TO4Vt9IhW3FzDKLDOpoA8VS9BCV4b9WTf6BqvMOgfoa8wX73F3Kh3y2J7yTstTaXlQ0k1vq4DH2vw6RSs42z+g==", + "version": "0.10.45", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.45.tgz", + "integrity": "sha512-FkfM6Vxxfmztilbxxz5UKSD4ICMf5tSpRFtDNtkAhOxZ0EKtX6qwmXNyH/sFyIbX2P/nU5AMiA9jilWsUGJzCQ==", "dev": true, "requires": { "es6-iterator": "~2.0.3", @@ -2113,12 +2129,12 @@ "dev": true }, "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { - "function-bind": "^1.0.2" + "function-bind": "^1.1.1" } }, "has-ansi": { @@ -2157,12 +2173,6 @@ "kind-of": "^4.0.0" }, "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -2288,9 +2298,9 @@ } }, "is-buffer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.2.tgz", - "integrity": "sha512-imvkm8cOGKeZ/NwkAd+FAURi0hsL9gr3kvdi0r3MnqChcOdPaQRIOQiOU+sD40XzUIe6nFmSHYtQjbkDvaQbEg==" + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-builtin-module": { "version": "1.0.0", @@ -2476,9 +2486,9 @@ "dev": true }, "js-yaml": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", - "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -2528,14 +2538,6 @@ "dev": true, "requires": { "is-buffer": "^1.1.5" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - } } }, "lazy-cache": { @@ -2896,9 +2898,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.8.235", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.8.235.tgz", - "integrity": "sha1-Gun7hpGhSgwUOzf3Zp/uUQuQots=", + "version": "0.8.241", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.8.241.tgz", + "integrity": "sha1-fq3I/rughsd5rGmqYQ0iKupKyDI=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", @@ -2906,7 +2908,6 @@ "@types/uuid": "^3.4.3", "axios": "^0.18.0", "form-data": "^2.3.2", - "is-buffer": "^2.0.0", "isomorphic-tough-cookie": "^0.0.1", "isomorphic-xml2js": "^0.0.3", "tslib": "^1.9.2", @@ -3306,6 +3307,11 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, + "psl": { + "version": "1.1.27", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.27.tgz", + "integrity": "sha512-J8tJX5tAeEp9tQTI2w2aMZ6V1INuU4JmNaNPRuHAqjjVq3ZJ+jV3+tcT3ncgTnBxvwJy740IB/WZrxFus2VdMA==" + }, "public-encrypt": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", @@ -3981,9 +3987,9 @@ } }, "stream-http": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz", - "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", "dev": true, "requires": { "builtin-status-codes": "^3.0.0", @@ -4135,10 +4141,11 @@ } }, "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.2.tgz", + "integrity": "sha512-vahm+X8lSV/KjXziec8x5Vp0OTC9mq8EVCOApIsRAooeuMPSO8aT7PFACYkaL0yZ/3hVqw+8DzhCJwl8H2Ad6w==", "requires": { + "psl": "^1.1.24", "punycode": "^1.4.1" } }, @@ -4422,9 +4429,9 @@ } }, "url-parse": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.0.tgz", - "integrity": "sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.1.tgz", + "integrity": "sha512-x95Td74QcvICAA0+qERaVkRpTGKyBHHYdwL2LXZm5t/gBtCB9KQSO/0zQgSTYEV1p0WcvSg79TLNPSvd5IDJMQ==", "requires": { "querystringify": "^2.0.0", "requires-port": "^1.0.0" @@ -4448,20 +4455,12 @@ } }, "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", "dev": true, "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - } + "inherits": "2.0.3" } }, "util-deprecate": { diff --git a/package.json b/package.json index 48c4d8b0b593..41cd96f272fb 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "^0.8.235" + "ms-rest-js": "^0.8.241" }, "devDependencies": { "@types/mocha": "^2.2.43", From ab7346ad3b5fd61fa7051200580b5e3a9024f130 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Fri, 8 Jun 2018 17:19:14 -0700 Subject: [PATCH 040/289] Update to ms-rest-js@0.9.x --- package-lock.json | 39 ++++++++++----------------------------- package.json | 4 ++-- 2 files changed, 12 insertions(+), 31 deletions(-) diff --git a/package-lock.json b/package-lock.json index e34b1a0b77fa..71efd818f521 100644 --- a/package-lock.json +++ b/package-lock.json @@ -66,9 +66,9 @@ "dev": true }, "@types/node": { - "version": "9.6.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.20.tgz", - "integrity": "sha512-mIMXUbH2MmJAQQjzFUIRpxa+FtA27IaHMrIgoJ1fyu/EfpVN/UZw3ISMNnwVec4lau8R8SM4pNFXSCZpJFX2Bw==" + "version": "9.6.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.21.tgz", + "integrity": "sha512-zQS6mHzxEstR8Vvnpc3JDUCDGWnHFzMTcBu9UCZoVLuj1Uvkkk0qFKJQEhlvbsX34m3xt12ejV09eO/ljZcn7A==" }, "@types/range-parser": { "version": "1.2.2", @@ -104,10 +104,11 @@ } }, "@types/xml2js": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.2.tgz", - "integrity": "sha512-8aKUBSj3oGcnuiBmDLm3BIk09RYg01mz9HlQ2u4aS17oJ25DxjQrEUVGFSBVNOfM45pQW4OjcBPplq6r/exJdA==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.3.tgz", + "integrity": "sha512-Pv2HGRE4gWLs31In7nsyXEH4uVVsd0HNV9i2dyASvtDIlOtSTr1eczPLDpdEuyv5LWH5LT20GIXwPjkshKWI1g==", "requires": { + "@types/events": "*", "@types/node": "*" } }, @@ -2898,9 +2899,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.8.241", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.8.241.tgz", - "integrity": "sha1-fq3I/rughsd5rGmqYQ0iKupKyDI=", + "version": "0.9.248", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.9.248.tgz", + "integrity": "sha1-z6eyGxDyoTPDWR8tqWlbT5NoOEM=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", @@ -2911,7 +2912,6 @@ "isomorphic-tough-cookie": "^0.0.1", "isomorphic-xml2js": "^0.0.3", "tslib": "^1.9.2", - "url-parse": "^1.2.0", "uuid": "^3.2.1" } }, @@ -3342,11 +3342,6 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, - "querystringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", - "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==" - }, "randombytes": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", @@ -3512,11 +3507,6 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" - }, "resolve": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", @@ -4428,15 +4418,6 @@ } } }, - "url-parse": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.1.tgz", - "integrity": "sha512-x95Td74QcvICAA0+qERaVkRpTGKyBHHYdwL2LXZm5t/gBtCB9KQSO/0zQgSTYEV1p0WcvSg79TLNPSvd5IDJMQ==", - "requires": { - "querystringify": "^2.0.0", - "requires-port": "^1.0.0" - } - }, "use": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", diff --git a/package.json b/package.json index a9b2633364df..19f80d68991e 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.4.0", + "version": "0.5.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -29,7 +29,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.8.241" + "ms-rest-js": "~0.9.248" }, "devDependencies": { "@types/mocha": "^2.2.43", From 57d9f86c3fe604276a85c63521617a3e22c9daff Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Fri, 8 Jun 2018 17:24:09 -0700 Subject: [PATCH 041/289] Update mocha --- package-lock.json | 169 +++++++++++++--------------------------------- package.json | 4 +- 2 files changed, 50 insertions(+), 123 deletions(-) diff --git a/package-lock.json b/package-lock.json index 71efd818f521..2b2f8a148482 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ms-rest-azure-js", - "version": "0.4.0", + "version": "0.5.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -60,9 +60,9 @@ "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==" }, "@types/mocha": { - "version": "2.2.48", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.48.tgz", - "integrity": "sha512-nlK/iyETgafGli8Zh9zJVCTicvU3iajSkRwOh3Hhiva598CMqNJ4NcVCGMTGKpGpTYj/9R8RLzS9NAykSSCqGw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.1.tgz", + "integrity": "sha512-dOrgprHnkDaj1pmrwdcMAf0QRNQzqTB5rxJph+iIQshSmIvtgRqJ0nim8u1vvXU8iOXZrH96+M46JDFTPLingA==", "dev": true }, "@types/node": { @@ -499,9 +499,9 @@ "dev": true }, "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, "browserify-aes": { @@ -774,13 +774,10 @@ } }, "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "requires": { - "graceful-readlink": ">= 1.0.0" - } + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true }, "component-emitter": { "version": "1.2.1", @@ -2117,16 +2114,10 @@ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true }, "has": { @@ -2148,9 +2139,9 @@ } }, "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "has-value": { @@ -2514,12 +2505,6 @@ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", "dev": true }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", @@ -2601,74 +2586,6 @@ "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true, - "requires": { - "lodash._basecopy": "^3.0.0", - "lodash.keys": "^3.0.0" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "dev": true, - "requires": { - "lodash._baseassign": "^3.0.0", - "lodash._basecreate": "^3.0.0", - "lodash._isiterateecall": "^3.0.0" - } - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -2863,32 +2780,42 @@ } }, "mocha": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", - "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", "dev": true, "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.6.8", - "diff": "3.2.0", + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", "escape-string-regexp": "1.0.5", - "glob": "7.1.1", - "growl": "1.9.2", + "glob": "7.1.2", + "growl": "1.10.5", "he": "1.1.1", - "json3": "3.3.2", - "lodash.create": "3.1.1", + "minimatch": "3.0.4", "mkdirp": "0.5.1", - "supports-color": "3.1.2" + "supports-color": "5.4.0" }, "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "ms": "2.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } } } @@ -4064,12 +3991,12 @@ "dev": true }, "supports-color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "^1.0.0" + "has-flag": "^3.0.0" } }, "tapable": { diff --git a/package.json b/package.json index 19f80d68991e..ab9cf1d56ba5 100644 --- a/package.json +++ b/package.json @@ -32,9 +32,9 @@ "ms-rest-js": "~0.9.248" }, "devDependencies": { - "@types/mocha": "^2.2.43", + "@types/mocha": "^5.2.1", "@types/should": "^8.1.30", - "mocha": "^3.5.3", + "mocha": "^5.2.0", "npm-run-all": "^4.1.2", "should": "5.2.0", "shx": "^0.2.2", From 4b2e3124fa7c8c4dc1e89cc4304eb677786ff2a8 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Sat, 9 Jun 2018 12:24:08 -0700 Subject: [PATCH 042/289] Add es6 build step --- .npmignore | 1 + package.json | 4 +++- tsconfig.es.json | 7 +++++++ 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 tsconfig.es.json diff --git a/.npmignore b/.npmignore index a12b7f4f9395..4479aea651e5 100644 --- a/.npmignore +++ b/.npmignore @@ -1,4 +1,5 @@ !dist/lib/**/*.js +!es/lib/**/*.js !typings/lib/**/*.d.ts .vscode/ .idea/ diff --git a/package.json b/package.json index ab9cf1d56ba5..807a80e1e85a 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "clientruntime" ], "main": "./dist/lib/msRestAzure.js", + "browser": "./es/lib/msRestAzure.js", "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { @@ -55,8 +56,9 @@ "url": "http://github.com/Azure/ms-rest-azure-js/issues" }, "scripts": { - "build": "run-p build:node build:browser", + "build": "run-p build:node build:es build:browser", "build:node": "tsc", + "build:es": "tsc -p tsconfig.es.json", "build:browser": "webpack && node node_modules/uglify-es/bin/uglifyjs --source-map -c -m -o msRestAzureBundle.min.js msRestAzureBundle.js", "watch:node": "tsc -w", "watch:browser": "webpack -w", diff --git a/tsconfig.es.json b/tsconfig.es.json new file mode 100644 index 000000000000..dae744d8a4d6 --- /dev/null +++ b/tsconfig.es.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "es6", + "outDir": "es" + } +} From a5a0eddc1785adae775e66c2275403bf8829a589 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Mon, 11 Jun 2018 08:51:31 -0700 Subject: [PATCH 043/289] Update ms-rest-js --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2b2f8a148482..ef798434f7c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2826,9 +2826,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.9.248", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.9.248.tgz", - "integrity": "sha1-z6eyGxDyoTPDWR8tqWlbT5NoOEM=", + "version": "0.9.250", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.9.250.tgz", + "integrity": "sha1-bgV+ckMIvGp6I4wXkugbJcRaRWw=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", @@ -3064,9 +3064,9 @@ "dev": true }, "p-limit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { "p-try": "^1.0.0" diff --git a/package.json b/package.json index 807a80e1e85a..beccfce0b05b 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.9.248" + "ms-rest-js": "~0.9.250" }, "devDependencies": { "@types/mocha": "^5.2.1", From 846ba76b927939244efdcb98e785dfb521d375e9 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Mon, 11 Jun 2018 09:38:44 -0700 Subject: [PATCH 044/289] Use es build for webpack bundle --- webpack.config.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/webpack.config.js b/webpack.config.js index 4c78faecb9cd..fc622b31daea 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -18,12 +18,13 @@ module.exports = { { test: /\.tsx?$/, loader: 'ts-loader', - exclude: /(node_modules|test)/ + exclude: /(node_modules|test)/, + options: { configFile: path.join(__dirname, './tsconfig.es.json') } } ] }, - // ms-rest-js is a dependency of this project. Customer is expected to manually import/include - // this for browser javascript in a script tag. More info over here + // ms-rest-js is a dependency of this project. Customer is expected to manually import/include + // this for browser javascript in a script tag. More info over here // https://webpack.js.org/configuration/externals/ and https://webpack.js.org/guides/author-libraries/#add-externals. externals: { "ms-rest-js": "msRest" From ffb8790c841e3468c75bdcb006e3c230485131b8 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 14 Jun 2018 14:06:22 -0700 Subject: [PATCH 045/289] Bump minor version number --- package-lock.json | 133 +++++++++++++++------------------------------- package.json | 4 +- 2 files changed, 45 insertions(+), 92 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2b2f8a148482..cc7344daa62a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ms-rest-azure-js", - "version": "0.5.0", + "version": "0.6.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -60,9 +60,9 @@ "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==" }, "@types/mocha": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.1.tgz", - "integrity": "sha512-dOrgprHnkDaj1pmrwdcMAf0QRNQzqTB5rxJph+iIQshSmIvtgRqJ0nim8u1vvXU8iOXZrH96+M46JDFTPLingA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.2.tgz", + "integrity": "sha512-tfg9rh2qQhBW6SBqpvfqTgU6lHWGhQURoTrn7NeDF+CEkO9JGYbkzU23EXu6p3bnvDxLeeSX8ohAA23urvWeNw==", "dev": true }, "@types/node": { @@ -136,14 +136,14 @@ } }, "ajv": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", - "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.1.tgz", + "integrity": "sha512-pgZos1vgOHDiC7gKNbZW8eKvCnNXARv2oqrGQT7Hzbq5Azp7aZG6DJzADnkuSq7RH6qkXp4J/m68yPX/2uBHyQ==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0", + "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.1" } }, @@ -651,23 +651,6 @@ "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "chokidar": { @@ -751,18 +734,18 @@ } }, "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", + "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", "dev": true, "requires": { - "color-name": "^1.1.1" + "color-name": "1.1.1" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", "dev": true }, "combined-stream": { @@ -995,9 +978,9 @@ } }, "diff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true }, "diffie-hellman": { @@ -2074,15 +2057,15 @@ "dev": true }, "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.2", + "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } @@ -2187,9 +2170,9 @@ } }, "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.4.tgz", + "integrity": "sha512-A6RlQvvZEtFS5fLU43IDu0QUmBy+fDO9VMdTXvufKwIkt/rFfvICAViCax5fbDO4zdNzaC3/27ZhKUok5bAJyw==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -2226,9 +2209,9 @@ "dev": true }, "ieee754": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", - "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", "dev": true }, "indexof": { @@ -2500,9 +2483,9 @@ "dev": true }, "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "json5": { @@ -2796,28 +2779,6 @@ "minimatch": "3.0.4", "mkdirp": "0.5.1", "supports-color": "5.4.0" - }, - "dependencies": { - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } } }, "ms": { @@ -2826,9 +2787,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.9.248", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.9.248.tgz", - "integrity": "sha1-z6eyGxDyoTPDWR8tqWlbT5NoOEM=", + "version": "0.10.264", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.10.264.tgz", + "integrity": "sha1-9KR+Y+WkbZGlFamzfVazivyufsM=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", @@ -3064,9 +3025,9 @@ "dev": true }, "p-limit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { "p-try": "^1.0.0" @@ -3235,9 +3196,9 @@ "dev": true }, "psl": { - "version": "1.1.27", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.27.tgz", - "integrity": "sha512-J8tJX5tAeEp9tQTI2w2aMZ6V1INuU4JmNaNPRuHAqjjVq3ZJ+jV3+tcT3ncgTnBxvwJy740IB/WZrxFus2VdMA==" + "version": "1.1.28", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.28.tgz", + "integrity": "sha512-+AqO1Ae+N/4r7Rvchrdm432afjT9hqJRyBN3DQv9At0tPz4hIFSGKbq64fN9dVoCow4oggIIax5/iONx0r9hZw==" }, "public-encrypt": { "version": "4.0.2", @@ -4125,14 +4086,6 @@ "semver": "^5.3.0", "tslib": "^1.8.0", "tsutils": "^2.12.1" - }, - "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - } } }, "tsutils": { @@ -4151,9 +4104,9 @@ "dev": true }, "typescript": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.1.tgz", - "integrity": "sha512-h6pM2f/GDchCFlldnriOhs1QHuwbnmj6/v7499eMHqPeW4V2G0elua2eIc2nu8v2NdHV0Gm+tzX83Hr6nUFjQA==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", + "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", "dev": true }, "uglify-es": { diff --git a/package.json b/package.json index ab9cf1d56ba5..6c51e7e117d4 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.5.0", + "version": "0.6.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -29,7 +29,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.9.248" + "ms-rest-js": "~0.10.264" }, "devDependencies": { "@types/mocha": "^5.2.1", From b5156036f22cc8171a32cfa9f7164edbf7c5c886 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Tue, 19 Jun 2018 13:57:12 -0700 Subject: [PATCH 046/289] Update to ms-rest-js@~0.11 --- package-lock.json | 53 +++++++++++++++++++++++++++-------------------- package.json | 2 +- 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index cc7344daa62a..60c1a93f48ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -66,9 +66,9 @@ "dev": true }, "@types/node": { - "version": "9.6.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.21.tgz", - "integrity": "sha512-zQS6mHzxEstR8Vvnpc3JDUCDGWnHFzMTcBu9UCZoVLuj1Uvkkk0qFKJQEhlvbsX34m3xt12ejV09eO/ljZcn7A==" + "version": "9.6.22", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.22.tgz", + "integrity": "sha512-RIg9EkxzVMkNH0M4sLRngK23f5QiigJC0iODQmu4nopzstt8AjegYund3r82iMrd2BNCjcZVnklaItvKHaGfBA==" }, "@types/range-parser": { "version": "1.2.2", @@ -113,9 +113,9 @@ } }, "acorn": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.2.tgz", - "integrity": "sha512-zUzo1E5dI2Ey8+82egfnttyMlMZ2y0D8xOCO3PNPPlYXpl8NZvF6Qk9L9BEtJs+43FqEmfBViDqc5d1ckRDguw==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", + "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==", "dev": true }, "acorn-dynamic-import": { @@ -654,23 +654,24 @@ } }, "chokidar": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", - "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", "dev": true, "requires": { "anymatch": "^2.0.0", "async-each": "^1.0.0", "braces": "^2.3.0", - "fsevents": "^1.1.2", + "fsevents": "^1.2.2", "glob-parent": "^3.1.0", "inherits": "^2.0.1", "is-binary-path": "^1.0.0", "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", "normalize-path": "^2.1.1", "path-is-absolute": "^1.0.0", "readdirp": "^2.0.0", - "upath": "^1.0.0" + "upath": "^1.0.5" } }, "cipher-base": { @@ -1049,9 +1050,9 @@ } }, "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -2569,6 +2570,12 @@ "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -2787,9 +2794,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.10.264", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.10.264.tgz", - "integrity": "sha1-9KR+Y+WkbZGlFamzfVazivyufsM=", + "version": "0.11.282", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.11.282.tgz", + "integrity": "sha1-dUmL8icUODhF8eJV2DXoGevzEZU=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", @@ -2969,9 +2976,9 @@ } }, "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", "dev": true }, "object-visit": { @@ -3396,9 +3403,9 @@ "dev": true }, "resolve": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", - "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", "dev": true, "requires": { "path-parse": "^1.0.5" diff --git a/package.json b/package.json index ddcd45c27327..5d499e4a5621 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.10.264" + "ms-rest-js": "~0.11.282" }, "devDependencies": { "@types/mocha": "^5.2.1", From 4099b5a0d886ef9f48bd09c58add674451a1a134 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Tue, 19 Jun 2018 13:58:16 -0700 Subject: [PATCH 047/289] Bump to v0.7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5d499e4a5621..45800d5f1019 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.6.0", + "version": "0.7.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", From c760184d7c0a807f0fb55b5fdd6c0831cc440b54 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 21 Jun 2018 12:17:04 -0700 Subject: [PATCH 048/289] Bump minor version --- package-lock.json | 59 ++++++++++++++++++++++++++--------------------- package.json | 2 +- 2 files changed, 34 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index cc7344daa62a..1bfa9ad1038b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -60,15 +60,15 @@ "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==" }, "@types/mocha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.2.tgz", - "integrity": "sha512-tfg9rh2qQhBW6SBqpvfqTgU6lHWGhQURoTrn7NeDF+CEkO9JGYbkzU23EXu6p3bnvDxLeeSX8ohAA23urvWeNw==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.3.tgz", + "integrity": "sha512-C1wVVr7xhKu6c3Mb27dFzNYR05qvHwgtpN+JOYTGc1pKA7dCEDDYpscn7kul+bCUwa3NoGDbzI1pdznSOa397w==", "dev": true }, "@types/node": { - "version": "9.6.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.21.tgz", - "integrity": "sha512-zQS6mHzxEstR8Vvnpc3JDUCDGWnHFzMTcBu9UCZoVLuj1Uvkkk0qFKJQEhlvbsX34m3xt12ejV09eO/ljZcn7A==" + "version": "9.6.22", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.22.tgz", + "integrity": "sha512-RIg9EkxzVMkNH0M4sLRngK23f5QiigJC0iODQmu4nopzstt8AjegYund3r82iMrd2BNCjcZVnklaItvKHaGfBA==" }, "@types/range-parser": { "version": "1.2.2", @@ -113,9 +113,9 @@ } }, "acorn": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.2.tgz", - "integrity": "sha512-zUzo1E5dI2Ey8+82egfnttyMlMZ2y0D8xOCO3PNPPlYXpl8NZvF6Qk9L9BEtJs+43FqEmfBViDqc5d1ckRDguw==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", + "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==", "dev": true }, "acorn-dynamic-import": { @@ -654,23 +654,24 @@ } }, "chokidar": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", - "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", "dev": true, "requires": { "anymatch": "^2.0.0", "async-each": "^1.0.0", "braces": "^2.3.0", - "fsevents": "^1.1.2", + "fsevents": "^1.2.2", "glob-parent": "^3.1.0", "inherits": "^2.0.1", "is-binary-path": "^1.0.0", "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", "normalize-path": "^2.1.1", "path-is-absolute": "^1.0.0", "readdirp": "^2.0.0", - "upath": "^1.0.0" + "upath": "^1.0.5" } }, "cipher-base": { @@ -1049,9 +1050,9 @@ } }, "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -2569,6 +2570,12 @@ "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -2787,9 +2794,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.10.264", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.10.264.tgz", - "integrity": "sha1-9KR+Y+WkbZGlFamzfVazivyufsM=", + "version": "0.12.289", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.12.289.tgz", + "integrity": "sha1-ZfVGK4x+nNAtdsStsWrNsnr6VPA=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", @@ -2969,9 +2976,9 @@ } }, "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", "dev": true }, "object-visit": { @@ -3396,9 +3403,9 @@ "dev": true }, "resolve": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", - "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", "dev": true, "requires": { "path-parse": "^1.0.5" diff --git a/package.json b/package.json index ddcd45c27327..1f798d320bd9 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.10.264" + "ms-rest-js": "~0.12.289" }, "devDependencies": { "@types/mocha": "^5.2.1", From 2033bedeb58c1a21aacdd722c957d2e87ca067ee Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 21 Jun 2018 12:18:37 -0700 Subject: [PATCH 049/289] Actually bump the minor version --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1bfa9ad1038b..a834619ae35f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ms-rest-azure-js", - "version": "0.6.0", + "version": "0.7.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 1f798d320bd9..047320db471c 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.6.0", + "version": "0.7.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", From 5f468e16383fcfabf75774cb4f7ac22514a758e3 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Thu, 21 Jun 2018 15:00:02 -0700 Subject: [PATCH 050/289] Simplify and remove await where practical --- lib/azureServiceClient.ts | 105 +++++++++++--------------------------- 1 file changed, 30 insertions(+), 75 deletions(-) diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index c810fcabe4b3..efdacdd94b9c 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -75,21 +75,8 @@ export class AzureServiceClient extends msRest.ServiceClient { * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody. */ - async sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise { - const self = this; - let initialResponse: msRest.HttpOperationResponse; - try { - initialResponse = await self.sendRequest(request); - } catch (err) { - return Promise.reject(err); - } - let finalResponse: msRest.HttpOperationResponse; - try { - finalResponse = await self.getLongRunningOperationResult(initialResponse, options); - } catch (err) { - return Promise.reject(err); - } - return Promise.resolve(finalResponse); + sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise { + return this.sendRequest(request).then(response => this.getLongRunningOperationResult(response, options)); } /** @@ -115,44 +102,39 @@ export class AzureServiceClient extends msRest.ServiceClient { * @returns {Promise} result - The final response after polling is complete. */ async getLongRunningOperationResult(resultOfInitialRequest: msRest.HttpOperationResponse, options?: msRest.RequestOptionsBase): Promise { - const self = this; const initialRequestMethod: string = resultOfInitialRequest.request.method as msRest.HttpMethods; - if (self.checkResponseStatusCodeFailed(resultOfInitialRequest)) { - return Promise.reject(`Unexpected polling status code from long running operation ` + + if (this.checkResponseStatusCodeFailed(resultOfInitialRequest)) { + throw new Error(`Unexpected polling status code from long running operation ` + `"${resultOfInitialRequest.status}" for method "${initialRequestMethod}".`); } - let pollingState: PollingState; - try { - pollingState = new PollingState(resultOfInitialRequest, self.longRunningOperationRetryTimeout); + let pollingState = new PollingState(resultOfInitialRequest, this.longRunningOperationRetryTimeout); pollingState.optionsOfInitialRequest = options as msRest.RequestOptionsBase; - } catch (error) { - return Promise.reject(error); - } + const resourceUrl: string = resultOfInitialRequest.request.url; while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) { await msRest.delay(pollingState.getTimeout()); if (pollingState.azureAsyncOperationHeaderLink) { - await self.updateStateFromAzureAsyncOperationHeader(pollingState, true); + await this.updateStateFromAzureAsyncOperationHeader(pollingState, true); } else if (pollingState.locationHeaderLink) { - await self.updateStateFromLocationHeader(initialRequestMethod, pollingState); + await this.updateStateFromLocationHeader(initialRequestMethod, pollingState); } else if (initialRequestMethod === "PUT") { - await self.updateStateFromGetResourceOperation(resourceUrl, pollingState); + await this.updateStateFromGetResourceOperation(resourceUrl, pollingState); } else { - return Promise.reject(new Error("Location header is missing from long running operation.")); + throw new Error("Location header is missing from long running operation."); } } if (pollingState.status === LroStates.Succeeded) { if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) && (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH")) { - await self.updateStateFromGetResourceOperation(resourceUrl, pollingState); - return Promise.resolve(pollingState.getOperationResponse()); + await this.updateStateFromGetResourceOperation(resourceUrl, pollingState); + return pollingState.getOperationResponse(); } else { - return Promise.resolve(pollingState.getOperationResponse()); + return pollingState.getOperationResponse(); } } else { - return Promise.reject(pollingState.getRestError()); + throw pollingState.getRestError(); } } @@ -162,20 +144,13 @@ export class AzureServiceClient extends msRest.ServiceClient { * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation. */ private async updateStateFromAzureAsyncOperationHeader(pollingState: PollingState, inPostOrDelete = false): Promise { - let result: msRest.HttpOperationResponse; - - try { - result = await this.getStatus(pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest); - } catch (err) { - return Promise.reject(err); - } - + let result = await this.getStatus(pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest); const parsedResponse = result.parsedBody as { [key: string]: any }; if (!parsedResponse) { - return Promise.reject(new Error("The response from long running operation does not contain a body.")); - } else if (parsedResponse && !parsedResponse.status) { - return Promise.reject(new Error(`The response "${result.bodyAsText}" from long running operation does not contain the status property.`)); + throw new Error("The response from long running operation does not contain a body."); + } else if (!parsedResponse.status) { + throw new Error(`The response "${result.bodyAsText}" from long running operation does not contain the status property.`); } pollingState.status = parsedResponse.status; pollingState.error = parsedResponse.error; @@ -185,7 +160,6 @@ export class AzureServiceClient extends msRest.ServiceClient { if (inPostOrDelete) { pollingState.resource = result.parsedBody; } - return Promise.resolve(); } /** @@ -194,14 +168,9 @@ export class AzureServiceClient extends msRest.ServiceClient { * @param {PollingState} pollingState - The object to persist current operation state. */ private async updateStateFromLocationHeader(method: string, pollingState: PollingState): Promise { - let result: msRest.HttpOperationResponse; - try { - result = await this.getStatus(pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest); - } catch (err) { - return Promise.reject(err); - } - + let result = await this.getStatus(pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest); const parsedResponse = result.parsedBody as { [key: string]: any }; + pollingState.updateResponse(result); pollingState.request = result.request; const statusCode = result.status; @@ -216,8 +185,8 @@ export class AzureServiceClient extends msRest.ServiceClient { pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); pollingState.error.code = pollingState.status; } else { - return Promise.reject(new Error(`The response with status code ${statusCode} from polling for ` + - `long running operation url "${pollingState.locationHeaderLink}" is not valid.`)); + throw new Error(`The response with status code ${statusCode} from polling for ` + + `long running operation url "${pollingState.locationHeaderLink}" is not valid.`); } } @@ -227,12 +196,7 @@ export class AzureServiceClient extends msRest.ServiceClient { * @param {PollingState} pollingState - The object to persist current operation state. */ private async updateStateFromGetResourceOperation(resourceUrl: string, pollingState: PollingState): Promise { - let result: msRest.HttpOperationResponse; - try { - result = await this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest); - } catch (err) { - return Promise.reject(err); - } + let result = await this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest); if (!result.parsedBody) { return Promise.reject(new Error("The response from long running operation does not contain a body.")); } @@ -248,7 +212,6 @@ export class AzureServiceClient extends msRest.ServiceClient { // we might not throw an error, but initialize here just in case. pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); pollingState.error.code = pollingState.status; - return Promise.resolve(); } /** @@ -257,7 +220,6 @@ export class AzureServiceClient extends msRest.ServiceClient { * @param {object} options - Options that can be set on the request object */ private async getStatus(operationUrl: string, options?: msRest.RequestOptionsBase): Promise { - const self = this; // Construct URL const requestUrl = operationUrl.replace(" ", "%20"); // Create HTTP request object @@ -266,20 +228,13 @@ export class AzureServiceClient extends msRest.ServiceClient { url: requestUrl, headers: {} }; - if (options) { - const customHeaders: { [key: string]: string } = (options.customHeaders as { [key: string]: string }); - for (const headerName in customHeaders) { - if (customHeaders.hasOwnProperty(headerName)) { - (httpRequest.headers as { [key: string]: string })[headerName] = customHeaders[headerName]; - } + if (options && options.customHeaders) { + const customHeaders = options.customHeaders; + for (const headerName of Object.keys(customHeaders)) { + httpRequest.headers![headerName] = customHeaders[headerName]; } } - let operationResponse: msRest.HttpOperationResponse; - try { - operationResponse = await self.sendRequest(httpRequest); - } catch (err) { - return Promise.reject(err); - } + const operationResponse = await this.sendRequest(httpRequest); const statusCode = operationResponse.status; const responseBody = operationResponse.parsedBody; if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { @@ -294,10 +249,10 @@ export class AzureServiceClient extends msRest.ServiceClient { error.message += ` Error "${badResponse}" occured while deserializing the response body - "${operationResponse.bodyAsText}".`; error.body = operationResponse.bodyAsText; } - return Promise.reject(error); + throw error; } - return Promise.resolve(operationResponse); + return operationResponse; } } From 93ea04f4c8d6f58bc878d5aca8401192d0b7991e Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Thu, 21 Jun 2018 15:06:15 -0700 Subject: [PATCH 051/289] Remove more async --- lib/azureServiceClient.ts | 145 +++++++++++++++++++------------------- 1 file changed, 74 insertions(+), 71 deletions(-) diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index efdacdd94b9c..1618c3d97a05 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -143,23 +143,23 @@ export class AzureServiceClient extends msRest.ServiceClient { * @param {PollingState} pollingState - The object to persist current operation state. * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation. */ - private async updateStateFromAzureAsyncOperationHeader(pollingState: PollingState, inPostOrDelete = false): Promise { - let result = await this.getStatus(pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest); - const parsedResponse = result.parsedBody as { [key: string]: any }; - - if (!parsedResponse) { - throw new Error("The response from long running operation does not contain a body."); - } else if (!parsedResponse.status) { - throw new Error(`The response "${result.bodyAsText}" from long running operation does not contain the status property.`); - } - pollingState.status = parsedResponse.status; - pollingState.error = parsedResponse.error; - pollingState.updateResponse(result); - pollingState.request = result.request; - pollingState.resource = undefined; - if (inPostOrDelete) { - pollingState.resource = result.parsedBody; - } + private updateStateFromAzureAsyncOperationHeader(pollingState: PollingState, inPostOrDelete = false): Promise { + return this.getStatus(pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest).then(result => { + const parsedResponse = result.parsedBody as { [key: string]: any }; + if (!parsedResponse) { + throw new Error("The response from long running operation does not contain a body."); + } else if (!parsedResponse.status) { + throw new Error(`The response "${result.bodyAsText}" from long running operation does not contain the status property.`); + } + pollingState.status = parsedResponse.status; + pollingState.error = parsedResponse.error; + pollingState.updateResponse(result); + pollingState.request = result.request; + pollingState.resource = undefined; + if (inPostOrDelete) { + pollingState.resource = result.parsedBody; + } + }); } /** @@ -167,27 +167,28 @@ export class AzureServiceClient extends msRest.ServiceClient { * @param {string} method - The HTTP method. * @param {PollingState} pollingState - The object to persist current operation state. */ - private async updateStateFromLocationHeader(method: string, pollingState: PollingState): Promise { - let result = await this.getStatus(pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest); - const parsedResponse = result.parsedBody as { [key: string]: any }; + private updateStateFromLocationHeader(method: string, pollingState: PollingState): Promise { + return this.getStatus(pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest).then(result => { + const parsedResponse = result.parsedBody as { [key: string]: any }; - pollingState.updateResponse(result); - pollingState.request = result.request; - const statusCode = result.status; - if (statusCode === 202) { - pollingState.status = LroStates.InProgress; - } else if (statusCode === 200 || - (statusCode === 201 && (method === "PUT" || method === "PATCH")) || - (statusCode === 204 && (method === "DELETE" || method === "POST"))) { - pollingState.status = LroStates.Succeeded; - pollingState.resource = parsedResponse; - // we might not throw an error, but initialize here just in case. - pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); - pollingState.error.code = pollingState.status; - } else { - throw new Error(`The response with status code ${statusCode} from polling for ` + - `long running operation url "${pollingState.locationHeaderLink}" is not valid.`); - } + pollingState.updateResponse(result); + pollingState.request = result.request; + const statusCode = result.status; + if (statusCode === 202) { + pollingState.status = LroStates.InProgress; + } else if (statusCode === 200 || + (statusCode === 201 && (method === "PUT" || method === "PATCH")) || + (statusCode === 204 && (method === "DELETE" || method === "POST"))) { + pollingState.status = LroStates.Succeeded; + pollingState.resource = parsedResponse; + // we might not throw an error, but initialize here just in case. + pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); + pollingState.error.code = pollingState.status; + } else { + throw new Error(`The response with status code ${statusCode} from polling for ` + + `long running operation url "${pollingState.locationHeaderLink}" is not valid.`); + } + }); } /** @@ -195,23 +196,24 @@ export class AzureServiceClient extends msRest.ServiceClient { * @param {string} resourceUrl - The url of resource. * @param {PollingState} pollingState - The object to persist current operation state. */ - private async updateStateFromGetResourceOperation(resourceUrl: string, pollingState: PollingState): Promise { - let result = await this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest); - if (!result.parsedBody) { - return Promise.reject(new Error("The response from long running operation does not contain a body.")); - } + private updateStateFromGetResourceOperation(resourceUrl: string, pollingState: PollingState): Promise { + return this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest).then(result => { + if (!result.parsedBody) { + throw new Error("The response from long running operation does not contain a body."); + } - const parsedResponse = result.parsedBody as { [key: string]: any }; - pollingState.status = LroStates.Succeeded; - if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) { - pollingState.status = parsedResponse.properties.provisioningState; - } - pollingState.updateResponse(result); - pollingState.request = result.request; - pollingState.resource = parsedResponse; - // we might not throw an error, but initialize here just in case. - pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); - pollingState.error.code = pollingState.status; + const parsedResponse = result.parsedBody as { [key: string]: any }; + pollingState.status = LroStates.Succeeded; + if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) { + pollingState.status = parsedResponse.properties.provisioningState; + } + pollingState.updateResponse(result); + pollingState.request = result.request; + pollingState.resource = parsedResponse; + // we might not throw an error, but initialize here just in case. + pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); + pollingState.error.code = pollingState.status; + }); } /** @@ -219,7 +221,7 @@ export class AzureServiceClient extends msRest.ServiceClient { * @param {string} operationUrl - URL used to poll operation result. * @param {object} options - Options that can be set on the request object */ - private async getStatus(operationUrl: string, options?: msRest.RequestOptionsBase): Promise { + private getStatus(operationUrl: string, options?: msRest.RequestOptionsBase): Promise { // Construct URL const requestUrl = operationUrl.replace(" ", "%20"); // Create HTTP request object @@ -234,25 +236,26 @@ export class AzureServiceClient extends msRest.ServiceClient { httpRequest.headers![headerName] = customHeaders[headerName]; } } - const operationResponse = await this.sendRequest(httpRequest); - const statusCode = operationResponse.status; - const responseBody = operationResponse.parsedBody; - if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { - const error = new msRest.RestError(`Invalid status code with response body "${operationResponse.bodyAsText}" occurred ` + - `when polling for operation status.`); - error.statusCode = statusCode; - error.request = msRest.stripRequest(operationResponse.request); - error.response = operationResponse; - try { - error.body = responseBody; - } catch (badResponse) { - error.message += ` Error "${badResponse}" occured while deserializing the response body - "${operationResponse.bodyAsText}".`; - error.body = operationResponse.bodyAsText; + return this.sendRequest(httpRequest).then(operationResponse => { + const statusCode = operationResponse.status; + const responseBody = operationResponse.parsedBody; + if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { + const error = new msRest.RestError(`Invalid status code with response body "${operationResponse.bodyAsText}" occurred ` + + `when polling for operation status.`); + error.statusCode = statusCode; + error.request = msRest.stripRequest(operationResponse.request); + error.response = operationResponse; + try { + error.body = responseBody; + } catch (badResponse) { + error.message += ` Error "${badResponse}" occured while deserializing the response body - "${operationResponse.bodyAsText}".`; + error.body = operationResponse.bodyAsText; + } + throw error; } - throw error; - } - return operationResponse; + return operationResponse; + }); } } From ddead4003ffc2040ec09bf5bcfcce2b532b63df5 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Thu, 21 Jun 2018 15:19:21 -0700 Subject: [PATCH 052/289] Extract private functions and introduce locals --- lib/azureServiceClient.ts | 278 +++++++++++++++++++------------------- lib/pollingState.ts | 43 +++--- 2 files changed, 164 insertions(+), 157 deletions(-) diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index 1618c3d97a05..80a68b2fabe8 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -46,17 +46,19 @@ export class AzureServiceClient extends msRest.ServiceClient { super(credentials, updateOptionsWithDefaultValues(options)); this.acceptLanguage = Constants.DEFAULT_LANGUAGE; this.longRunningOperationRetryTimeout = 30; - if (!options) options = {}; + if (!options) { + options = {}; + } - if (options.acceptLanguage !== null && options.acceptLanguage !== undefined) { + if (options.acceptLanguage != undefined) { this.acceptLanguage = options.acceptLanguage; } - if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) { + if (options.longRunningOperationRetryTimeout != undefined) { this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout; } - if (options.rpRegistrationRetryTimeout !== null && options.rpRegistrationRetryTimeout !== undefined) { + if (options.rpRegistrationRetryTimeout != undefined) { this.rpRegistrationRetryTimeout = options.rpRegistrationRetryTimeout; } @@ -79,22 +81,6 @@ export class AzureServiceClient extends msRest.ServiceClient { return this.sendRequest(request).then(response => this.getLongRunningOperationResult(response, options)); } - /** - * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request. - * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation. - */ - private checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResponse): boolean { - const statusCode = initialResponse.status; - const method = initialResponse.request.method; - if (statusCode === 200 || statusCode === 202 || - (statusCode === 201 && method === "PUT") || - (statusCode === 204 && (method === "DELETE" || method === "POST"))) { - return false; - } else { - return true; - } - } - /** * Poll Azure long running PUT, PATCH, POST or DELETE operations. * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation. @@ -104,7 +90,7 @@ export class AzureServiceClient extends msRest.ServiceClient { async getLongRunningOperationResult(resultOfInitialRequest: msRest.HttpOperationResponse, options?: msRest.RequestOptionsBase): Promise { const initialRequestMethod: string = resultOfInitialRequest.request.method as msRest.HttpMethods; - if (this.checkResponseStatusCodeFailed(resultOfInitialRequest)) { + if (checkResponseStatusCodeFailed(resultOfInitialRequest)) { throw new Error(`Unexpected polling status code from long running operation ` + `"${resultOfInitialRequest.status}" for method "${initialRequestMethod}".`); } @@ -115,11 +101,11 @@ export class AzureServiceClient extends msRest.ServiceClient { while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) { await msRest.delay(pollingState.getTimeout()); if (pollingState.azureAsyncOperationHeaderLink) { - await this.updateStateFromAzureAsyncOperationHeader(pollingState, true); + await updateStateFromAzureAsyncOperationHeader(this, pollingState, true); } else if (pollingState.locationHeaderLink) { - await this.updateStateFromLocationHeader(initialRequestMethod, pollingState); + await updateStateFromLocationHeader(this, initialRequestMethod, pollingState); } else if (initialRequestMethod === "PUT") { - await this.updateStateFromGetResourceOperation(resourceUrl, pollingState); + await updateStateFromGetResourceOperation(this, resourceUrl, pollingState); } else { throw new Error("Location header is missing from long running operation."); } @@ -128,7 +114,7 @@ export class AzureServiceClient extends msRest.ServiceClient { if (pollingState.status === LroStates.Succeeded) { if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) && (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH")) { - await this.updateStateFromGetResourceOperation(resourceUrl, pollingState); + await updateStateFromGetResourceOperation(this, resourceUrl, pollingState); return pollingState.getOperationResponse(); } else { return pollingState.getOperationResponse(); @@ -137,134 +123,150 @@ export class AzureServiceClient extends msRest.ServiceClient { throw pollingState.getRestError(); } } +} - /** - * Retrieve operation status by polling from "azure-asyncoperation" header. - * @param {PollingState} pollingState - The object to persist current operation state. - * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation. - */ - private updateStateFromAzureAsyncOperationHeader(pollingState: PollingState, inPostOrDelete = false): Promise { - return this.getStatus(pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest).then(result => { - const parsedResponse = result.parsedBody as { [key: string]: any }; - if (!parsedResponse) { - throw new Error("The response from long running operation does not contain a body."); - } else if (!parsedResponse.status) { - throw new Error(`The response "${result.bodyAsText}" from long running operation does not contain the status property.`); - } - pollingState.status = parsedResponse.status; - pollingState.error = parsedResponse.error; - pollingState.updateResponse(result); - pollingState.request = result.request; - pollingState.resource = undefined; - if (inPostOrDelete) { - pollingState.resource = result.parsedBody; - } - }); +function updateOptionsWithDefaultValues(options?: AzureServiceClientOptions): AzureServiceClientOptions { + if (!options) { + options = {}; } + if (options.generateClientRequestIdHeader == undefined) { + options.generateClientRequestIdHeader = true; + } + return options; +} - /** - * Retrieve PUT operation status by polling from "location" header. - * @param {string} method - The HTTP method. - * @param {PollingState} pollingState - The object to persist current operation state. - */ - private updateStateFromLocationHeader(method: string, pollingState: PollingState): Promise { - return this.getStatus(pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest).then(result => { - const parsedResponse = result.parsedBody as { [key: string]: any }; - - pollingState.updateResponse(result); - pollingState.request = result.request; - const statusCode = result.status; - if (statusCode === 202) { - pollingState.status = LroStates.InProgress; - } else if (statusCode === 200 || - (statusCode === 201 && (method === "PUT" || method === "PATCH")) || - (statusCode === 204 && (method === "DELETE" || method === "POST"))) { - pollingState.status = LroStates.Succeeded; - pollingState.resource = parsedResponse; - // we might not throw an error, but initialize here just in case. - pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); - pollingState.error.code = pollingState.status; - } else { - throw new Error(`The response with status code ${statusCode} from polling for ` + - `long running operation url "${pollingState.locationHeaderLink}" is not valid.`); - } - }); +/** + * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request. + * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation. + */ +function checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResponse): boolean { + const statusCode = initialResponse.status; + const method = initialResponse.request.method; + if (statusCode === 200 || statusCode === 202 || + (statusCode === 201 && method === "PUT") || + (statusCode === 204 && (method === "DELETE" || method === "POST"))) { + return false; + } else { + return true; } +} - /** - * Polling for resource status. - * @param {string} resourceUrl - The url of resource. - * @param {PollingState} pollingState - The object to persist current operation state. - */ - private updateStateFromGetResourceOperation(resourceUrl: string, pollingState: PollingState): Promise { - return this.getStatus(resourceUrl, pollingState.optionsOfInitialRequest).then(result => { - if (!result.parsedBody) { - throw new Error("The response from long running operation does not contain a body."); - } +/** + * Retrieve operation status by polling from "azure-asyncoperation" header. + * @param {PollingState} pollingState - The object to persist current operation state. + * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation. + */ +function updateStateFromAzureAsyncOperationHeader(client: AzureServiceClient, pollingState: PollingState, inPostOrDelete = false): Promise { + return getStatus(client, pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest).then(result => { + const parsedResponse = result.parsedBody as { [key: string]: any }; + if (!parsedResponse) { + throw new Error("The response from long running operation does not contain a body."); + } else if (!parsedResponse.status) { + throw new Error(`The response "${result.bodyAsText}" from long running operation does not contain the status property.`); + } + pollingState.status = parsedResponse.status; + pollingState.error = parsedResponse.error; + pollingState.updateResponse(result); + pollingState.request = result.request; + pollingState.resource = undefined; + if (inPostOrDelete) { + pollingState.resource = result.parsedBody; + } + }); +} - const parsedResponse = result.parsedBody as { [key: string]: any }; +/** + * Retrieve PUT operation status by polling from "location" header. + * @param {string} method - The HTTP method. + * @param {PollingState} pollingState - The object to persist current operation state. + */ +function updateStateFromLocationHeader(client: AzureServiceClient, method: string, pollingState: PollingState): Promise { + return getStatus(client, pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest).then(result => { + const parsedResponse = result.parsedBody as { [key: string]: any }; + + pollingState.updateResponse(result); + pollingState.request = result.request; + const statusCode = result.status; + if (statusCode === 202) { + pollingState.status = LroStates.InProgress; + } else if (statusCode === 200 || + (statusCode === 201 && (method === "PUT" || method === "PATCH")) || + (statusCode === 204 && (method === "DELETE" || method === "POST"))) { pollingState.status = LroStates.Succeeded; - if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) { - pollingState.status = parsedResponse.properties.provisioningState; - } - pollingState.updateResponse(result); - pollingState.request = result.request; pollingState.resource = parsedResponse; // we might not throw an error, but initialize here just in case. pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); pollingState.error.code = pollingState.status; - }); - } + } else { + throw new Error(`The response with status code ${statusCode} from polling for ` + + `long running operation url "${pollingState.locationHeaderLink}" is not valid.`); + } + }); +} - /** - * Retrieves operation status by querying the operation URL. - * @param {string} operationUrl - URL used to poll operation result. - * @param {object} options - Options that can be set on the request object - */ - private getStatus(operationUrl: string, options?: msRest.RequestOptionsBase): Promise { - // Construct URL - const requestUrl = operationUrl.replace(" ", "%20"); - // Create HTTP request object - const httpRequest: msRest.RequestPrepareOptions = { - method: "GET", - url: requestUrl, - headers: {} - }; - if (options && options.customHeaders) { - const customHeaders = options.customHeaders; - for (const headerName of Object.keys(customHeaders)) { - httpRequest.headers![headerName] = customHeaders[headerName]; - } +/** + * Polling for resource status. + * @param {string} resourceUrl - The url of resource. + * @param {PollingState} pollingState - The object to persist current operation state. + */ +function updateStateFromGetResourceOperation(client: AzureServiceClient, resourceUrl: string, pollingState: PollingState): Promise { + return getStatus(client, resourceUrl, pollingState.optionsOfInitialRequest).then(result => { + if (!result.parsedBody) { + throw new Error("The response from long running operation does not contain a body."); } - return this.sendRequest(httpRequest).then(operationResponse => { - const statusCode = operationResponse.status; - const responseBody = operationResponse.parsedBody; - if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { - const error = new msRest.RestError(`Invalid status code with response body "${operationResponse.bodyAsText}" occurred ` + - `when polling for operation status.`); - error.statusCode = statusCode; - error.request = msRest.stripRequest(operationResponse.request); - error.response = operationResponse; - try { - error.body = responseBody; - } catch (badResponse) { - error.message += ` Error "${badResponse}" occured while deserializing the response body - "${operationResponse.bodyAsText}".`; - error.body = operationResponse.bodyAsText; - } - throw error; - } - return operationResponse; - }); - } + const parsedResponse = result.parsedBody as { [key: string]: any }; + pollingState.status = LroStates.Succeeded; + if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) { + pollingState.status = parsedResponse.properties.provisioningState; + } + pollingState.updateResponse(result); + pollingState.request = result.request; + pollingState.resource = parsedResponse; + // we might not throw an error, but initialize here just in case. + pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); + pollingState.error.code = pollingState.status; + }); } -function updateOptionsWithDefaultValues(options?: AzureServiceClientOptions): AzureServiceClientOptions { - if (!options) { - options = {}; - } - if (options.generateClientRequestIdHeader == undefined) { - options.generateClientRequestIdHeader = true; +/** + * Retrieves operation status by querying the operation URL. + * @param {string} operationUrl - URL used to poll operation result. + * @param {object} options - Options that can be set on the request object + */ +function getStatus(client: AzureServiceClient, operationUrl: string, options?: msRest.RequestOptionsBase): Promise { + // Construct URL + const requestUrl = operationUrl.replace(" ", "%20"); + // Create HTTP request object + const httpRequest: msRest.RequestPrepareOptions = { + method: "GET", + url: requestUrl, + headers: {} + }; + if (options && options.customHeaders) { + const customHeaders = options.customHeaders; + for (const headerName of Object.keys(customHeaders)) { + httpRequest.headers![headerName] = customHeaders[headerName]; + } } - return options; + return client.sendRequest(httpRequest).then(operationResponse => { + const statusCode = operationResponse.status; + const responseBody = operationResponse.parsedBody; + if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { + const error = new msRest.RestError(`Invalid status code with response body "${operationResponse.bodyAsText}" occurred ` + + `when polling for operation status.`); + error.statusCode = statusCode; + error.request = msRest.stripRequest(operationResponse.request); + error.response = operationResponse; + try { + error.body = responseBody; + } catch (badResponse) { + error.message += ` Error "${badResponse}" occured while deserializing the response body - "${operationResponse.bodyAsText}".`; + error.body = operationResponse.bodyAsText; + } + throw error; + } + + return operationResponse; + }); } \ No newline at end of file diff --git a/lib/pollingState.ts b/lib/pollingState.ts index 7d9210c1979d..823244b57c0b 100644 --- a/lib/pollingState.ts +++ b/lib/pollingState.ts @@ -70,35 +70,38 @@ export default class PollingState { deserializationError.response = resultOfInitialRequest; throw deserializationError; } + const resource = this.resource; + let status: string | undefined; switch (this.response.status) { case 202: - this.status = LroStates.InProgress; + status = LroStates.InProgress; break; case 204: - this.status = LroStates.Succeeded; + status = LroStates.Succeeded; break; case 201: - if (this.resource && this.resource.properties && this.resource.properties.provisioningState) { - this.status = this.resource.properties.provisioningState; + if (resource && resource.properties && resource.properties.provisioningState) { + status = resource.properties.provisioningState; } else { - this.status = LroStates.InProgress; + status = LroStates.InProgress; } break; case 200: - if (this.resource && this.resource.properties && this.resource.properties.provisioningState) { - this.status = this.resource.properties.provisioningState; + if (resource && resource.properties && resource.properties.provisioningState) { + status = resource.properties.provisioningState; } else { - this.status = LroStates.Succeeded; + status = LroStates.Succeeded; } break; default: - this.status = LroStates.Failed; + status = LroStates.Failed; break; } + this.status = status; } /** @@ -108,8 +111,8 @@ export default class PollingState { updateResponse(response: msRest.HttpOperationResponse) { this.response = response; if (response && response.headers) { - const asyncOperationHeader: string | null | undefined = response.headers.get("azure-asyncoperation"); - const locationHeader: string | null | undefined = response.headers.get("location"); + const asyncOperationHeader: string | undefined = response.headers.get("azure-asyncoperation"); + const locationHeader: string | undefined = response.headers.get("location"); if (asyncOperationHeader) { this.azureAsyncOperationHeaderLink = asyncOperationHeader; } @@ -125,11 +128,12 @@ export default class PollingState { * @returns {number} timeout */ getTimeout() { - if (this.retryTimeout || this.retryTimeout === 0) { - return this.retryTimeout * 1000; + const retryTimeout = this.retryTimeout; + if (retryTimeout || retryTimeout === 0) { + return retryTimeout * 1000; } if (this.response) { - const retryAfter: string | null | undefined = this.response.headers.get("retry-after"); + const retryAfter: string | undefined = this.response.headers.get("retry-after"); if (retryAfter) { return parseInt(retryAfter) * 1000; } @@ -143,12 +147,13 @@ export default class PollingState { */ getOperationResponse(): msRest.HttpOperationResponse { const result = { ...this.response, headers: this.response.headers.clone() }; - if (this.resource && typeof this.resource.valueOf() === "string") { - result.bodyAsText = this.resource; - result.parsedBody = JSON.parse(this.resource); + const resource = this.resource; + if (resource && typeof resource.valueOf() === "string") { + result.bodyAsText = resource; + result.parsedBody = JSON.parse(resource); } else { - result.parsedBody = this.resource; - result.bodyAsText = JSON.stringify(this.resource); + result.parsedBody = resource; + result.bodyAsText = JSON.stringify(resource); } return result; } From da4fee0b28c9d2d96e6b2db1a62ac20c9778abd1 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Thu, 21 Jun 2018 15:34:22 -0700 Subject: [PATCH 053/289] Make LroStates a union of literal string types --- lib/azureServiceClient.ts | 19 +++++++++---------- lib/pollingState.ts | 17 ++++++++--------- lib/util/constants.ts | 21 +++++++++------------ 3 files changed, 26 insertions(+), 31 deletions(-) diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index 80a68b2fabe8..e213b9bfdaaf 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -2,9 +2,8 @@ // Licensed under the MIT License. See License.txt in the project root for license information. import * as msRest from "ms-rest-js"; -import Constants from "./util/constants"; +import Constants, { LongRunningOperationStates as LroStates } from "./util/constants"; import PollingState from "./pollingState"; -const LroStates = Constants.LongRunningOperationStates; /** * Options to be provided while creating the client. @@ -98,7 +97,7 @@ export class AzureServiceClient extends msRest.ServiceClient { pollingState.optionsOfInitialRequest = options as msRest.RequestOptionsBase; const resourceUrl: string = resultOfInitialRequest.request.url; - while (![LroStates.Succeeded, LroStates.Failed, LroStates.Canceled].some((e) => { return e === pollingState.status; })) { + while (terminalStates.indexOf(pollingState.status!) === -1) { await msRest.delay(pollingState.getTimeout()); if (pollingState.azureAsyncOperationHeaderLink) { await updateStateFromAzureAsyncOperationHeader(this, pollingState, true); @@ -111,20 +110,20 @@ export class AzureServiceClient extends msRest.ServiceClient { } } - if (pollingState.status === LroStates.Succeeded) { + if (pollingState.status === "Succeeded") { if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) && (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH")) { await updateStateFromGetResourceOperation(this, resourceUrl, pollingState); - return pollingState.getOperationResponse(); - } else { - return pollingState.getOperationResponse(); } + return pollingState.getOperationResponse(); } else { throw pollingState.getRestError(); } } } +const terminalStates: LroStates[] = ["Succeeded", "Failed", "Canceled"]; + function updateOptionsWithDefaultValues(options?: AzureServiceClientOptions): AzureServiceClientOptions { if (!options) { options = {}; @@ -188,11 +187,11 @@ function updateStateFromLocationHeader(client: AzureServiceClient, method: strin pollingState.request = result.request; const statusCode = result.status; if (statusCode === 202) { - pollingState.status = LroStates.InProgress; + pollingState.status = "InProgress"; } else if (statusCode === 200 || (statusCode === 201 && (method === "PUT" || method === "PATCH")) || (statusCode === 204 && (method === "DELETE" || method === "POST"))) { - pollingState.status = LroStates.Succeeded; + pollingState.status = "Succeeded"; pollingState.resource = parsedResponse; // we might not throw an error, but initialize here just in case. pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); @@ -216,7 +215,7 @@ function updateStateFromGetResourceOperation(client: AzureServiceClient, resourc } const parsedResponse = result.parsedBody as { [key: string]: any }; - pollingState.status = LroStates.Succeeded; + pollingState.status = "Succeeded"; if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) { pollingState.status = parsedResponse.properties.provisioningState; } diff --git a/lib/pollingState.ts b/lib/pollingState.ts index 823244b57c0b..63ab4999d3fa 100644 --- a/lib/pollingState.ts +++ b/lib/pollingState.ts @@ -1,9 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import Constants from "./util/constants"; +import { LongRunningOperationStates as LroStates } from "./util/constants"; import * as msRest from "ms-rest-js"; -const LroStates = Constants.LongRunningOperationStates; /** * @class @@ -45,7 +44,7 @@ export default class PollingState { /** * @param {string} [status] - The status of polling. "Succeeded, Failed, Cancelled, Updating, Creating, etc." */ - status?: string; + status?: LroStates; /** * @param {msRest.RestError} [error] - Provides information about the error that happened while polling. */ @@ -71,21 +70,21 @@ export default class PollingState { throw deserializationError; } const resource = this.resource; - let status: string | undefined; + let status: LroStates; switch (this.response.status) { case 202: - status = LroStates.InProgress; + status = "InProgress"; break; case 204: - status = LroStates.Succeeded; + status = "Succeeded"; break; case 201: if (resource && resource.properties && resource.properties.provisioningState) { status = resource.properties.provisioningState; } else { - status = LroStates.InProgress; + status = "InProgress"; } break; @@ -93,12 +92,12 @@ export default class PollingState { if (resource && resource.properties && resource.properties.provisioningState) { status = resource.properties.provisioningState; } else { - status = LroStates.Succeeded; + status = "Succeeded"; } break; default: - status = LroStates.Failed; + status = "Failed"; break; } this.status = status; diff --git a/lib/util/constants.ts b/lib/util/constants.ts index 812404f1900f..18d212d62232 100644 --- a/lib/util/constants.ts +++ b/lib/util/constants.ts @@ -1,19 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. + +/** + * Defines constants for long running operation states. + * + * @const + * @type {string} + */ +export type LongRunningOperationStates = "InProgress" | "Succeeded" | "Failed" | "Canceled" + const Constants = { - /** - * Defines constants for long running operation states. - * - * @const - * @type {string} - */ - LongRunningOperationStates: { - InProgress: "InProgress", - Succeeded: "Succeeded", - Failed: "Failed", - Canceled: "Canceled" - }, /** * The default language in the request header. From d7ab04f2bcab871c60e50989af3adc2bc1eded6a Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Thu, 21 Jun 2018 15:35:28 -0700 Subject: [PATCH 054/289] Remove unnecessary required: false --- lib/baseResource.ts | 1 - lib/cloudError.ts | 4 ---- 2 files changed, 5 deletions(-) diff --git a/lib/baseResource.ts b/lib/baseResource.ts index 69f41d601cdf..f7c7e150e102 100644 --- a/lib/baseResource.ts +++ b/lib/baseResource.ts @@ -8,7 +8,6 @@ export interface BaseResource { } export const BaseResourceMapper = { - required: false, serializedName: "BaseResource", type: { name: "Composite", diff --git a/lib/cloudError.ts b/lib/cloudError.ts index ffdea53ad3ba..2f551cc32593 100644 --- a/lib/cloudError.ts +++ b/lib/cloudError.ts @@ -25,7 +25,6 @@ export interface CloudError extends Error { } export const CloudErrorMapper = { - required: false, serializedName: "CloudError", type: { name: "Composite", @@ -46,19 +45,16 @@ export const CloudErrorMapper = { } }, target: { - required: false, serializedName: "target", type: { name: "String" } }, details: { - required: false, serializedName: "details", type: { name: "Sequence", element: { - required: false, serializedName: "CloudErrorElementType", type: { name: "Composite", From 0afc485b4885a938090e9d877735568519300f4d Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Thu, 21 Jun 2018 15:54:24 -0700 Subject: [PATCH 055/289] Fix linter errors --- lib/azureServiceClient.ts | 2 +- lib/util/constants.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index e213b9bfdaaf..29b2432c0a04 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -93,7 +93,7 @@ export class AzureServiceClient extends msRest.ServiceClient { throw new Error(`Unexpected polling status code from long running operation ` + `"${resultOfInitialRequest.status}" for method "${initialRequestMethod}".`); } - let pollingState = new PollingState(resultOfInitialRequest, this.longRunningOperationRetryTimeout); + const pollingState = new PollingState(resultOfInitialRequest, this.longRunningOperationRetryTimeout); pollingState.optionsOfInitialRequest = options as msRest.RequestOptionsBase; const resourceUrl: string = resultOfInitialRequest.request.url; diff --git a/lib/util/constants.ts b/lib/util/constants.ts index 18d212d62232..598201e8b30b 100644 --- a/lib/util/constants.ts +++ b/lib/util/constants.ts @@ -8,7 +8,7 @@ * @const * @type {string} */ -export type LongRunningOperationStates = "InProgress" | "Succeeded" | "Failed" | "Canceled" +export type LongRunningOperationStates = "InProgress" | "Succeeded" | "Failed" | "Canceled"; const Constants = { From 96650771240b12631a683916033e17cce7abc3b6 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Fri, 22 Jun 2018 10:06:29 -0700 Subject: [PATCH 056/289] Update ms-rest-js --- package-lock.json | 20 ++++++++++---------- package.json | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2e23d1e777ba..0825ee7d80da 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2447,9 +2447,9 @@ } }, "isomorphic-xml2js": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/isomorphic-xml2js/-/isomorphic-xml2js-0.0.3.tgz", - "integrity": "sha512-t86X20d5kcxKHD6iTItHpyXIG9qWAlGLnk4sejrqCyP64L7peSmHE9Xxcpg5WVOY4H2J+TBWuJ7vMlgc/Kov9Q==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/isomorphic-xml2js/-/isomorphic-xml2js-0.1.3.tgz", + "integrity": "sha512-dIkT2U9ritKVWF/HfHfGwm5tTnlMnknYsv7l12oJlQQgOV2CNV65pX+FHy6HFL9YP8q0JcrlNQAFRJIN2agUmQ==", "requires": { "@types/xml2js": "^0.4.2", "xml2js": "^0.4.19" @@ -2794,9 +2794,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.12.289", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.12.289.tgz", - "integrity": "sha1-ZfVGK4x+nNAtdsStsWrNsnr6VPA=", + "version": "0.12.301", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.12.301.tgz", + "integrity": "sha1-N+eNvb/GI6xSxWqYW1aCBjDOCto=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", @@ -2805,7 +2805,7 @@ "axios": "^0.18.0", "form-data": "^2.3.2", "isomorphic-tough-cookie": "^0.0.1", - "isomorphic-xml2js": "^0.0.3", + "isomorphic-xml2js": "^0.1.3", "tslib": "^1.9.2", "uuid": "^3.2.1" } @@ -4071,9 +4071,9 @@ } }, "tslib": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.2.tgz", - "integrity": "sha512-AVP5Xol3WivEr7hnssHDsaM+lVrVXWUvd1cfXTRkTj80b//6g2wIFEH6hZG0muGZRnHGrfttpdzRk3YlBkWjKw==" + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" }, "tslint": { "version": "5.10.0", diff --git a/package.json b/package.json index 699cac1ff12e..89095886bbc3 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.12.289" + "ms-rest-js": "~0.12.301" }, "devDependencies": { "@types/mocha": "^5.2.1", From 79c6edd40b79563cea49b01ff42bd818126032a9 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Mon, 25 Jun 2018 14:59:17 -0700 Subject: [PATCH 057/289] Bump version and ms-rest-js version --- package-lock.json | 20 ++++++++++---------- package.json | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0825ee7d80da..6f7c777c3b07 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ms-rest-azure-js", - "version": "0.8.0", + "version": "0.9.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2198,9 +2198,9 @@ } }, "hosted-git-info": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.1.tgz", + "integrity": "sha512-Ba4+0M4YvIDUUsprMjhVTU1yN9F2/LJSAl69ZpzaLT4l4j5mwTS6jqqW9Ojvj6lKz/veqPzpJBqGbXspOb533A==", "dev": true }, "https-browserify": { @@ -2794,9 +2794,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.12.301", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.12.301.tgz", - "integrity": "sha1-N+eNvb/GI6xSxWqYW1aCBjDOCto=", + "version": "0.13.315", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.13.315.tgz", + "integrity": "sha1-WB+TzdgJ9I0TA2OvexdkdEl76a8=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", @@ -4026,9 +4026,9 @@ } }, "tough-cookie": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.2.tgz", - "integrity": "sha512-vahm+X8lSV/KjXziec8x5Vp0OTC9mq8EVCOApIsRAooeuMPSO8aT7PFACYkaL0yZ/3hVqw+8DzhCJwl8H2Ad6w==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" diff --git a/package.json b/package.json index 89095886bbc3..75965861d815 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.8.0", + "version": "0.9.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -30,7 +30,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.12.301" + "ms-rest-js": "~0.13.315" }, "devDependencies": { "@types/mocha": "^5.2.1", From 86d1119f1116d0351f1a1b7337a085c0b4d493a3 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Tue, 26 Jun 2018 09:03:29 -0700 Subject: [PATCH 058/289] Bump version number and ms-rest-js version --- package-lock.json | 8 ++++---- package.json | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6f7c777c3b07..9b31821af2d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ms-rest-azure-js", - "version": "0.9.0", + "version": "0.10.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2794,9 +2794,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.13.315", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.13.315.tgz", - "integrity": "sha1-WB+TzdgJ9I0TA2OvexdkdEl76a8=", + "version": "0.14.320", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.14.320.tgz", + "integrity": "sha1-isD2U9DquDnbJbSfLLVPJaMLlOU=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", diff --git a/package.json b/package.json index 75965861d815..7a89136ccb64 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.9.0", + "version": "0.10.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -30,7 +30,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.13.315" + "ms-rest-js": "~0.14.320" }, "devDependencies": { "@types/mocha": "^5.2.1", From 5cc9eec3fcb532e08933c6f9314b1ff84df8a076 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Mon, 9 Jul 2018 11:56:22 -0700 Subject: [PATCH 059/289] Update ms-rest-js to ~0.15 --- package-lock.json | 86 +++++++++++++++++++---------------------------- package.json | 2 +- 2 files changed, 35 insertions(+), 53 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9b31821af2d4..adc0d9a67e96 100644 --- a/package-lock.json +++ b/package-lock.json @@ -60,15 +60,15 @@ "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==" }, "@types/mocha": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.3.tgz", - "integrity": "sha512-C1wVVr7xhKu6c3Mb27dFzNYR05qvHwgtpN+JOYTGc1pKA7dCEDDYpscn7kul+bCUwa3NoGDbzI1pdznSOa397w==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.4.tgz", + "integrity": "sha512-XMHApnKWI0jvXU5gLcSTsRjJBpSzP0BG+2oGv98JFyS4a5R0tRy0oshHBRndb3BuHb9AwDKaUL8Ja7GfUvsG4g==", "dev": true }, "@types/node": { - "version": "9.6.22", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.22.tgz", - "integrity": "sha512-RIg9EkxzVMkNH0M4sLRngK23f5QiigJC0iODQmu4nopzstt8AjegYund3r82iMrd2BNCjcZVnklaItvKHaGfBA==" + "version": "9.6.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.23.tgz", + "integrity": "sha512-d2SJJpwkiPudEQ3+9ysANN2Nvz4QJKUPoe/WL5zyQzI0RaEeZWH5K5xjvUIGszTItHQpFPdH+u51f6G/LkS8Cg==" }, "@types/range-parser": { "version": "1.2.2", @@ -136,9 +136,9 @@ } }, "ajv": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.1.tgz", - "integrity": "sha512-pgZos1vgOHDiC7gKNbZW8eKvCnNXARv2oqrGQT7Hzbq5Azp7aZG6DJzADnkuSq7RH6qkXp4J/m68yPX/2uBHyQ==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.2.tgz", + "integrity": "sha512-hOs7GfvI6tUI1LfZddH82ky6mOMyTuY0mk7kE2pWpmhhUSkumzaTO5vbVwij39MdwPQWCV4Zv57Eo06NtL/GVA==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -1454,9 +1454,9 @@ } }, "follow-redirects": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz", - "integrity": "sha512-fdrt472/9qQ6Kgjvb935ig6vJCuofpBUD14f9Vb+SLlm7xIe4Qva5gey8EKtv8lp7ahE1wilg3xL1znpVGtZIA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.1.tgz", + "integrity": "sha512-v9GI1hpaqq1ZZR6pBD1+kI7O24PhDvNGNodjS3MdcEqyrahCp8zbtpv+2B/krUnSmUH80lbAS7MrdeK5IylgKg==", "requires": { "debug": "^3.1.0" } @@ -2171,13 +2171,13 @@ } }, "hash.js": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.4.tgz", - "integrity": "sha512-A6RlQvvZEtFS5fLU43IDu0QUmBy+fDO9VMdTXvufKwIkt/rFfvICAViCax5fbDO4zdNzaC3/27ZhKUok5bAJyw==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", + "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", "dev": true, "requires": { "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" + "minimalistic-assert": "^1.0.1" } }, "he": { @@ -2198,9 +2198,9 @@ } }, "hosted-git-info": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.1.tgz", - "integrity": "sha512-Ba4+0M4YvIDUUsprMjhVTU1yN9F2/LJSAl69ZpzaLT4l4j5mwTS6jqqW9Ojvj6lKz/veqPzpJBqGbXspOb533A==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", "dev": true }, "https-browserify": { @@ -2288,9 +2288,9 @@ } }, "is-callable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", - "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", "dev": true }, "is-data-descriptor": { @@ -2366,23 +2366,6 @@ "kind-of": "^3.0.2" } }, - "is-odd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", - "dev": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -2794,9 +2777,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.14.320", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.14.320.tgz", - "integrity": "sha1-isD2U9DquDnbJbSfLLVPJaMLlOU=", + "version": "0.15.344", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.15.344.tgz", + "integrity": "sha1-OvH7+WHD/vA84CuS9ZwpNYzF6m0=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", @@ -2818,9 +2801,9 @@ "optional": true }, "nanomatch": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "dev": true, "requires": { "arr-diff": "^4.0.0", @@ -2828,7 +2811,6 @@ "define-property": "^2.0.2", "extend-shallow": "^3.0.2", "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", "is-windows": "^1.0.2", "kind-of": "^6.0.2", "object.pick": "^1.3.0", @@ -4096,9 +4078,9 @@ } }, "tsutils": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.27.1.tgz", - "integrity": "sha512-AE/7uzp32MmaHvNNFES85hhUDHFdFZp6OAiZcd6y4ZKKIg6orJTm8keYWBhIhrJQH3a4LzNKat7ZPXZt5aTf6w==", + "version": "2.27.2", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.27.2.tgz", + "integrity": "sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -4338,9 +4320,9 @@ "dev": true }, "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" }, "validate-npm-package-license": { "version": "3.0.3", diff --git a/package.json b/package.json index 7a89136ccb64..ca38a00c7c24 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.14.320" + "ms-rest-js": "~0.15.344" }, "devDependencies": { "@types/mocha": "^5.2.1", From c7a74f731404e7037f1187ea7e03442d421eb5c2 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Thu, 31 May 2018 15:30:46 -0700 Subject: [PATCH 060/289] Update ms-rest-js and add tslib dependency --- package-lock.json | 198 ++++++++++++++++++++++++++++++---------------- package.json | 3 +- 2 files changed, 134 insertions(+), 67 deletions(-) diff --git a/package-lock.json b/package-lock.json index adc0d9a67e96..827f39428bac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1517,24 +1517,28 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "aproba": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "dev": true, "optional": true, "requires": { @@ -1544,12 +1548,14 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "brace-expansion": { "version": "1.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -1558,34 +1564,40 @@ }, "chownr": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, "core-util-is": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true, "optional": true }, "debug": { "version": "2.6.9", - "bundled": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "optional": true, "requires": { @@ -1594,25 +1606,29 @@ }, "deep-extend": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", "dev": true, "optional": true }, "delegates": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "dev": true, "optional": true, "requires": { @@ -1621,13 +1637,15 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true, "optional": true }, "gauge": { "version": "2.7.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "optional": true, "requires": { @@ -1643,7 +1661,8 @@ }, "glob": { "version": "7.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "optional": true, "requires": { @@ -1657,13 +1676,15 @@ }, "has-unicode": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true, "optional": true }, "iconv-lite": { "version": "0.4.21", - "bundled": true, + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", + "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", "dev": true, "optional": true, "requires": { @@ -1672,7 +1693,8 @@ }, "ignore-walk": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "dev": true, "optional": true, "requires": { @@ -1681,7 +1703,8 @@ }, "inflight": { "version": "1.0.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "optional": true, "requires": { @@ -1691,18 +1714,21 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "ini": { "version": "1.3.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -1710,13 +1736,15 @@ }, "isarray": { "version": "1.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -1724,12 +1752,14 @@ }, "minimist": { "version": "0.0.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "minipass": { "version": "2.2.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz", + "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==", "dev": true, "requires": { "safe-buffer": "^5.1.1", @@ -1738,7 +1768,8 @@ }, "minizlib": { "version": "1.1.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", + "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", "dev": true, "optional": true, "requires": { @@ -1747,7 +1778,8 @@ }, "mkdirp": { "version": "0.5.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" @@ -1755,13 +1787,15 @@ }, "ms": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true, "optional": true }, "needle": { "version": "2.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.0.tgz", + "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==", "dev": true, "optional": true, "requires": { @@ -1772,7 +1806,8 @@ }, "node-pre-gyp": { "version": "0.10.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz", + "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==", "dev": true, "optional": true, "requires": { @@ -1790,7 +1825,8 @@ }, "nopt": { "version": "4.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "dev": true, "optional": true, "requires": { @@ -1800,13 +1836,15 @@ }, "npm-bundled": { "version": "1.0.3", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz", + "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==", "dev": true, "optional": true }, "npm-packlist": { "version": "1.1.10", - "bundled": true, + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz", + "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", "dev": true, "optional": true, "requires": { @@ -1816,7 +1854,8 @@ }, "npmlog": { "version": "4.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "optional": true, "requires": { @@ -1828,18 +1867,21 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object-assign": { "version": "4.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true, "optional": true }, "once": { "version": "1.4.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" @@ -1847,19 +1889,22 @@ }, "os-homedir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true, "optional": true }, "osenv": { "version": "0.1.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "optional": true, "requires": { @@ -1869,19 +1914,22 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true, "optional": true }, "rc": { "version": "1.2.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", + "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", "dev": true, "optional": true, "requires": { @@ -1893,7 +1941,8 @@ "dependencies": { "minimist": { "version": "1.2.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true, "optional": true } @@ -1901,7 +1950,8 @@ }, "readable-stream": { "version": "2.3.6", - "bundled": true, + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "optional": true, "requires": { @@ -1916,7 +1966,8 @@ }, "rimraf": { "version": "2.6.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "optional": true, "requires": { @@ -1925,42 +1976,49 @@ }, "safe-buffer": { "version": "5.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, "safer-buffer": { "version": "2.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "optional": true }, "sax": { "version": "1.2.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true, "optional": true }, "semver": { "version": "5.5.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true, "optional": true }, "string-width": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -1970,7 +2028,8 @@ }, "string_decoder": { "version": "1.1.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "optional": true, "requires": { @@ -1979,7 +2038,8 @@ }, "strip-ansi": { "version": "3.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -1987,13 +2047,15 @@ }, "strip-json-comments": { "version": "2.0.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true, "optional": true }, "tar": { "version": "4.4.1", - "bundled": true, + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.1.tgz", + "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==", "dev": true, "optional": true, "requires": { @@ -2008,13 +2070,15 @@ }, "util-deprecate": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true, "optional": true }, "wide-align": { "version": "1.1.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, "optional": true, "requires": { @@ -2023,12 +2087,14 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "yallist": { "version": "3.0.2", - "bundled": true, + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", + "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", "dev": true } } diff --git a/package.json b/package.json index ca38a00c7c24..6fe1395b8713 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,8 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.15.344" + "ms-rest-js": "~0.15.344", + "tslib": "^1.9.2" }, "devDependencies": { "@types/mocha": "^5.2.1", From c01e06ca0a0f54be2a845921e5069fd4cf3bdea7 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Thu, 31 May 2018 15:38:24 -0700 Subject: [PATCH 061/289] Add importHelpers to tsconfig.json --- tsconfig.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index e1ba7b4e12ea..4214fc147139 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,6 +13,7 @@ "strict": true, "declaration": true, "declarationDir": "./typings", + "importHelpers": true, "lib": [ "dom", "dom.iterable", @@ -32,4 +33,4 @@ "./lib/**/*.ts", "./test/**/*.ts" ] -} \ No newline at end of file +} From 7e74131057cb757315e2e037e11baad41b0c9406 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Mon, 16 Jul 2018 13:27:06 -0700 Subject: [PATCH 062/289] Bump ms-rest-js dependency version to 0.16 --- package-lock.json | 254 ++++++++++++++++------------------------------ package.json | 4 +- 2 files changed, 91 insertions(+), 167 deletions(-) diff --git a/package-lock.json b/package-lock.json index 827f39428bac..23255b5eb45e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ms-rest-azure-js", - "version": "0.10.0", + "version": "0.11.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -530,14 +530,15 @@ } }, "browserify-des": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", - "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "dev": true, "requires": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", - "inherits": "^2.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, "browserify-rsa": { @@ -1178,9 +1179,9 @@ } }, "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "esrecurse": { @@ -1517,28 +1518,24 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "bundled": true, "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "aproba": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "bundled": true, "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1548,14 +1545,12 @@ }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "bundled": true, "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -1564,40 +1559,34 @@ }, "chownr": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "bundled": true, "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "bundled": true, "dev": true }, "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "bundled": true, "dev": true, "optional": true }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1606,29 +1595,25 @@ }, "deep-extend": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", + "bundled": true, "dev": true, "optional": true }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "bundled": true, "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "bundled": true, "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1637,15 +1622,13 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true, "optional": true }, "gauge": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1661,8 +1644,7 @@ }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1676,15 +1658,13 @@ }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "bundled": true, "dev": true, "optional": true }, "iconv-lite": { "version": "0.4.21", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", - "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1693,8 +1673,7 @@ }, "ignore-walk": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1703,8 +1682,7 @@ }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1714,21 +1692,18 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "ini": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "bundled": true, "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -1736,15 +1711,13 @@ }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -1752,14 +1725,12 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true }, "minipass": { "version": "2.2.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz", - "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==", + "bundled": true, "dev": true, "requires": { "safe-buffer": "^5.1.1", @@ -1768,8 +1739,7 @@ }, "minizlib": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", - "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1778,8 +1748,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -1787,15 +1756,13 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "bundled": true, "dev": true, "optional": true }, "needle": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.0.tgz", - "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1806,8 +1773,7 @@ }, "node-pre-gyp": { "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz", - "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1825,8 +1791,7 @@ }, "nopt": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1836,15 +1801,13 @@ }, "npm-bundled": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz", - "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==", + "bundled": true, "dev": true, "optional": true }, "npm-packlist": { "version": "1.1.10", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz", - "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1854,8 +1817,7 @@ }, "npmlog": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1867,21 +1829,18 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true, "optional": true }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1" @@ -1889,22 +1848,19 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "bundled": true, "dev": true, "optional": true }, "osenv": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1914,22 +1870,19 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "bundled": true, "dev": true, "optional": true }, "rc": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", - "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1941,8 +1894,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "bundled": true, "dev": true, "optional": true } @@ -1950,8 +1902,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1966,8 +1917,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -1976,49 +1926,42 @@ }, "safe-buffer": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "bundled": true, "dev": true }, "safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "bundled": true, "dev": true, "optional": true }, "sax": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "bundled": true, "dev": true, "optional": true }, "semver": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "bundled": true, "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true, "optional": true }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -2028,8 +1971,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2038,8 +1980,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -2047,15 +1988,13 @@ }, "strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "bundled": true, "dev": true, "optional": true }, "tar": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.1.tgz", - "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2070,15 +2009,13 @@ }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "bundled": true, "dev": true, "optional": true }, "wide-align": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -2087,14 +2024,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "yallist": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", - "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", + "bundled": true, "dev": true } } @@ -2106,9 +2041,9 @@ "dev": true }, "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true }, "get-stream": { @@ -2843,9 +2778,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.15.344", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.15.344.tgz", - "integrity": "sha1-OvH7+WHD/vA84CuS9ZwpNYzF6m0=", + "version": "0.16.366", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.16.366.tgz", + "integrity": "sha1-p1TQaiHSb4/L/6Uhic+6q4F+8kQ=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", @@ -4124,9 +4059,9 @@ "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" }, "tslint": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.10.0.tgz", - "integrity": "sha1-EeJrzLiK+gLdDZlWyuPUVAtfVMM=", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz", + "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=", "dev": true, "requires": { "babel-code-frame": "^6.22.0", @@ -4140,7 +4075,7 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.12.1" + "tsutils": "^2.27.2" } }, "tsutils": { @@ -4354,21 +4289,10 @@ } }, "use": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true }, "util": { "version": "0.10.4", diff --git a/package.json b/package.json index 6fe1395b8713..90b07936a700 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.10.0", + "version": "0.11.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -30,7 +30,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.15.344", + "ms-rest-js": "~0.16.366", "tslib": "^1.9.2" }, "devDependencies": { From cec06a300186248723388f8516743860eccd9ca0 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Wed, 18 Jul 2018 13:06:58 -0700 Subject: [PATCH 063/289] Add tests for AzureServiceClient coverage --- .gitignore | 2 + .npmignore | 2 + lib/azureServiceClient.ts | 59 +- lib/pollingState.ts | 4 +- package-lock.json | 2691 ++++++++++++++++++++++++++++--- package.json | 23 +- test/azureServiceClientTests.ts | 592 +++++++ test/msAssert.ts | 31 + test/placeholder.ts | 4 - 9 files changed, 3124 insertions(+), 284 deletions(-) create mode 100644 test/azureServiceClientTests.ts create mode 100644 test/msAssert.ts delete mode 100644 test/placeholder.ts diff --git a/.gitignore b/.gitignore index 2188f394e418..602b6d960b3d 100644 --- a/.gitignore +++ b/.gitignore @@ -84,6 +84,8 @@ SdkCodeGen output/* # Typescript output +.nyc_output/ +coverage/ dist/ typings/ *.js diff --git a/.npmignore b/.npmignore index 4479aea651e5..bfa3e84811a6 100644 --- a/.npmignore +++ b/.npmignore @@ -3,6 +3,8 @@ !typings/lib/**/*.d.ts .vscode/ .idea/ +.nyc_output/ +coverage/ samples/ lib/ test/ diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index 29b2432c0a04..4b91323cb1e5 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -2,8 +2,8 @@ // Licensed under the MIT License. See License.txt in the project root for license information. import * as msRest from "ms-rest-js"; -import Constants, { LongRunningOperationStates as LroStates } from "./util/constants"; import PollingState from "./pollingState"; +import Constants, { LongRunningOperationStates as LroStates } from "./util/constants"; /** * Options to be provided while creating the client. @@ -19,12 +19,6 @@ export interface AzureServiceClientOptions extends msRest.ServiceClientOptions { * Long Running Operations. Default value is 30. */ longRunningOperationRetryTimeout?: number; - - /** - * @property {number} [rpRegistrationRetryTimeout] - Gets or sets the retry timeout in seconds for - * AutomaticRPRegistration. Default value is 30 seconds. - */ - rpRegistrationRetryTimeout?: number; } /** @@ -39,15 +33,9 @@ export interface AzureServiceClientOptions extends msRest.ServiceClientOptions { export class AzureServiceClient extends msRest.ServiceClient { acceptLanguage: string = Constants.DEFAULT_LANGUAGE; longRunningOperationRetryTimeout = 30; - rpRegistrationRetryTimeout = 30; constructor(credentials: msRest.ServiceClientCredentials, options?: AzureServiceClientOptions) { - super(credentials, updateOptionsWithDefaultValues(options)); - this.acceptLanguage = Constants.DEFAULT_LANGUAGE; - this.longRunningOperationRetryTimeout = 30; - if (!options) { - options = {}; - } + super(credentials, options = updateOptionsWithDefaultValues(options)); if (options.acceptLanguage != undefined) { this.acceptLanguage = options.acceptLanguage; @@ -57,17 +45,7 @@ export class AzureServiceClient extends msRest.ServiceClient { this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout; } - if (options.rpRegistrationRetryTimeout != undefined) { - this.rpRegistrationRetryTimeout = options.rpRegistrationRetryTimeout; - } - - try { - const moduleName = "ms-rest-azure"; - const moduleVersion = Constants.msRestAzureVersion; - this.addUserAgentInfo(`${moduleName}/${moduleVersion}`); - } catch (err) { - // do nothing - } + this.addUserAgentInfo(`ms-rest-azure/${Constants.msRestAzureVersion}`); } /** @@ -87,20 +65,20 @@ export class AzureServiceClient extends msRest.ServiceClient { * @returns {Promise} result - The final response after polling is complete. */ async getLongRunningOperationResult(resultOfInitialRequest: msRest.HttpOperationResponse, options?: msRest.RequestOptionsBase): Promise { - const initialRequestMethod: string = resultOfInitialRequest.request.method as msRest.HttpMethods; + const initialRequestMethod: msRest.HttpMethods = resultOfInitialRequest.request.method; if (checkResponseStatusCodeFailed(resultOfInitialRequest)) { throw new Error(`Unexpected polling status code from long running operation ` + `"${resultOfInitialRequest.status}" for method "${initialRequestMethod}".`); } const pollingState = new PollingState(resultOfInitialRequest, this.longRunningOperationRetryTimeout); - pollingState.optionsOfInitialRequest = options as msRest.RequestOptionsBase; + pollingState.optionsOfInitialRequest = options as msRest.RequestOptionsBase; const resourceUrl: string = resultOfInitialRequest.request.url; - while (terminalStates.indexOf(pollingState.status!) === -1) { + while (terminalStates.indexOf(pollingState.status) === -1) { await msRest.delay(pollingState.getTimeout()); if (pollingState.azureAsyncOperationHeaderLink) { - await updateStateFromAzureAsyncOperationHeader(this, pollingState, true); + await updateStateFromAzureAsyncOperationHeader(this, pollingState); } else if (pollingState.locationHeaderLink) { await updateStateFromLocationHeader(this, initialRequestMethod, pollingState); } else if (initialRequestMethod === "PUT") { @@ -124,7 +102,7 @@ export class AzureServiceClient extends msRest.ServiceClient { const terminalStates: LroStates[] = ["Succeeded", "Failed", "Canceled"]; -function updateOptionsWithDefaultValues(options?: AzureServiceClientOptions): AzureServiceClientOptions { +export function updateOptionsWithDefaultValues(options?: AzureServiceClientOptions): AzureServiceClientOptions { if (!options) { options = {}; } @@ -138,7 +116,7 @@ function updateOptionsWithDefaultValues(options?: AzureServiceClientOptions): Az * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request. * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation. */ -function checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResponse): boolean { +export function checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResponse): boolean { const statusCode = initialResponse.status; const method = initialResponse.request.method; if (statusCode === 200 || statusCode === 202 || @@ -155,7 +133,7 @@ function checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResp * @param {PollingState} pollingState - The object to persist current operation state. * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation. */ -function updateStateFromAzureAsyncOperationHeader(client: AzureServiceClient, pollingState: PollingState, inPostOrDelete = false): Promise { +export function updateStateFromAzureAsyncOperationHeader(client: AzureServiceClient, pollingState: PollingState): Promise { return getStatus(client, pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest).then(result => { const parsedResponse = result.parsedBody as { [key: string]: any }; if (!parsedResponse) { @@ -168,9 +146,7 @@ function updateStateFromAzureAsyncOperationHeader(client: AzureServiceClient, po pollingState.updateResponse(result); pollingState.request = result.request; pollingState.resource = undefined; - if (inPostOrDelete) { - pollingState.resource = result.parsedBody; - } + pollingState.resource = result.parsedBody; }); } @@ -179,7 +155,7 @@ function updateStateFromAzureAsyncOperationHeader(client: AzureServiceClient, po * @param {string} method - The HTTP method. * @param {PollingState} pollingState - The object to persist current operation state. */ -function updateStateFromLocationHeader(client: AzureServiceClient, method: string, pollingState: PollingState): Promise { +export function updateStateFromLocationHeader(client: AzureServiceClient, method: msRest.HttpMethods, pollingState: PollingState): Promise { return getStatus(client, pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest).then(result => { const parsedResponse = result.parsedBody as { [key: string]: any }; @@ -208,7 +184,7 @@ function updateStateFromLocationHeader(client: AzureServiceClient, method: strin * @param {string} resourceUrl - The url of resource. * @param {PollingState} pollingState - The object to persist current operation state. */ -function updateStateFromGetResourceOperation(client: AzureServiceClient, resourceUrl: string, pollingState: PollingState): Promise { +export function updateStateFromGetResourceOperation(client: AzureServiceClient, resourceUrl: string, pollingState: PollingState): Promise { return getStatus(client, resourceUrl, pollingState.optionsOfInitialRequest).then(result => { if (!result.parsedBody) { throw new Error("The response from long running operation does not contain a body."); @@ -233,7 +209,7 @@ function updateStateFromGetResourceOperation(client: AzureServiceClient, resourc * @param {string} operationUrl - URL used to poll operation result. * @param {object} options - Options that can be set on the request object */ -function getStatus(client: AzureServiceClient, operationUrl: string, options?: msRest.RequestOptionsBase): Promise { +export function getStatus(client: AzureServiceClient, operationUrl: string, options?: msRest.RequestOptionsBase): Promise { // Construct URL const requestUrl = operationUrl.replace(" ", "%20"); // Create HTTP request object @@ -257,12 +233,7 @@ function getStatus(client: AzureServiceClient, operationUrl: string, options?: m error.statusCode = statusCode; error.request = msRest.stripRequest(operationResponse.request); error.response = operationResponse; - try { - error.body = responseBody; - } catch (badResponse) { - error.message += ` Error "${badResponse}" occured while deserializing the response body - "${operationResponse.bodyAsText}".`; - error.body = operationResponse.bodyAsText; - } + error.body = responseBody; throw error; } diff --git a/lib/pollingState.ts b/lib/pollingState.ts index 63ab4999d3fa..1a9f82be232a 100644 --- a/lib/pollingState.ts +++ b/lib/pollingState.ts @@ -44,13 +44,13 @@ export default class PollingState { /** * @param {string} [status] - The status of polling. "Succeeded, Failed, Cancelled, Updating, Creating, etc." */ - status?: LroStates; + status: LroStates; /** * @param {msRest.RestError} [error] - Provides information about the error that happened while polling. */ error?: msRest.RestError; - constructor(resultOfInitialRequest: msRest.HttpOperationResponse, retryTimeout = 30) { + constructor(resultOfInitialRequest: msRest.HttpOperationResponse, retryTimeout: number) { this.resultOfInitialRequest = resultOfInitialRequest; this.retryTimeout = retryTimeout; this.updateResponse(resultOfInitialRequest); diff --git a/package-lock.json b/package-lock.json index 23255b5eb45e..99f0d5052402 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,9 +1,118 @@ { "name": "ms-rest-azure-js", - "version": "0.11.0", + "version": "0.11.101", "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz", + "integrity": "sha1-vXHZsZKvl435FYKdOdQJRFZDmgw=", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0-beta.51" + } + }, + "@babel/generator": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.51.tgz", + "integrity": "sha1-bHV1/952HQdIXgS67cA5LG2eMPY=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.51", + "jsesc": "^2.5.1", + "lodash": "^4.17.5", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz", + "integrity": "sha1-IbSHSiJ8+Z7K/MMKkDAtpaJkBWE=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.51", + "@babel/template": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz", + "integrity": "sha1-MoGy0EWvlcFyzpGyCCXYXqRnZBE=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.51" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz", + "integrity": "sha1-imw/ZsTSZTUvwHdIT59ugKUauXg=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.51" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz", + "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" + } + }, + "@babel/parser": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz", + "integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=", + "dev": true + }, + "@babel/template": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.51.tgz", + "integrity": "sha1-lgKkCuvPNXrpZ34lMu9fyBD1+/8=", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.51", + "@babel/parser": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51", + "lodash": "^4.17.5" + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.51.tgz", + "integrity": "sha1-mB2vLOw0emIx06odnhgDsDqqpKg=", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.51", + "@babel/generator": "7.0.0-beta.51", + "@babel/helper-function-name": "7.0.0-beta.51", + "@babel/helper-split-export-declaration": "7.0.0-beta.51", + "@babel/parser": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51", + "debug": "^3.1.0", + "globals": "^11.1.0", + "invariant": "^2.2.0", + "lodash": "^4.17.5" + } + }, + "@babel/types": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.51.tgz", + "integrity": "sha1-2AK3tUO1g2x3iqaReXq/APPZfqk=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.5", + "to-fast-properties": "^2.0.0" + } + }, "@types/body-parser": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz", @@ -60,9 +169,9 @@ "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==" }, "@types/mocha": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.4.tgz", - "integrity": "sha512-XMHApnKWI0jvXU5gLcSTsRjJBpSzP0BG+2oGv98JFyS4a5R0tRy0oshHBRndb3BuHb9AwDKaUL8Ja7GfUvsG4g==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.5.tgz", + "integrity": "sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww==", "dev": true }, "@types/node": { @@ -2093,6 +2202,12 @@ } } }, + "globals": { + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", + "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", + "dev": true + }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", @@ -2244,6 +2359,15 @@ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", "dev": true }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", @@ -2439,6 +2563,27 @@ "xml2js": "^0.4.19" } }, + "istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.1.tgz", + "integrity": "sha512-h9Vg3nfbxrF0PK0kZiNiMAyL8zXaLiBP/BXniaKSwVvAi1TaumYV2b0wPdmy1CRX3irYbYD1p4Wjbv4uyECiiQ==", + "dev": true, + "requires": { + "@babel/generator": "7.0.0-beta.51", + "@babel/parser": "7.0.0-beta.51", + "@babel/template": "7.0.0-beta.51", + "@babel/traverse": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51", + "istanbul-lib-coverage": "^2.0.1", + "semver": "^5.5.0" + } + }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", @@ -2455,6 +2600,12 @@ "esprima": "^4.0.0" } }, + "jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", + "dev": true + }, "json-loader": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", @@ -2566,6 +2717,15 @@ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, "lru-cache": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", @@ -2678,16 +2838,16 @@ } }, "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", + "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" }, "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "version": "2.1.19", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", + "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", "requires": { - "mime-db": "~1.33.0" + "mime-db": "~1.35.0" } }, "mimic-fn": { @@ -2778,9 +2938,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.16.366", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.16.366.tgz", - "integrity": "sha1-p1TQaiHSb4/L/6Uhic+6q4F+8kQ=", + "version": "0.16.371", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.16.371.tgz", + "integrity": "sha1-iQHQQc8HynVA0YzfmmwCe2Z7ImQ=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", @@ -2930,204 +3090,2257 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "nyc": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-12.0.2.tgz", + "integrity": "sha1-ikpO1pCWbBHsWH/4fuoMEsl0upk=", + "dev": true, + "requires": { + "archy": "^1.0.0", + "arrify": "^1.0.1", + "caching-transform": "^1.0.0", + "convert-source-map": "^1.5.1", + "debug-log": "^1.0.1", + "default-require-extensions": "^1.0.0", + "find-cache-dir": "^0.1.1", + "find-up": "^2.1.0", + "foreground-child": "^1.5.3", + "glob": "^7.0.6", + "istanbul-lib-coverage": "^1.2.0", + "istanbul-lib-hook": "^1.1.0", + "istanbul-lib-instrument": "^2.1.0", + "istanbul-lib-report": "^1.1.3", + "istanbul-lib-source-maps": "^1.2.5", + "istanbul-reports": "^1.4.1", + "md5-hex": "^1.2.0", + "merge-source-map": "^1.1.0", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.0", + "resolve-from": "^2.0.0", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.1", + "spawn-wrap": "^1.4.2", + "test-exclude": "^4.2.0", + "yargs": "11.1.0", + "yargs-parser": "^8.0.0" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "align-text": { + "version": "0.1.4", + "bundled": true, "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } - } - } - }, - "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "pako": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", - "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", - "dev": true - }, - "parse-asn1": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", - "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", - "dev": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "dev": true, - "requires": { - "through": "~2.3" - } - }, - "pbkdf2": { + }, + "amdefine": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "append-transform": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "requires": { + "default-require-extensions": "^1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "bundled": true, + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "bundled": true, + "dev": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "async": { + "version": "1.5.2", + "bundled": true, + "dev": true + }, + "atob": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "base": { + "version": "0.11.2", + "bundled": true, + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "caching-transform": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "md5-hex": "^1.2.0", + "mkdirp": "^0.5.1", + "write-file-atomic": "^1.1.4" + } + }, + "camelcase": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "class-utils": { + "version": "0.3.6", + "bundled": true, + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "commondir": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "bundled": true, + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "cross-spawn": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "strip-bom": "^2.0.0" + } + }, + "define-property": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, + "error-ex": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, + "fill-range": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-cache-dir": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "foreground-child": { + "version": "1.5.6", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "^4", + "signal-exit": "^3.0.0" + } + }, + "fragment-cache": { + "version": "0.2.1", + "bundled": true, + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "get-value": { + "version": "2.0.6", + "bundled": true, + "dev": true + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "bundled": true, + "dev": true, + "requires": { + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "bundled": true, + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "has-value": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hosted-git-info": { + "version": "2.6.0", + "bundled": true, + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "bundled": true, + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-number": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-odd": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "bundled": true, + "dev": true + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "isobject": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "istanbul-lib-coverage": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "append-transform": "^0.4.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "requires": { + "istanbul-lib-coverage": "^1.1.2", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + } + }, + "istanbul-reports": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "requires": { + "handlebars": "^4.0.3" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "bundled": true, + "dev": true + } + } + }, + "longest": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "lru-cache": { + "version": "4.1.3", + "bundled": true, + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "map-cache": { + "version": "0.2.2", + "bundled": true, + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5-hex": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "md5-o-matic": "^0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "merge-source-map": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true + } + } + }, + "micromatch": { + "version": "3.1.10", + "bundled": true, + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, + "mimic-fn": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mixin-deep": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "nanomatch": { + "version": "1.2.9", + "bundled": true, + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "pascalcase": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "path-type": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true, + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true, + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "find-up": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + } + } + }, + "regex-not": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true, + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "resolve-from": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "ret": { + "version": "0.1.15", + "bundled": true, + "dev": true + }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-regex": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "set-value": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "slide": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^3.2.0" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true, + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "bundled": true, + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "bundled": true, + "dev": true + }, + "spawn-wrap": { + "version": "1.4.2", + "bundled": true, + "dev": true, + "requires": { + "foreground-child": "^1.5.6", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.2", + "which": "^1.3.0" + } + }, + "spdx-correct": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "split-string": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "static-extend": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "test-exclude": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "requires": { + "arrify": "^1.0.1", + "micromatch": "^3.1.8", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" + } + }, + "to-object-path": { + "version": "0.3.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "uglify-js": { + "version": "2.8.29", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "union-value": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unset-value": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "bundled": true, + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "bundled": true, + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "bundled": true, + "dev": true + }, + "use": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, + "validate-npm-package-license": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "window-size": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "bundled": true, + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" + } + }, + "y18n": { + "version": "3.2.1", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "11.1.0", + "bundled": true, + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true, + "dev": true + }, + "cliui": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "8.1.0", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true, + "dev": true + } + } + } + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "parse-asn1": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", + "dev": true, + "requires": { + "through": "~2.3" + } + }, + "pbkdf2": { "version": "3.0.16", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", @@ -3642,12 +5855,6 @@ "requires": { "is-extendable": "^0.1.0" } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true } } }, @@ -3724,9 +5931,9 @@ "dev": true }, "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-resolve": { @@ -3750,6 +5957,14 @@ "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "source-map-url": { @@ -3977,6 +6192,12 @@ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", "dev": true }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", @@ -4017,6 +6238,12 @@ "punycode": "^1.4.1" } }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, "ts-loader": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-2.3.7.tgz", @@ -4079,9 +6306,9 @@ } }, "tsutils": { - "version": "2.27.2", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.27.2.tgz", - "integrity": "sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg==", + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.28.0.tgz", + "integrity": "sha512-bh5nAtW0tuhvOJnx1GLRn5ScraRLICGyJV5wJhtRWOLsxW70Kk5tZtpK3O/hW6LDnqKS9mlUMPZj9fEMJ0gxqA==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -4114,6 +6341,12 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -4135,12 +6368,6 @@ "webpack-sources": "^1.0.1" }, "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", @@ -4380,12 +6607,6 @@ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, "supports-color": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", @@ -4405,6 +6626,14 @@ "requires": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "which": { diff --git a/package.json b/package.json index 90b07936a700..a35aa3afe1f8 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.11.0", + "version": "0.11.101", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -30,7 +30,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.16.366", + "ms-rest-js": "~0.16.371", "tslib": "^1.9.2" }, "devDependencies": { @@ -38,6 +38,7 @@ "@types/should": "^8.1.30", "mocha": "^5.2.0", "npm-run-all": "^4.1.2", + "nyc": "^12.0.2", "should": "5.2.0", "shx": "^0.2.2", "ts-loader": "^2.3.7", @@ -56,6 +57,22 @@ "bugs": { "url": "http://github.com/Azure/ms-rest-azure-js/issues" }, + "nyc": { + "extension": [ + ".ts" + ], + "exclude": [ + "**/*.d.ts" + ], + "include": [ + "lib/**/*.ts" + ], + "reporter": [ + "text", + "html" + ], + "all": true + }, "scripts": { "build": "run-p build:node build:es build:browser", "build:node": "tsc", @@ -64,7 +81,7 @@ "watch:node": "tsc -w", "watch:browser": "webpack -w", "test": "run-p test:tslint test:unit", - "test:unit": "mocha", + "test:unit": "nyc mocha", "test:tslint": "tslint -p . -c tslint.json --exclude test/**/*.ts", "prepare": "npm run build", "publish-preview": "npm test && shx rm -rf dist/test && node ./.scripts/publish", diff --git a/test/azureServiceClientTests.ts b/test/azureServiceClientTests.ts new file mode 100644 index 000000000000..8f38e8696aa5 --- /dev/null +++ b/test/azureServiceClientTests.ts @@ -0,0 +1,592 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +import * as assert from "assert"; +import * as msRest from "ms-rest-js"; +import { HttpHeaders, HttpOperationResponse, TokenCredentials, WebResource } from "ms-rest-js"; +import { AzureServiceClient, AzureServiceClientOptions, updateOptionsWithDefaultValues } from "../lib/azureServiceClient"; +import * as msAssert from "./msAssert"; + +describe("AzureServiceClient", () => { + describe("constructor", () => { + it("with no options provided", () => { + const client = new AzureServiceClient(new TokenCredentials("my-fake-token")); + assert.strictEqual(client.acceptLanguage, "en-us"); + assert.strictEqual(client.longRunningOperationRetryTimeout, 30); + assert.deepStrictEqual(client.userAgentInfo, { value: ["ms-rest-js/0.1.0", "ms-rest-azure/0.1.0"] }); + }); + + it("with acceptLanguage provided", () => { + const client = new AzureServiceClient(new TokenCredentials("my-fake-token"), { acceptLanguage: "my-fake-language" }); + assert.strictEqual(client.acceptLanguage, "my-fake-language"); + assert.strictEqual(client.longRunningOperationRetryTimeout, 30); + assert.deepStrictEqual(client.userAgentInfo, { value: ["ms-rest-js/0.1.0", "ms-rest-azure/0.1.0"] }); + }); + + it("with longRunningOperationRetryTimeout provided", () => { + const client = new AzureServiceClient(new TokenCredentials("my-fake-token"), { longRunningOperationRetryTimeout: 2 }); + assert.strictEqual(client.acceptLanguage, "en-us"); + assert.strictEqual(client.longRunningOperationRetryTimeout, 2); + assert.deepStrictEqual(client.userAgentInfo, { value: ["ms-rest-js/0.1.0", "ms-rest-azure/0.1.0"] }); + }); + }); + + describe("sendLongRunningRequest()", () => { + it("with 200 status, GET method, and undefined response body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([{ status: 200 }]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "GET"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, undefined); + assert.strictEqual(httpResponse.parsedBody, undefined); + }); + + it("with 200 status, GET method, and XML response body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + body: `hello` + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "GET"); + const error: msRest.RestError = await msAssert.throwsAsync(serviceClient.sendLongRunningRequest(httpRequest)); + assert.strictEqual(error.message, `Error "SyntaxError: Unexpected token < in JSON at position 0" occurred while parsing the response body - hello.`); + assert.strictEqual(error.request!.headers.get("authorization"), "Bearer my-fake-token"); + }); + + it("with 200 status, GET method, and {} response body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([{ status: 200, body: {} }]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "GET"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, "{}"); + assert.deepEqual(httpResponse.parsedBody, {}); + }); + + it("with 200 status, PATCH method, and undefined response body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { status: 200 }, + { status: 200 } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error("The response from long running operation does not contain a body.")); + }); + + it("with 200 status, PATCH method, and {} response body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([{ status: 200, body: {} }]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, "{}"); + assert.deepEqual(httpResponse.parsedBody, {}); + }); + + it("with 200 status, PUT method, and undefined response body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { status: 200 }, + { status: 200 } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error("The response from long running operation does not contain a body.")); + }); + + it("with 200 status, PUT method, and {} response body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([{ status: 200, body: {} }]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, "{}"); + assert.deepEqual(httpResponse.parsedBody, {}); + }); + + it("with 200 status, POST method, and undefined response body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([{ status: 200 }]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, undefined); + assert.strictEqual(httpResponse.parsedBody, undefined); + }); + + it("with 200 status, DELETE method, and undefined response body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([{ status: 200 }]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, undefined); + assert.strictEqual(httpResponse.parsedBody, undefined); + }); + + it("with 201 status and GET method", async () => { + const serviceClient: AzureServiceClient = createServiceClient([{ status: 201 }]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "GET"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`Unexpected polling status code from long running operation "201" for method "GET".`)); + }); + + it("with 201 status and PATCH method", async () => { + const serviceClient: AzureServiceClient = createServiceClient([{ status: 201 }]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`Unexpected polling status code from long running operation "201" for method "PATCH".`)); + }); + + it("with 201 status, PUT method, and undefined final response body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { status: 201 }, + { status: 200 } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error("The response from long running operation does not contain a body.")); + }); + + it("with 201 status, PUT method, and {} final response body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { status: 201 }, + { status: 200, body: {} } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{}`); + assert.deepEqual(httpResponse.parsedBody, {}); + }); + + it("with 201 status, PUT method, {} final response body, and custom headers", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { status: 201 }, + { status: 200, body: {} } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const options: msRest.RequestOptionsBase = { + customHeaders: { + a: "1" + } + }; + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest, options); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{}`); + assert.deepEqual(httpResponse.parsedBody, {}); + assert.strictEqual(httpResponse.request.headers.get("a"), "1"); + }); + + it(`with 201 status, PUT method, and { properties: { provisioningState: "Failed" } } final response body`, async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { status: 201 }, + { status: 200, body: { properties: { provisioningState: "Failed" } } } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const error: msRest.RestError = await msAssert.throwsAsync(serviceClient.sendLongRunningRequest(httpRequest)); + assert.strictEqual(error.message, `Long running operation failed with status: "Failed".`); + assert.strictEqual(error.code, undefined); + }); + + it("with 201 status and POST method", async () => { + const serviceClient: AzureServiceClient = createServiceClient([{ status: 201 }]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`Unexpected polling status code from long running operation "201" for method "POST".`)); + }); + + it("with 201 status and DELETE method", async () => { + const serviceClient: AzureServiceClient = createServiceClient([{ status: 201 }]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`Unexpected polling status code from long running operation "201" for method "DELETE".`)); + }); + + it("with 202 status and GET method", async () => { + const serviceClient: AzureServiceClient = createServiceClient([{ status: 202 }]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "GET"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`Location header is missing from long running operation.`)); + }); + + it("with 202 status and PATCH method", async () => { + const serviceClient: AzureServiceClient = createServiceClient([{ status: 202 }]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`Location header is missing from long running operation.`)); + }); + + it("with 202 status, PUT method, and undefined final response body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { status: 202 }, + { status: 200 } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error("The response from long running operation does not contain a body.")); + }); + + it("with 202 status and POST method", async () => { + const serviceClient: AzureServiceClient = createServiceClient([{ status: 202 }]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`Location header is missing from long running operation.`)); + }); + + it("with 202 status, POST method, azure-asyncoperation header, and undefined final response body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { status: 200 } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`The response from long running operation does not contain a body.`)); + }); + + it("with 202 status, POST method, azure-asyncoperation header, and {} final response body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: {} + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`The response "{}" from long running operation does not contain the status property.`)); + }); + + it(`with 202 status, POST method, azure-asyncoperation header, and { status: "SPAM" } final response body`, async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"status":"Succeeded"}`); + assert.deepEqual(httpResponse.parsedBody, { status: "Succeeded" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("with 202 status, DELETE method, azure-asyncoperation header, and undefined final response body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { status: 200 } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`The response from long running operation does not contain a body.`)); + }); + + it("with 202 status, DELETE method, azure-asyncoperation header, and {} final response body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: {} + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`The response "{}" from long running operation does not contain the status property.`)); + }); + + it(`with 202 status, DELETE method, azure-asyncoperation header, and { status: "SPAM" } final response body`, async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"status":"Succeeded"}`); + assert.deepEqual(httpResponse.parsedBody, { status: "Succeeded" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it(`with 202 status, PUT method, azure-asyncoperation header, and { a: 2 } final response body`, async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Succeeded", + a: 1 + } + }, + { + status: 200, + body: { a: 2 } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":2}`); + assert.deepEqual(httpResponse.parsedBody, { a: 2 }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("with 202 status, POST method, location header, and {} final response body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: {} + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{}`); + assert.deepEqual(httpResponse.parsedBody, {}); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("with 202 status, POST method, location header, 202 poll, and {} final response body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 202, + }, + { + status: 200, + body: {} + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{}`); + assert.deepEqual(httpResponse.parsedBody, {}); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("with 202 status, POST method, location header, and 201 poll", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 201, + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`The response with status code 201 from polling for long running operation url "https://fake.azure.com/longRunningOperation2" is not valid.`)); + }); + + it("with 202 status, PUT method, location header, and 204 poll", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 204, + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`The response with status code 204 from polling for long running operation url "https://fake.azure.com/longRunningOperation2" is not valid.`)); + }); + + it("with 202 status, PUT method, location header, and 404 poll", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 404, + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const error: msRest.RestError = await msAssert.throwsAsync(serviceClient.sendLongRunningRequest(httpRequest)); + assert.strictEqual(error.message, `Invalid status code with response body "undefined" occurred when polling for operation status.`); + assert.strictEqual(error.statusCode, 404); + assert.strictEqual(error.request!.headers.contains("authorization"), false); + assert.strictEqual(error.body, undefined); + }); + + it("with 202 status and DELETE method", async () => { + const serviceClient: AzureServiceClient = createServiceClient([{ status: 202 }]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`Location header is missing from long running operation.`)); + }); + + it("with 204 status and GET method", async () => { + const serviceClient: AzureServiceClient = createServiceClient([{ status: 204 }]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "GET"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`Unexpected polling status code from long running operation "204" for method "GET".`)); + }); + + it("with 204 status and PATCH method", async () => { + const serviceClient: AzureServiceClient = createServiceClient([{ status: 204 }]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`Unexpected polling status code from long running operation "204" for method "PATCH".`)); + }); + + it("with 204 status and PUT method", async () => { + const serviceClient: AzureServiceClient = createServiceClient([{ status: 204 }]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`Unexpected polling status code from long running operation "204" for method "PUT".`)); + }); + + it("with 204 status and DELETE method", async () => { + const serviceClient: AzureServiceClient = createServiceClient([{ status: 204 }]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 204); + assert.strictEqual(httpResponse.bodyAsText, undefined); + assert.strictEqual(httpResponse.parsedBody, undefined); + }); + + it("with 204 status and POST method", async () => { + const serviceClient: AzureServiceClient = createServiceClient([{ status: 204 }]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 204); + assert.strictEqual(httpResponse.bodyAsText, undefined); + assert.strictEqual(httpResponse.parsedBody, undefined); + }); + }); + + describe("updateOptionsWithDefaultValues()", () => { + it("with undefined", () => { + assert.deepStrictEqual(updateOptionsWithDefaultValues(undefined), { generateClientRequestIdHeader: true }); + }); + + it("with {}", () => { + const options: AzureServiceClientOptions = {}; + const newOptions: AzureServiceClientOptions = updateOptionsWithDefaultValues(options); + assert.deepStrictEqual(newOptions, { generateClientRequestIdHeader: true }); + assert.strictEqual(newOptions, options); + }); + + it("with { generateClientRequestIdHeader: false }", () => { + const options: AzureServiceClientOptions = { generateClientRequestIdHeader: false }; + const newOptions: AzureServiceClientOptions = updateOptionsWithDefaultValues(options); + assert.deepStrictEqual(newOptions, { generateClientRequestIdHeader: false }); + assert.strictEqual(newOptions, options); + }); + + it("with { generateClientRequestIdHeader: true }", () => { + const options: AzureServiceClientOptions = { generateClientRequestIdHeader: true }; + const newOptions: AzureServiceClientOptions = updateOptionsWithDefaultValues(options); + assert.deepStrictEqual(newOptions, { generateClientRequestIdHeader: true }); + assert.strictEqual(newOptions, options); + }); + }); +}); + +interface HttpResponse { + status: number; + headers?: HttpHeaders; + body?: any; +} + +function createServiceClient(responses: HttpResponse[]): AzureServiceClient { + return new AzureServiceClient(new TokenCredentials("my-fake-token"), { + httpClient: { + sendRequest(httpRequest: WebResource): Promise { + const response: HttpResponse | undefined = responses.shift(); + if (!response) { + throw new Error("Not enough responses provided for test."); + } + return Promise.resolve({ + request: httpRequest, + status: response.status, + headers: response.headers || new HttpHeaders(), + bodyAsText: typeof response.body === "string" ? response.body : JSON.stringify(response.body), + parsedBody: response.body + }); + } + }, + longRunningOperationRetryTimeout: 0 + }); +} \ No newline at end of file diff --git a/test/msAssert.ts b/test/msAssert.ts new file mode 100644 index 000000000000..80404659d715 --- /dev/null +++ b/test/msAssert.ts @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +import * as assert from "assert"; + +/** + * Assert that the provided asyncAction throws an Error. If the expectedError is undefined, then + * this function will just assert that an Error was thrown. If the expectedError is defined, then + * this function will assert that the Error that was thrown is equal to the provided expectedError. + * @param asyncFunction The async function that is expected to thrown an Error. + * @param expectedError The Error that is expected to be thrown. + */ +export async function throwsAsync(asyncFunction: (() => Promise) | Promise, expectedError?: ((error: Error) => void) | Error): Promise { + let thrownError: Error | undefined; + + try { + await (typeof asyncFunction === "function" ? asyncFunction() : asyncFunction); + } catch (error) { + thrownError = error; + } + + if (!thrownError) { + assert.throws(() => { }); + } else if (expectedError instanceof Error) { + assert.deepStrictEqual(thrownError, expectedError); + } else if (expectedError) { + expectedError(thrownError); + } + + return thrownError!; +} \ No newline at end of file diff --git a/test/placeholder.ts b/test/placeholder.ts deleted file mode 100644 index 1cf80277f705..000000000000 --- a/test/placeholder.ts +++ /dev/null @@ -1,4 +0,0 @@ - -describe('ms-rest-azure-js', function() { - it("doesn't have any tests"); -}); From 7c96fe21b1c324d35bd0c87689279b4f363f709e Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Wed, 18 Jul 2018 13:32:23 -0700 Subject: [PATCH 064/289] Set patch version back to 0 Set patch version back to 0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a35aa3afe1f8..b693a633ea07 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.11.101", + "version": "0.11.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", From 86cbf6a6b91d3e69cca6a2405a2e742982468f3f Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 19 Jul 2018 10:33:39 -0700 Subject: [PATCH 065/289] Extract AzureServiceClient.getLongRunningOperationResult() to HttpLongRunningOperationResult --- lib/azureServiceClient.ts | 179 +---------------------- lib/httpLongRunningOperationResponse.ts | 184 ++++++++++++++++++++++++ package-lock.json | 2 +- 3 files changed, 190 insertions(+), 175 deletions(-) create mode 100644 lib/httpLongRunningOperationResponse.ts diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index 4b91323cb1e5..69428ce05883 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -4,6 +4,7 @@ import * as msRest from "ms-rest-js"; import PollingState from "./pollingState"; import Constants, { LongRunningOperationStates as LroStates } from "./util/constants"; +import { HttpLongRunningOperationResponse } from "./httpLongRunningOperationResponse"; /** * Options to be provided while creating the client. @@ -54,54 +55,13 @@ export class AzureServiceClient extends msRest.ServiceClient { * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody. */ - sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise { - return this.sendRequest(request).then(response => this.getLongRunningOperationResult(response, options)); - } - - /** - * Poll Azure long running PUT, PATCH, POST or DELETE operations. - * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation. - * @param {msRest.RequestOptionsBase} [options] - custom request options. - * @returns {Promise} result - The final response after polling is complete. - */ - async getLongRunningOperationResult(resultOfInitialRequest: msRest.HttpOperationResponse, options?: msRest.RequestOptionsBase): Promise { - const initialRequestMethod: msRest.HttpMethods = resultOfInitialRequest.request.method; - - if (checkResponseStatusCodeFailed(resultOfInitialRequest)) { - throw new Error(`Unexpected polling status code from long running operation ` + - `"${resultOfInitialRequest.status}" for method "${initialRequestMethod}".`); - } - const pollingState = new PollingState(resultOfInitialRequest, this.longRunningOperationRetryTimeout); - pollingState.optionsOfInitialRequest = options as msRest.RequestOptionsBase; - - const resourceUrl: string = resultOfInitialRequest.request.url; - while (terminalStates.indexOf(pollingState.status) === -1) { - await msRest.delay(pollingState.getTimeout()); - if (pollingState.azureAsyncOperationHeaderLink) { - await updateStateFromAzureAsyncOperationHeader(this, pollingState); - } else if (pollingState.locationHeaderLink) { - await updateStateFromLocationHeader(this, initialRequestMethod, pollingState); - } else if (initialRequestMethod === "PUT") { - await updateStateFromGetResourceOperation(this, resourceUrl, pollingState); - } else { - throw new Error("Location header is missing from long running operation."); - } - } - - if (pollingState.status === "Succeeded") { - if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) && - (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH")) { - await updateStateFromGetResourceOperation(this, resourceUrl, pollingState); - } - return pollingState.getOperationResponse(); - } else { - throw pollingState.getRestError(); - } + async sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise { + const initialResponse: msRest.HttpOperationResponse = await this.sendRequest(request); + const httpLongRunningOperationResponse = new HttpLongRunningOperationResponse(this); + return httpLongRunningOperationResponse.getLongRunningOperationResult(initialResponse, options); } } -const terminalStates: LroStates[] = ["Succeeded", "Failed", "Canceled"]; - export function updateOptionsWithDefaultValues(options?: AzureServiceClientOptions): AzureServiceClientOptions { if (!options) { options = {}; @@ -110,133 +70,4 @@ export function updateOptionsWithDefaultValues(options?: AzureServiceClientOptio options.generateClientRequestIdHeader = true; } return options; -} - -/** - * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request. - * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation. - */ -export function checkResponseStatusCodeFailed(initialResponse: msRest.HttpOperationResponse): boolean { - const statusCode = initialResponse.status; - const method = initialResponse.request.method; - if (statusCode === 200 || statusCode === 202 || - (statusCode === 201 && method === "PUT") || - (statusCode === 204 && (method === "DELETE" || method === "POST"))) { - return false; - } else { - return true; - } -} - -/** - * Retrieve operation status by polling from "azure-asyncoperation" header. - * @param {PollingState} pollingState - The object to persist current operation state. - * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation. - */ -export function updateStateFromAzureAsyncOperationHeader(client: AzureServiceClient, pollingState: PollingState): Promise { - return getStatus(client, pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest).then(result => { - const parsedResponse = result.parsedBody as { [key: string]: any }; - if (!parsedResponse) { - throw new Error("The response from long running operation does not contain a body."); - } else if (!parsedResponse.status) { - throw new Error(`The response "${result.bodyAsText}" from long running operation does not contain the status property.`); - } - pollingState.status = parsedResponse.status; - pollingState.error = parsedResponse.error; - pollingState.updateResponse(result); - pollingState.request = result.request; - pollingState.resource = undefined; - pollingState.resource = result.parsedBody; - }); -} - -/** - * Retrieve PUT operation status by polling from "location" header. - * @param {string} method - The HTTP method. - * @param {PollingState} pollingState - The object to persist current operation state. - */ -export function updateStateFromLocationHeader(client: AzureServiceClient, method: msRest.HttpMethods, pollingState: PollingState): Promise { - return getStatus(client, pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest).then(result => { - const parsedResponse = result.parsedBody as { [key: string]: any }; - - pollingState.updateResponse(result); - pollingState.request = result.request; - const statusCode = result.status; - if (statusCode === 202) { - pollingState.status = "InProgress"; - } else if (statusCode === 200 || - (statusCode === 201 && (method === "PUT" || method === "PATCH")) || - (statusCode === 204 && (method === "DELETE" || method === "POST"))) { - pollingState.status = "Succeeded"; - pollingState.resource = parsedResponse; - // we might not throw an error, but initialize here just in case. - pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); - pollingState.error.code = pollingState.status; - } else { - throw new Error(`The response with status code ${statusCode} from polling for ` + - `long running operation url "${pollingState.locationHeaderLink}" is not valid.`); - } - }); -} - -/** - * Polling for resource status. - * @param {string} resourceUrl - The url of resource. - * @param {PollingState} pollingState - The object to persist current operation state. - */ -export function updateStateFromGetResourceOperation(client: AzureServiceClient, resourceUrl: string, pollingState: PollingState): Promise { - return getStatus(client, resourceUrl, pollingState.optionsOfInitialRequest).then(result => { - if (!result.parsedBody) { - throw new Error("The response from long running operation does not contain a body."); - } - - const parsedResponse = result.parsedBody as { [key: string]: any }; - pollingState.status = "Succeeded"; - if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) { - pollingState.status = parsedResponse.properties.provisioningState; - } - pollingState.updateResponse(result); - pollingState.request = result.request; - pollingState.resource = parsedResponse; - // we might not throw an error, but initialize here just in case. - pollingState.error = new msRest.RestError(`Long running operation failed with status "${pollingState.status}".`); - pollingState.error.code = pollingState.status; - }); -} - -/** - * Retrieves operation status by querying the operation URL. - * @param {string} operationUrl - URL used to poll operation result. - * @param {object} options - Options that can be set on the request object - */ -export function getStatus(client: AzureServiceClient, operationUrl: string, options?: msRest.RequestOptionsBase): Promise { - // Construct URL - const requestUrl = operationUrl.replace(" ", "%20"); - // Create HTTP request object - const httpRequest: msRest.RequestPrepareOptions = { - method: "GET", - url: requestUrl, - headers: {} - }; - if (options && options.customHeaders) { - const customHeaders = options.customHeaders; - for (const headerName of Object.keys(customHeaders)) { - httpRequest.headers![headerName] = customHeaders[headerName]; - } - } - return client.sendRequest(httpRequest).then(operationResponse => { - const statusCode = operationResponse.status; - const responseBody = operationResponse.parsedBody; - if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { - const error = new msRest.RestError(`Invalid status code with response body "${operationResponse.bodyAsText}" occurred ` + - `when polling for operation status.`); - error.statusCode = statusCode; - error.request = msRest.stripRequest(operationResponse.request); - error.response = operationResponse; - error.body = responseBody; - throw error; - } - - return operationResponse; - }); } \ No newline at end of file diff --git a/lib/httpLongRunningOperationResponse.ts b/lib/httpLongRunningOperationResponse.ts new file mode 100644 index 000000000000..6ca65ab6770b --- /dev/null +++ b/lib/httpLongRunningOperationResponse.ts @@ -0,0 +1,184 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +import { delay, HttpMethods, HttpOperationResponse, RequestOptionsBase, RequestPrepareOptions, RestError, stripRequest } from "ms-rest-js"; +import { AzureServiceClient } from "./azureServiceClient"; +import PollingState from "./pollingState"; +import { LongRunningOperationStates } from "./util/constants"; + +export class HttpLongRunningOperationResponse { + public constructor(private readonly _azureServiceClient: AzureServiceClient) { + } + + /** + * Poll Azure long running PUT, PATCH, POST or DELETE operations. + * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation. + * @param {msRest.RequestOptionsBase} [options] - custom request options. + * @returns {Promise} result - The final response after polling is complete. + */ + async getLongRunningOperationResult(resultOfInitialRequest: HttpOperationResponse, options?: RequestOptionsBase): Promise { + const initialRequestMethod: HttpMethods = resultOfInitialRequest.request.method; + + if (checkResponseStatusCodeFailed(resultOfInitialRequest)) { + throw new Error(`Unexpected polling status code from long running operation ` + + `"${resultOfInitialRequest.status}" for method "${initialRequestMethod}".`); + } + const pollingState = new PollingState(resultOfInitialRequest, this._azureServiceClient.longRunningOperationRetryTimeout); + pollingState.optionsOfInitialRequest = options!; + + const resourceUrl: string = resultOfInitialRequest.request.url; + while (terminalStates.indexOf(pollingState.status) === -1) { + await delay(pollingState.getTimeout()); + if (pollingState.azureAsyncOperationHeaderLink) { + await updateStateFromAzureAsyncOperationHeader(this._azureServiceClient, pollingState); + } else if (pollingState.locationHeaderLink) { + await updateStateFromLocationHeader(this._azureServiceClient, initialRequestMethod, pollingState); + } else if (initialRequestMethod === "PUT") { + await updateStateFromGetResourceOperation(this._azureServiceClient, resourceUrl, pollingState); + } else { + throw new Error("Location header is missing from long running operation."); + } + } + + if (pollingState.status === "Succeeded") { + if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) && + (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH")) { + await updateStateFromGetResourceOperation(this._azureServiceClient, resourceUrl, pollingState); + } + return pollingState.getOperationResponse(); + } else { + throw pollingState.getRestError(); + } + } +} + +/** + * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request. + * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation. + */ +export function checkResponseStatusCodeFailed(initialResponse: HttpOperationResponse): boolean { + const statusCode = initialResponse.status; + const method = initialResponse.request.method; + if (statusCode === 200 || statusCode === 202 || + (statusCode === 201 && method === "PUT") || + (statusCode === 204 && (method === "DELETE" || method === "POST"))) { + return false; + } else { + return true; + } +} + +const terminalStates: LongRunningOperationStates[] = ["Succeeded", "Failed", "Canceled"]; + +/** + * Retrieve operation status by polling from "azure-asyncoperation" header. + * @param {PollingState} pollingState - The object to persist current operation state. + * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation. + */ +export function updateStateFromAzureAsyncOperationHeader(client: AzureServiceClient, pollingState: PollingState): Promise { + return getStatus(client, pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest).then(result => { + const parsedResponse = result.parsedBody as { [key: string]: any }; + if (!parsedResponse) { + throw new Error("The response from long running operation does not contain a body."); + } else if (!parsedResponse.status) { + throw new Error(`The response "${result.bodyAsText}" from long running operation does not contain the status property.`); + } + pollingState.status = parsedResponse.status; + pollingState.error = parsedResponse.error; + pollingState.updateResponse(result); + pollingState.request = result.request; + pollingState.resource = undefined; + pollingState.resource = result.parsedBody; + }); +} + +/** + * Retrieve PUT operation status by polling from "location" header. + * @param {string} method - The HTTP method. + * @param {PollingState} pollingState - The object to persist current operation state. + */ +export function updateStateFromLocationHeader(client: AzureServiceClient, method: HttpMethods, pollingState: PollingState): Promise { + return getStatus(client, pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest).then(result => { + const parsedResponse = result.parsedBody as { [key: string]: any }; + + pollingState.updateResponse(result); + pollingState.request = result.request; + const statusCode = result.status; + if (statusCode === 202) { + pollingState.status = "InProgress"; + } else if (statusCode === 200 || + (statusCode === 201 && (method === "PUT" || method === "PATCH")) || + (statusCode === 204 && (method === "DELETE" || method === "POST"))) { + pollingState.status = "Succeeded"; + pollingState.resource = parsedResponse; + // we might not throw an error, but initialize here just in case. + pollingState.error = new RestError(`Long running operation failed with status "${pollingState.status}".`); + pollingState.error.code = pollingState.status; + } else { + throw new Error(`The response with status code ${statusCode} from polling for ` + + `long running operation url "${pollingState.locationHeaderLink}" is not valid.`); + } + }); +} + +/** + * Polling for resource status. + * @param {string} resourceUrl - The url of resource. + * @param {PollingState} pollingState - The object to persist current operation state. + */ +export function updateStateFromGetResourceOperation(client: AzureServiceClient, resourceUrl: string, pollingState: PollingState): Promise { + return getStatus(client, resourceUrl, pollingState.optionsOfInitialRequest).then(result => { + if (!result.parsedBody) { + throw new Error("The response from long running operation does not contain a body."); + } + + const parsedResponse = result.parsedBody as { [key: string]: any }; + pollingState.status = "Succeeded"; + if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) { + pollingState.status = parsedResponse.properties.provisioningState; + } + pollingState.updateResponse(result); + pollingState.request = result.request; + pollingState.resource = parsedResponse; + // we might not throw an error, but initialize here just in case. + pollingState.error = new RestError(`Long running operation failed with status "${pollingState.status}".`); + pollingState.error.code = pollingState.status; + }); +} + +/** + * Retrieves operation status by querying the operation URL. + * @param {string} operationUrl - URL used to poll operation result. + * @param {object} options - Options that can be set on the request object + */ +export function getStatus(client: AzureServiceClient, operationUrl: string, options?: RequestOptionsBase): Promise { + // Construct URL + const requestUrl = operationUrl.replace(" ", "%20"); + // Create HTTP request object + const httpRequest: RequestPrepareOptions = { + method: "GET", + url: requestUrl, + headers: {} + }; + if (options && options.customHeaders) { + const customHeaders = options.customHeaders; + for (const headerName of Object.keys(customHeaders)) { + httpRequest.headers![headerName] = customHeaders[headerName]; + } + } + return client.sendRequest(httpRequest).then(operationResponse => { + const statusCode = operationResponse.status; + const responseBody = operationResponse.parsedBody; + if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { + const error = new RestError(`Invalid status code with response body "${operationResponse.bodyAsText}" occurred ` + + `when polling for operation status.`); + error.statusCode = statusCode; + error.request = stripRequest(operationResponse.request); + error.response = operationResponse; + error.body = responseBody; + throw error; + } + + return operationResponse; + }); +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 99f0d5052402..e6b8f347ceb7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ms-rest-azure-js", - "version": "0.11.101", + "version": "0.11.0", "lockfileVersion": 1, "requires": true, "dependencies": { From 5ad1d728bbb4f4e18647eb5134a9641f44db4015 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 19 Jul 2018 10:41:16 -0700 Subject: [PATCH 066/289] Extract pollling strategy if statements outside of the polling while loop --- lib/azureServiceClient.ts | 15 +++++++-------- lib/httpLongRunningOperationResponse.ts | 18 +++++++++++++----- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index 69428ce05883..af692bb86ffe 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -1,15 +1,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import * as msRest from "ms-rest-js"; -import PollingState from "./pollingState"; -import Constants, { LongRunningOperationStates as LroStates } from "./util/constants"; +import { HttpOperationResponse, RequestOptionsBase, RequestPrepareOptions, ServiceClient, ServiceClientCredentials, ServiceClientOptions, WebResource } from "ms-rest-js"; import { HttpLongRunningOperationResponse } from "./httpLongRunningOperationResponse"; +import Constants from "./util/constants"; /** * Options to be provided while creating the client. */ -export interface AzureServiceClientOptions extends msRest.ServiceClientOptions { +export interface AzureServiceClientOptions extends ServiceClientOptions { /** * @property {string} [options.acceptLanguage] - Gets or sets the preferred language for the response. Default value is: "en-US". */ @@ -31,11 +30,11 @@ export interface AzureServiceClientOptions extends msRest.ServiceClientOptions { * UserTokenCredentials object used for authentication. * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient */ -export class AzureServiceClient extends msRest.ServiceClient { +export class AzureServiceClient extends ServiceClient { acceptLanguage: string = Constants.DEFAULT_LANGUAGE; longRunningOperationRetryTimeout = 30; - constructor(credentials: msRest.ServiceClientCredentials, options?: AzureServiceClientOptions) { + constructor(credentials: ServiceClientCredentials, options?: AzureServiceClientOptions) { super(credentials, options = updateOptionsWithDefaultValues(options)); if (options.acceptLanguage != undefined) { @@ -55,8 +54,8 @@ export class AzureServiceClient extends msRest.ServiceClient { * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody. */ - async sendLongRunningRequest(request: msRest.RequestPrepareOptions | msRest.WebResource, options?: msRest.RequestOptionsBase): Promise { - const initialResponse: msRest.HttpOperationResponse = await this.sendRequest(request); + async sendLongRunningRequest(request: RequestPrepareOptions | WebResource, options?: RequestOptionsBase): Promise { + const initialResponse: HttpOperationResponse = await this.sendRequest(request); const httpLongRunningOperationResponse = new HttpLongRunningOperationResponse(this); return httpLongRunningOperationResponse.getLongRunningOperationResult(initialResponse, options); } diff --git a/lib/httpLongRunningOperationResponse.ts b/lib/httpLongRunningOperationResponse.ts index 6ca65ab6770b..4f49e9b31cd0 100644 --- a/lib/httpLongRunningOperationResponse.ts +++ b/lib/httpLongRunningOperationResponse.ts @@ -27,14 +27,22 @@ export class HttpLongRunningOperationResponse { pollingState.optionsOfInitialRequest = options!; const resourceUrl: string = resultOfInitialRequest.request.url; - while (terminalStates.indexOf(pollingState.status) === -1) { - await delay(pollingState.getTimeout()); + if (terminalStates.indexOf(pollingState.status) === -1) { if (pollingState.azureAsyncOperationHeaderLink) { - await updateStateFromAzureAsyncOperationHeader(this._azureServiceClient, pollingState); + while (terminalStates.indexOf(pollingState.status) === -1) { + await delay(pollingState.getTimeout()); + await updateStateFromAzureAsyncOperationHeader(this._azureServiceClient, pollingState); + } } else if (pollingState.locationHeaderLink) { - await updateStateFromLocationHeader(this._azureServiceClient, initialRequestMethod, pollingState); + while (terminalStates.indexOf(pollingState.status) === -1) { + await delay(pollingState.getTimeout()); + await updateStateFromLocationHeader(this._azureServiceClient, initialRequestMethod, pollingState); + } } else if (initialRequestMethod === "PUT") { - await updateStateFromGetResourceOperation(this._azureServiceClient, resourceUrl, pollingState); + while (terminalStates.indexOf(pollingState.status) === -1) { + await delay(pollingState.getTimeout()); + await updateStateFromGetResourceOperation(this._azureServiceClient, resourceUrl, pollingState); + } } else { throw new Error("Location header is missing from long running operation."); } From 9f277d40a0abc9c4be95cac79b333f3ceebf904e Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Tue, 24 Jul 2018 13:31:27 -0700 Subject: [PATCH 067/289] Restructure LRO polling into different polling strategies --- lib/azureServiceClient.ts | 33 +- lib/httpLongRunningOperationResponse.ts | 192 - lib/lroPollStrategy.ts | 354 + lib/msRestAzure.ts | 11 +- lib/pollingState.ts | 194 - lib/util/constants.ts | 31 +- package-lock.json | 7068 ++++++++++++++++- package.json | 4 +- test/azureServiceClientTests.ts | 23 +- .../cognitiveServicesCredentialsTests.ts | 43 + test/lroPollStrategyTests.ts | 61 + test/msAssert.ts | 31 +- 12 files changed, 7338 insertions(+), 707 deletions(-) delete mode 100644 lib/httpLongRunningOperationResponse.ts create mode 100644 lib/lroPollStrategy.ts delete mode 100644 lib/pollingState.ts create mode 100644 test/credentials/cognitiveServicesCredentialsTests.ts create mode 100644 test/lroPollStrategyTests.ts diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index af692bb86ffe..fc6d68c96201 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -2,8 +2,8 @@ // Licensed under the MIT License. See License.txt in the project root for license information. import { HttpOperationResponse, RequestOptionsBase, RequestPrepareOptions, ServiceClient, ServiceClientCredentials, ServiceClientOptions, WebResource } from "ms-rest-js"; -import { HttpLongRunningOperationResponse } from "./httpLongRunningOperationResponse"; -import Constants from "./util/constants"; +import { createLROPollStrategy, LROPollStrategy } from "./lroPollStrategy"; +import * as Constants from "./util/constants"; /** * Options to be provided while creating the client. @@ -31,8 +31,11 @@ export interface AzureServiceClientOptions extends ServiceClientOptions { * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient */ export class AzureServiceClient extends ServiceClient { - acceptLanguage: string = Constants.DEFAULT_LANGUAGE; - longRunningOperationRetryTimeout = 30; + public acceptLanguage: string = Constants.DEFAULT_LANGUAGE; + /** + * The retry timeout in seconds for Long Running Operations. Default value is 30. + */ + public longRunningOperationRetryTimeout?: number; constructor(credentials: ServiceClientCredentials, options?: AzureServiceClientOptions) { super(credentials, options = updateOptionsWithDefaultValues(options)); @@ -51,13 +54,27 @@ export class AzureServiceClient extends ServiceClient { /** * Provides a mechanism to make a request that will poll and provide the final result. * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object - * @param {msRest.RequestOptionsBase} [options] Additional options to be sent while making the request + * @param {AzureRequestOptionsBase} [options] Additional options to be sent while making the request * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody. */ async sendLongRunningRequest(request: RequestPrepareOptions | WebResource, options?: RequestOptionsBase): Promise { - const initialResponse: HttpOperationResponse = await this.sendRequest(request); - const httpLongRunningOperationResponse = new HttpLongRunningOperationResponse(this); - return httpLongRunningOperationResponse.getLongRunningOperationResult(initialResponse, options); + return this.sendRequest(request).then((response: HttpOperationResponse) => this.getLongRunningOperationResult(response, options)); + } + + /** + * Poll Azure long running PUT, PATCH, POST or DELETE operations. + * @param {HttpOperationResponse} initialResponse - response of the initial request which is a part of the asynchronous polling operation. + * @param {AzureRequestOptionsBase} [options] - custom request options. + * @returns {Promise} The final response after polling is complete. + */ + async getLongRunningOperationResult(initialResponse: HttpOperationResponse, options?: RequestOptionsBase): Promise { + const lroPollStrategy: LROPollStrategy = createLROPollStrategy(initialResponse, this, options); + const succeeded: boolean = await lroPollStrategy.pollUntilFinished(); + if (succeeded) { + return lroPollStrategy.getOperationResponse(); + } else { + throw lroPollStrategy.getRestError(); + } } } diff --git a/lib/httpLongRunningOperationResponse.ts b/lib/httpLongRunningOperationResponse.ts deleted file mode 100644 index 4f49e9b31cd0..000000000000 --- a/lib/httpLongRunningOperationResponse.ts +++ /dev/null @@ -1,192 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. - -import { delay, HttpMethods, HttpOperationResponse, RequestOptionsBase, RequestPrepareOptions, RestError, stripRequest } from "ms-rest-js"; -import { AzureServiceClient } from "./azureServiceClient"; -import PollingState from "./pollingState"; -import { LongRunningOperationStates } from "./util/constants"; - -export class HttpLongRunningOperationResponse { - public constructor(private readonly _azureServiceClient: AzureServiceClient) { - } - - /** - * Poll Azure long running PUT, PATCH, POST or DELETE operations. - * @param {msRest.HttpOperationResponse} resultOfInitialRequest - result/response of the initial request which is a part of the asynchronous polling operation. - * @param {msRest.RequestOptionsBase} [options] - custom request options. - * @returns {Promise} result - The final response after polling is complete. - */ - async getLongRunningOperationResult(resultOfInitialRequest: HttpOperationResponse, options?: RequestOptionsBase): Promise { - const initialRequestMethod: HttpMethods = resultOfInitialRequest.request.method; - - if (checkResponseStatusCodeFailed(resultOfInitialRequest)) { - throw new Error(`Unexpected polling status code from long running operation ` + - `"${resultOfInitialRequest.status}" for method "${initialRequestMethod}".`); - } - const pollingState = new PollingState(resultOfInitialRequest, this._azureServiceClient.longRunningOperationRetryTimeout); - pollingState.optionsOfInitialRequest = options!; - - const resourceUrl: string = resultOfInitialRequest.request.url; - if (terminalStates.indexOf(pollingState.status) === -1) { - if (pollingState.azureAsyncOperationHeaderLink) { - while (terminalStates.indexOf(pollingState.status) === -1) { - await delay(pollingState.getTimeout()); - await updateStateFromAzureAsyncOperationHeader(this._azureServiceClient, pollingState); - } - } else if (pollingState.locationHeaderLink) { - while (terminalStates.indexOf(pollingState.status) === -1) { - await delay(pollingState.getTimeout()); - await updateStateFromLocationHeader(this._azureServiceClient, initialRequestMethod, pollingState); - } - } else if (initialRequestMethod === "PUT") { - while (terminalStates.indexOf(pollingState.status) === -1) { - await delay(pollingState.getTimeout()); - await updateStateFromGetResourceOperation(this._azureServiceClient, resourceUrl, pollingState); - } - } else { - throw new Error("Location header is missing from long running operation."); - } - } - - if (pollingState.status === "Succeeded") { - if ((pollingState.azureAsyncOperationHeaderLink || !pollingState.resource) && - (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH")) { - await updateStateFromGetResourceOperation(this._azureServiceClient, resourceUrl, pollingState); - } - return pollingState.getOperationResponse(); - } else { - throw pollingState.getRestError(); - } - } -} - -/** - * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request. - * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation. - */ -export function checkResponseStatusCodeFailed(initialResponse: HttpOperationResponse): boolean { - const statusCode = initialResponse.status; - const method = initialResponse.request.method; - if (statusCode === 200 || statusCode === 202 || - (statusCode === 201 && method === "PUT") || - (statusCode === 204 && (method === "DELETE" || method === "POST"))) { - return false; - } else { - return true; - } -} - -const terminalStates: LongRunningOperationStates[] = ["Succeeded", "Failed", "Canceled"]; - -/** - * Retrieve operation status by polling from "azure-asyncoperation" header. - * @param {PollingState} pollingState - The object to persist current operation state. - * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation. - */ -export function updateStateFromAzureAsyncOperationHeader(client: AzureServiceClient, pollingState: PollingState): Promise { - return getStatus(client, pollingState.azureAsyncOperationHeaderLink as string, pollingState.optionsOfInitialRequest).then(result => { - const parsedResponse = result.parsedBody as { [key: string]: any }; - if (!parsedResponse) { - throw new Error("The response from long running operation does not contain a body."); - } else if (!parsedResponse.status) { - throw new Error(`The response "${result.bodyAsText}" from long running operation does not contain the status property.`); - } - pollingState.status = parsedResponse.status; - pollingState.error = parsedResponse.error; - pollingState.updateResponse(result); - pollingState.request = result.request; - pollingState.resource = undefined; - pollingState.resource = result.parsedBody; - }); -} - -/** - * Retrieve PUT operation status by polling from "location" header. - * @param {string} method - The HTTP method. - * @param {PollingState} pollingState - The object to persist current operation state. - */ -export function updateStateFromLocationHeader(client: AzureServiceClient, method: HttpMethods, pollingState: PollingState): Promise { - return getStatus(client, pollingState.locationHeaderLink as string, pollingState.optionsOfInitialRequest).then(result => { - const parsedResponse = result.parsedBody as { [key: string]: any }; - - pollingState.updateResponse(result); - pollingState.request = result.request; - const statusCode = result.status; - if (statusCode === 202) { - pollingState.status = "InProgress"; - } else if (statusCode === 200 || - (statusCode === 201 && (method === "PUT" || method === "PATCH")) || - (statusCode === 204 && (method === "DELETE" || method === "POST"))) { - pollingState.status = "Succeeded"; - pollingState.resource = parsedResponse; - // we might not throw an error, but initialize here just in case. - pollingState.error = new RestError(`Long running operation failed with status "${pollingState.status}".`); - pollingState.error.code = pollingState.status; - } else { - throw new Error(`The response with status code ${statusCode} from polling for ` + - `long running operation url "${pollingState.locationHeaderLink}" is not valid.`); - } - }); -} - -/** - * Polling for resource status. - * @param {string} resourceUrl - The url of resource. - * @param {PollingState} pollingState - The object to persist current operation state. - */ -export function updateStateFromGetResourceOperation(client: AzureServiceClient, resourceUrl: string, pollingState: PollingState): Promise { - return getStatus(client, resourceUrl, pollingState.optionsOfInitialRequest).then(result => { - if (!result.parsedBody) { - throw new Error("The response from long running operation does not contain a body."); - } - - const parsedResponse = result.parsedBody as { [key: string]: any }; - pollingState.status = "Succeeded"; - if (parsedResponse && parsedResponse.properties && parsedResponse.properties.provisioningState) { - pollingState.status = parsedResponse.properties.provisioningState; - } - pollingState.updateResponse(result); - pollingState.request = result.request; - pollingState.resource = parsedResponse; - // we might not throw an error, but initialize here just in case. - pollingState.error = new RestError(`Long running operation failed with status "${pollingState.status}".`); - pollingState.error.code = pollingState.status; - }); -} - -/** - * Retrieves operation status by querying the operation URL. - * @param {string} operationUrl - URL used to poll operation result. - * @param {object} options - Options that can be set on the request object - */ -export function getStatus(client: AzureServiceClient, operationUrl: string, options?: RequestOptionsBase): Promise { - // Construct URL - const requestUrl = operationUrl.replace(" ", "%20"); - // Create HTTP request object - const httpRequest: RequestPrepareOptions = { - method: "GET", - url: requestUrl, - headers: {} - }; - if (options && options.customHeaders) { - const customHeaders = options.customHeaders; - for (const headerName of Object.keys(customHeaders)) { - httpRequest.headers![headerName] = customHeaders[headerName]; - } - } - return client.sendRequest(httpRequest).then(operationResponse => { - const statusCode = operationResponse.status; - const responseBody = operationResponse.parsedBody; - if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { - const error = new RestError(`Invalid status code with response body "${operationResponse.bodyAsText}" occurred ` + - `when polling for operation status.`); - error.statusCode = statusCode; - error.request = stripRequest(operationResponse.request); - error.response = operationResponse; - error.body = responseBody; - throw error; - } - - return operationResponse; - }); -} \ No newline at end of file diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts new file mode 100644 index 000000000000..609cd868e230 --- /dev/null +++ b/lib/lroPollStrategy.ts @@ -0,0 +1,354 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +import { delay, HttpMethods, HttpOperationResponse, RequestOptionsBase, RequestPrepareOptions, RestError, stripRequest, WebResource } from "ms-rest-js"; +import { AzureServiceClient } from "./azureServiceClient"; +import { LongRunningOperationStates } from "./util/constants"; + +/** + * A long-running operation polling strategy base class that other polling strategies should extend. + */ +export abstract class LROPollStrategy { + private readonly _initialRequestUrl: string; + protected readonly _initialRequestMethod: HttpMethods; + protected _status: LongRunningOperationStates; + protected _mostRecentRequest: WebResource; + protected _response: HttpOperationResponse; + protected _resource: any; + + constructor(initialResponse: HttpOperationResponse, private readonly _azureServiceClient: AzureServiceClient, private readonly _options?: RequestOptionsBase) { + this._response = initialResponse; + + this._mostRecentRequest = initialResponse.request; + this._initialRequestUrl = this._mostRecentRequest.url; + this._initialRequestMethod = this._mostRecentRequest.method; + + this._resource = getResponseBody(initialResponse); + this._status = getStatusFromResponse(initialResponse, this._resource); + this._resource = getResponseBody(initialResponse); + } + + public async pollUntilFinished(): Promise { + while (!isFinished(this._status)) { + const delayInSeconds: number = getDelayInSeconds(this._azureServiceClient, this._response); + await delay(delayInSeconds * 1000); + + await this.sendPollRequest(); + } + return this._status === "Succeeded"; + } + + protected abstract sendPollRequest(): Promise; + + protected shouldDoFinalGetResourceRequest(): boolean { + return !this._resource && (this._initialRequestMethod === "PUT" || this._initialRequestMethod === "PATCH"); + } + + public async getOperationResponse(): Promise { + if (this.shouldDoFinalGetResourceRequest()) { + await this.updateStateFromGetResourceOperation(); + } + const result: HttpOperationResponse = { + ...this._response, + headers: this._response.headers.clone() + }; + if (this._resource && typeof this._resource.valueOf() === "string") { + result.bodyAsText = this._resource; + result.parsedBody = JSON.parse(this._resource); + } else { + result.bodyAsText = JSON.stringify(this._resource); + result.parsedBody = this._resource; + } + return result; + } + + public getRestError(): RestError { + const error = new RestError(""); + error.request = stripRequest(this._mostRecentRequest); + error.response = this._response; + error.message = `Long running operation failed with status: "${this._status}".`; + error.body = this._resource; + if (error.body) { + const innerError: any = error.body.error; + if (innerError) { + if (innerError.message) { + error.message = `Long running operation failed with error: "${innerError.message}".`; + } + if (innerError.code) { + error.code = innerError.code; + } + } + } + return error; + } + + protected updateStateFromGetResourceOperation(): Promise { + return this.getStatus(this._initialRequestUrl).then(result => { + if (!result.parsedBody) { + throw new Error("The response from long running operation does not contain a body."); + } + + this._status = getStatusFromResponseBodyProvisioningState(result.parsedBody) || "Succeeded"; + this._response = result; + this._mostRecentRequest = result.request; + this._resource = getResponseBody(result); + }); + } + + /** + * Retrieves operation status by querying the operation URL. + * @param {string} statusUrl URL used to poll operation result. + */ + protected getStatus(statusUrl: string): Promise { + const requestUrl: string = statusUrl.replace(" ", "%20"); + const httpRequest: RequestPrepareOptions = { + method: "GET", + url: requestUrl, + headers: {} + }; + if (this._options && this._options.customHeaders) { + const customHeaders = this._options.customHeaders; + for (const headerName of Object.keys(customHeaders)) { + httpRequest.headers![headerName] = customHeaders[headerName]; + } + } + return this._azureServiceClient.sendRequest(httpRequest).then(operationResponse => { + const statusCode: number = operationResponse.status; + const responseBody: any = operationResponse.parsedBody; + if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { + const error = new RestError(`Invalid status code with response body "${operationResponse.bodyAsText}" occurred when polling for operation status.`); + error.statusCode = statusCode; + error.request = stripRequest(operationResponse.request); + error.response = operationResponse; + error.body = responseBody; + throw error; + } + + return operationResponse; + }); + } +} + +export function getDelayInSeconds(azureServiceClient: AzureServiceClient, previousResponse: HttpOperationResponse): number { + let delayInSeconds = 30; + if (azureServiceClient.longRunningOperationRetryTimeout != undefined) { + delayInSeconds = azureServiceClient.longRunningOperationRetryTimeout; + } else { + const retryAfterHeaderValue: string | undefined = previousResponse.headers.get("retry-after"); + if (retryAfterHeaderValue) { + const retryAfterDelayInSeconds: number = parseInt(retryAfterHeaderValue); + if (!Number.isNaN(retryAfterDelayInSeconds)) { + delayInSeconds = retryAfterDelayInSeconds; + } + } + } + return delayInSeconds; +} + +function getStatusFromResponseBodyProvisioningState(responseBody: any): LongRunningOperationStates | undefined { + return responseBody && responseBody.properties && responseBody.properties.provisioningState; +} + +function getResponseBody(response: HttpOperationResponse): any { + let result: any; + try { + if (response.bodyAsText && response.bodyAsText.length > 0) { + result = JSON.parse(response.bodyAsText); + } else { + result = response.parsedBody; + } + } catch (error) { + const deserializationError = new RestError(`Error "${error}" occurred in parsing the responseBody " + + "while creating the PollingState for Long Running Operation- "${response.bodyAsText}"`); + deserializationError.request = response.request; + deserializationError.response = response; + throw deserializationError; + } + return result; +} + +function getStatusFromResponse(response: HttpOperationResponse, responseBody?: any): LongRunningOperationStates { + if (responseBody == undefined) { + responseBody = getResponseBody(response); + } + + let result: LongRunningOperationStates; + switch (response.status) { + case 202: + result = "InProgress"; + break; + + case 204: + result = "Succeeded"; + break; + + case 201: + result = getStatusFromResponseBodyProvisioningState(responseBody) || "InProgress"; + break; + + case 200: + result = getStatusFromResponseBodyProvisioningState(responseBody) || "Succeeded"; + break; + + default: + result = "Failed"; + break; + } + return result; +} + +const terminalStates: LongRunningOperationStates[] = ["Succeeded", "Failed", "Canceled"]; + +/** + * Get whether or not a long-running operation with the provided status is finished. + * @param status The current status of a long-running operation. + * @returns Whether or not a long-running operation with the provided status is finished. + */ +function isFinished(status: LongRunningOperationStates): boolean { + return terminalStates.indexOf(status) !== -1; +} + +/** + * Create a new long-running operation polling strategy based on the provided initial response. + * @param initialResponse The initial response to the long-running operation's initial request. + * @param azureServiceClient The AzureServiceClient that was used to send the initial request. + * @param options Any options that were provided to the initial request. + */ +export function createLROPollStrategy(initialResponse: HttpOperationResponse, azureServiceClient: AzureServiceClient, options?: RequestOptionsBase): LROPollStrategy { + if (checkResponseStatusCodeFailed(initialResponse)) { + throw new Error(`Unexpected polling status code from long running operation ` + + `"${initialResponse.status}" for method "${initialResponse.request.method}".`); + } + + let result: LROPollStrategy; + + if (getAzureAsyncOperationHeaderValue(initialResponse)) { + result = new AzureAsyncOperationLROPollStrategy(initialResponse, azureServiceClient, options); + } else if (getLocationHeaderValue(initialResponse)) { + result = new LocationLROPollStrategy(initialResponse, azureServiceClient, options); + } else if (initialResponse.request.method === "PUT" || isFinished(getStatusFromResponse(initialResponse))) { + result = new GetResourceLROPollStrategy(initialResponse, azureServiceClient, options); + } else { + throw new Error("Can't determine long running operation polling strategy from initial response."); + } + + return result; +} + +/** + * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request. + * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation. + */ +function checkResponseStatusCodeFailed(initialResponse: HttpOperationResponse): boolean { + const statusCode = initialResponse.status; + const method: HttpMethods = initialResponse.request.method; + if (statusCode === 200 || statusCode === 202 || + (statusCode === 201 && method === "PUT") || + (statusCode === 204 && (method === "DELETE" || method === "POST"))) { + return false; + } else { + return true; + } +} + +function getLocationHeaderValue(response: HttpOperationResponse): string | undefined { + return response.headers.get("location"); +} + +/** + * A long-running operation polling strategy that is based on the location header. + */ +class LocationLROPollStrategy extends LROPollStrategy { + private _locationHeaderValue?: string; + + constructor(initialResponse: HttpOperationResponse, azureServiceClient: AzureServiceClient, options?: RequestOptionsBase) { + super(initialResponse, azureServiceClient, options); + + this._locationHeaderValue = getLocationHeaderValue(initialResponse)!; + } + + /** + * Retrieve PUT operation status by polling from "location" header. + * @param {string} method - The HTTP method. + * @param {PollingState} pollingState - The object to persist current operation state. + */ + protected sendPollRequest(): Promise { + return this.getStatus(this._locationHeaderValue!).then((result: HttpOperationResponse) => { + const locationHeaderValue: string | undefined = getLocationHeaderValue(result); + if (locationHeaderValue) { + this._locationHeaderValue = locationHeaderValue; + } + + this._response = result; + this._mostRecentRequest = result.request; + + const statusCode: number = result.status; + if (statusCode === 202) { + this._status = "InProgress"; + } else if (statusCode === 200 || + (statusCode === 201 && (this._initialRequestMethod === "PUT" || this._initialRequestMethod === "PATCH")) || + (statusCode === 204 && (this._initialRequestMethod === "DELETE" || this._initialRequestMethod === "POST"))) { + this._status = "Succeeded"; + this._resource = getResponseBody(result); + } else { + throw new Error(`The response with status code ${statusCode} from polling for long running operation url "${this._locationHeaderValue}" is not valid.`); + } + }); + } +} + +function getAzureAsyncOperationHeaderValue(response: HttpOperationResponse): string | undefined { + return response.headers.get("azure-asyncoperation"); +} + +/** + * A long-running operation polling strategy that is based on the azure-asyncoperation header. + */ +class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { + private _azureAsyncOperationHeaderValue: string; + + public constructor(initialResponse: HttpOperationResponse, azureServiceClient: AzureServiceClient, options?: RequestOptionsBase) { + super(initialResponse, azureServiceClient, options); + + this._azureAsyncOperationHeaderValue = getAzureAsyncOperationHeaderValue(initialResponse)!; + } + + /** + * Retrieve operation status by polling from "azure-asyncoperation" header. + * @param {PollingState} pollingState - The object to persist current operation state. + * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation. + */ + protected sendPollRequest(): Promise { + return this.getStatus(this._azureAsyncOperationHeaderValue!).then((response: HttpOperationResponse) => { + const parsedResponse: any = response.parsedBody; + if (!parsedResponse) { + throw new Error("The response from long running operation does not contain a body."); + } else if (!parsedResponse.status) { + throw new Error(`The response "${response.bodyAsText}" from long running operation does not contain the status property.`); + } + + const azureAsyncOperationHeaderValue: string | undefined = getAzureAsyncOperationHeaderValue(response); + if (azureAsyncOperationHeaderValue) { + this._azureAsyncOperationHeaderValue = azureAsyncOperationHeaderValue; + } + + this._status = parsedResponse.status; + this._response = response; + this._mostRecentRequest = response.request; + this._resource = getResponseBody(response); + }); + } + + protected shouldDoFinalGetResourceRequest(): boolean { + return this._initialRequestMethod === "PUT" || this._initialRequestMethod === "PATCH"; + } +} + +/** + * A long-running operation polling strategy that is based on the resource's provisioning state. + */ +class GetResourceLROPollStrategy extends LROPollStrategy { + protected sendPollRequest(): Promise { + return this.updateStateFromGetResourceOperation(); + } +} \ No newline at end of file diff --git a/lib/msRestAzure.ts b/lib/msRestAzure.ts index 4d779c3e5019..771643cfaaf2 100644 --- a/lib/msRestAzure.ts +++ b/lib/msRestAzure.ts @@ -1,9 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { AzureServiceClientOptions, AzureServiceClient } from "./azureServiceClient"; -import Constants from "./util/constants"; -import { CloudError, CloudErrorMapper } from "./cloudError"; -import { BaseResource, BaseResourceMapper } from "./baseResource"; -import { CognitiveServicesCredentials } from "./credentials/cognitiveServicesCredentials"; -export { AzureServiceClient, AzureServiceClientOptions, Constants, CloudError, CloudErrorMapper, BaseResource, BaseResourceMapper, CognitiveServicesCredentials }; +export { AzureServiceClient, AzureServiceClientOptions } from "./azureServiceClient"; +export { BaseResource, BaseResourceMapper } from "./baseResource"; +export { CloudError, CloudErrorMapper } from "./cloudError"; +export { CognitiveServicesCredentials } from "./credentials/cognitiveServicesCredentials"; +export { DEFAULT_LANGUAGE, LongRunningOperationStates, msRestAzureVersion } from "./util/constants"; diff --git a/lib/pollingState.ts b/lib/pollingState.ts deleted file mode 100644 index 1a9f82be232a..000000000000 --- a/lib/pollingState.ts +++ /dev/null @@ -1,194 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. - -import { LongRunningOperationStates as LroStates } from "./util/constants"; -import * as msRest from "ms-rest-js"; - -/** - * @class - * Initializes a new instance of the PollingState class. - */ -export default class PollingState { - /** - * @param {msRest.HttpOperationResponse} [response] - Response of the initial request that was made as a part of the asynchronous operation. - */ - resultOfInitialRequest: msRest.HttpOperationResponse; - /** - * @param {msRest.RequestOptionsBase} [optionsOfInitialRequest] - Request options that were provided as a part of the initial request. - */ - optionsOfInitialRequest!: msRest.RequestOptionsBase; - /** - * @param {msRest.WebResource} [request] - provides information about the request made for polling. - */ - request: msRest.WebResource; - /** - * @param {Response} [response] - The response object to extract longrunning operation status. - */ - response!: msRest.HttpOperationResponse; - /** - * @param {any} [resource] - Provides information about the response body received in the polling request. Particularly useful when polling via provisioningState. - */ - resource: any; - /** - * @param {number} [retryTimeout] - The timeout in seconds to retry on intermediate operation results. Default Value is 30. - */ - retryTimeout = 30; - /** - * @param {string} [azureAsyncOperationHeaderLink] - The url that is present in "azure-asyncoperation" response header. - */ - azureAsyncOperationHeaderLink?: string; - /** - * @param {string} [locationHeaderLink] - The url that is present in "Location" response header. - */ - locationHeaderLink?: string; - /** - * @param {string} [status] - The status of polling. "Succeeded, Failed, Cancelled, Updating, Creating, etc." - */ - status: LroStates; - /** - * @param {msRest.RestError} [error] - Provides information about the error that happened while polling. - */ - error?: msRest.RestError; - - constructor(resultOfInitialRequest: msRest.HttpOperationResponse, retryTimeout: number) { - this.resultOfInitialRequest = resultOfInitialRequest; - this.retryTimeout = retryTimeout; - this.updateResponse(resultOfInitialRequest); - this.request = resultOfInitialRequest.request; - // Parse response.body & assign it as the resource. - try { - if (resultOfInitialRequest.bodyAsText && resultOfInitialRequest.bodyAsText.length > 0) { - this.resource = JSON.parse(resultOfInitialRequest.bodyAsText); - } else { - this.resource = resultOfInitialRequest.parsedBody; - } - } catch (error) { - const deserializationError = new msRest.RestError(`Error "${error}" occurred in parsing the responseBody " + - "while creating the PollingState for Long Running Operation- "${resultOfInitialRequest.bodyAsText}"`); - deserializationError.request = resultOfInitialRequest.request; - deserializationError.response = resultOfInitialRequest; - throw deserializationError; - } - const resource = this.resource; - let status: LroStates; - switch (this.response.status) { - case 202: - status = "InProgress"; - break; - - case 204: - status = "Succeeded"; - break; - - case 201: - if (resource && resource.properties && resource.properties.provisioningState) { - status = resource.properties.provisioningState; - } else { - status = "InProgress"; - } - break; - - case 200: - if (resource && resource.properties && resource.properties.provisioningState) { - status = resource.properties.provisioningState; - } else { - status = "Succeeded"; - } - break; - - default: - status = "Failed"; - break; - } - this.status = status; - } - - /** - * Update cached data using the provided response object - * @param {Response} [response] - provider response object. - */ - updateResponse(response: msRest.HttpOperationResponse) { - this.response = response; - if (response && response.headers) { - const asyncOperationHeader: string | undefined = response.headers.get("azure-asyncoperation"); - const locationHeader: string | undefined = response.headers.get("location"); - if (asyncOperationHeader) { - this.azureAsyncOperationHeaderLink = asyncOperationHeader; - } - - if (locationHeader) { - this.locationHeaderLink = locationHeader; - } - } - } - - /** - * Gets timeout in milliseconds. - * @returns {number} timeout - */ - getTimeout() { - const retryTimeout = this.retryTimeout; - if (retryTimeout || retryTimeout === 0) { - return retryTimeout * 1000; - } - if (this.response) { - const retryAfter: string | undefined = this.response.headers.get("retry-after"); - if (retryAfter) { - return parseInt(retryAfter) * 1000; - } - } - return 30 * 1000; - } - - /** - * Returns long running operation result. - * @returns {msRest.HttpOperationResponse} HttpOperationResponse - */ - getOperationResponse(): msRest.HttpOperationResponse { - const result = { ...this.response, headers: this.response.headers.clone() }; - const resource = this.resource; - if (resource && typeof resource.valueOf() === "string") { - result.bodyAsText = resource; - result.parsedBody = JSON.parse(resource); - } else { - result.parsedBody = resource; - result.bodyAsText = JSON.stringify(resource); - } - return result; - } - - /** - * Returns an Error on operation failure. - * @param {Error} err - The error object. - * @returns {msRest.RestError} The RestError defined in the runtime. - */ - getRestError(err?: Error): msRest.RestError { - let errMsg: string; - let errCode: string | undefined = undefined; - - const error = new msRest.RestError(""); - error.request = msRest.stripRequest(this.request); - error.response = this.response; - const parsedResponse = this.resource as { [key: string]: any }; - - if (err && err.message) { - errMsg = `Long running operation failed with error: "${err.message}".`; - } else { - errMsg = `Long running operation failed with status: "${this.status}".`; - } - - if (parsedResponse) { - if (parsedResponse.error && parsedResponse.error.message) { - errMsg = `Long running operation failed with error: "${parsedResponse.error.message}".`; - } - if (parsedResponse.error && parsedResponse.error.code) { - errCode = parsedResponse.error.code as string; - } - } - - error.message = errMsg; - if (errCode) error.code = errCode; - error.body = parsedResponse; - return error; - } -} \ No newline at end of file diff --git a/lib/util/constants.ts b/lib/util/constants.ts index 598201e8b30b..dfb1d0693017 100644 --- a/lib/util/constants.ts +++ b/lib/util/constants.ts @@ -10,22 +10,17 @@ */ export type LongRunningOperationStates = "InProgress" | "Succeeded" | "Failed" | "Canceled"; -const Constants = { - - /** - * The default language in the request header. - * - * @const - * @type {string} - */ - DEFAULT_LANGUAGE: "en-us", - - /** - * The ms-rest-azure version. - * @const - * @type {string} - */ - msRestAzureVersion: "0.1.0" -}; +/** + * The default language in the request header. + * + * @const + * @type {string} + */ +export const DEFAULT_LANGUAGE = "en-us"; -export default Constants; +/** + * The ms-rest-azure version. + * @const + * @type {string} + */ +export const msRestAzureVersion = "0.1.0"; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index e6b8f347ceb7..19eaa95a15af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -113,114 +113,18 @@ "to-fast-properties": "^2.0.0" } }, - "@types/body-parser": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz", - "integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==", - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.32", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", - "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==", - "requires": { - "@types/node": "*" - } - }, - "@types/events": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", - "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==" - }, - "@types/express": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.0.tgz", - "integrity": "sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.0.tgz", - "integrity": "sha512-lTeoCu5NxJU4OD9moCgm0ESZzweAx0YqsAcab6OB0EB3+As1OaHtKnaGJvcngQxYsi9UNv0abn4/DRavrRxt4w==", - "requires": { - "@types/events": "*", - "@types/node": "*", - "@types/range-parser": "*" - } - }, - "@types/form-data": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", - "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/mime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz", - "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==" - }, "@types/mocha": { "version": "5.2.5", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.5.tgz", "integrity": "sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww==", "dev": true }, - "@types/node": { - "version": "9.6.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.23.tgz", - "integrity": "sha512-d2SJJpwkiPudEQ3+9ysANN2Nvz4QJKUPoe/WL5zyQzI0RaEeZWH5K5xjvUIGszTItHQpFPdH+u51f6G/LkS8Cg==" - }, - "@types/range-parser": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.2.tgz", - "integrity": "sha512-HtKGu+qG1NPvYe1z7ezLsyIaXYyi8SoAVqWDZgDQ8dLrsZvSzUNCwZyfX33uhWxL/SU0ZDQZ3nwZ0nimt507Kw==" - }, - "@types/serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==", - "requires": { - "@types/express-serve-static-core": "*", - "@types/mime": "*" - } - }, "@types/should": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/@types/should/-/should-8.3.0.tgz", "integrity": "sha1-4rRgJDaF2+N3GC857zjTf00Veto=", "dev": true }, - "@types/tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha512-MDQLxNFRLasqS4UlkWMSACMKeSm1x4Q3TxzUC7KQUsh6RK1ZrQ0VEyE3yzXcBu+K8ejVj4wuX32eUG02yNp+YQ==" - }, - "@types/uuid": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.3.tgz", - "integrity": "sha512-5fRLCYhLtDb3hMWqQyH10qtF+Ud2JnNCXTCZ+9ktNdCcgslcuXkDTkFcJNk++MT29yDntDnlF1+jD+uVGumsbw==", - "requires": { - "@types/node": "*" - } - }, - "@types/xml2js": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.3.tgz", - "integrity": "sha512-Pv2HGRE4gWLs31In7nsyXEH4uVVsd0HNV9i2dyASvtDIlOtSTr1eczPLDpdEuyv5LWH5LT20GIXwPjkshKWI1g==", - "requires": { - "@types/events": "*", - "@types/node": "*" - } - }, "acorn": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", @@ -413,26 +317,12 @@ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, "atob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", "dev": true }, - "axios": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", - "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", - "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" - } - }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -859,14 +749,6 @@ "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", "dev": true }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "requires": { - "delayed-stream": "~1.0.0" - } - }, "commander": { "version": "2.15.1", "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", @@ -1000,6 +882,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -1073,11 +956,6 @@ } } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", @@ -1563,14 +1441,6 @@ "locate-path": "^2.0.0" } }, - "follow-redirects": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.1.tgz", - "integrity": "sha512-v9GI1hpaqq1ZZR6pBD1+kI7O24PhDvNGNodjS3MdcEqyrahCp8zbtpv+2B/krUnSmUH80lbAS7MrdeK5IylgKg==", - "requires": { - "debug": "^3.1.0" - } - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -1583,16 +1453,6 @@ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", "dev": true }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - } - }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -2401,7 +2261,8 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true }, "is-builtin-module": { "version": "1.0.0", @@ -2545,24 +2406,6 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "isomorphic-tough-cookie": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-tough-cookie/-/isomorphic-tough-cookie-0.0.1.tgz", - "integrity": "sha512-9vV3Nl9PpBdd/LHIjBdiMYwWoAU3j+v+WvYJNkVnMrAgFBthgkIwQvwRl+M1J8R1AE51N/Dyv3nT38zzi7FSaw==", - "requires": { - "@types/tough-cookie": "^2.3.3", - "tough-cookie": "^2.3.4" - } - }, - "isomorphic-xml2js": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/isomorphic-xml2js/-/isomorphic-xml2js-0.1.3.tgz", - "integrity": "sha512-dIkT2U9ritKVWF/HfHfGwm5tTnlMnknYsv7l12oJlQQgOV2CNV65pX+FHy6HFL9YP8q0JcrlNQAFRJIN2agUmQ==", - "requires": { - "@types/xml2js": "^0.4.2", - "xml2js": "^0.4.19" - } - }, "istanbul-lib-coverage": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", @@ -2837,19 +2680,6 @@ "brorand": "^1.0.1" } }, - "mime-db": { - "version": "1.35.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", - "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" - }, - "mime-types": { - "version": "2.1.19", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", - "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", - "requires": { - "mime-db": "~1.35.0" - } - }, "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", @@ -2899,61 +2729,6790 @@ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "ms-rest-js": { + "version": "file:../ms-rest-js", + "requires": { + "@types/express": "^4.11.1", + "@types/form-data": "^2.2.1", + "@types/node": "^9.4.6", + "@types/uuid": "^3.4.3", + "axios": "^0.18.0", + "form-data": "^2.3.2", + "isomorphic-tough-cookie": "^0.0.1", + "isomorphic-xml2js": "^0.1.3", + "tslib": "^1.9.2", + "uuid": "^3.2.1" + }, + "dependencies": { + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "bundled": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.0", + "bundled": true + }, + "@samverschueren/stream-to-observable": { + "version": "0.3.0", + "bundled": true, + "requires": { + "any-observable": "^0.3.0" + } + }, + "@sindresorhus/is": { + "version": "0.7.0", + "bundled": true + }, + "@types/body-parser": { + "version": "1.17.0", + "bundled": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.32", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "@types/core-js": { + "version": "0.9.46", + "bundled": true + }, + "@types/events": { + "version": "1.2.0", + "bundled": true + }, + "@types/express": { + "version": "4.16.0", + "bundled": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.16.0", + "bundled": true, + "requires": { + "@types/events": "*", + "@types/node": "*", + "@types/range-parser": "*" + } + }, + "@types/form-data": { + "version": "2.2.1", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "@types/glob": { + "version": "5.0.35", + "bundled": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/loglevel": { + "version": "1.5.3", + "bundled": true + }, + "@types/memory-fs": { + "version": "0.3.1", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "@types/mime": { + "version": "2.0.0", + "bundled": true + }, + "@types/minimatch": { + "version": "3.0.3", + "bundled": true + }, + "@types/mkdirp": { + "version": "0.3.29", + "bundled": true + }, + "@types/mocha": { + "version": "5.2.4", + "bundled": true + }, + "@types/node": { + "version": "9.6.23", + "bundled": true + }, + "@types/range-parser": { + "version": "1.2.2", + "bundled": true + }, + "@types/rimraf": { + "version": "0.0.28", + "bundled": true + }, + "@types/serve-static": { + "version": "1.13.2", + "bundled": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/mime": "*" + } + }, + "@types/should": { + "version": "8.3.0", + "bundled": true + }, + "@types/tapable": { + "version": "1.0.4", + "bundled": true + }, + "@types/tough-cookie": { + "version": "2.3.3", + "bundled": true + }, + "@types/uglify-js": { + "version": "3.0.3", + "bundled": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "@types/uuid": { + "version": "3.4.3", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "@types/webpack": { + "version": "4.4.6", + "bundled": true, + "requires": { + "@types/node": "*", + "@types/tapable": "*", + "@types/uglify-js": "*", + "source-map": "^0.6.0" + } + }, + "@types/webpack-dev-middleware": { + "version": "2.0.2", + "bundled": true, + "requires": { + "@types/connect": "*", + "@types/loglevel": "*", + "@types/memory-fs": "*", + "@types/webpack": "*" + } + }, + "@types/xml2js": { + "version": "0.4.3", + "bundled": true, + "requires": { + "@types/events": "*", + "@types/node": "*" + } + }, + "@webassemblyjs/ast": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", + "debug": "^3.1.0", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.5.13", + "bundled": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.5.13", + "bundled": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.5.13", + "bundled": true, + "requires": { + "debug": "^3.1.0" + } + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/wast-printer": "1.5.13" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.5.13", + "bundled": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.5.13", + "bundled": true, + "requires": { + "debug": "^3.1.0", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.5.13", + "bundled": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "debug": "^3.1.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.5.13", + "bundled": true, + "requires": { + "ieee754": "^1.1.11" + } + }, + "@webassemblyjs/leb128": { + "version": "1.5.13", + "bundled": true, + "requires": { + "long": "4.0.0" + }, + "dependencies": { + "long": { + "version": "4.0.0", + "bundled": true + } + } + }, + "@webassemblyjs/utf8": { + "version": "1.5.13", + "bundled": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/helper-wasm-section": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-opt": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "@webassemblyjs/wast-printer": "1.5.13", + "debug": "^3.1.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "debug": "^3.1.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/floating-point-hex-parser": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-code-frame": "1.5.13", + "@webassemblyjs/helper-fsm": "1.5.13", + "long": "^3.2.0", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", + "long": "^3.2.0" + } + }, + "abortcontroller-polyfill": { + "version": "1.1.9", + "bundled": true + }, + "accepts": { + "version": "1.3.5", + "bundled": true, + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.7.1", + "bundled": true + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "bundled": true, + "requires": { + "acorn": "^5.0.0" + } + }, + "ajv": { + "version": "6.5.2", + "bundled": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.1" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "bundled": true + }, + "ansi-escapes": { + "version": "3.1.0", + "bundled": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "ansi-styles": { + "version": "2.2.1", + "bundled": true + }, + "any-observable": { + "version": "0.3.0", + "bundled": true + }, + "anymatch": { + "version": "2.0.0", + "bundled": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "argparse": { + "version": "1.0.10", + "bundled": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "bundled": true + }, + "arr-flatten": { + "version": "1.1.0", + "bundled": true + }, + "arr-union": { + "version": "3.1.0", + "bundled": true + }, + "array-differ": { + "version": "1.0.0", + "bundled": true + }, + "array-filter": { + "version": "0.0.1", + "bundled": true + }, + "array-find-index": { + "version": "1.0.2", + "bundled": true + }, + "array-flatten": { + "version": "1.1.1", + "bundled": true + }, + "array-map": { + "version": "0.0.0", + "bundled": true + }, + "array-reduce": { + "version": "0.0.0", + "bundled": true + }, + "array-union": { + "version": "1.0.2", + "bundled": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "bundled": true + }, + "array-unique": { + "version": "0.3.2", + "bundled": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true + }, + "asn1.js": { + "version": "4.10.1", + "bundled": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "bundled": true, + "requires": { + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "bundled": true + }, + "util": { + "version": "0.10.3", + "bundled": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assign-symbols": { + "version": "1.0.0", + "bundled": true + }, + "ast-types": { + "version": "0.11.5", + "bundled": true + }, + "async": { + "version": "1.5.2", + "bundled": true + }, + "async-each": { + "version": "1.0.1", + "bundled": true + }, + "async-limiter": { + "version": "1.0.0", + "bundled": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true + }, + "atob": { + "version": "2.1.1", + "bundled": true + }, + "axios": { + "version": "0.18.0", + "bundled": true, + "requires": { + "follow-redirects": "^1.3.0", + "is-buffer": "^1.1.5" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "bundled": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "babel-core": { + "version": "6.26.3", + "bundled": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "bundled": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "bundled": true + }, + "source-map": { + "version": "0.5.7", + "bundled": true + } + } + }, + "babel-helper-bindify-decorators": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-explode-class": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-bindify-decorators": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-async-generators": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-class-constructor-call": { + "version": "6.18.0", + "bundled": true + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "bundled": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-export-extensions": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "bundled": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "bundled": true + }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-generators": "^6.5.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-class-constructor-call": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-syntax-class-constructor-call": "^6.18.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-explode-class": "^6.24.1", + "babel-plugin-syntax-decorators": "^6.13.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "bundled": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-export-extensions": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-plugin-syntax-export-extensions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-plugin-syntax-flow": "^6.18.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "bundled": true, + "requires": { + "regenerator-transform": "^0.10.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-polyfill": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "bundled": true + } + } + }, + "babel-preset-env": { + "version": "1.7.0", + "bundled": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^3.2.6", + "invariant": "^2.2.2", + "semver": "^5.3.0" + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.24.1", + "babel-plugin-transform-es2015-classes": "^6.24.1", + "babel-plugin-transform-es2015-computed-properties": "^6.24.1", + "babel-plugin-transform-es2015-destructuring": "^6.22.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", + "babel-plugin-transform-es2015-for-of": "^6.22.0", + "babel-plugin-transform-es2015-function-name": "^6.24.1", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-umd": "^6.24.1", + "babel-plugin-transform-es2015-object-super": "^6.24.1", + "babel-plugin-transform-es2015-parameters": "^6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", + "babel-plugin-transform-regenerator": "^6.24.1" + } + }, + "babel-preset-stage-1": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-transform-class-constructor-call": "^6.24.1", + "babel-plugin-transform-export-extensions": "^6.22.0", + "babel-preset-stage-2": "^6.24.1" + } + }, + "babel-preset-stage-2": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-transform-class-properties": "^6.24.1", + "babel-plugin-transform-decorators": "^6.24.1", + "babel-preset-stage-3": "^6.24.1" + } + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-generator-functions": "^6.24.1", + "babel-plugin-transform-async-to-generator": "^6.24.1", + "babel-plugin-transform-exponentiation-operator": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.22.0" + } + }, + "babel-register": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + } + }, + "babel-runtime": { + "version": "6.26.0", + "bundled": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-types": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "bundled": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "base": { + "version": "0.11.2", + "bundled": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.0", + "bundled": true + }, + "big.js": { + "version": "3.2.0", + "bundled": true + }, + "binary-extensions": { + "version": "1.11.0", + "bundled": true + }, + "binaryextensions": { + "version": "2.1.1", + "bundled": true + }, + "bluebird": { + "version": "3.5.1", + "bundled": true + }, + "bn.js": { + "version": "4.11.8", + "bundled": true + }, + "body-parser": { + "version": "1.18.2", + "bundled": true, + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.1", + "http-errors": "~1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "~2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "~1.6.15" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "bundled": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "bundled": true + }, + "browser-stdout": { + "version": "1.3.1", + "bundled": true + }, + "browserify-aes": { + "version": "1.2.0", + "bundled": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "bundled": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "bundled": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "bundled": true + } + } + }, + "browserify-rsa": { + "version": "4.0.1", + "bundled": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "bundled": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "bundled": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "3.2.8", + "bundled": true, + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + }, + "buffer": { + "version": "4.9.1", + "bundled": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.0", + "bundled": true + }, + "buffer-xor": { + "version": "1.0.3", + "bundled": true + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "bundled": true + }, + "bytes": { + "version": "3.0.0", + "bundled": true + }, + "cacache": { + "version": "10.0.4", + "bundled": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "bundled": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cacheable-request": { + "version": "2.1.4", + "bundled": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "bundled": true + } + } + }, + "call-me-maybe": { + "version": "1.0.1", + "bundled": true + }, + "camelcase": { + "version": "4.1.0", + "bundled": true + }, + "camelcase-keys": { + "version": "4.2.0", + "bundled": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30000865", + "bundled": true + }, + "chalk": { + "version": "2.4.1", + "bundled": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "requires": { + "color-convert": "^1.9.0" + } + } + } + }, + "chardet": { + "version": "0.4.2", + "bundled": true + }, + "chokidar": { + "version": "2.0.4", + "bundled": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true + }, + "chrome-launcher": { + "version": "0.10.2", + "bundled": true, + "requires": { + "@types/core-js": "^0.9.41", + "@types/mkdirp": "^0.3.29", + "@types/node": "^9.3.0", + "@types/rimraf": "^0.0.28", + "is-wsl": "^1.1.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "0.5.1", + "rimraf": "^2.6.1" + } + }, + "chrome-remote-interface": { + "version": "0.25.7", + "bundled": true, + "requires": { + "commander": "2.11.x", + "ws": "3.3.x" + }, + "dependencies": { + "commander": { + "version": "2.11.0", + "bundled": true + } + } + }, + "chrome-trace-event": { + "version": "1.0.0", + "bundled": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "chrome-unmirror": { + "version": "0.1.0", + "bundled": true + }, + "cipher-base": { + "version": "1.0.4", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "bundled": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "bundled": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "0.1.2", + "bundled": true + }, + "cli-table": { + "version": "0.3.1", + "bundled": true, + "requires": { + "colors": "1.0.3" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "bundled": true + } + } + }, + "cli-truncate": { + "version": "0.2.1", + "bundled": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "cli-width": { + "version": "2.2.0", + "bundled": true + }, + "cliui": { + "version": "4.1.0", + "bundled": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "bundled": true + }, + "clone-buffer": { + "version": "1.0.0", + "bundled": true + }, + "clone-response": { + "version": "1.0.2", + "bundled": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "clone-stats": { + "version": "0.0.1", + "bundled": true + }, + "cloneable-readable": { + "version": "1.1.2", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "collection-visit": { + "version": "1.0.0", + "bundled": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.2", + "bundled": true, + "requires": { + "color-name": "1.1.1" + } + }, + "color-name": { + "version": "1.1.1", + "bundled": true + }, + "colors": { + "version": "1.3.0", + "bundled": true + }, + "combined-stream": { + "version": "1.0.6", + "bundled": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.15.1", + "bundled": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true + }, + "component-emitter": { + "version": "1.2.1", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "concat-stream": { + "version": "1.6.2", + "bundled": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.1.0", + "bundled": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "bundled": true + }, + "content-disposition": { + "version": "0.5.2", + "bundled": true + }, + "content-type": { + "version": "1.0.4", + "bundled": true + }, + "convert-source-map": { + "version": "1.5.1", + "bundled": true + }, + "cookie": { + "version": "0.3.1", + "bundled": true + }, + "cookie-signature": { + "version": "1.0.6", + "bundled": true + }, + "copy-concurrently": { + "version": "1.0.5", + "bundled": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "bundled": true + }, + "core-js": { + "version": "2.5.7", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "create-ecdh": { + "version": "4.0.3", + "bundled": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "bundled": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "bundled": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "bundled": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "bundled": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "bundled": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "cyclist": { + "version": "0.2.2", + "bundled": true + }, + "d": { + "version": "1.0.0", + "bundled": true, + "requires": { + "es5-ext": "^0.10.9" + } + }, + "dargs": { + "version": "5.1.0", + "bundled": true + }, + "date-fns": { + "version": "1.29.0", + "bundled": true + }, + "date-now": { + "version": "0.1.4", + "bundled": true + }, + "dateformat": { + "version": "3.0.3", + "bundled": true + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "bundled": true + }, + "decamelize-keys": { + "version": "1.1.0", + "bundled": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "bundled": true + } + } + }, + "decode-uri-component": { + "version": "0.2.0", + "bundled": true + }, + "decompress-response": { + "version": "3.3.0", + "bundled": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-assign": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true + }, + "define-properties": { + "version": "1.1.2", + "bundled": true, + "requires": { + "foreach": "^2.0.5", + "object-keys": "^1.0.8" + } + }, + "define-property": { + "version": "2.0.2", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "depd": { + "version": "1.1.2", + "bundled": true + }, + "des.js": { + "version": "1.0.0", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "bundled": true + }, + "detect-conflict": { + "version": "1.0.1", + "bundled": true + }, + "detect-indent": { + "version": "4.0.0", + "bundled": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "diff": { + "version": "3.5.0", + "bundled": true + }, + "diffie-hellman": { + "version": "5.0.3", + "bundled": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.0.0", + "bundled": true, + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "bundled": true + }, + "duplexer": { + "version": "0.1.1", + "bundled": true + }, + "duplexer3": { + "version": "0.1.4", + "bundled": true + }, + "duplexify": { + "version": "3.6.0", + "bundled": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "editions": { + "version": "1.3.4", + "bundled": true + }, + "ee-first": { + "version": "1.1.1", + "bundled": true + }, + "ejs": { + "version": "2.6.1", + "bundled": true + }, + "electron-to-chromium": { + "version": "1.3.52", + "bundled": true + }, + "elegant-spinner": { + "version": "1.0.1", + "bundled": true + }, + "elliptic": { + "version": "6.4.0", + "bundled": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emojis-list": { + "version": "2.1.0", + "bundled": true + }, + "encodeurl": { + "version": "1.0.2", + "bundled": true + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "envinfo": { + "version": "5.10.0", + "bundled": true + }, + "errno": { + "version": "0.1.7", + "bundled": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error": { + "version": "7.0.2", + "bundled": true, + "requires": { + "string-template": "~0.2.1", + "xtend": "~4.0.0" + } + }, + "error-ex": { + "version": "1.3.2", + "bundled": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.12.0", + "bundled": true, + "requires": { + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "bundled": true, + "requires": { + "is-callable": "^1.1.1", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.1" + } + }, + "es5-ext": { + "version": "0.10.45", + "bundled": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "bundled": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-object-assign": { + "version": "1.1.0", + "bundled": true + }, + "es6-symbol": { + "version": "3.1.1", + "bundled": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "escape-html": { + "version": "1.0.3", + "bundled": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true + }, + "eslint-scope": { + "version": "4.0.0", + "bundled": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "bundled": true + }, + "esrecurse": { + "version": "4.2.1", + "bundled": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "bundled": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true + }, + "etag": { + "version": "1.8.1", + "bundled": true + }, + "event-stream": { + "version": "3.3.4", + "bundled": true, + "requires": { + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" + } + }, + "events": { + "version": "1.1.1", + "bundled": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "bundled": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "exit-hook": { + "version": "1.1.1", + "bundled": true + }, + "expand-brackets": { + "version": "2.1.4", + "bundled": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-range": { + "version": "1.8.2", + "bundled": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "bundled": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "2.1.0", + "bundled": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "bundled": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "express": { + "version": "4.16.3", + "bundled": true, + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.3", + "qs": "6.5.1", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "bundled": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "2.2.0", + "bundled": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "bundled": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "bundled": true + }, + "fast-glob": { + "version": "2.2.2", + "bundled": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.0.1", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.1", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "bundled": true + }, + "figures": { + "version": "2.0.0", + "bundled": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "filename-regex": { + "version": "2.0.1", + "bundled": true + }, + "fill-range": { + "version": "4.0.0", + "bundled": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.1", + "bundled": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "find-cache-dir": { + "version": "1.0.0", + "bundled": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "first-chunk-stream": { + "version": "2.0.0", + "bundled": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "flow-parser": { + "version": "0.76.0", + "bundled": true + }, + "flush-write-stream": { + "version": "1.0.3", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "follow-redirects": { + "version": "1.5.1", + "bundled": true, + "requires": { + "debug": "^3.1.0" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true + }, + "for-own": { + "version": "0.1.5", + "bundled": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "foreach": { + "version": "2.0.5", + "bundled": true + }, + "form-data": { + "version": "2.3.2", + "bundled": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "bundled": true + }, + "fragment-cache": { + "version": "0.2.1", + "bundled": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "bundled": true + }, + "from": { + "version": "0.1.7", + "bundled": true + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "function-bind": { + "version": "1.1.1", + "bundled": true + }, + "get-caller-file": { + "version": "1.0.3", + "bundled": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "get-value": { + "version": "2.0.6", + "bundled": true + }, + "gh-got": { + "version": "6.0.0", + "bundled": true, + "requires": { + "got": "^7.0.0", + "is-plain-obj": "^1.1.0" + }, + "dependencies": { + "got": { + "version": "7.1.0", + "bundled": true, + "requires": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + } + }, + "p-cancelable": { + "version": "0.3.0", + "bundled": true + }, + "p-timeout": { + "version": "1.2.1", + "bundled": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "prepend-http": { + "version": "1.0.4", + "bundled": true + }, + "url-parse-lax": { + "version": "1.0.0", + "bundled": true, + "requires": { + "prepend-http": "^1.0.1" + } + } + } + }, + "github-username": { + "version": "4.1.0", + "bundled": true, + "requires": { + "gh-got": "^6.0.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-all": { + "version": "3.1.0", + "bundled": true, + "requires": { + "glob": "^7.0.5", + "yargs": "~1.2.6" + }, + "dependencies": { + "minimist": { + "version": "0.1.0", + "bundled": true + }, + "yargs": { + "version": "1.2.6", + "bundled": true, + "requires": { + "minimist": "^0.1.0" + } + } + } + }, + "glob-base": { + "version": "0.3.0", + "bundled": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "bundled": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "bundled": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "bundled": true + }, + "global-modules": { + "version": "1.0.0", + "bundled": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "bundled": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "9.18.0", + "bundled": true + }, + "globby": { + "version": "8.0.1", + "bundled": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "got": { + "version": "8.3.2", + "bundled": true, + "requires": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "grouped-queue": { + "version": "0.3.3", + "bundled": true, + "requires": { + "lodash": "^4.17.2" + } + }, + "growl": { + "version": "1.10.5", + "bundled": true + }, + "has": { + "version": "1.0.3", + "bundled": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-color": { + "version": "0.1.7", + "bundled": true + }, + "has-flag": { + "version": "3.0.0", + "bundled": true + }, + "has-symbol-support-x": { + "version": "1.4.2", + "bundled": true + }, + "has-symbols": { + "version": "1.0.0", + "bundled": true + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "bundled": true, + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, + "has-value": { + "version": "1.0.0", + "bundled": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.5", + "bundled": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.1.1", + "bundled": true + }, + "hmac-drbg": { + "version": "1.0.1", + "bundled": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "home-or-tmp": { + "version": "2.0.0", + "bundled": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.1", + "bundled": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "bundled": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "bundled": true + }, + "http-errors": { + "version": "1.6.3", + "bundled": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "https-browserify": { + "version": "1.0.0", + "bundled": true + }, + "iconv-lite": { + "version": "0.4.19", + "bundled": true + }, + "ieee754": { + "version": "1.1.12", + "bundled": true + }, + "iferr": { + "version": "0.1.5", + "bundled": true + }, + "ignore": { + "version": "3.3.10", + "bundled": true + }, + "import-local": { + "version": "1.0.0", + "bundled": true, + "requires": { + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true + }, + "indent-string": { + "version": "3.2.0", + "bundled": true + }, + "indexof": { + "version": "0.0.1", + "bundled": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true + }, + "inquirer": { + "version": "5.2.0", + "bundled": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.1.0", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^5.5.2", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "interpret": { + "version": "1.1.0", + "bundled": true + }, + "into-stream": { + "version": "3.1.0", + "bundled": true, + "requires": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + } + }, + "invariant": { + "version": "2.2.4", + "bundled": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true + }, + "ipaddr.js": { + "version": "1.6.0", + "bundled": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true + }, + "is-binary-path": { + "version": "1.0.1", + "bundled": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "bundled": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-callable": { + "version": "1.1.4", + "bundled": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "bundled": true + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "bundled": true + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "bundled": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "bundled": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true + }, + "is-extglob": { + "version": "2.1.1", + "bundled": true + }, + "is-finite": { + "version": "1.0.2", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "is-glob": { + "version": "4.0.0", + "bundled": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "bundled": true + }, + "is-object": { + "version": "1.0.1", + "bundled": true + }, + "is-observable": { + "version": "1.1.0", + "bundled": true, + "requires": { + "symbol-observable": "^1.1.0" + }, + "dependencies": { + "symbol-observable": { + "version": "1.2.0", + "bundled": true + } + } + }, + "is-plain-obj": { + "version": "1.1.0", + "bundled": true + }, + "is-plain-object": { + "version": "2.0.4", + "bundled": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "bundled": true + }, + "is-primitive": { + "version": "2.0.0", + "bundled": true + }, + "is-promise": { + "version": "2.1.0", + "bundled": true + }, + "is-regex": { + "version": "1.0.4", + "bundled": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-retry-allowed": { + "version": "1.1.0", + "bundled": true + }, + "is-scoped": { + "version": "1.0.0", + "bundled": true, + "requires": { + "scoped-regex": "^1.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "is-symbol": { + "version": "1.0.1", + "bundled": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true + }, + "is-windows": { + "version": "1.0.2", + "bundled": true + }, + "is-wsl": { + "version": "1.1.0", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isbinaryfile": { + "version": "3.0.2", + "bundled": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true + }, + "isobject": { + "version": "3.0.1", + "bundled": true + }, + "isomorphic-tough-cookie": { + "version": "0.0.1", + "bundled": true, + "requires": { + "@types/tough-cookie": "^2.3.3", + "tough-cookie": "^2.3.4" + } + }, + "isomorphic-xml2js": { + "version": "0.1.3", + "bundled": true, + "requires": { + "@types/xml2js": "^0.4.2", + "xml2js": "^0.4.19" + } + }, + "istextorbinary": { + "version": "2.2.1", + "bundled": true, + "requires": { + "binaryextensions": "2", + "editions": "^1.3.3", + "textextensions": "2" + } + }, + "isurl": { + "version": "1.0.0", + "bundled": true, + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, + "js-tokens": { + "version": "3.0.2", + "bundled": true + }, + "js-yaml": { + "version": "3.12.0", + "bundled": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jscodeshift": { + "version": "0.5.1", + "bundled": true, + "requires": { + "babel-plugin-transform-flow-strip-types": "^6.8.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-stage-1": "^6.5.0", + "babel-register": "^6.9.0", + "babylon": "^7.0.0-beta.47", + "colors": "^1.1.2", + "flow-parser": "^0.*", + "lodash": "^4.13.1", + "micromatch": "^2.3.7", + "neo-async": "^2.5.0", + "node-dir": "0.1.8", + "nomnom": "^1.8.1", + "recast": "^0.15.0", + "temp": "^0.8.1", + "write-file-atomic": "^1.2.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "bundled": true + }, + "babylon": { + "version": "7.0.0-beta.47", + "bundled": true + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + } + } + }, + "jsesc": { + "version": "0.5.0", + "bundled": true + }, + "json-buffer": { + "version": "3.0.0", + "bundled": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "bundled": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "bundled": true + }, + "json5": { + "version": "0.5.1", + "bundled": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true + }, + "keyv": { + "version": "3.0.0", + "bundled": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lighthouse-logger": { + "version": "1.0.1", + "bundled": true, + "requires": { + "debug": "^2.6.8" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "listr": { + "version": "0.14.1", + "bundled": true, + "requires": { + "@samverschueren/stream-to-observable": "^0.3.0", + "cli-truncate": "^0.2.1", + "figures": "^1.7.0", + "indent-string": "^2.1.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.4.0", + "listr-verbose-renderer": "^0.4.0", + "log-symbols": "^1.0.2", + "log-update": "^1.0.2", + "ora": "^0.2.3", + "p-map": "^1.1.1", + "rxjs": "^6.1.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "bundled": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "indent-string": { + "version": "2.1.0", + "bundled": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "bundled": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "rxjs": { + "version": "6.2.2", + "bundled": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "bundled": true + }, + "listr-update-renderer": { + "version": "0.4.0", + "bundled": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^1.0.2", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "bundled": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "bundled": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "listr-verbose-renderer": { + "version": "0.4.1", + "bundled": true, + "requires": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "figures": { + "version": "1.7.0", + "bundled": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "onetime": { + "version": "1.1.0", + "bundled": true + }, + "restore-cursor": { + "version": "1.0.1", + "bundled": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "load-json-file": { + "version": "4.0.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "loader-runner": { + "version": "2.3.0", + "bundled": true + }, + "loader-utils": { + "version": "1.1.0", + "bundled": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.10", + "bundled": true + }, + "lodash.debounce": { + "version": "4.0.8", + "bundled": true + }, + "log-symbols": { + "version": "2.2.0", + "bundled": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "log-update": { + "version": "1.0.2", + "bundled": true, + "requires": { + "ansi-escapes": "^1.0.0", + "cli-cursor": "^1.0.2" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "bundled": true + }, + "cli-cursor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "bundled": true + }, + "restore-cursor": { + "version": "1.0.1", + "bundled": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + } + } + }, + "loglevel": { + "version": "1.6.1", + "bundled": true + }, + "loglevelnext": { + "version": "1.0.5", + "bundled": true, + "requires": { + "es6-symbol": "^3.1.1", + "object.assign": "^4.1.0" + } + }, + "long": { + "version": "3.2.0", + "bundled": true + }, + "loose-envify": { + "version": "1.4.0", + "bundled": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "bundled": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "bundled": true + }, + "lru-cache": { + "version": "4.1.3", + "bundled": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "bundled": true, + "requires": { + "pify": "^3.0.0" + } + }, + "make-error": { + "version": "1.3.4", + "bundled": true + }, + "mamacro": { + "version": "0.0.3", + "bundled": true + }, + "map-cache": { + "version": "0.2.2", + "bundled": true + }, + "map-obj": { + "version": "2.0.0", + "bundled": true + }, + "map-stream": { + "version": "0.1.0", + "bundled": true + }, + "map-visit": { + "version": "1.0.0", + "bundled": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "math-random": { + "version": "1.0.1", + "bundled": true + }, + "md5.js": { + "version": "1.3.4", + "bundled": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "media-typer": { + "version": "0.3.0", + "bundled": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "mem-fs": { + "version": "1.1.3", + "bundled": true, + "requires": { + "through2": "^2.0.0", + "vinyl": "^1.1.0", + "vinyl-file": "^2.0.0" + } + }, + "mem-fs-editor": { + "version": "4.0.3", + "bundled": true, + "requires": { + "commondir": "^1.0.1", + "deep-extend": "^0.6.0", + "ejs": "^2.5.9", + "glob": "^7.0.3", + "globby": "^7.1.1", + "isbinaryfile": "^3.0.2", + "mkdirp": "^0.5.0", + "multimatch": "^2.0.0", + "rimraf": "^2.2.8", + "through2": "^2.0.0", + "vinyl": "^2.0.1" + }, + "dependencies": { + "clone": { + "version": "2.1.1", + "bundled": true + }, + "clone-stats": { + "version": "1.0.0", + "bundled": true + }, + "globby": { + "version": "7.1.1", + "bundled": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "replace-ext": { + "version": "1.0.0", + "bundled": true + }, + "vinyl": { + "version": "2.2.0", + "bundled": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + } + } + }, + "memory-fs": { + "version": "0.4.1", + "bundled": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "memorystream": { + "version": "0.3.1", + "bundled": true + }, + "meow": { + "version": "4.0.1", + "bundled": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "bundled": true + }, + "merge2": { + "version": "1.2.2", + "bundled": true + }, + "methods": { + "version": "1.1.2", + "bundled": true + }, + "micromatch": { + "version": "3.1.10", + "bundled": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "bundled": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.4.1", + "bundled": true + }, + "mime-db": { + "version": "1.33.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.18", + "bundled": true, + "requires": { + "mime-db": "~1.33.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "bundled": true + }, + "mimic-response": { + "version": "1.0.1", + "bundled": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "bundled": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "minimist-options": { + "version": "3.0.2", + "bundled": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "mississippi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.1", + "bundled": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.2.0", + "bundled": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + } + }, + "mocha-chrome": { + "version": "1.1.0", + "bundled": true, + "requires": { + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-parameters": "^6.24.1", + "babel-polyfill": "^6.26.0", + "babel-preset-env": "^1.6.1", + "babel-register": "^6.26.0", + "chalk": "^2.0.1", + "chrome-launcher": "^0.10.2", + "chrome-remote-interface": "^0.25.2", + "chrome-unmirror": "^0.1.0", + "debug": "^3.1.0", + "deep-assign": "^2.0.0", + "import-local": "^1.0.0", + "loglevel": "^1.4.1", + "meow": "^4.0.0", + "nanobus": "^4.2.0" + } + }, + "move-concurrently": { + "version": "1.0.1", + "bundled": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true + }, + "multimatch": { + "version": "2.1.0", + "bundled": true, + "requires": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + } + }, + "mute-stream": { + "version": "0.0.7", + "bundled": true + }, + "nanoassert": { + "version": "1.1.0", + "bundled": true + }, + "nanobus": { + "version": "4.3.3", + "bundled": true, + "requires": { + "nanotiming": "^7.2.0", + "remove-array-items": "^1.0.0" + } + }, + "nanomatch": { + "version": "1.2.13", + "bundled": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "nanoscheduler": { + "version": "1.0.3", + "bundled": true, + "requires": { + "nanoassert": "^1.1.0" + } + }, + "nanotiming": { + "version": "7.3.1", + "bundled": true, + "requires": { + "nanoassert": "^1.1.0", + "nanoscheduler": "^1.0.2" + } + }, + "negotiator": { + "version": "0.6.1", + "bundled": true + }, + "neo-async": { + "version": "2.5.1", + "bundled": true + }, + "next-tick": { + "version": "1.0.0", + "bundled": true + }, + "nice-try": { + "version": "1.0.4", + "bundled": true + }, + "node-dir": { + "version": "0.1.8", + "bundled": true + }, + "node-libs-browser": { + "version": "2.1.0", + "bundled": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^1.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.10.3", + "vm-browserify": "0.0.4" + } + }, + "nomnom": { + "version": "1.8.1", + "bundled": true, + "requires": { + "chalk": "~0.4.0", + "underscore": "~1.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "bundled": true + }, + "chalk": { + "version": "0.4.0", + "bundled": true, + "requires": { + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" + } + }, + "strip-ansi": { + "version": "0.1.1", + "bundled": true + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "bundled": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-url": { + "version": "2.0.1", + "bundled": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, + "npm-run-all": { + "version": "4.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^3.2.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.4", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "ps-tree": "^1.1.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "requires": { + "color-convert": "^1.9.0" + } + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "object-copy": { + "version": "0.1.0", + "bundled": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.0.12", + "bundled": true + }, + "object-visit": { + "version": "1.0.1", + "bundled": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "bundled": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.omit": { + "version": "2.0.1", + "bundled": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "bundled": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "bundled": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "bundled": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "ora": { + "version": "0.2.3", + "bundled": true, + "requires": { + "chalk": "^1.1.1", + "cli-cursor": "^1.0.2", + "cli-spinners": "^0.1.2", + "object-assign": "^4.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "bundled": true + }, + "restore-cursor": { + "version": "1.0.1", + "bundled": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "os-browserify": { + "version": "0.3.0", + "bundled": true + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "p-cancelable": { + "version": "0.4.1", + "bundled": true + }, + "p-each-series": { + "version": "1.0.0", + "bundled": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true + }, + "p-is-promise": { + "version": "1.1.0", + "bundled": true + }, + "p-lazy": { + "version": "1.0.0", + "bundled": true + }, + "p-limit": { + "version": "1.3.0", + "bundled": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "bundled": true + }, + "p-reduce": { + "version": "1.0.0", + "bundled": true + }, + "p-timeout": { + "version": "2.0.1", + "bundled": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "p-try": { + "version": "1.0.0", + "bundled": true + }, + "pako": { + "version": "1.0.6", + "bundled": true + }, + "parallel-transform": { + "version": "1.1.0", + "bundled": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.1", + "bundled": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" + } + }, + "parse-glob": { + "version": "3.0.4", + "bundled": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "4.0.0", + "bundled": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "bundled": true + }, + "parseurl": { + "version": "1.3.2", + "bundled": true + }, + "pascalcase": { + "version": "0.1.1", + "bundled": true + }, + "path-browserify": { + "version": "0.0.0", + "bundled": true + }, + "path-dirname": { + "version": "1.0.2", + "bundled": true + }, + "path-exists": { + "version": "3.0.0", + "bundled": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true + }, + "path-to-regexp": { + "version": "0.1.7", + "bundled": true + }, + "path-type": { + "version": "3.0.0", + "bundled": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pause-stream": { + "version": "0.0.11", + "bundled": true, + "requires": { + "through": "~2.3" + } + }, + "pbkdf2": { + "version": "3.0.16", + "bundled": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pify": { + "version": "3.0.0", + "bundled": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "bundled": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "bundled": true + }, + "prepend-http": { + "version": "2.0.0", + "bundled": true + }, + "preserve": { + "version": "0.2.0", + "bundled": true + }, + "prettier": { + "version": "1.13.7", + "bundled": true + }, + "pretty-bytes": { + "version": "4.0.2", + "bundled": true + }, + "private": { + "version": "0.1.8", + "bundled": true + }, + "process": { + "version": "0.11.10", + "bundled": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true + }, + "promise-inflight": { + "version": "1.0.1", + "bundled": true + }, + "proxy-addr": { + "version": "2.0.3", + "bundled": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.6.0" + } + }, + "prr": { + "version": "1.0.1", + "bundled": true + }, + "ps-tree": { + "version": "1.1.0", + "bundled": true, + "requires": { + "event-stream": "~3.3.0" + } + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true + }, + "psl": { + "version": "1.1.28", + "bundled": true + }, + "public-encrypt": { + "version": "4.0.2", + "bundled": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "pump": { + "version": "2.0.1", + "bundled": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "bundled": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "1.4.1", + "bundled": true + }, + "qs": { + "version": "6.5.1", + "bundled": true + }, + "query-string": { + "version": "5.1.1", + "bundled": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "bundled": true + }, + "querystring-es3": { + "version": "0.2.1", + "bundled": true + }, + "quick-lru": { + "version": "1.1.0", + "bundled": true + }, + "randomatic": { + "version": "3.0.0", + "bundled": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "bundled": true + } + } + }, + "randombytes": { + "version": "2.0.6", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "bundled": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.0", + "bundled": true + }, + "raw-body": { + "version": "2.3.2", + "bundled": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "bundled": true + }, + "http-errors": { + "version": "1.6.2", + "bundled": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + } + }, + "setprototypeof": { + "version": "1.0.3", + "bundled": true + } + } + }, + "read-chunk": { + "version": "2.1.0", + "bundled": true, + "requires": { + "pify": "^3.0.0", + "safe-buffer": "^5.1.1" + } + }, + "read-pkg": { + "version": "3.0.0", + "bundled": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "bundled": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.1.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" + } + }, + "recast": { + "version": "0.15.2", + "bundled": true, + "requires": { + "ast-types": "0.11.5", + "esprima": "~4.0.0", + "private": "~0.1.5", + "source-map": "~0.6.1" + } + }, + "rechoir": { + "version": "0.6.2", + "bundled": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "2.0.0", + "bundled": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "regenerate": { + "version": "1.4.0", + "bundled": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "bundled": true + }, + "regenerator-transform": { + "version": "0.10.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + }, + "regex-cache": { + "version": "0.4.4", + "bundled": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "bundled": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpu-core": { + "version": "2.0.0", + "bundled": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "bundled": true + }, + "regjsparser": { + "version": "0.1.5", + "bundled": true, + "requires": { + "jsesc": "~0.5.0" + } + }, + "remove-array-items": { + "version": "1.0.0", + "bundled": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "bundled": true + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true + }, + "repeating": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "0.0.1", + "bundled": true + }, + "require-directory": { + "version": "2.1.1", + "bundled": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true + }, + "resolve": { + "version": "1.8.1", + "bundled": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "bundled": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "bundled": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "bundled": true + }, + "resolve-url": { + "version": "0.2.1", + "bundled": true + }, + "responselike": { + "version": "1.0.2", + "bundled": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "bundled": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "bundled": true + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "requires": { + "glob": "^7.0.5" + } + }, + "ripemd160": { + "version": "2.0.2", + "bundled": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.3.0", + "bundled": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "bundled": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "5.5.11", + "bundled": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true + }, + "safe-regex": { + "version": "1.1.0", + "bundled": true, + "requires": { + "ret": "~0.1.10" + } + }, + "sax": { + "version": "1.2.4", + "bundled": true + }, + "schema-utils": { + "version": "0.4.5", + "bundled": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + }, + "scoped-regex": { + "version": "1.0.0", + "bundled": true + }, + "semver": { + "version": "5.5.0", + "bundled": true + }, + "send": { + "version": "0.16.2", + "bundled": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "serialize-javascript": { + "version": "1.5.0", + "bundled": true + }, + "serve-static": { + "version": "1.13.2", + "bundled": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "bundled": true + }, + "set-value": { + "version": "2.0.0", + "bundled": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "bundled": true + }, + "setprototypeof": { + "version": "1.1.0", + "bundled": true + }, + "sha.js": { + "version": "2.4.11", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true + }, + "shell-quote": { + "version": "1.6.1", + "bundled": true, + "requires": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "shelljs": { + "version": "0.7.8", + "bundled": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "should": { + "version": "5.2.0", + "bundled": true, + "requires": { + "should-equal": "0.3.1", + "should-format": "0.0.7", + "should-type": "0.0.4" + } + }, + "should-equal": { + "version": "0.3.1", + "bundled": true, + "requires": { + "should-type": "0.0.4" + } + }, + "should-format": { + "version": "0.0.7", + "bundled": true, + "requires": { + "should-type": "0.0.4" + } + }, + "should-type": { + "version": "0.0.4", + "bundled": true + }, + "shx": { + "version": "0.2.2", + "bundled": true, + "requires": { + "es6-object-assign": "^1.0.3", + "minimist": "^1.2.0", + "shelljs": "^0.7.3" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "slash": { + "version": "1.0.0", + "bundled": true + }, + "slice-ansi": { + "version": "0.0.4", + "bundled": true + }, + "slide": { + "version": "1.1.6", + "bundled": true + }, + "snapdragon": { + "version": "0.8.2", + "bundled": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "bundled": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "bundled": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sort-keys": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.0", + "bundled": true + }, + "source-map": { + "version": "0.6.1", + "bundled": true + }, + "source-map-resolve": { + "version": "0.5.2", + "bundled": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "bundled": true, + "requires": { + "source-map": "^0.5.6" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "bundled": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "bundled": true + }, + "spdx-correct": { + "version": "3.0.0", + "bundled": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "bundled": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "bundled": true + }, + "split": { + "version": "0.3.3", + "bundled": true, + "requires": { + "through": "2" + } + }, + "split-string": { + "version": "3.1.0", + "bundled": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "bundled": true + }, + "ssri": { + "version": "5.3.0", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "static-extend": { + "version": "0.1.2", + "bundled": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.4.0", + "bundled": true + }, + "stream-browserify": { + "version": "2.0.1", + "bundled": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-combiner": { + "version": "0.0.4", + "bundled": true, + "requires": { + "duplexer": "~0.1.1" + } + }, + "stream-each": { + "version": "1.2.2", + "bundled": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "bundled": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "bundled": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "bundled": true + }, + "string-template": { + "version": "0.2.1", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.padend": { + "version": "3.0.0", + "bundled": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.4.3", + "function-bind": "^1.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "bundled": true + }, + "strip-bom-stream": { + "version": "2.0.0", + "bundled": true, + "requires": { + "first-chunk-stream": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true + }, + "strip-indent": { + "version": "2.0.0", + "bundled": true + }, + "supports-color": { + "version": "5.4.0", + "bundled": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-observable": { + "version": "1.0.1", + "bundled": true + }, + "tapable": { + "version": "1.0.0", + "bundled": true + }, + "temp": { + "version": "0.8.3", + "bundled": true, + "requires": { + "os-tmpdir": "^1.0.0", + "rimraf": "~2.2.6" + }, + "dependencies": { + "rimraf": { + "version": "2.2.8", + "bundled": true + } + } + }, + "text-table": { + "version": "0.2.0", + "bundled": true + }, + "textextensions": { + "version": "2.2.0", + "bundled": true + }, + "through": { + "version": "2.3.8", + "bundled": true + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "timed-out": { + "version": "4.0.1", + "bundled": true + }, + "timers-browserify": { + "version": "2.0.10", + "bundled": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.33", + "bundled": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "bundled": true + }, + "to-fast-properties": { + "version": "1.0.3", + "bundled": true + }, + "to-object-path": { + "version": "0.3.0", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "bundled": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tough-cookie": { + "version": "2.4.3", + "bundled": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + }, + "trim-newlines": { + "version": "2.0.0", + "bundled": true + }, + "trim-right": { + "version": "1.0.1", + "bundled": true + }, + "ts-loader": { + "version": "4.4.2", + "bundled": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^3.1.4", + "semver": "^5.0.1" + } + }, + "ts-node": { + "version": "5.0.1", + "bundled": true, + "requires": { + "arrify": "^1.0.0", + "chalk": "^2.3.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.3", + "yn": "^2.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "source-map-support": { + "version": "0.5.6", + "bundled": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, + "tslib": { + "version": "1.9.3", + "bundled": true + }, + "tslint": { + "version": "5.10.0", + "bundled": true, + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.12.1" + } + }, + "tsutils": { + "version": "2.27.2", + "bundled": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "bundled": true + }, + "type-is": { + "version": "1.6.16", + "bundled": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "bundled": true + }, + "typescript": { + "version": "2.9.2", + "bundled": true + }, + "uglify-es": { + "version": "3.3.9", + "bundled": true, + "requires": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "bundled": true + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "1.2.7", + "bundled": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.5", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + } + }, + "ultron": { + "version": "1.1.1", + "bundled": true + }, + "underscore": { + "version": "1.6.0", + "bundled": true + }, + "union-value": { + "version": "1.0.0", + "bundled": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "bundled": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unique-filename": { + "version": "1.1.0", + "bundled": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "bundled": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unpipe": { + "version": "1.0.0", + "bundled": true + }, + "unset-value": { + "version": "1.0.0", + "bundled": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "bundled": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "bundled": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "bundled": true + } + } + }, + "untildify": { + "version": "3.0.3", + "bundled": true + }, + "upath": { + "version": "1.1.0", + "bundled": true + }, + "uri-js": { + "version": "4.2.2", + "bundled": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "bundled": true + } + } + }, + "urix": { + "version": "0.1.0", + "bundled": true + }, + "url": { + "version": "0.11.0", + "bundled": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "bundled": true + } + } + }, + "url-join": { + "version": "4.0.0", + "bundled": true + }, + "url-parse-lax": { + "version": "3.0.0", + "bundled": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, + "url-to-options": { + "version": "1.0.1", + "bundled": true + }, + "use": { + "version": "3.1.1", + "bundled": true + }, + "util": { + "version": "0.10.4", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "utils-merge": { + "version": "1.0.1", + "bundled": true + }, + "uuid": { + "version": "3.3.2", + "bundled": true + }, + "v8-compile-cache": { + "version": "2.0.0", + "bundled": true + }, + "validate-npm-package-license": { + "version": "3.0.3", + "bundled": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "bundled": true + }, + "vinyl": { + "version": "1.2.0", + "bundled": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-file": { + "version": "2.0.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.3.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^2.0.0", + "vinyl": "^1.1.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "bundled": true + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "vm-browserify": { + "version": "0.0.4", + "bundled": true, + "requires": { + "indexof": "0.0.1" + } + }, + "watchpack": { + "version": "1.6.0", + "bundled": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "webpack": { + "version": "4.16.1", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-module-context": "1.5.13", + "@webassemblyjs/wasm-edit": "1.5.13", + "@webassemblyjs/wasm-opt": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "acorn": "^5.6.2", + "acorn-dynamic-import": "^3.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.0.0", + "uglifyjs-webpack-plugin": "^1.2.4", + "watchpack": "^1.5.0", + "webpack-sources": "^1.0.1" + } + }, + "webpack-addons": { + "version": "1.1.5", + "bundled": true, + "requires": { + "jscodeshift": "^0.4.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "bundled": true + }, + "ast-types": { + "version": "0.10.1", + "bundled": true + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "jscodeshift": { + "version": "0.4.1", + "bundled": true, + "requires": { + "async": "^1.5.0", + "babel-plugin-transform-flow-strip-types": "^6.8.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-stage-1": "^6.5.0", + "babel-register": "^6.9.0", + "babylon": "^6.17.3", + "colors": "^1.1.2", + "flow-parser": "^0.*", + "lodash": "^4.13.1", + "micromatch": "^2.3.7", + "node-dir": "0.1.8", + "nomnom": "^1.8.1", + "recast": "^0.12.5", + "temp": "^0.8.1", + "write-file-atomic": "^1.2.0" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "recast": { + "version": "0.12.9", + "bundled": true, + "requires": { + "ast-types": "0.10.1", + "core-js": "^2.4.1", + "esprima": "~4.0.0", + "private": "~0.1.5", + "source-map": "~0.6.1" + } + } + } + }, + "webpack-cli": { + "version": "2.1.5", + "bundled": true, + "requires": { + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "diff": "^3.5.0", + "enhanced-resolve": "^4.0.0", + "envinfo": "^5.7.0", + "glob-all": "^3.1.0", + "global-modules": "^1.0.0", + "got": "^8.3.1", + "import-local": "^1.0.0", + "inquirer": "^5.2.0", + "interpret": "^1.1.0", + "jscodeshift": "^0.5.0", + "listr": "^0.14.1", + "loader-utils": "^1.1.0", + "lodash": "^4.17.10", + "log-symbols": "^2.2.0", + "mkdirp": "^0.5.1", + "p-each-series": "^1.0.0", + "p-lazy": "^1.0.0", + "prettier": "^1.12.1", + "supports-color": "^5.4.0", + "v8-compile-cache": "^2.0.0", + "webpack-addons": "^1.1.5", + "yargs": "^11.1.0", + "yeoman-environment": "^2.1.1", + "yeoman-generator": "^2.0.5" + } + }, + "webpack-dev-middleware": { + "version": "3.1.3", + "bundled": true, + "requires": { + "loud-rejection": "^1.6.0", + "memory-fs": "~0.4.1", + "mime": "^2.1.0", + "path-is-absolute": "^1.0.0", + "range-parser": "^1.0.3", + "url-join": "^4.0.0", + "webpack-log": "^1.0.1" + }, + "dependencies": { + "mime": { + "version": "2.3.1", + "bundled": true + } + } + }, + "webpack-log": { + "version": "1.2.0", + "bundled": true, + "requires": { + "chalk": "^2.1.0", + "log-symbols": "^2.1.0", + "loglevelnext": "^1.0.1", + "uuid": "^3.1.0" + } + }, + "webpack-sources": { + "version": "1.1.0", + "bundled": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "which": { + "version": "1.3.1", + "bundled": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true + }, + "worker-farm": { + "version": "1.6.0", + "bundled": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" + } + }, + "ws": { + "version": "3.3.3", + "bundled": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "xml2js": { + "version": "0.4.19", + "bundled": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "bundled": true + }, + "xtend": { + "version": "4.0.1", + "bundled": true + }, + "y18n": { + "version": "4.0.0", + "bundled": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true + }, + "yargs": { + "version": "11.1.0", + "bundled": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + }, + "dependencies": { + "y18n": { + "version": "3.2.1", + "bundled": true + } + } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "requires": { + "camelcase": "^4.1.0" + } + }, + "yarn": { + "version": "1.7.0", + "bundled": true + }, + "yeoman-environment": { + "version": "2.3.0", + "bundled": true, + "requires": { + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^3.1.0", + "diff": "^3.3.1", + "escape-string-regexp": "^1.0.2", + "globby": "^8.0.1", + "grouped-queue": "^0.3.3", + "inquirer": "^5.2.0", + "is-scoped": "^1.0.0", + "lodash": "^4.17.10", + "log-symbols": "^2.1.0", + "mem-fs": "^1.1.0", + "strip-ansi": "^4.0.0", + "text-table": "^0.2.0", + "untildify": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "yeoman-generator": { + "version": "2.0.5", + "bundled": true, + "requires": { + "async": "^2.6.0", + "chalk": "^2.3.0", + "cli-table": "^0.3.1", + "cross-spawn": "^6.0.5", + "dargs": "^5.1.0", + "dateformat": "^3.0.3", + "debug": "^3.1.0", + "detect-conflict": "^1.0.0", + "error": "^7.0.2", + "find-up": "^2.1.0", + "github-username": "^4.0.0", + "istextorbinary": "^2.2.1", + "lodash": "^4.17.10", + "make-dir": "^1.1.0", + "mem-fs-editor": "^4.0.0", + "minimist": "^1.2.0", + "pretty-bytes": "^4.0.2", + "read-chunk": "^2.1.0", + "read-pkg-up": "^3.0.0", + "rimraf": "^2.6.2", + "run-async": "^2.0.0", + "shelljs": "^0.8.0", + "text-table": "^0.2.0", + "through2": "^2.0.0", + "yeoman-environment": "^2.0.5" + }, + "dependencies": { + "async": { + "version": "2.6.1", + "bundled": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "shelljs": { + "version": "0.8.2", + "bundled": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + } } + }, + "yn": { + "version": "2.0.0", + "bundled": true } } }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", - "dev": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "ms-rest-js": { - "version": "0.16.371", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.16.371.tgz", - "integrity": "sha1-iQHQQc8HynVA0YzfmmwCe2Z7ImQ=", - "requires": { - "@types/express": "^4.11.1", - "@types/form-data": "^2.2.1", - "@types/node": "^9.4.6", - "@types/uuid": "^3.4.3", - "axios": "^0.18.0", - "form-data": "^2.3.2", - "isomorphic-tough-cookie": "^0.0.1", - "isomorphic-xml2js": "^0.1.3", - "tslib": "^1.9.2", - "uuid": "^3.2.1" - } - }, "nan": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", @@ -3035,6 +9594,14 @@ "url": "^0.11.0", "util": "^0.10.3", "vm-browserify": "0.0.4" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } } }, "normalize-package-data": { @@ -5398,11 +11965,6 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, - "psl": { - "version": "1.1.28", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.28.tgz", - "integrity": "sha512-+AqO1Ae+N/4r7Rvchrdm432afjT9hqJRyBN3DQv9At0tPz4hIFSGKbq64fN9dVoCow4oggIIax5/iONx0r9hZw==" - }, "public-encrypt": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", @@ -5417,9 +11979,10 @@ } }, "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "querystring": { "version": "0.2.0", @@ -5653,11 +12216,6 @@ "ret": "~0.1.10" } }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", @@ -6229,15 +12787,6 @@ "repeat-string": "^1.6.1" } }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -6481,14 +13030,6 @@ "dev": true, "requires": { "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - } } }, "urix": { @@ -6536,11 +13077,6 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - }, "validate-npm-package-license": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", @@ -6692,20 +13228,6 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" - } - }, - "xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" - }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", diff --git a/package.json b/package.json index b693a633ea07..588863ca87cc 100644 --- a/package.json +++ b/package.json @@ -25,12 +25,12 @@ "autorest", "clientruntime" ], - "main": "./dist/lib/msRestAzure.js", + "main": "./lib/msRestAzure.ts", "browser": "./es/lib/msRestAzure.js", "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.16.371", + "ms-rest-js": "file:../ms-rest-js", "tslib": "^1.9.2" }, "devDependencies": { diff --git a/test/azureServiceClientTests.ts b/test/azureServiceClientTests.ts index 8f38e8696aa5..4b7c97246f1c 100644 --- a/test/azureServiceClientTests.ts +++ b/test/azureServiceClientTests.ts @@ -2,8 +2,7 @@ // Licensed under the MIT License. See License.txt in the project root for license information. import * as assert from "assert"; -import * as msRest from "ms-rest-js"; -import { HttpHeaders, HttpOperationResponse, TokenCredentials, WebResource } from "ms-rest-js"; +import { HttpHeaders, HttpOperationResponse, RequestOptionsBase, RestError, TokenCredentials, WebResource } from "ms-rest-js"; import { AzureServiceClient, AzureServiceClientOptions, updateOptionsWithDefaultValues } from "../lib/azureServiceClient"; import * as msAssert from "./msAssert"; @@ -12,14 +11,14 @@ describe("AzureServiceClient", () => { it("with no options provided", () => { const client = new AzureServiceClient(new TokenCredentials("my-fake-token")); assert.strictEqual(client.acceptLanguage, "en-us"); - assert.strictEqual(client.longRunningOperationRetryTimeout, 30); + assert.strictEqual(client.longRunningOperationRetryTimeout, undefined); assert.deepStrictEqual(client.userAgentInfo, { value: ["ms-rest-js/0.1.0", "ms-rest-azure/0.1.0"] }); }); it("with acceptLanguage provided", () => { const client = new AzureServiceClient(new TokenCredentials("my-fake-token"), { acceptLanguage: "my-fake-language" }); assert.strictEqual(client.acceptLanguage, "my-fake-language"); - assert.strictEqual(client.longRunningOperationRetryTimeout, 30); + assert.strictEqual(client.longRunningOperationRetryTimeout, undefined); assert.deepStrictEqual(client.userAgentInfo, { value: ["ms-rest-js/0.1.0", "ms-rest-azure/0.1.0"] }); }); @@ -49,7 +48,7 @@ describe("AzureServiceClient", () => { } ]); const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "GET"); - const error: msRest.RestError = await msAssert.throwsAsync(serviceClient.sendLongRunningRequest(httpRequest)); + const error: RestError = await msAssert.throwsAsync(serviceClient.sendLongRunningRequest(httpRequest)); assert.strictEqual(error.message, `Error "SyntaxError: Unexpected token < in JSON at position 0" occurred while parsing the response body - hello.`); assert.strictEqual(error.request!.headers.get("authorization"), "Bearer my-fake-token"); }); @@ -166,7 +165,7 @@ describe("AzureServiceClient", () => { { status: 200, body: {} } ]); const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); - const options: msRest.RequestOptionsBase = { + const options: RequestOptionsBase = { customHeaders: { a: "1" } @@ -184,7 +183,7 @@ describe("AzureServiceClient", () => { { status: 200, body: { properties: { provisioningState: "Failed" } } } ]); const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); - const error: msRest.RestError = await msAssert.throwsAsync(serviceClient.sendLongRunningRequest(httpRequest)); + const error: RestError = await msAssert.throwsAsync(serviceClient.sendLongRunningRequest(httpRequest)); assert.strictEqual(error.message, `Long running operation failed with status: "Failed".`); assert.strictEqual(error.code, undefined); }); @@ -210,7 +209,7 @@ describe("AzureServiceClient", () => { const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "GET"); await msAssert.throwsAsync( serviceClient.sendLongRunningRequest(httpRequest), - new Error(`Location header is missing from long running operation.`)); + new Error(`Can't determine long running operation polling strategy from initial response.`)); }); it("with 202 status and PATCH method", async () => { @@ -218,7 +217,7 @@ describe("AzureServiceClient", () => { const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); await msAssert.throwsAsync( serviceClient.sendLongRunningRequest(httpRequest), - new Error(`Location header is missing from long running operation.`)); + new Error(`Can't determine long running operation polling strategy from initial response.`)); }); it("with 202 status, PUT method, and undefined final response body", async () => { @@ -237,7 +236,7 @@ describe("AzureServiceClient", () => { const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); await msAssert.throwsAsync( serviceClient.sendLongRunningRequest(httpRequest), - new Error(`Location header is missing from long running operation.`)); + new Error(`Can't determine long running operation polling strategy from initial response.`)); }); it("with 202 status, POST method, azure-asyncoperation header, and undefined final response body", async () => { @@ -478,7 +477,7 @@ describe("AzureServiceClient", () => { } ]); const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); - const error: msRest.RestError = await msAssert.throwsAsync(serviceClient.sendLongRunningRequest(httpRequest)); + const error: RestError = await msAssert.throwsAsync(serviceClient.sendLongRunningRequest(httpRequest)); assert.strictEqual(error.message, `Invalid status code with response body "undefined" occurred when polling for operation status.`); assert.strictEqual(error.statusCode, 404); assert.strictEqual(error.request!.headers.contains("authorization"), false); @@ -490,7 +489,7 @@ describe("AzureServiceClient", () => { const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); await msAssert.throwsAsync( serviceClient.sendLongRunningRequest(httpRequest), - new Error(`Location header is missing from long running operation.`)); + new Error(`Can't determine long running operation polling strategy from initial response.`)); }); it("with 204 status and GET method", async () => { diff --git a/test/credentials/cognitiveServicesCredentialsTests.ts b/test/credentials/cognitiveServicesCredentialsTests.ts new file mode 100644 index 000000000000..9bada6df081a --- /dev/null +++ b/test/credentials/cognitiveServicesCredentialsTests.ts @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +import * as assert from "assert"; +import { WebResource } from "ms-rest-js"; +import { CognitiveServicesCredentials } from "../../lib/credentials/cognitiveServicesCredentials"; +import * as msAssert from "../msAssert"; + +describe("CognitiveServicesCredentials", () => { + describe("constructor()", () => { + it("with undefined subscription key", () => { + msAssert.throws(() => new CognitiveServicesCredentials(undefined as any), + new Error("subscriptionKey cannot be null or undefined and must be of type string.")); + }); + + it("with null subscription key", () => { + // tslint:disable-next-line:no-null-keyword + msAssert.throws(() => new CognitiveServicesCredentials(null as any), + new Error("subscriptionKey cannot be null or undefined and must be of type string.")); + }); + + it("with number subscription key", () => { + msAssert.throws(() => new CognitiveServicesCredentials(50 as any), + new Error("subscriptionKey cannot be null or undefined and must be of type string.")); + }); + + it("with empty subscription key", () => { + msAssert.throws(() => new CognitiveServicesCredentials(""), + new Error("subscriptionKey cannot be null or undefined and must be of type string.")); + }); + + it("with non-empty subscription key", async () => { + const credentials = new CognitiveServicesCredentials("fake-subscription-key"); + const httpRequest = new WebResource(); + const signedHttpRequest: WebResource = await credentials.signRequest(httpRequest); + assert.strictEqual(signedHttpRequest, httpRequest); + assert.deepEqual(signedHttpRequest.headers.rawHeaders(), { + "Ocp-Apim-Subscription-Key": "fake-subscription-key", + "X-BingApis-SDK-Client": "node-SDK" + }); + }); + }); +}); \ No newline at end of file diff --git a/test/lroPollStrategyTests.ts b/test/lroPollStrategyTests.ts new file mode 100644 index 000000000000..59ba2f01988d --- /dev/null +++ b/test/lroPollStrategyTests.ts @@ -0,0 +1,61 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +import * as assert from "assert"; +import { HttpHeaders, HttpOperationResponse, TokenCredentials, WebResource } from "ms-rest-js"; +import { AzureServiceClient } from "../lib/azureServiceClient"; +import { getDelayInSeconds } from "../lib/lroPollStrategy"; + +describe("LROPollStrategy", () => { + describe("getDelayInMilliseconds()", () => { + it("with no AzureServiceClient.longRunningOperationRetryTimeout value and no retry-after header", () => { + const azureServiceClient = new AzureServiceClient(new TokenCredentials("my-fake-token")); + const previousResponse: HttpOperationResponse = { + request: new WebResource(), + status: 200, + headers: new HttpHeaders() + }; + assert.strictEqual(getDelayInSeconds(azureServiceClient, previousResponse), 30); + }); + + it("with 11 AzureServiceClient.longRunningOperationRetryTimeout and no retry-after header", () => { + const azureServiceClient = new AzureServiceClient(new TokenCredentials("my-fake-token"), { longRunningOperationRetryTimeout: 11 }); + const previousResponse: HttpOperationResponse = { + request: new WebResource(), + status: 200, + headers: new HttpHeaders() + }; + assert.strictEqual(getDelayInSeconds(azureServiceClient, previousResponse), 11); + }); + + it("with no AzureServiceClient.longRunningOperationRetryTimeout value and 12 retry-after header", () => { + const azureServiceClient = new AzureServiceClient(new TokenCredentials("my-fake-token")); + const previousResponse: HttpOperationResponse = { + request: new WebResource(), + status: 200, + headers: new HttpHeaders({ "retry-after": "12" }) + }; + assert.strictEqual(getDelayInSeconds(azureServiceClient, previousResponse), 12); + }); + + it("with no AzureServiceClient.longRunningOperationRetryTimeout value and spam retry-after header", () => { + const azureServiceClient = new AzureServiceClient(new TokenCredentials("my-fake-token")); + const previousResponse: HttpOperationResponse = { + request: new WebResource(), + status: 200, + headers: new HttpHeaders({ "retry-after": "spam" }) + }; + assert.strictEqual(getDelayInSeconds(azureServiceClient, previousResponse), 30); + }); + + it("with 11 AzureServiceClient.longRunningOperationRetryTimeout and 12 retry-after header", () => { + const azureServiceClient = new AzureServiceClient(new TokenCredentials("my-fake-token"), { longRunningOperationRetryTimeout: 11 }); + const previousResponse: HttpOperationResponse = { + request: new WebResource(), + status: 200, + headers: new HttpHeaders({ "retry-after": "12" }) + }; + assert.strictEqual(getDelayInSeconds(azureServiceClient, previousResponse), 11); + }); + }); +}); \ No newline at end of file diff --git a/test/msAssert.ts b/test/msAssert.ts index 80404659d715..660b805ffbcc 100644 --- a/test/msAssert.ts +++ b/test/msAssert.ts @@ -4,10 +4,37 @@ import * as assert from "assert"; /** - * Assert that the provided asyncAction throws an Error. If the expectedError is undefined, then + * Assert that the provided syncFunction throws an Error. If the expectedError is undefined, then * this function will just assert that an Error was thrown. If the expectedError is defined, then * this function will assert that the Error that was thrown is equal to the provided expectedError. - * @param asyncFunction The async function that is expected to thrown an Error. + * @param syncFunction The synchronous function that is expected to thrown an Error. + * @param expectedError The Error that is expected to be thrown. + */ +export function throws(syncFunction: () => void, expectedError?: ((error: Error) => void) | Error): Error { + let thrownError: Error | undefined; + + try { + syncFunction(); + } catch (error) { + thrownError = error; + } + + if (!thrownError) { + assert.throws(() => { }); + } else if (expectedError instanceof Error) { + assert.deepStrictEqual(thrownError, expectedError); + } else if (expectedError) { + expectedError(thrownError); + } + + return thrownError!; +} + +/** + * Assert that the provided asyncFunction throws an Error. If the expectedError is undefined, then + * this function will just assert that an Error was thrown. If the expectedError is defined, then + * this function will assert that the Error that was thrown is equal to the provided expectedError. + * @param asyncFunction The asynchronous function that is expected to thrown an Error. * @param expectedError The Error that is expected to be thrown. */ export async function throwsAsync(asyncFunction: (() => Promise) | Promise, expectedError?: ((error: Error) => void) | Error): Promise { From 943891d4ff77dc197209e8d3711db20afb1946f8 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Tue, 24 Jul 2018 13:34:38 -0700 Subject: [PATCH 068/289] Reset back to preview mode from local mode --- package-lock.json | 7394 +++------------------------------------------ package.json | 4 +- 2 files changed, 438 insertions(+), 6960 deletions(-) diff --git a/package-lock.json b/package-lock.json index 19eaa95a15af..082f6723f9b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -113,18 +113,114 @@ "to-fast-properties": "^2.0.0" } }, + "@types/body-parser": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz", + "integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.32", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", + "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==", + "requires": { + "@types/node": "*" + } + }, + "@types/events": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", + "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==" + }, + "@types/express": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.0.tgz", + "integrity": "sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.0.tgz", + "integrity": "sha512-lTeoCu5NxJU4OD9moCgm0ESZzweAx0YqsAcab6OB0EB3+As1OaHtKnaGJvcngQxYsi9UNv0abn4/DRavrRxt4w==", + "requires": { + "@types/events": "*", + "@types/node": "*", + "@types/range-parser": "*" + } + }, + "@types/form-data": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", + "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/mime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz", + "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==" + }, "@types/mocha": { "version": "5.2.5", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.5.tgz", "integrity": "sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww==", "dev": true }, + "@types/node": { + "version": "9.6.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.23.tgz", + "integrity": "sha512-d2SJJpwkiPudEQ3+9ysANN2Nvz4QJKUPoe/WL5zyQzI0RaEeZWH5K5xjvUIGszTItHQpFPdH+u51f6G/LkS8Cg==" + }, + "@types/range-parser": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.2.tgz", + "integrity": "sha512-HtKGu+qG1NPvYe1z7ezLsyIaXYyi8SoAVqWDZgDQ8dLrsZvSzUNCwZyfX33uhWxL/SU0ZDQZ3nwZ0nimt507Kw==" + }, + "@types/serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==", + "requires": { + "@types/express-serve-static-core": "*", + "@types/mime": "*" + } + }, "@types/should": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/@types/should/-/should-8.3.0.tgz", "integrity": "sha1-4rRgJDaF2+N3GC857zjTf00Veto=", "dev": true }, + "@types/tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha512-MDQLxNFRLasqS4UlkWMSACMKeSm1x4Q3TxzUC7KQUsh6RK1ZrQ0VEyE3yzXcBu+K8ejVj4wuX32eUG02yNp+YQ==" + }, + "@types/uuid": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.3.tgz", + "integrity": "sha512-5fRLCYhLtDb3hMWqQyH10qtF+Ud2JnNCXTCZ+9ktNdCcgslcuXkDTkFcJNk++MT29yDntDnlF1+jD+uVGumsbw==", + "requires": { + "@types/node": "*" + } + }, + "@types/xml2js": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.3.tgz", + "integrity": "sha512-Pv2HGRE4gWLs31In7nsyXEH4uVVsd0HNV9i2dyASvtDIlOtSTr1eczPLDpdEuyv5LWH5LT20GIXwPjkshKWI1g==", + "requires": { + "@types/events": "*", + "@types/node": "*" + } + }, "acorn": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", @@ -317,12 +413,26 @@ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, "atob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", "dev": true }, + "axios": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", + "requires": { + "follow-redirects": "^1.3.0", + "is-buffer": "^1.1.5" + } + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -749,6 +859,14 @@ "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", "dev": true }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "~1.0.0" + } + }, "commander": { "version": "2.15.1", "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", @@ -882,7 +1000,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -956,6 +1073,11 @@ } } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", @@ -1441,6 +1563,14 @@ "locate-path": "^2.0.0" } }, + "follow-redirects": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.1.tgz", + "integrity": "sha512-v9GI1hpaqq1ZZR6pBD1+kI7O24PhDvNGNodjS3MdcEqyrahCp8zbtpv+2B/krUnSmUH80lbAS7MrdeK5IylgKg==", + "requires": { + "debug": "^3.1.0" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -1453,6 +1583,16 @@ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", "dev": true }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -2261,8 +2401,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-builtin-module": { "version": "1.0.0", @@ -2406,6 +2545,24 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "isomorphic-tough-cookie": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-tough-cookie/-/isomorphic-tough-cookie-0.0.1.tgz", + "integrity": "sha512-9vV3Nl9PpBdd/LHIjBdiMYwWoAU3j+v+WvYJNkVnMrAgFBthgkIwQvwRl+M1J8R1AE51N/Dyv3nT38zzi7FSaw==", + "requires": { + "@types/tough-cookie": "^2.3.3", + "tough-cookie": "^2.3.4" + } + }, + "isomorphic-xml2js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/isomorphic-xml2js/-/isomorphic-xml2js-0.1.3.tgz", + "integrity": "sha512-dIkT2U9ritKVWF/HfHfGwm5tTnlMnknYsv7l12oJlQQgOV2CNV65pX+FHy6HFL9YP8q0JcrlNQAFRJIN2agUmQ==", + "requires": { + "@types/xml2js": "^0.4.2", + "xml2js": "^0.4.19" + } + }, "istanbul-lib-coverage": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", @@ -2568,6951 +2725,235 @@ "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } - }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-error": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz", - "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==", - "dev": true - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", - "dev": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "ms-rest-js": { - "version": "file:../ms-rest-js", - "requires": { - "@types/express": "^4.11.1", - "@types/form-data": "^2.2.1", - "@types/node": "^9.4.6", - "@types/uuid": "^3.4.3", - "axios": "^0.18.0", - "form-data": "^2.3.2", - "isomorphic-tough-cookie": "^0.0.1", - "isomorphic-xml2js": "^0.1.3", - "tslib": "^1.9.2", - "uuid": "^3.2.1" - }, - "dependencies": { - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "bundled": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.0", - "bundled": true - }, - "@samverschueren/stream-to-observable": { - "version": "0.3.0", - "bundled": true, - "requires": { - "any-observable": "^0.3.0" - } - }, - "@sindresorhus/is": { - "version": "0.7.0", - "bundled": true - }, - "@types/body-parser": { - "version": "1.17.0", - "bundled": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.32", - "bundled": true, - "requires": { - "@types/node": "*" - } - }, - "@types/core-js": { - "version": "0.9.46", - "bundled": true - }, - "@types/events": { - "version": "1.2.0", - "bundled": true - }, - "@types/express": { - "version": "4.16.0", - "bundled": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.16.0", - "bundled": true, - "requires": { - "@types/events": "*", - "@types/node": "*", - "@types/range-parser": "*" - } - }, - "@types/form-data": { - "version": "2.2.1", - "bundled": true, - "requires": { - "@types/node": "*" - } - }, - "@types/glob": { - "version": "5.0.35", - "bundled": true, - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/loglevel": { - "version": "1.5.3", - "bundled": true - }, - "@types/memory-fs": { - "version": "0.3.1", - "bundled": true, - "requires": { - "@types/node": "*" - } - }, - "@types/mime": { - "version": "2.0.0", - "bundled": true - }, - "@types/minimatch": { - "version": "3.0.3", - "bundled": true - }, - "@types/mkdirp": { - "version": "0.3.29", - "bundled": true - }, - "@types/mocha": { - "version": "5.2.4", - "bundled": true - }, - "@types/node": { - "version": "9.6.23", - "bundled": true - }, - "@types/range-parser": { - "version": "1.2.2", - "bundled": true - }, - "@types/rimraf": { - "version": "0.0.28", - "bundled": true - }, - "@types/serve-static": { - "version": "1.13.2", - "bundled": true, - "requires": { - "@types/express-serve-static-core": "*", - "@types/mime": "*" - } - }, - "@types/should": { - "version": "8.3.0", - "bundled": true - }, - "@types/tapable": { - "version": "1.0.4", - "bundled": true - }, - "@types/tough-cookie": { - "version": "2.3.3", - "bundled": true - }, - "@types/uglify-js": { - "version": "3.0.3", - "bundled": true, - "requires": { - "source-map": "^0.6.1" - } - }, - "@types/uuid": { - "version": "3.4.3", - "bundled": true, - "requires": { - "@types/node": "*" - } - }, - "@types/webpack": { - "version": "4.4.6", - "bundled": true, - "requires": { - "@types/node": "*", - "@types/tapable": "*", - "@types/uglify-js": "*", - "source-map": "^0.6.0" - } - }, - "@types/webpack-dev-middleware": { - "version": "2.0.2", - "bundled": true, - "requires": { - "@types/connect": "*", - "@types/loglevel": "*", - "@types/memory-fs": "*", - "@types/webpack": "*" - } - }, - "@types/xml2js": { - "version": "0.4.3", - "bundled": true, - "requires": { - "@types/events": "*", - "@types/node": "*" - } - }, - "@webassemblyjs/ast": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/wast-parser": "1.5.13", - "debug": "^3.1.0", - "mamacro": "^0.0.3" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.5.13", - "bundled": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.5.13", - "bundled": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.5.13", - "bundled": true, - "requires": { - "debug": "^3.1.0" - } - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/wast-printer": "1.5.13" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.5.13", - "bundled": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.5.13", - "bundled": true, - "requires": { - "debug": "^3.1.0", - "mamacro": "^0.0.3" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.5.13", - "bundled": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-buffer": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/wasm-gen": "1.5.13", - "debug": "^3.1.0" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.5.13", - "bundled": true, - "requires": { - "ieee754": "^1.1.11" - } - }, - "@webassemblyjs/leb128": { - "version": "1.5.13", - "bundled": true, - "requires": { - "long": "4.0.0" - }, - "dependencies": { - "long": { - "version": "4.0.0", - "bundled": true - } - } - }, - "@webassemblyjs/utf8": { - "version": "1.5.13", - "bundled": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-buffer": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/helper-wasm-section": "1.5.13", - "@webassemblyjs/wasm-gen": "1.5.13", - "@webassemblyjs/wasm-opt": "1.5.13", - "@webassemblyjs/wasm-parser": "1.5.13", - "@webassemblyjs/wast-printer": "1.5.13", - "debug": "^3.1.0" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/ieee754": "1.5.13", - "@webassemblyjs/leb128": "1.5.13", - "@webassemblyjs/utf8": "1.5.13" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-buffer": "1.5.13", - "@webassemblyjs/wasm-gen": "1.5.13", - "@webassemblyjs/wasm-parser": "1.5.13", - "debug": "^3.1.0" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-api-error": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/ieee754": "1.5.13", - "@webassemblyjs/leb128": "1.5.13", - "@webassemblyjs/utf8": "1.5.13" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/floating-point-hex-parser": "1.5.13", - "@webassemblyjs/helper-api-error": "1.5.13", - "@webassemblyjs/helper-code-frame": "1.5.13", - "@webassemblyjs/helper-fsm": "1.5.13", - "long": "^3.2.0", - "mamacro": "^0.0.3" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/wast-parser": "1.5.13", - "long": "^3.2.0" - } - }, - "abortcontroller-polyfill": { - "version": "1.1.9", - "bundled": true - }, - "accepts": { - "version": "1.3.5", - "bundled": true, - "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" - } - }, - "acorn": { - "version": "5.7.1", - "bundled": true - }, - "acorn-dynamic-import": { - "version": "3.0.0", - "bundled": true, - "requires": { - "acorn": "^5.0.0" - } - }, - "ajv": { - "version": "6.5.2", - "bundled": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.1" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "bundled": true - }, - "ansi-escapes": { - "version": "3.1.0", - "bundled": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true - }, - "any-observable": { - "version": "0.3.0", - "bundled": true - }, - "anymatch": { - "version": "2.0.0", - "bundled": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "aproba": { - "version": "1.2.0", - "bundled": true - }, - "argparse": { - "version": "1.0.10", - "bundled": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "bundled": true - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true - }, - "arr-union": { - "version": "3.1.0", - "bundled": true - }, - "array-differ": { - "version": "1.0.0", - "bundled": true - }, - "array-filter": { - "version": "0.0.1", - "bundled": true - }, - "array-find-index": { - "version": "1.0.2", - "bundled": true - }, - "array-flatten": { - "version": "1.1.1", - "bundled": true - }, - "array-map": { - "version": "0.0.0", - "bundled": true - }, - "array-reduce": { - "version": "0.0.0", - "bundled": true - }, - "array-union": { - "version": "1.0.2", - "bundled": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "bundled": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true - }, - "asn1.js": { - "version": "4.10.1", - "bundled": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "bundled": true, - "requires": { - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "bundled": true - }, - "util": { - "version": "0.10.3", - "bundled": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assign-symbols": { - "version": "1.0.0", - "bundled": true - }, - "ast-types": { - "version": "0.11.5", - "bundled": true - }, - "async": { - "version": "1.5.2", - "bundled": true - }, - "async-each": { - "version": "1.0.1", - "bundled": true - }, - "async-limiter": { - "version": "1.0.0", - "bundled": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true - }, - "atob": { - "version": "2.1.1", - "bundled": true - }, - "axios": { - "version": "0.18.0", - "bundled": true, - "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "bundled": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "babel-core": { - "version": "6.26.3", - "bundled": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "source-map": { - "version": "0.5.7", - "bundled": true - } - } - }, - "babel-generator": { - "version": "6.26.1", - "bundled": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "bundled": true - }, - "source-map": { - "version": "0.5.7", - "bundled": true - } - } - }, - "babel-helper-bindify-decorators": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-define-map": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-explode-class": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-bindify-decorators": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-regex": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-async-generators": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-class-constructor-call": { - "version": "6.18.0", - "bundled": true - }, - "babel-plugin-syntax-class-properties": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-decorators": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-dynamic-import": { - "version": "6.18.0", - "bundled": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-export-extensions": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-flow": { - "version": "6.18.0", - "bundled": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "bundled": true - }, - "babel-plugin-transform-async-generator-functions": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-generators": "^6.5.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-class-constructor-call": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-syntax-class-constructor-call": "^6.18.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-class-properties": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-plugin-syntax-class-properties": "^6.8.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-decorators": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-explode-class": "^6.24.1", - "babel-plugin-syntax-decorators": "^6.13.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-define-map": "^6.24.1", - "babel-helper-function-name": "^6.24.1", - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-helper-replace-supers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "bundled": true, - "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-replace-supers": "^6.24.1", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-export-extensions": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-plugin-syntax-export-extensions": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-flow-strip-types": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-plugin-syntax-flow": "^6.18.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.8.0", - "babel-runtime": "^6.26.0" - } - }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "bundled": true, - "requires": { - "regenerator-transform": "^0.10.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-polyfill": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "regenerator-runtime": "^0.10.5" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.10.5", - "bundled": true - } - } - }, - "babel-preset-env": { - "version": "1.7.0", - "bundled": true, - "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-to-generator": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.23.0", - "babel-plugin-transform-es2015-classes": "^6.23.0", - "babel-plugin-transform-es2015-computed-properties": "^6.22.0", - "babel-plugin-transform-es2015-destructuring": "^6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", - "babel-plugin-transform-es2015-for-of": "^6.23.0", - "babel-plugin-transform-es2015-function-name": "^6.22.0", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.22.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-umd": "^6.23.0", - "babel-plugin-transform-es2015-object-super": "^6.22.0", - "babel-plugin-transform-es2015-parameters": "^6.23.0", - "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", - "babel-plugin-transform-exponentiation-operator": "^6.22.0", - "babel-plugin-transform-regenerator": "^6.22.0", - "browserslist": "^3.2.6", - "invariant": "^2.2.2", - "semver": "^5.3.0" - } - }, - "babel-preset-es2015": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.24.1", - "babel-plugin-transform-es2015-classes": "^6.24.1", - "babel-plugin-transform-es2015-computed-properties": "^6.24.1", - "babel-plugin-transform-es2015-destructuring": "^6.22.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", - "babel-plugin-transform-es2015-for-of": "^6.22.0", - "babel-plugin-transform-es2015-function-name": "^6.24.1", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-umd": "^6.24.1", - "babel-plugin-transform-es2015-object-super": "^6.24.1", - "babel-plugin-transform-es2015-parameters": "^6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", - "babel-plugin-transform-regenerator": "^6.24.1" - } - }, - "babel-preset-stage-1": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-transform-class-constructor-call": "^6.24.1", - "babel-plugin-transform-export-extensions": "^6.22.0", - "babel-preset-stage-2": "^6.24.1" - } - }, - "babel-preset-stage-2": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-syntax-dynamic-import": "^6.18.0", - "babel-plugin-transform-class-properties": "^6.24.1", - "babel-plugin-transform-decorators": "^6.24.1", - "babel-preset-stage-3": "^6.24.1" - } - }, - "babel-preset-stage-3": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-generator-functions": "^6.24.1", - "babel-plugin-transform-async-to-generator": "^6.24.1", - "babel-plugin-transform-exponentiation-operator": "^6.24.1", - "babel-plugin-transform-object-rest-spread": "^6.22.0" - } - }, - "babel-register": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - } - }, - "babel-runtime": { - "version": "6.26.0", - "bundled": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "babel-types": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "bundled": true - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "base": { - "version": "0.11.2", - "bundled": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.3.0", - "bundled": true - }, - "big.js": { - "version": "3.2.0", - "bundled": true - }, - "binary-extensions": { - "version": "1.11.0", - "bundled": true - }, - "binaryextensions": { - "version": "2.1.1", - "bundled": true - }, - "bluebird": { - "version": "3.5.1", - "bundled": true - }, - "bn.js": { - "version": "4.11.8", - "bundled": true - }, - "body-parser": { - "version": "1.18.2", - "bundled": true, - "requires": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.1", - "http-errors": "~1.6.2", - "iconv-lite": "0.4.19", - "on-finished": "~2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "~1.6.15" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "bundled": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "bundled": true - }, - "browser-stdout": { - "version": "1.3.1", - "bundled": true - }, - "browserify-aes": { - "version": "1.2.0", - "bundled": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "bundled": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "bundled": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "bundled": true - } - } - }, - "browserify-rsa": { - "version": "4.0.1", - "bundled": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "bundled": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "bundled": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "3.2.8", - "bundled": true, - "requires": { - "caniuse-lite": "^1.0.30000844", - "electron-to-chromium": "^1.3.47" - } - }, - "buffer": { - "version": "4.9.1", - "bundled": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.0", - "bundled": true - }, - "buffer-xor": { - "version": "1.0.3", - "bundled": true - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "bundled": true - }, - "bytes": { - "version": "3.0.0", - "bundled": true - }, - "cacache": { - "version": "10.0.4", - "bundled": true, - "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" - } - }, - "cache-base": { - "version": "1.0.1", - "bundled": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cacheable-request": { - "version": "2.1.4", - "bundled": true, - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.0", - "bundled": true - } - } - }, - "call-me-maybe": { - "version": "1.0.1", - "bundled": true - }, - "camelcase": { - "version": "4.1.0", - "bundled": true - }, - "camelcase-keys": { - "version": "4.2.0", - "bundled": true, - "requires": { - "camelcase": "^4.1.0", - "map-obj": "^2.0.0", - "quick-lru": "^1.0.0" - } - }, - "caniuse-lite": { - "version": "1.0.30000865", - "bundled": true - }, - "chalk": { - "version": "2.4.1", - "bundled": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "bundled": true, - "requires": { - "color-convert": "^1.9.0" - } - } - } - }, - "chardet": { - "version": "0.4.2", - "bundled": true - }, - "chokidar": { - "version": "2.0.4", - "bundled": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true - }, - "chrome-launcher": { - "version": "0.10.2", - "bundled": true, - "requires": { - "@types/core-js": "^0.9.41", - "@types/mkdirp": "^0.3.29", - "@types/node": "^9.3.0", - "@types/rimraf": "^0.0.28", - "is-wsl": "^1.1.0", - "lighthouse-logger": "^1.0.0", - "mkdirp": "0.5.1", - "rimraf": "^2.6.1" - } - }, - "chrome-remote-interface": { - "version": "0.25.7", - "bundled": true, - "requires": { - "commander": "2.11.x", - "ws": "3.3.x" - }, - "dependencies": { - "commander": { - "version": "2.11.0", - "bundled": true - } - } - }, - "chrome-trace-event": { - "version": "1.0.0", - "bundled": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "chrome-unmirror": { - "version": "0.1.0", - "bundled": true - }, - "cipher-base": { - "version": "1.0.4", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "bundled": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cli-cursor": { - "version": "2.1.0", - "bundled": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-spinners": { - "version": "0.1.2", - "bundled": true - }, - "cli-table": { - "version": "0.3.1", - "bundled": true, - "requires": { - "colors": "1.0.3" - }, - "dependencies": { - "colors": { - "version": "1.0.3", - "bundled": true - } - } - }, - "cli-truncate": { - "version": "0.2.1", - "bundled": true, - "requires": { - "slice-ansi": "0.0.4", - "string-width": "^1.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "cli-width": { - "version": "2.2.0", - "bundled": true - }, - "cliui": { - "version": "4.1.0", - "bundled": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "clone": { - "version": "1.0.4", - "bundled": true - }, - "clone-buffer": { - "version": "1.0.0", - "bundled": true - }, - "clone-response": { - "version": "1.0.2", - "bundled": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "clone-stats": { - "version": "0.0.1", - "bundled": true - }, - "cloneable-readable": { - "version": "1.1.2", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "collection-visit": { - "version": "1.0.0", - "bundled": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.2", - "bundled": true, - "requires": { - "color-name": "1.1.1" - } - }, - "color-name": { - "version": "1.1.1", - "bundled": true - }, - "colors": { - "version": "1.3.0", - "bundled": true - }, - "combined-stream": { - "version": "1.0.6", - "bundled": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.15.1", - "bundled": true - }, - "commondir": { - "version": "1.0.1", - "bundled": true - }, - "component-emitter": { - "version": "1.2.1", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "concat-stream": { - "version": "1.6.2", - "bundled": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "console-browserify": { - "version": "1.1.0", - "bundled": true, - "requires": { - "date-now": "^0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "bundled": true - }, - "content-disposition": { - "version": "0.5.2", - "bundled": true - }, - "content-type": { - "version": "1.0.4", - "bundled": true - }, - "convert-source-map": { - "version": "1.5.1", - "bundled": true - }, - "cookie": { - "version": "0.3.1", - "bundled": true - }, - "cookie-signature": { - "version": "1.0.6", - "bundled": true - }, - "copy-concurrently": { - "version": "1.0.5", - "bundled": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "bundled": true - }, - "core-js": { - "version": "2.5.7", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "create-ecdh": { - "version": "4.0.3", - "bundled": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "bundled": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "bundled": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "bundled": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "bundled": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "currently-unhandled": { - "version": "0.4.1", - "bundled": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "cyclist": { - "version": "0.2.2", - "bundled": true - }, - "d": { - "version": "1.0.0", - "bundled": true, - "requires": { - "es5-ext": "^0.10.9" - } - }, - "dargs": { - "version": "5.1.0", - "bundled": true - }, - "date-fns": { - "version": "1.29.0", - "bundled": true - }, - "date-now": { - "version": "0.1.4", - "bundled": true - }, - "dateformat": { - "version": "3.0.3", - "bundled": true - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "bundled": true - }, - "decamelize-keys": { - "version": "1.1.0", - "bundled": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "bundled": true - } - } - }, - "decode-uri-component": { - "version": "0.2.0", - "bundled": true - }, - "decompress-response": { - "version": "3.3.0", - "bundled": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-assign": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true - }, - "define-properties": { - "version": "1.1.2", - "bundled": true, - "requires": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" - } - }, - "define-property": { - "version": "2.0.2", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true - }, - "depd": { - "version": "1.1.2", - "bundled": true - }, - "des.js": { - "version": "1.0.0", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "bundled": true - }, - "detect-conflict": { - "version": "1.0.1", - "bundled": true - }, - "detect-indent": { - "version": "4.0.0", - "bundled": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "diff": { - "version": "3.5.0", - "bundled": true - }, - "diffie-hellman": { - "version": "5.0.3", - "bundled": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "dir-glob": { - "version": "2.0.0", - "bundled": true, - "requires": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" - } - }, - "domain-browser": { - "version": "1.2.0", - "bundled": true - }, - "duplexer": { - "version": "0.1.1", - "bundled": true - }, - "duplexer3": { - "version": "0.1.4", - "bundled": true - }, - "duplexify": { - "version": "3.6.0", - "bundled": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "editions": { - "version": "1.3.4", - "bundled": true - }, - "ee-first": { - "version": "1.1.1", - "bundled": true - }, - "ejs": { - "version": "2.6.1", - "bundled": true - }, - "electron-to-chromium": { - "version": "1.3.52", - "bundled": true - }, - "elegant-spinner": { - "version": "1.0.1", - "bundled": true - }, - "elliptic": { - "version": "6.4.0", - "bundled": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "emojis-list": { - "version": "2.1.0", - "bundled": true - }, - "encodeurl": { - "version": "1.0.2", - "bundled": true - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.1.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" - } - }, - "envinfo": { - "version": "5.10.0", - "bundled": true - }, - "errno": { - "version": "0.1.7", - "bundled": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error": { - "version": "7.0.2", - "bundled": true, - "requires": { - "string-template": "~0.2.1", - "xtend": "~4.0.0" - } - }, - "error-ex": { - "version": "1.3.2", - "bundled": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.12.0", - "bundled": true, - "requires": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" - } - }, - "es-to-primitive": { - "version": "1.1.1", - "bundled": true, - "requires": { - "is-callable": "^1.1.1", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.1" - } - }, - "es5-ext": { - "version": "0.10.45", - "bundled": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" - } - }, - "es6-iterator": { - "version": "2.0.3", - "bundled": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-object-assign": { - "version": "1.1.0", - "bundled": true - }, - "es6-symbol": { - "version": "3.1.1", - "bundled": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "escape-html": { - "version": "1.0.3", - "bundled": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true - }, - "eslint-scope": { - "version": "4.0.0", - "bundled": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "bundled": true - }, - "esrecurse": { - "version": "4.2.1", - "bundled": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.2.0", - "bundled": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true - }, - "etag": { - "version": "1.8.1", - "bundled": true - }, - "event-stream": { - "version": "3.3.4", - "bundled": true, - "requires": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", - "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" - } - }, - "events": { - "version": "1.1.1", - "bundled": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "bundled": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "0.7.0", - "bundled": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "exit-hook": { - "version": "1.1.1", - "bundled": true - }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-range": { - "version": "1.8.2", - "bundled": true, - "requires": { - "fill-range": "^2.1.0" - }, - "dependencies": { - "fill-range": { - "version": "2.2.4", - "bundled": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "is-number": { - "version": "2.1.0", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isobject": { - "version": "2.1.0", - "bundled": true, - "requires": { - "isarray": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "bundled": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "express": { - "version": "4.16.3", - "bundled": true, - "requires": { - "accepts": "~1.3.5", - "array-flatten": "1.1.1", - "body-parser": "1.18.2", - "content-disposition": "0.5.2", - "content-type": "~1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.3", - "qs": "6.5.1", - "range-parser": "~1.2.0", - "safe-buffer": "5.1.1", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "bundled": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "external-editor": { - "version": "2.2.0", - "bundled": true, - "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "bundled": true - }, - "fast-glob": { - "version": "2.2.2", - "bundled": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.0.1", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.1", - "micromatch": "^3.1.10" - } - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "bundled": true - }, - "figures": { - "version": "2.0.0", - "bundled": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "filename-regex": { - "version": "2.0.1", - "bundled": true - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "finalhandler": { - "version": "1.1.1", - "bundled": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "find-cache-dir": { - "version": "1.0.0", - "bundled": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "first-chunk-stream": { - "version": "2.0.0", - "bundled": true, - "requires": { - "readable-stream": "^2.0.2" - } - }, - "flow-parser": { - "version": "0.76.0", - "bundled": true - }, - "flush-write-stream": { - "version": "1.0.3", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" - } - }, - "follow-redirects": { - "version": "1.5.1", - "bundled": true, - "requires": { - "debug": "^3.1.0" - } - }, - "for-in": { - "version": "1.0.2", - "bundled": true - }, - "for-own": { - "version": "0.1.5", - "bundled": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "foreach": { - "version": "2.0.5", - "bundled": true - }, - "form-data": { - "version": "2.3.2", - "bundled": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "bundled": true - }, - "fragment-cache": { - "version": "0.2.1", - "bundled": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "bundled": true - }, - "from": { - "version": "0.1.7", - "bundled": true - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "function-bind": { - "version": "1.1.1", - "bundled": true - }, - "get-caller-file": { - "version": "1.0.3", - "bundled": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "get-value": { - "version": "2.0.6", - "bundled": true - }, - "gh-got": { - "version": "6.0.0", - "bundled": true, - "requires": { - "got": "^7.0.0", - "is-plain-obj": "^1.1.0" - }, - "dependencies": { - "got": { - "version": "7.1.0", - "bundled": true, - "requires": { - "decompress-response": "^3.2.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-plain-obj": "^1.1.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^1.1.1", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "url-parse-lax": "^1.0.0", - "url-to-options": "^1.0.1" - } - }, - "p-cancelable": { - "version": "0.3.0", - "bundled": true - }, - "p-timeout": { - "version": "1.2.1", - "bundled": true, - "requires": { - "p-finally": "^1.0.0" - } - }, - "prepend-http": { - "version": "1.0.4", - "bundled": true - }, - "url-parse-lax": { - "version": "1.0.0", - "bundled": true, - "requires": { - "prepend-http": "^1.0.1" - } - } - } - }, - "github-username": { - "version": "4.1.0", - "bundled": true, - "requires": { - "gh-got": "^6.0.0" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-all": { - "version": "3.1.0", - "bundled": true, - "requires": { - "glob": "^7.0.5", - "yargs": "~1.2.6" - }, - "dependencies": { - "minimist": { - "version": "0.1.0", - "bundled": true - }, - "yargs": { - "version": "1.2.6", - "bundled": true, - "requires": { - "minimist": "^0.1.0" - } - } - } - }, - "glob-base": { - "version": "0.3.0", - "bundled": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "bundled": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "bundled": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "bundled": true - }, - "global-modules": { - "version": "1.0.0", - "bundled": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "bundled": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "globals": { - "version": "9.18.0", - "bundled": true - }, - "globby": { - "version": "8.0.1", - "bundled": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - }, - "got": { - "version": "8.3.2", - "bundled": true, - "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "grouped-queue": { - "version": "0.3.3", - "bundled": true, - "requires": { - "lodash": "^4.17.2" - } - }, - "growl": { - "version": "1.10.5", - "bundled": true - }, - "has": { - "version": "1.0.3", - "bundled": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-color": { - "version": "0.1.7", - "bundled": true - }, - "has-flag": { - "version": "3.0.0", - "bundled": true - }, - "has-symbol-support-x": { - "version": "1.4.2", - "bundled": true - }, - "has-symbols": { - "version": "1.0.0", - "bundled": true - }, - "has-to-string-tag-x": { - "version": "1.4.1", - "bundled": true, - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, - "has-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash.js": { - "version": "1.1.5", - "bundled": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.1.1", - "bundled": true - }, - "hmac-drbg": { - "version": "1.0.1", - "bundled": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "home-or-tmp": { - "version": "2.0.0", - "bundled": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "homedir-polyfill": { - "version": "1.0.1", - "bundled": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hosted-git-info": { - "version": "2.7.1", - "bundled": true - }, - "http-cache-semantics": { - "version": "3.8.1", - "bundled": true - }, - "http-errors": { - "version": "1.6.3", - "bundled": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "https-browserify": { - "version": "1.0.0", - "bundled": true - }, - "iconv-lite": { - "version": "0.4.19", - "bundled": true - }, - "ieee754": { - "version": "1.1.12", - "bundled": true - }, - "iferr": { - "version": "0.1.5", - "bundled": true - }, - "ignore": { - "version": "3.3.10", - "bundled": true - }, - "import-local": { - "version": "1.0.0", - "bundled": true, - "requires": { - "pkg-dir": "^2.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true - }, - "indent-string": { - "version": "3.2.0", - "bundled": true - }, - "indexof": { - "version": "0.0.1", - "bundled": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true - }, - "inquirer": { - "version": "5.2.0", - "bundled": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.1.0", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^5.5.2", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "interpret": { - "version": "1.1.0", - "bundled": true - }, - "into-stream": { - "version": "3.1.0", - "bundled": true, - "requires": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" - } - }, - "invariant": { - "version": "2.2.4", - "bundled": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true - }, - "ipaddr.js": { - "version": "1.6.0", - "bundled": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true - }, - "is-binary-path": { - "version": "1.0.1", - "bundled": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-callable": { - "version": "1.1.4", - "bundled": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.1", - "bundled": true - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "bundled": true - } - } - }, - "is-dotfile": { - "version": "1.0.3", - "bundled": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "bundled": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true - }, - "is-extglob": { - "version": "2.1.1", - "bundled": true - }, - "is-finite": { - "version": "1.0.2", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - }, - "is-glob": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-obj": { - "version": "1.0.1", - "bundled": true - }, - "is-object": { - "version": "1.0.1", - "bundled": true - }, - "is-observable": { - "version": "1.1.0", - "bundled": true, - "requires": { - "symbol-observable": "^1.1.0" - }, - "dependencies": { - "symbol-observable": { - "version": "1.2.0", - "bundled": true - } - } - }, - "is-plain-obj": { - "version": "1.1.0", - "bundled": true - }, - "is-plain-object": { - "version": "2.0.4", - "bundled": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "bundled": true - }, - "is-primitive": { - "version": "2.0.0", - "bundled": true - }, - "is-promise": { - "version": "2.1.0", - "bundled": true - }, - "is-regex": { - "version": "1.0.4", - "bundled": true, - "requires": { - "has": "^1.0.1" - } - }, - "is-retry-allowed": { - "version": "1.1.0", - "bundled": true - }, - "is-scoped": { - "version": "1.0.0", - "bundled": true, - "requires": { - "scoped-regex": "^1.0.0" - } - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "is-symbol": { - "version": "1.0.1", - "bundled": true - }, - "is-utf8": { - "version": "0.2.1", - "bundled": true - }, - "is-windows": { - "version": "1.0.2", - "bundled": true - }, - "is-wsl": { - "version": "1.1.0", - "bundled": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isbinaryfile": { - "version": "3.0.2", - "bundled": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true - }, - "isobject": { - "version": "3.0.1", - "bundled": true - }, - "isomorphic-tough-cookie": { - "version": "0.0.1", - "bundled": true, - "requires": { - "@types/tough-cookie": "^2.3.3", - "tough-cookie": "^2.3.4" - } - }, - "isomorphic-xml2js": { - "version": "0.1.3", - "bundled": true, - "requires": { - "@types/xml2js": "^0.4.2", - "xml2js": "^0.4.19" - } - }, - "istextorbinary": { - "version": "2.2.1", - "bundled": true, - "requires": { - "binaryextensions": "2", - "editions": "^1.3.3", - "textextensions": "2" - } - }, - "isurl": { - "version": "1.0.0", - "bundled": true, - "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - } - }, - "js-tokens": { - "version": "3.0.2", - "bundled": true - }, - "js-yaml": { - "version": "3.12.0", - "bundled": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jscodeshift": { - "version": "0.5.1", - "bundled": true, - "requires": { - "babel-plugin-transform-flow-strip-types": "^6.8.0", - "babel-preset-es2015": "^6.9.0", - "babel-preset-stage-1": "^6.5.0", - "babel-register": "^6.9.0", - "babylon": "^7.0.0-beta.47", - "colors": "^1.1.2", - "flow-parser": "^0.*", - "lodash": "^4.13.1", - "micromatch": "^2.3.7", - "neo-async": "^2.5.0", - "node-dir": "0.1.8", - "nomnom": "^1.8.1", - "recast": "^0.15.0", - "temp": "^0.8.1", - "write-file-atomic": "^1.2.0" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "bundled": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "bundled": true - }, - "babylon": { - "version": "7.0.0-beta.47", - "bundled": true - }, - "braces": { - "version": "1.8.5", - "bundled": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "bundled": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "bundled": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - } - } - }, - "jsesc": { - "version": "0.5.0", - "bundled": true - }, - "json-buffer": { - "version": "3.0.0", - "bundled": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "bundled": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "bundled": true - }, - "json5": { - "version": "0.5.1", - "bundled": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true - }, - "keyv": { - "version": "3.0.0", - "bundled": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "lighthouse-logger": { - "version": "1.0.1", - "bundled": true, - "requires": { - "debug": "^2.6.8" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "listr": { - "version": "0.14.1", - "bundled": true, - "requires": { - "@samverschueren/stream-to-observable": "^0.3.0", - "cli-truncate": "^0.2.1", - "figures": "^1.7.0", - "indent-string": "^2.1.0", - "is-observable": "^1.1.0", - "is-promise": "^2.1.0", - "is-stream": "^1.1.0", - "listr-silent-renderer": "^1.1.1", - "listr-update-renderer": "^0.4.0", - "listr-verbose-renderer": "^0.4.0", - "log-symbols": "^1.0.2", - "log-update": "^1.0.2", - "ora": "^0.2.3", - "p-map": "^1.1.1", - "rxjs": "^6.1.0", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "figures": { - "version": "1.7.0", - "bundled": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "indent-string": { - "version": "2.1.0", - "bundled": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "log-symbols": { - "version": "1.0.2", - "bundled": true, - "requires": { - "chalk": "^1.0.0" - } - }, - "rxjs": { - "version": "6.2.2", - "bundled": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "listr-silent-renderer": { - "version": "1.1.1", - "bundled": true - }, - "listr-update-renderer": { - "version": "0.4.0", - "bundled": true, - "requires": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^1.0.2", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "figures": { - "version": "1.7.0", - "bundled": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "log-symbols": { - "version": "1.0.2", - "bundled": true, - "requires": { - "chalk": "^1.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "listr-verbose-renderer": { - "version": "0.4.1", - "bundled": true, - "requires": { - "chalk": "^1.1.3", - "cli-cursor": "^1.0.2", - "date-fns": "^1.27.2", - "figures": "^1.7.0" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cli-cursor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "restore-cursor": "^1.0.1" - } - }, - "figures": { - "version": "1.7.0", - "bundled": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "onetime": { - "version": "1.1.0", - "bundled": true - }, - "restore-cursor": { - "version": "1.0.1", - "bundled": true, - "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "load-json-file": { - "version": "4.0.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "loader-runner": { - "version": "2.3.0", - "bundled": true - }, - "loader-utils": { - "version": "1.1.0", - "bundled": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0" - } - }, - "locate-path": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.10", - "bundled": true - }, - "lodash.debounce": { - "version": "4.0.8", - "bundled": true - }, - "log-symbols": { - "version": "2.2.0", - "bundled": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "log-update": { - "version": "1.0.2", - "bundled": true, - "requires": { - "ansi-escapes": "^1.0.0", - "cli-cursor": "^1.0.2" - }, - "dependencies": { - "ansi-escapes": { - "version": "1.4.0", - "bundled": true - }, - "cli-cursor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "restore-cursor": "^1.0.1" - } - }, - "onetime": { - "version": "1.1.0", - "bundled": true - }, - "restore-cursor": { - "version": "1.0.1", - "bundled": true, - "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - } - } - } - }, - "loglevel": { - "version": "1.6.1", - "bundled": true - }, - "loglevelnext": { - "version": "1.0.5", - "bundled": true, - "requires": { - "es6-symbol": "^3.1.1", - "object.assign": "^4.1.0" - } - }, - "long": { - "version": "3.2.0", - "bundled": true - }, - "loose-envify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "bundled": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "bundled": true - }, - "lru-cache": { - "version": "4.1.3", - "bundled": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-dir": { - "version": "1.3.0", - "bundled": true, - "requires": { - "pify": "^3.0.0" - } - }, - "make-error": { - "version": "1.3.4", - "bundled": true - }, - "mamacro": { - "version": "0.0.3", - "bundled": true - }, - "map-cache": { - "version": "0.2.2", - "bundled": true - }, - "map-obj": { - "version": "2.0.0", - "bundled": true - }, - "map-stream": { - "version": "0.1.0", - "bundled": true - }, - "map-visit": { - "version": "1.0.0", - "bundled": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "math-random": { - "version": "1.0.1", - "bundled": true - }, - "md5.js": { - "version": "1.3.4", - "bundled": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "media-typer": { - "version": "0.3.0", - "bundled": true - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "mem-fs": { - "version": "1.1.3", - "bundled": true, - "requires": { - "through2": "^2.0.0", - "vinyl": "^1.1.0", - "vinyl-file": "^2.0.0" - } - }, - "mem-fs-editor": { - "version": "4.0.3", - "bundled": true, - "requires": { - "commondir": "^1.0.1", - "deep-extend": "^0.6.0", - "ejs": "^2.5.9", - "glob": "^7.0.3", - "globby": "^7.1.1", - "isbinaryfile": "^3.0.2", - "mkdirp": "^0.5.0", - "multimatch": "^2.0.0", - "rimraf": "^2.2.8", - "through2": "^2.0.0", - "vinyl": "^2.0.1" - }, - "dependencies": { - "clone": { - "version": "2.1.1", - "bundled": true - }, - "clone-stats": { - "version": "1.0.0", - "bundled": true - }, - "globby": { - "version": "7.1.1", - "bundled": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - }, - "replace-ext": { - "version": "1.0.0", - "bundled": true - }, - "vinyl": { - "version": "2.2.0", - "bundled": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - } - } - }, - "memory-fs": { - "version": "0.4.1", - "bundled": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "memorystream": { - "version": "0.3.1", - "bundled": true - }, - "meow": { - "version": "4.0.1", - "bundled": true, - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist": "^1.1.3", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "bundled": true - }, - "merge2": { - "version": "1.2.2", - "bundled": true - }, - "methods": { - "version": "1.1.2", - "bundled": true - }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "bundled": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mime": { - "version": "1.4.1", - "bundled": true - }, - "mime-db": { - "version": "1.33.0", - "bundled": true - }, - "mime-types": { - "version": "2.1.18", - "bundled": true, - "requires": { - "mime-db": "~1.33.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "bundled": true - }, - "mimic-response": { - "version": "1.0.1", - "bundled": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "bundled": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "minimist-options": { - "version": "3.0.2", - "bundled": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0" - } - }, - "mississippi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^2.0.1", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.1", - "bundled": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "5.2.0", - "bundled": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - } - }, - "mocha-chrome": { - "version": "1.1.0", - "bundled": true, - "requires": { - "babel-plugin-transform-es2015-destructuring": "^6.23.0", - "babel-plugin-transform-es2015-parameters": "^6.24.1", - "babel-polyfill": "^6.26.0", - "babel-preset-env": "^1.6.1", - "babel-register": "^6.26.0", - "chalk": "^2.0.1", - "chrome-launcher": "^0.10.2", - "chrome-remote-interface": "^0.25.2", - "chrome-unmirror": "^0.1.0", - "debug": "^3.1.0", - "deep-assign": "^2.0.0", - "import-local": "^1.0.0", - "loglevel": "^1.4.1", - "meow": "^4.0.0", - "nanobus": "^4.2.0" - } - }, - "move-concurrently": { - "version": "1.0.1", - "bundled": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true - }, - "multimatch": { - "version": "2.1.0", - "bundled": true, - "requires": { - "array-differ": "^1.0.0", - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "minimatch": "^3.0.0" - } - }, - "mute-stream": { - "version": "0.0.7", - "bundled": true - }, - "nanoassert": { - "version": "1.1.0", - "bundled": true - }, - "nanobus": { - "version": "4.3.3", - "bundled": true, - "requires": { - "nanotiming": "^7.2.0", - "remove-array-items": "^1.0.0" - } - }, - "nanomatch": { - "version": "1.2.13", - "bundled": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "nanoscheduler": { - "version": "1.0.3", - "bundled": true, - "requires": { - "nanoassert": "^1.1.0" - } - }, - "nanotiming": { - "version": "7.3.1", - "bundled": true, - "requires": { - "nanoassert": "^1.1.0", - "nanoscheduler": "^1.0.2" - } - }, - "negotiator": { - "version": "0.6.1", - "bundled": true - }, - "neo-async": { - "version": "2.5.1", - "bundled": true - }, - "next-tick": { - "version": "1.0.0", - "bundled": true - }, - "nice-try": { - "version": "1.0.4", - "bundled": true - }, - "node-dir": { - "version": "0.1.8", - "bundled": true - }, - "node-libs-browser": { - "version": "2.1.0", - "bundled": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^1.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.10.3", - "vm-browserify": "0.0.4" - } - }, - "nomnom": { - "version": "1.8.1", - "bundled": true, - "requires": { - "chalk": "~0.4.0", - "underscore": "~1.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "bundled": true - }, - "chalk": { - "version": "0.4.0", - "bundled": true, - "requires": { - "ansi-styles": "~1.0.0", - "has-color": "~0.1.0", - "strip-ansi": "~0.1.0" - } - }, - "strip-ansi": { - "version": "0.1.1", - "bundled": true - } - } - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "bundled": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "normalize-url": { - "version": "2.0.1", - "bundled": true, - "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - } - }, - "npm-run-all": { - "version": "4.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^3.2.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.4", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "ps-tree": "^1.1.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "bundled": true, - "requires": { - "color-convert": "^1.9.0" - } - } - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "object-copy": { - "version": "0.1.0", - "bundled": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-keys": { - "version": "1.0.12", - "bundled": true - }, - "object-visit": { - "version": "1.0.1", - "bundled": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "bundled": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.omit": { - "version": "2.0.1", - "bundled": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, - "object.pick": { - "version": "1.3.0", - "bundled": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "on-finished": { - "version": "2.3.0", - "bundled": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "bundled": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "ora": { - "version": "0.2.3", - "bundled": true, - "requires": { - "chalk": "^1.1.1", - "cli-cursor": "^1.0.2", - "cli-spinners": "^0.1.2", - "object-assign": "^4.0.1" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cli-cursor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "restore-cursor": "^1.0.1" - } - }, - "onetime": { - "version": "1.1.0", - "bundled": true - }, - "restore-cursor": { - "version": "1.0.1", - "bundled": true, - "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "os-browserify": { - "version": "0.3.0", - "bundled": true - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true - }, - "p-cancelable": { - "version": "0.4.1", - "bundled": true - }, - "p-each-series": { - "version": "1.0.0", - "bundled": true, - "requires": { - "p-reduce": "^1.0.0" - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true - }, - "p-is-promise": { - "version": "1.1.0", - "bundled": true - }, - "p-lazy": { - "version": "1.0.0", - "bundled": true - }, - "p-limit": { - "version": "1.3.0", - "bundled": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-map": { - "version": "1.2.0", - "bundled": true - }, - "p-reduce": { - "version": "1.0.0", - "bundled": true - }, - "p-timeout": { - "version": "2.0.1", - "bundled": true, - "requires": { - "p-finally": "^1.0.0" - } - }, - "p-try": { - "version": "1.0.0", - "bundled": true - }, - "pako": { - "version": "1.0.6", - "bundled": true - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "requires": { - "cyclist": "~0.2.2", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "parse-asn1": { - "version": "5.1.1", - "bundled": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" - } - }, - "parse-glob": { - "version": "3.0.4", - "bundled": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "parse-json": { - "version": "4.0.0", - "bundled": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parse-passwd": { - "version": "1.0.0", - "bundled": true - }, - "parseurl": { - "version": "1.3.2", - "bundled": true - }, - "pascalcase": { - "version": "0.1.1", - "bundled": true - }, - "path-browserify": { - "version": "0.0.0", - "bundled": true - }, - "path-dirname": { - "version": "1.0.2", - "bundled": true - }, - "path-exists": { - "version": "3.0.0", - "bundled": true - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true - }, - "path-to-regexp": { - "version": "0.1.7", - "bundled": true - }, - "path-type": { - "version": "3.0.0", - "bundled": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pause-stream": { - "version": "0.0.11", - "bundled": true, - "requires": { - "through": "~2.3" - } - }, - "pbkdf2": { - "version": "3.0.16", - "bundled": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "pify": { - "version": "3.0.0", - "bundled": true - }, - "pinkie": { - "version": "2.0.4", - "bundled": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "2.0.0", - "bundled": true, - "requires": { - "find-up": "^2.1.0" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "bundled": true - }, - "prepend-http": { - "version": "2.0.0", - "bundled": true - }, - "preserve": { - "version": "0.2.0", - "bundled": true - }, - "prettier": { - "version": "1.13.7", - "bundled": true - }, - "pretty-bytes": { - "version": "4.0.2", - "bundled": true - }, - "private": { - "version": "0.1.8", - "bundled": true - }, - "process": { - "version": "0.11.10", - "bundled": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true - }, - "promise-inflight": { - "version": "1.0.1", - "bundled": true - }, - "proxy-addr": { - "version": "2.0.3", - "bundled": true, - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.6.0" - } - }, - "prr": { - "version": "1.0.1", - "bundled": true - }, - "ps-tree": { - "version": "1.1.0", - "bundled": true, - "requires": { - "event-stream": "~3.3.0" - } - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true - }, - "psl": { - "version": "1.1.28", - "bundled": true - }, - "public-encrypt": { - "version": "4.0.2", - "bundled": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "bundled": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "punycode": { - "version": "1.4.1", - "bundled": true - }, - "qs": { - "version": "6.5.1", - "bundled": true - }, - "query-string": { - "version": "5.1.1", - "bundled": true, - "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "querystring": { - "version": "0.2.0", - "bundled": true - }, - "querystring-es3": { - "version": "0.2.1", - "bundled": true - }, - "quick-lru": { - "version": "1.1.0", - "bundled": true - }, - "randomatic": { - "version": "3.0.0", - "bundled": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "bundled": true - } - } - }, - "randombytes": { - "version": "2.0.6", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "bundled": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.0", - "bundled": true - }, - "raw-body": { - "version": "2.3.2", - "bundled": true, - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "bundled": true - }, - "http-errors": { - "version": "1.6.2", - "bundled": true, - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" - } - }, - "setprototypeof": { - "version": "1.0.3", - "bundled": true - } - } - }, - "read-chunk": { - "version": "2.1.0", - "bundled": true, - "requires": { - "pify": "^3.0.0", - "safe-buffer": "^5.1.1" - } - }, - "read-pkg": { - "version": "3.0.0", - "bundled": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "3.0.0", - "bundled": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.1.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" - } - }, - "recast": { - "version": "0.15.2", - "bundled": true, - "requires": { - "ast-types": "0.11.5", - "esprima": "~4.0.0", - "private": "~0.1.5", - "source-map": "~0.6.1" - } - }, - "rechoir": { - "version": "0.6.2", - "bundled": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "redent": { - "version": "2.0.0", - "bundled": true, - "requires": { - "indent-string": "^3.0.0", - "strip-indent": "^2.0.0" - } - }, - "regenerate": { - "version": "1.4.0", - "bundled": true - }, - "regenerator-runtime": { - "version": "0.11.1", - "bundled": true - }, - "regenerator-transform": { - "version": "0.10.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.18.0", - "babel-types": "^6.19.0", - "private": "^0.1.6" - } - }, - "regex-cache": { - "version": "0.4.4", - "bundled": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, - "regex-not": { - "version": "1.0.2", - "bundled": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpu-core": { - "version": "2.0.0", - "bundled": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "regjsgen": { - "version": "0.2.0", - "bundled": true - }, - "regjsparser": { - "version": "0.1.5", - "bundled": true, - "requires": { - "jsesc": "~0.5.0" - } - }, - "remove-array-items": { - "version": "1.0.0", - "bundled": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "bundled": true - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true - }, - "repeating": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "replace-ext": { - "version": "0.0.1", - "bundled": true - }, - "require-directory": { - "version": "2.1.1", - "bundled": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true - }, - "resolve": { - "version": "1.8.1", - "bundled": true, - "requires": { - "path-parse": "^1.0.5" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "bundled": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-dir": { - "version": "1.0.1", - "bundled": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "bundled": true - }, - "resolve-url": { - "version": "0.2.1", - "bundled": true - }, - "responselike": { - "version": "1.0.2", - "bundled": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "restore-cursor": { - "version": "2.0.0", - "bundled": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "bundled": true - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "requires": { - "glob": "^7.0.5" - } - }, - "ripemd160": { - "version": "2.0.2", - "bundled": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-async": { - "version": "2.3.0", - "bundled": true, - "requires": { - "is-promise": "^2.1.0" - } - }, - "run-queue": { - "version": "1.0.3", - "bundled": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "rxjs": { - "version": "5.5.11", - "bundled": true, - "requires": { - "symbol-observable": "1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true - }, - "safe-regex": { - "version": "1.1.0", - "bundled": true, - "requires": { - "ret": "~0.1.10" - } - }, - "sax": { - "version": "1.2.4", - "bundled": true - }, - "schema-utils": { - "version": "0.4.5", - "bundled": true, - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } - }, - "scoped-regex": { - "version": "1.0.0", - "bundled": true - }, - "semver": { - "version": "5.5.0", - "bundled": true - }, - "send": { - "version": "0.16.2", - "bundled": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "serialize-javascript": { - "version": "1.5.0", - "bundled": true - }, - "serve-static": { - "version": "1.13.2", - "bundled": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - } - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "bundled": true - }, - "set-value": { - "version": "2.0.0", - "bundled": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "bundled": true - }, - "setprototypeof": { - "version": "1.1.0", - "bundled": true - }, - "sha.js": { - "version": "2.4.11", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true - }, - "shell-quote": { - "version": "1.6.1", - "bundled": true, - "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" - } - }, - "shelljs": { - "version": "0.7.8", - "bundled": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "should": { - "version": "5.2.0", - "bundled": true, - "requires": { - "should-equal": "0.3.1", - "should-format": "0.0.7", - "should-type": "0.0.4" - } - }, - "should-equal": { - "version": "0.3.1", - "bundled": true, - "requires": { - "should-type": "0.0.4" - } - }, - "should-format": { - "version": "0.0.7", - "bundled": true, - "requires": { - "should-type": "0.0.4" - } - }, - "should-type": { - "version": "0.0.4", - "bundled": true - }, - "shx": { - "version": "0.2.2", - "bundled": true, - "requires": { - "es6-object-assign": "^1.0.3", - "minimist": "^1.2.0", - "shelljs": "^0.7.3" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true - } - } - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "slash": { - "version": "1.0.0", - "bundled": true - }, - "slice-ansi": { - "version": "0.0.4", - "bundled": true - }, - "slide": { - "version": "1.1.6", - "bundled": true - }, - "snapdragon": { - "version": "0.8.2", - "bundled": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "source-map": { - "version": "0.5.7", - "bundled": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "bundled": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "bundled": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "sort-keys": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "source-list-map": { - "version": "2.0.0", - "bundled": true - }, - "source-map": { - "version": "0.6.1", - "bundled": true - }, - "source-map-resolve": { - "version": "0.5.2", - "bundled": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.4.18", - "bundled": true, - "requires": { - "source-map": "^0.5.6" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "bundled": true - } - } - }, - "source-map-url": { - "version": "0.4.0", - "bundled": true - }, - "spdx-correct": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "bundled": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "bundled": true - }, - "split": { - "version": "0.3.3", - "bundled": true, - "requires": { - "through": "2" - } - }, - "split-string": { - "version": "3.1.0", - "bundled": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "bundled": true - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.1" - } - }, - "static-extend": { - "version": "0.1.2", - "bundled": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.4.0", - "bundled": true - }, - "stream-browserify": { - "version": "2.0.1", - "bundled": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-combiner": { - "version": "0.0.4", - "bundled": true, - "requires": { - "duplexer": "~0.1.1" - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "bundled": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.0", - "bundled": true - }, - "strict-uri-encode": { - "version": "1.1.0", - "bundled": true - }, - "string-template": { - "version": "0.2.1", - "bundled": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string.prototype.padend": { - "version": "3.0.0", - "bundled": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.4.3", - "function-bind": "^1.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "bundled": true - }, - "strip-bom-stream": { - "version": "2.0.0", - "bundled": true, - "requires": { - "first-chunk-stream": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-utf8": "^0.2.0" - } - } - } - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true - }, - "strip-indent": { - "version": "2.0.0", - "bundled": true - }, - "supports-color": { - "version": "5.4.0", - "bundled": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "symbol-observable": { - "version": "1.0.1", - "bundled": true - }, - "tapable": { - "version": "1.0.0", - "bundled": true - }, - "temp": { - "version": "0.8.3", - "bundled": true, - "requires": { - "os-tmpdir": "^1.0.0", - "rimraf": "~2.2.6" - }, - "dependencies": { - "rimraf": { - "version": "2.2.8", - "bundled": true - } - } - }, - "text-table": { - "version": "0.2.0", - "bundled": true - }, - "textextensions": { - "version": "2.2.0", - "bundled": true - }, - "through": { - "version": "2.3.8", - "bundled": true - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" - } - }, - "timed-out": { - "version": "4.0.1", - "bundled": true - }, - "timers-browserify": { - "version": "2.0.10", - "bundled": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "tmp": { - "version": "0.0.33", - "bundled": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "bundled": true - }, - "to-fast-properties": { - "version": "1.0.3", - "bundled": true - }, - "to-object-path": { - "version": "0.3.0", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "bundled": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "tough-cookie": { - "version": "2.4.3", - "bundled": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - }, - "trim-newlines": { - "version": "2.0.0", - "bundled": true - }, - "trim-right": { - "version": "1.0.1", - "bundled": true - }, - "ts-loader": { - "version": "4.4.2", - "bundled": true, - "requires": { - "chalk": "^2.3.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^3.1.4", - "semver": "^5.0.1" - } - }, - "ts-node": { - "version": "5.0.1", - "bundled": true, - "requires": { - "arrify": "^1.0.0", - "chalk": "^2.3.0", - "diff": "^3.1.0", - "make-error": "^1.1.1", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "source-map-support": "^0.5.3", - "yn": "^2.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "source-map-support": { - "version": "0.5.6", - "bundled": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - } - } - }, - "tslib": { - "version": "1.9.3", - "bundled": true - }, - "tslint": { - "version": "5.10.0", - "bundled": true, - "requires": { - "babel-code-frame": "^6.22.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^3.2.0", - "glob": "^7.1.1", - "js-yaml": "^3.7.0", - "minimatch": "^3.0.4", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.12.1" - } - }, - "tsutils": { - "version": "2.27.2", - "bundled": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "tty-browserify": { - "version": "0.0.0", - "bundled": true - }, - "type-is": { - "version": "1.6.16", - "bundled": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.18" - } - }, - "typedarray": { - "version": "0.0.6", - "bundled": true - }, - "typescript": { - "version": "2.9.2", - "bundled": true - }, - "uglify-es": { - "version": "3.3.9", - "bundled": true, - "requires": { - "commander": "~2.13.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.13.0", - "bundled": true - } - } - }, - "uglifyjs-webpack-plugin": { - "version": "1.2.7", - "bundled": true, - "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", - "schema-utils": "^0.4.5", - "serialize-javascript": "^1.4.0", - "source-map": "^0.6.1", - "uglify-es": "^3.3.4", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" - } - }, - "ultron": { - "version": "1.1.1", - "bundled": true - }, - "underscore": { - "version": "1.6.0", - "bundled": true - }, - "union-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "bundled": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unique-filename": { - "version": "1.1.0", - "bundled": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.0", - "bundled": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "unpipe": { - "version": "1.0.0", - "bundled": true - }, - "unset-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "bundled": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "bundled": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "bundled": true - } - } - }, - "untildify": { - "version": "3.0.3", - "bundled": true - }, - "upath": { - "version": "1.1.0", - "bundled": true - }, - "uri-js": { - "version": "4.2.2", - "bundled": true, - "requires": { - "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "bundled": true - } - } - }, - "urix": { - "version": "0.1.0", - "bundled": true - }, - "url": { - "version": "0.11.0", - "bundled": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "bundled": true - } - } - }, - "url-join": { - "version": "4.0.0", - "bundled": true - }, - "url-parse-lax": { - "version": "3.0.0", - "bundled": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, - "url-to-options": { - "version": "1.0.1", - "bundled": true - }, - "use": { - "version": "3.1.1", - "bundled": true - }, - "util": { - "version": "0.10.4", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "utils-merge": { - "version": "1.0.1", - "bundled": true - }, - "uuid": { - "version": "3.3.2", - "bundled": true - }, - "v8-compile-cache": { - "version": "2.0.0", - "bundled": true - }, - "validate-npm-package-license": { - "version": "3.0.3", - "bundled": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vary": { - "version": "1.1.2", - "bundled": true - }, - "vinyl": { - "version": "1.2.0", - "bundled": true, - "requires": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" - } - }, - "vinyl-file": { - "version": "2.0.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.3.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0", - "strip-bom-stream": "^2.0.0", - "vinyl": "^1.1.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "bundled": true - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-utf8": "^0.2.0" - } - } - } - }, - "vm-browserify": { - "version": "0.0.4", - "bundled": true, - "requires": { - "indexof": "0.0.1" - } - }, - "watchpack": { - "version": "1.6.0", - "bundled": true, - "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - } - }, - "webpack": { - "version": "4.16.1", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-module-context": "1.5.13", - "@webassemblyjs/wasm-edit": "1.5.13", - "@webassemblyjs/wasm-opt": "1.5.13", - "@webassemblyjs/wasm-parser": "1.5.13", - "acorn": "^5.6.2", - "acorn-dynamic-import": "^3.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.4", - "tapable": "^1.0.0", - "uglifyjs-webpack-plugin": "^1.2.4", - "watchpack": "^1.5.0", - "webpack-sources": "^1.0.1" - } - }, - "webpack-addons": { - "version": "1.1.5", - "bundled": true, - "requires": { - "jscodeshift": "^0.4.0" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "bundled": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "bundled": true - }, - "ast-types": { - "version": "0.10.1", - "bundled": true - }, - "braces": { - "version": "1.8.5", - "bundled": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "bundled": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "jscodeshift": { - "version": "0.4.1", - "bundled": true, - "requires": { - "async": "^1.5.0", - "babel-plugin-transform-flow-strip-types": "^6.8.0", - "babel-preset-es2015": "^6.9.0", - "babel-preset-stage-1": "^6.5.0", - "babel-register": "^6.9.0", - "babylon": "^6.17.3", - "colors": "^1.1.2", - "flow-parser": "^0.*", - "lodash": "^4.13.1", - "micromatch": "^2.3.7", - "node-dir": "0.1.8", - "nomnom": "^1.8.1", - "recast": "^0.12.5", - "temp": "^0.8.1", - "write-file-atomic": "^1.2.0" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "bundled": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "recast": { - "version": "0.12.9", - "bundled": true, - "requires": { - "ast-types": "0.10.1", - "core-js": "^2.4.1", - "esprima": "~4.0.0", - "private": "~0.1.5", - "source-map": "~0.6.1" - } - } - } - }, - "webpack-cli": { - "version": "2.1.5", - "bundled": true, - "requires": { - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "diff": "^3.5.0", - "enhanced-resolve": "^4.0.0", - "envinfo": "^5.7.0", - "glob-all": "^3.1.0", - "global-modules": "^1.0.0", - "got": "^8.3.1", - "import-local": "^1.0.0", - "inquirer": "^5.2.0", - "interpret": "^1.1.0", - "jscodeshift": "^0.5.0", - "listr": "^0.14.1", - "loader-utils": "^1.1.0", - "lodash": "^4.17.10", - "log-symbols": "^2.2.0", - "mkdirp": "^0.5.1", - "p-each-series": "^1.0.0", - "p-lazy": "^1.0.0", - "prettier": "^1.12.1", - "supports-color": "^5.4.0", - "v8-compile-cache": "^2.0.0", - "webpack-addons": "^1.1.5", - "yargs": "^11.1.0", - "yeoman-environment": "^2.1.1", - "yeoman-generator": "^2.0.5" - } - }, - "webpack-dev-middleware": { - "version": "3.1.3", - "bundled": true, - "requires": { - "loud-rejection": "^1.6.0", - "memory-fs": "~0.4.1", - "mime": "^2.1.0", - "path-is-absolute": "^1.0.0", - "range-parser": "^1.0.3", - "url-join": "^4.0.0", - "webpack-log": "^1.0.1" - }, - "dependencies": { - "mime": { - "version": "2.3.1", - "bundled": true - } - } - }, - "webpack-log": { - "version": "1.2.0", - "bundled": true, - "requires": { - "chalk": "^2.1.0", - "log-symbols": "^2.1.0", - "loglevelnext": "^1.0.1", - "uuid": "^3.1.0" - } - }, - "webpack-sources": { - "version": "1.1.0", - "bundled": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "which": { - "version": "1.3.1", - "bundled": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true - }, - "worker-farm": { - "version": "1.6.0", - "bundled": true, - "requires": { - "errno": "~0.1.7" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "write-file-atomic": { - "version": "1.3.4", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - }, - "ws": { - "version": "3.3.3", - "bundled": true, - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } - }, - "xml2js": { - "version": "0.4.19", - "bundled": true, - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" - } - }, - "xmlbuilder": { - "version": "9.0.7", - "bundled": true - }, - "xtend": { - "version": "4.0.1", - "bundled": true - }, - "y18n": { - "version": "4.0.0", - "bundled": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true - }, - "yargs": { - "version": "11.1.0", - "bundled": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - }, - "dependencies": { - "y18n": { - "version": "3.2.1", - "bundled": true - } - } - }, - "yargs-parser": { - "version": "9.0.2", - "bundled": true, - "requires": { - "camelcase": "^4.1.0" - } - }, - "yarn": { - "version": "1.7.0", - "bundled": true - }, - "yeoman-environment": { - "version": "2.3.0", - "bundled": true, - "requires": { - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^3.1.0", - "diff": "^3.3.1", - "escape-string-regexp": "^1.0.2", - "globby": "^8.0.1", - "grouped-queue": "^0.3.3", - "inquirer": "^5.2.0", - "is-scoped": "^1.0.0", - "lodash": "^4.17.10", - "log-symbols": "^2.1.0", - "mem-fs": "^1.1.0", - "strip-ansi": "^4.0.0", - "text-table": "^0.2.0", - "untildify": "^3.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "yeoman-generator": { - "version": "2.0.5", - "bundled": true, + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-error": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz", + "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==", + "dev": true + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime-db": { + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", + "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" + }, + "mime-types": { + "version": "2.1.19", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", + "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", + "requires": { + "mime-db": "~1.35.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, "requires": { - "async": "^2.6.0", - "chalk": "^2.3.0", - "cli-table": "^0.3.1", - "cross-spawn": "^6.0.5", - "dargs": "^5.1.0", - "dateformat": "^3.0.3", - "debug": "^3.1.0", - "detect-conflict": "^1.0.0", - "error": "^7.0.2", - "find-up": "^2.1.0", - "github-username": "^4.0.0", - "istextorbinary": "^2.2.1", - "lodash": "^4.17.10", - "make-dir": "^1.1.0", - "mem-fs-editor": "^4.0.0", - "minimist": "^1.2.0", - "pretty-bytes": "^4.0.2", - "read-chunk": "^2.1.0", - "read-pkg-up": "^3.0.0", - "rimraf": "^2.6.2", - "run-async": "^2.0.0", - "shelljs": "^0.8.0", - "text-table": "^0.2.0", - "through2": "^2.0.0", - "yeoman-environment": "^2.0.5" - }, - "dependencies": { - "async": { - "version": "2.6.1", - "bundled": true, - "requires": { - "lodash": "^4.17.10" - } - }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "shelljs": { - "version": "0.8.2", - "bundled": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - } + "is-plain-object": "^2.0.4" } - }, - "yn": { - "version": "2.0.0", - "bundled": true } } }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "ms-rest-js": { + "version": "0.16.372", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.16.372.tgz", + "integrity": "sha1-8xchzTHDXqv9piaAG/fJRSqJfJE=", + "requires": { + "@types/express": "^4.11.1", + "@types/form-data": "^2.2.1", + "@types/node": "^9.4.6", + "@types/uuid": "^3.4.3", + "axios": "^0.18.0", + "form-data": "^2.3.2", + "isomorphic-tough-cookie": "^0.0.1", + "isomorphic-xml2js": "^0.1.3", + "tslib": "^1.9.2", + "uuid": "^3.2.1" + } + }, "nan": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", @@ -9594,14 +3035,6 @@ "url": "^0.11.0", "util": "^0.10.3", "vm-browserify": "0.0.4" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } } }, "normalize-package-data": { @@ -11965,6 +5398,11 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, + "psl": { + "version": "1.1.28", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.28.tgz", + "integrity": "sha512-+AqO1Ae+N/4r7Rvchrdm432afjT9hqJRyBN3DQv9At0tPz4hIFSGKbq64fN9dVoCow4oggIIax5/iONx0r9hZw==" + }, "public-encrypt": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", @@ -11979,10 +5417,9 @@ } }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, "querystring": { "version": "0.2.0", @@ -12216,6 +5653,11 @@ "ret": "~0.1.10" } }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", @@ -12787,6 +6229,15 @@ "repeat-string": "^1.6.1" } }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -12855,9 +6306,9 @@ } }, "tsutils": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.28.0.tgz", - "integrity": "sha512-bh5nAtW0tuhvOJnx1GLRn5ScraRLICGyJV5wJhtRWOLsxW70Kk5tZtpK3O/hW6LDnqKS9mlUMPZj9fEMJ0gxqA==", + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -13030,6 +6481,14 @@ "dev": true, "requires": { "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } } }, "urix": { @@ -13077,6 +6536,11 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, "validate-npm-package-license": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", @@ -13228,6 +6692,20 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", diff --git a/package.json b/package.json index 588863ca87cc..5db84ae5e437 100644 --- a/package.json +++ b/package.json @@ -25,12 +25,12 @@ "autorest", "clientruntime" ], - "main": "./lib/msRestAzure.ts", + "main": "./dist/lib/msRestAzure.js", "browser": "./es/lib/msRestAzure.js", "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "file:../ms-rest-js", + "ms-rest-js": "~0.16.372", "tslib": "^1.9.2" }, "devDependencies": { From 12ea0df77e5c20413b8a881598982af1184d9763 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Tue, 24 Jul 2018 13:56:47 -0700 Subject: [PATCH 069/289] Rename function to getProvisioningState() --- lib/lroPollStrategy.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts index 609cd868e230..4ebb909bec5a 100644 --- a/lib/lroPollStrategy.ts +++ b/lib/lroPollStrategy.ts @@ -88,7 +88,7 @@ export abstract class LROPollStrategy { throw new Error("The response from long running operation does not contain a body."); } - this._status = getStatusFromResponseBodyProvisioningState(result.parsedBody) || "Succeeded"; + this._status = getProvisioningState(result.parsedBody) || "Succeeded"; this._response = result; this._mostRecentRequest = result.request; this._resource = getResponseBody(result); @@ -145,7 +145,7 @@ export function getDelayInSeconds(azureServiceClient: AzureServiceClient, previo return delayInSeconds; } -function getStatusFromResponseBodyProvisioningState(responseBody: any): LongRunningOperationStates | undefined { +function getProvisioningState(responseBody: any): LongRunningOperationStates | undefined { return responseBody && responseBody.properties && responseBody.properties.provisioningState; } @@ -183,11 +183,11 @@ function getStatusFromResponse(response: HttpOperationResponse, responseBody?: a break; case 201: - result = getStatusFromResponseBodyProvisioningState(responseBody) || "InProgress"; + result = getProvisioningState(responseBody) || "InProgress"; break; case 200: - result = getStatusFromResponseBodyProvisioningState(responseBody) || "Succeeded"; + result = getProvisioningState(responseBody) || "Succeeded"; break; default: From b85b03c6a83b3d2e33e785d09b89da6485ced291 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 26 Jul 2018 14:26:25 -0700 Subject: [PATCH 070/289] Added all LRO tests from specification. Now time to refactor and cleanup --- lib/azureServiceClient.ts | 14 +- lib/lroPollStrategy.ts | 169 ++- test/azureServiceClientTests.ts | 2288 +++++++++++++++++++++++++++++-- 3 files changed, 2270 insertions(+), 201 deletions(-) diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index fc6d68c96201..93b6b0c84a91 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -68,12 +68,16 @@ export class AzureServiceClient extends ServiceClient { * @returns {Promise} The final response after polling is complete. */ async getLongRunningOperationResult(initialResponse: HttpOperationResponse, options?: RequestOptionsBase): Promise { - const lroPollStrategy: LROPollStrategy = createLROPollStrategy(initialResponse, this, options); - const succeeded: boolean = await lroPollStrategy.pollUntilFinished(); - if (succeeded) { - return lroPollStrategy.getOperationResponse(); + const lroPollStrategy: LROPollStrategy | undefined = createLROPollStrategy(initialResponse, this, options); + if (!lroPollStrategy) { + return initialResponse; } else { - throw lroPollStrategy.getRestError(); + const succeeded: boolean = await lroPollStrategy.pollUntilFinished(); + if (succeeded) { + return lroPollStrategy.getOperationResponse(); + } else { + throw lroPollStrategy.getRestError(); + } } } } diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts index 4ebb909bec5a..3e01fc51a071 100644 --- a/lib/lroPollStrategy.ts +++ b/lib/lroPollStrategy.ts @@ -9,23 +9,31 @@ import { LongRunningOperationStates } from "./util/constants"; * A long-running operation polling strategy base class that other polling strategies should extend. */ export abstract class LROPollStrategy { - private readonly _initialRequestUrl: string; + protected readonly _initialRequestUrl: string; protected readonly _initialRequestMethod: HttpMethods; + protected readonly _initialRequestStatusCode: number; protected _status: LongRunningOperationStates; protected _mostRecentRequest: WebResource; protected _response: HttpOperationResponse; protected _resource: any; + protected _azureAsyncOperationHeaderValue: string | undefined; + protected _locationHeaderValue: string | undefined; constructor(initialResponse: HttpOperationResponse, private readonly _azureServiceClient: AzureServiceClient, private readonly _options?: RequestOptionsBase) { this._response = initialResponse; this._mostRecentRequest = initialResponse.request; this._initialRequestUrl = this._mostRecentRequest.url; + this._initialRequestStatusCode = initialResponse.status; this._initialRequestMethod = this._mostRecentRequest.method; this._resource = getResponseBody(initialResponse); this._status = getStatusFromResponse(initialResponse, this._resource); this._resource = getResponseBody(initialResponse); + + this._azureAsyncOperationHeaderValue = getAzureAsyncOperationHeaderValue(initialResponse); + this._locationHeaderValue = getLocationHeaderValue(initialResponse); + } public async pollUntilFinished(): Promise { @@ -35,18 +43,24 @@ export abstract class LROPollStrategy { await this.sendPollRequest(); } - return this._status === "Succeeded"; + return this.finalStatusIsAcceptable(); } protected abstract sendPollRequest(): Promise; + protected finalStatusIsAcceptable(): boolean { + return this._status === "Succeeded"; + } + protected shouldDoFinalGetResourceRequest(): boolean { - return !this._resource && (this._initialRequestMethod === "PUT" || this._initialRequestMethod === "PATCH"); + return !this._resource && (this._initialRequestMethod === "PUT" || this._initialRequestMethod === "PATCH" || this._initialRequestMethod === "POST"); } + protected abstract doFinalGetResourceRequest(): Promise; + public async getOperationResponse(): Promise { if (this.shouldDoFinalGetResourceRequest()) { - await this.updateStateFromGetResourceOperation(); + await this.doFinalGetResourceRequest(); } const result: HttpOperationResponse = { ...this._response, @@ -82,6 +96,15 @@ export abstract class LROPollStrategy { return error; } + protected updateState(url: string): Promise { + return this.getStatus(url).then(result => { + this._status = getProvisioningState(result.parsedBody) || "Succeeded"; + this._response = result; + this._mostRecentRequest = result.request; + this._resource = getResponseBody(result); + }); + } + protected updateStateFromGetResourceOperation(): Promise { return this.getStatus(this._initialRequestUrl).then(result => { if (!result.parsedBody) { @@ -112,20 +135,7 @@ export abstract class LROPollStrategy { httpRequest.headers![headerName] = customHeaders[headerName]; } } - return this._azureServiceClient.sendRequest(httpRequest).then(operationResponse => { - const statusCode: number = operationResponse.status; - const responseBody: any = operationResponse.parsedBody; - if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { - const error = new RestError(`Invalid status code with response body "${operationResponse.bodyAsText}" occurred when polling for operation status.`); - error.statusCode = statusCode; - error.request = stripRequest(operationResponse.request); - error.response = operationResponse; - error.body = responseBody; - throw error; - } - - return operationResponse; - }); + return this._azureServiceClient.sendRequest(httpRequest); } } @@ -187,7 +197,14 @@ function getStatusFromResponse(response: HttpOperationResponse, responseBody?: a break; case 200: - result = getProvisioningState(responseBody) || "Succeeded"; + const provisioningState: LongRunningOperationStates | undefined = getProvisioningState(responseBody); + if (provisioningState) { + result = provisioningState; + } else if (getAzureAsyncOperationHeaderValue(response) || getLocationHeaderValue(response)) { + result = "InProgress"; + } else { + result = "Succeeded"; + } break; default: @@ -214,20 +231,19 @@ function isFinished(status: LongRunningOperationStates): boolean { * @param azureServiceClient The AzureServiceClient that was used to send the initial request. * @param options Any options that were provided to the initial request. */ -export function createLROPollStrategy(initialResponse: HttpOperationResponse, azureServiceClient: AzureServiceClient, options?: RequestOptionsBase): LROPollStrategy { - if (checkResponseStatusCodeFailed(initialResponse)) { - throw new Error(`Unexpected polling status code from long running operation ` + - `"${initialResponse.status}" for method "${initialResponse.request.method}".`); - } - - let result: LROPollStrategy; +export function createLROPollStrategy(initialResponse: HttpOperationResponse, azureServiceClient: AzureServiceClient, options?: RequestOptionsBase): LROPollStrategy | undefined { + let result: LROPollStrategy | undefined; if (getAzureAsyncOperationHeaderValue(initialResponse)) { result = new AzureAsyncOperationLROPollStrategy(initialResponse, azureServiceClient, options); } else if (getLocationHeaderValue(initialResponse)) { result = new LocationLROPollStrategy(initialResponse, azureServiceClient, options); - } else if (initialResponse.request.method === "PUT" || isFinished(getStatusFromResponse(initialResponse))) { + } else if (initialResponse.request.method === "PUT" || initialResponse.request.method === "PATCH" || isFinished(getStatusFromResponse(initialResponse))) { result = new GetResourceLROPollStrategy(initialResponse, azureServiceClient, options); + } else if (initialResponse.status === 201 || initialResponse.status === 202) { + // If the initial response didn't contain either azure-asyncoperation or location header, then + // we won't do any polling and we'll just return the initial response. + result = undefined; } else { throw new Error("Can't determine long running operation polling strategy from initial response."); } @@ -235,22 +251,6 @@ export function createLROPollStrategy(initialResponse: HttpOperationResponse, az return result; } -/** - * Verified whether an unexpected polling status code for long running operation was received for the response of the initial request. - * @param {msRest.HttpOperationResponse} initialResponse - Response to the initial request that was sent as a part of the asynchronous operation. - */ -function checkResponseStatusCodeFailed(initialResponse: HttpOperationResponse): boolean { - const statusCode = initialResponse.status; - const method: HttpMethods = initialResponse.request.method; - if (statusCode === 200 || statusCode === 202 || - (statusCode === 201 && method === "PUT") || - (statusCode === 204 && (method === "DELETE" || method === "POST"))) { - return false; - } else { - return true; - } -} - function getLocationHeaderValue(response: HttpOperationResponse): string | undefined { return response.headers.get("location"); } @@ -259,14 +259,6 @@ function getLocationHeaderValue(response: HttpOperationResponse): string | undef * A long-running operation polling strategy that is based on the location header. */ class LocationLROPollStrategy extends LROPollStrategy { - private _locationHeaderValue?: string; - - constructor(initialResponse: HttpOperationResponse, azureServiceClient: AzureServiceClient, options?: RequestOptionsBase) { - super(initialResponse, azureServiceClient, options); - - this._locationHeaderValue = getLocationHeaderValue(initialResponse)!; - } - /** * Retrieve PUT operation status by polling from "location" header. * @param {string} method - The HTTP method. @@ -290,11 +282,46 @@ class LocationLROPollStrategy extends LROPollStrategy { (statusCode === 204 && (this._initialRequestMethod === "DELETE" || this._initialRequestMethod === "POST"))) { this._status = "Succeeded"; this._resource = getResponseBody(result); + } else if (statusCode === 404 && this._initialRequestMethod === "POST" && (this._initialRequestStatusCode === 200 || this._initialRequestStatusCode === 201 || this._initialRequestStatusCode === 202)) { + this._status = "Failed"; + this._resource = getResponseBody(result); } else { throw new Error(`The response with status code ${statusCode} from polling for long running operation url "${this._locationHeaderValue}" is not valid.`); } }); } + + protected finalStatusIsAcceptable(): boolean { + return super.finalStatusIsAcceptable() || + (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 200 && this._response.status === 404) || + (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 201 && this._response.status === 404) || + (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 202 && this._response.status === 404); + } + + protected shouldDoFinalGetResourceRequest(): boolean { + let result: boolean; + if ((this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 200 && this._response.status === 404) || + (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 201 && this._response.status === 404) || + (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 202 && this._response.status === 404)) { + result = false; + } else { + result = super.shouldDoFinalGetResourceRequest() || + (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 201); + } + return result; + } + + protected doFinalGetResourceRequest(): Promise { + let getResourceRequestUrl: string; + if ((this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 200) || + (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 201) || + (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 202)) { + getResourceRequestUrl = this._locationHeaderValue!; + } else { + getResourceRequestUrl = this._initialRequestUrl; + } + return this.updateState(getResourceRequestUrl); + } } function getAzureAsyncOperationHeaderValue(response: HttpOperationResponse): string | undefined { @@ -305,14 +332,6 @@ function getAzureAsyncOperationHeaderValue(response: HttpOperationResponse): str * A long-running operation polling strategy that is based on the azure-asyncoperation header. */ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { - private _azureAsyncOperationHeaderValue: string; - - public constructor(initialResponse: HttpOperationResponse, azureServiceClient: AzureServiceClient, options?: RequestOptionsBase) { - super(initialResponse, azureServiceClient, options); - - this._azureAsyncOperationHeaderValue = getAzureAsyncOperationHeaderValue(initialResponse)!; - } - /** * Retrieve operation status by polling from "azure-asyncoperation" header. * @param {PollingState} pollingState - The object to persist current operation state. @@ -340,7 +359,33 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { } protected shouldDoFinalGetResourceRequest(): boolean { - return this._initialRequestMethod === "PUT" || this._initialRequestMethod === "PATCH"; + return this._initialRequestMethod === "PUT" || + this._initialRequestMethod === "PATCH" || + (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 200 && !!this._locationHeaderValue) || + (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 201 && !!this._locationHeaderValue) || + (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 202 && !!this._locationHeaderValue) || + (this._initialRequestMethod === "DELETE" && this._initialRequestStatusCode === 200 && !!this._locationHeaderValue) || + (this._initialRequestMethod === "DELETE" && this._initialRequestStatusCode === 202 && !!this._locationHeaderValue); + } + + protected doFinalGetResourceRequest(): Promise { + let getResourceRequestUrl: string; + if ((this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 200 && this._locationHeaderValue) || + (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 201 && this._locationHeaderValue) || + (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 202 && this._locationHeaderValue) || + (this._initialRequestMethod === "DELETE" && this._initialRequestStatusCode === 200 && !!this._locationHeaderValue) || + (this._initialRequestMethod === "DELETE" && this._initialRequestStatusCode === 202 && !!this._locationHeaderValue)) { + getResourceRequestUrl = this._locationHeaderValue; + } else { + getResourceRequestUrl = this._initialRequestUrl; + } + return this.updateState(getResourceRequestUrl); + } + + protected finalStatusIsAcceptable(): boolean { + return super.finalStatusIsAcceptable() || + (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 200) || + (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 201); } } @@ -351,4 +396,8 @@ class GetResourceLROPollStrategy extends LROPollStrategy { protected sendPollRequest(): Promise { return this.updateStateFromGetResourceOperation(); } + + protected doFinalGetResourceRequest(): Promise { + return this.updateStateFromGetResourceOperation(); + } } \ No newline at end of file diff --git a/test/azureServiceClientTests.ts b/test/azureServiceClientTests.ts index 4b7c97246f1c..e4ded1af728a 100644 --- a/test/azureServiceClientTests.ts +++ b/test/azureServiceClientTests.ts @@ -30,7 +30,2158 @@ describe("AzureServiceClient", () => { }); }); - describe("sendLongRunningRequest()", () => { + describe("sendLongRunningRequest(),", () => { + describe("Method: PUT,", () => { + describe("Status: 201,", () => { + it("Headers: Azure-AsyncOperation", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Headers: Azure-AsyncOperation and Location", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2", + "location": "https://fake.azure.com/longRunningOperation3" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + describe("Headers: Location,", () => { + it("Poll: 200 with body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + b: "B" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"b":"B"}`); + assert.deepEqual(httpResponse.parsedBody, { b: "B" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll: 200 no body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 202, 200 with body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 202 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll: 201 with body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 201, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 201); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll: 201 no body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 201 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 204", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 204 + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`The response with status code 204 from polling for long running operation url "https://fake.azure.com/longRunningOperation2" is not valid.`)); + }); + }); + }); + + describe("Status: 202,", () => { + it("Headers: Azure-AsyncOperation", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Headers: Azure-AsyncOperation and Location", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2", + "location": "https://fake.azure.com/longRunningOperation3" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + describe("Headers: Location,", () => { + it("Poll: 200 with body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + b: "B" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"b":"B"}`); + assert.deepEqual(httpResponse.parsedBody, { b: "B" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll: 200 no body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 202, 200 with body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 202 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll: 201 with body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 201, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 201); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll: 201 no body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 201 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 204", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 204 + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`The response with status code 204 from polling for long running operation url "https://fake.azure.com/longRunningOperation2" is not valid.`)); + }); + }); + + describe("Headers: None,", () => { + it("Poll: 200 with body without provisioning state", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202 + }, + { + status: 200, + body: { + b: "B" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"b":"B"}`); + assert.deepEqual(httpResponse.parsedBody, { b: "B" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 200 with body with provisioning state", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202 + }, + { + status: 200, + body: { + provisioningState: "Succeeded", + b: "B" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"provisioningState":"Succeeded","b":"B"}`); + assert.deepEqual(httpResponse.parsedBody, { provisioningState: "Succeeded", b: "B" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 201 with body with provisioning state", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202 + }, + { + status: 201, + body: { + provisioningState: "Succeeded", + b: "B" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 201); + assert.strictEqual(httpResponse.bodyAsText, `{"provisioningState":"Succeeded","b":"B"}`); + assert.deepEqual(httpResponse.parsedBody, { provisioningState: "Succeeded", b: "B" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 202 with body with provisioning state", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202 + }, + { + status: 202, + body: { + provisioningState: "Succeeded", + b: "B" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 202); + assert.strictEqual(httpResponse.bodyAsText, `{"provisioningState":"Succeeded","b":"B"}`); + assert.deepEqual(httpResponse.parsedBody, { provisioningState: "Succeeded", b: "B" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 201 no body, 200 no body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202 + }, + { + status: 200 + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error("The response from long running operation does not contain a body.")); + }); + }); + }); + + describe("Status: 200,", () => { + it("Headers: Azure-AsyncOperation", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Headers: Azure-AsyncOperation and Location", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2", + "location": "https://fake.azure.com/longRunningOperation3" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + describe("Headers: Location,", () => { + it("Poll: 200 with body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + b: "B" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"b":"B"}`); + assert.deepEqual(httpResponse.parsedBody, { b: "B" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll: 200 no body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 202, 200 with body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 202 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll: 201 with body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 201, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 201); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll: 201 no body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 201 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 204", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 204 + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`The response with status code 204 from polling for long running operation url "https://fake.azure.com/longRunningOperation2" is not valid.`)); + }); + }); + }); + }); + + describe("Method: PATCH,", () => { + describe("Status: 201,", () => { + it("Headers: Azure-AsyncOperation", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Headers: Azure-AsyncOperation and Location", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2", + "location": "https://fake.azure.com/longRunningOperation3" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + describe("Headers: Location,", () => { + it("Poll: 200 with body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + b: "B" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"b":"B"}`); + assert.deepEqual(httpResponse.parsedBody, { b: "B" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll: 200 no body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 202, 200 with body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 202 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll: 201 with body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 201, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 201); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll: 201 no body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 201 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 204", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 204 + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`The response with status code 204 from polling for long running operation url "https://fake.azure.com/longRunningOperation2" is not valid.`)); + }); + }); + }); + + describe("Status: 202,", () => { + it("Headers: Azure-AsyncOperation", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Headers: Azure-AsyncOperation and Location", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2", + "location": "https://fake.azure.com/longRunningOperation3" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + describe("Headers: Location,", () => { + it("Poll: 200 with body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + b: "B" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"b":"B"}`); + assert.deepEqual(httpResponse.parsedBody, { b: "B" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll: 200 no body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 202, 200 with body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 202 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll: 201 with body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 201, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 201); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll: 201 no body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 201 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 204", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 204 + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`The response with status code 204 from polling for long running operation url "https://fake.azure.com/longRunningOperation2" is not valid.`)); + }); + }); + + describe("Headers: None,", () => { + it("Poll: 200 with body without provisioning state", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202 + }, + { + status: 200, + body: { + b: "B" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"b":"B"}`); + assert.deepEqual(httpResponse.parsedBody, { b: "B" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 200 with body with provisioning state", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202 + }, + { + status: 200, + body: { + provisioningState: "Succeeded", + b: "B" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"provisioningState":"Succeeded","b":"B"}`); + assert.deepEqual(httpResponse.parsedBody, { provisioningState: "Succeeded", b: "B" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 201 with body with provisioning state", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202 + }, + { + status: 201, + body: { + provisioningState: "Succeeded", + b: "B" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 201); + assert.strictEqual(httpResponse.bodyAsText, `{"provisioningState":"Succeeded","b":"B"}`); + assert.deepEqual(httpResponse.parsedBody, { provisioningState: "Succeeded", b: "B" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 202 with body with provisioning state", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202 + }, + { + status: 202, + body: { + provisioningState: "Succeeded", + b: "B" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 202); + assert.strictEqual(httpResponse.bodyAsText, `{"provisioningState":"Succeeded","b":"B"}`); + assert.deepEqual(httpResponse.parsedBody, { provisioningState: "Succeeded", b: "B" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 201 no body, 200 no body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202 + }, + { + status: 200 + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error("The response from long running operation does not contain a body.")); + }); + }); + }); + + describe("Status: 200,", () => { + it("Headers: Azure-AsyncOperation", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Headers: Azure-AsyncOperation and Location", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2", + "location": "https://fake.azure.com/longRunningOperation3" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + describe("Headers: Location,", () => { + it("Poll: 200 with body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + b: "B" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"b":"B"}`); + assert.deepEqual(httpResponse.parsedBody, { b: "B" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll: 200 no body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 202, 200 with body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 202 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll: 201 with body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 201, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 201); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll: 201 no body", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 201 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + + it("Poll: 204", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 204 + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); + await msAssert.throwsAsync( + serviceClient.sendLongRunningRequest(httpRequest), + new Error(`The response with status code 204 from polling for long running operation url "https://fake.azure.com/longRunningOperation2" is not valid.`)); + }); + }); + }); + }); + + describe("Method: POST,", () => { + describe("Status: 200,", () => { + describe("Headers: Azure-AsyncOperation", () => { + it("Final Status: Succeeded", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"status":"Succeeded"}`); + assert.deepEqual(httpResponse.parsedBody, { status: "Succeeded" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Final Status: Failed", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Failed" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"status":"Failed"}`); + assert.deepEqual(httpResponse.parsedBody, { status: "Failed" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Final Status: Canceled", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Canceled" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"status":"Canceled"}`); + assert.deepEqual(httpResponse.parsedBody, { status: "Canceled" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + }); + + it("Headers: Azure-AsyncOperation and Location", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2", + "location": "https://fake.azure.com/longRunningOperation3" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation3"); + }); + + describe("Headers: Location", () => { + it("Poll Status: 200", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll Status: 404", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 404 + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 404); + assert.strictEqual(httpResponse.bodyAsText, undefined); + assert.deepEqual(httpResponse.parsedBody, undefined); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + }); + }); + + describe("Status: 201,", () => { + describe("Headers: Azure-AsyncOperation", () => { + it("Final Status: Succeeded", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"status":"Succeeded"}`); + assert.deepEqual(httpResponse.parsedBody, { status: "Succeeded" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Final Status: Failed", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Failed" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"status":"Failed"}`); + assert.deepEqual(httpResponse.parsedBody, { status: "Failed" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Final Status: Canceled", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Canceled" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"status":"Canceled"}`); + assert.deepEqual(httpResponse.parsedBody, { status: "Canceled" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + }); + + it("Headers: Azure-AsyncOperation and Location", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2", + "location": "https://fake.azure.com/longRunningOperation3" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation3"); + }); + + describe("Headers: Location", () => { + it("Poll Status: 200", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll Status: 404", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 404 + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 404); + assert.strictEqual(httpResponse.bodyAsText, undefined); + assert.deepEqual(httpResponse.parsedBody, undefined); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + }); + }); + + describe("Status: 202,", () => { + describe("Headers: Azure-AsyncOperation", () => { + it("Final Status: Succeeded", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"status":"Succeeded"}`); + assert.deepEqual(httpResponse.parsedBody, { status: "Succeeded" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Final Status: Failed", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Failed" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const error: RestError = await msAssert.throwsAsync(serviceClient.sendLongRunningRequest(httpRequest)); + assert.strictEqual(error.message, `Long running operation failed with status: "Failed".`); + }); + + it("Final Status: Canceled", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Canceled" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const error: RestError = await msAssert.throwsAsync(serviceClient.sendLongRunningRequest(httpRequest)); + assert.strictEqual(error.message, `Long running operation failed with status: "Canceled".`); + }); + }); + + it("Headers: Azure-AsyncOperation and Location", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2", + "location": "https://fake.azure.com/longRunningOperation3" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation3"); + }); + + describe("Headers: Location", () => { + it("Poll Status: 200", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200 + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Poll Status: 404", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 404 + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 404); + assert.strictEqual(httpResponse.bodyAsText, undefined); + assert.deepEqual(httpResponse.parsedBody, undefined); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + }); + + it("Headers: None", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202 + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 202); + assert.strictEqual(httpResponse.bodyAsText, undefined); + assert.deepEqual(httpResponse.parsedBody, undefined); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + }); + }); + + describe("Method: DELETE,", () => { + describe("Status: 200,", () => { + it("Headers: Azure-AsyncOperation", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"status":"Succeeded"}`); + assert.deepEqual(httpResponse.parsedBody, { status: "Succeeded" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + describe("Headers: Azure-AsyncOperation and Location,", () => { + it("Final Get Resource: 200", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2", + "location": "https://fake.azure.com/longRunningOperation3" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation3"); + }); + + it("Final Get Resource: 404", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2", + "location": "https://fake.azure.com/longRunningOperation3" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 404 + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 404); + assert.strictEqual(httpResponse.bodyAsText, undefined); + assert.deepEqual(httpResponse.parsedBody, undefined); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation3"); + }); + }); + + it("Headers: Location", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200 + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, undefined); + assert.deepEqual(httpResponse.parsedBody, undefined); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Headers: None", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 200 + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, undefined); + assert.deepEqual(httpResponse.parsedBody, undefined); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + }); + + describe("Status: 201,", () => { + it("Headers: None", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201 + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 201); + assert.strictEqual(httpResponse.bodyAsText, undefined); + assert.deepEqual(httpResponse.parsedBody, undefined); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + }); + + describe("Status: 202,", () => { + it("Headers: Azure-AsyncOperation", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"status":"Succeeded"}`); + assert.deepEqual(httpResponse.parsedBody, { status: "Succeeded" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + describe("Headers: Azure-AsyncOperation and Location,", () => { + it("Final Get Resource: 200", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2", + "location": "https://fake.azure.com/longRunningOperation3" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); + assert.deepEqual(httpResponse.parsedBody, { a: "A" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation3"); + }); + + it("Final Get Resource: 404", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2", + "location": "https://fake.azure.com/longRunningOperation3" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 404 + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 404); + assert.strictEqual(httpResponse.bodyAsText, undefined); + assert.deepEqual(httpResponse.parsedBody, undefined); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation3"); + }); + }); + + it("Headers: Location", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200 + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 200); + assert.strictEqual(httpResponse.bodyAsText, undefined); + assert.deepEqual(httpResponse.parsedBody, undefined); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("Headers: None", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202 + } + ]); + const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); + const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); + assert.strictEqual(httpResponse.status, 202); + assert.strictEqual(httpResponse.bodyAsText, undefined); + assert.deepEqual(httpResponse.parsedBody, undefined); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); + }); + }); + }); + it("with 200 status, GET method, and undefined response body", async () => { const serviceClient: AzureServiceClient = createServiceClient([{ status: 200 }]); const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "GET"); @@ -102,15 +2253,6 @@ describe("AzureServiceClient", () => { assert.deepEqual(httpResponse.parsedBody, {}); }); - it("with 200 status, POST method, and undefined response body", async () => { - const serviceClient: AzureServiceClient = createServiceClient([{ status: 200 }]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); - const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); - assert.strictEqual(httpResponse.status, 200); - assert.strictEqual(httpResponse.bodyAsText, undefined); - assert.strictEqual(httpResponse.parsedBody, undefined); - }); - it("with 200 status, DELETE method, and undefined response body", async () => { const serviceClient: AzureServiceClient = createServiceClient([{ status: 200 }]); const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); @@ -120,22 +2262,6 @@ describe("AzureServiceClient", () => { assert.strictEqual(httpResponse.parsedBody, undefined); }); - it("with 201 status and GET method", async () => { - const serviceClient: AzureServiceClient = createServiceClient([{ status: 201 }]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "GET"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error(`Unexpected polling status code from long running operation "201" for method "GET".`)); - }); - - it("with 201 status and PATCH method", async () => { - const serviceClient: AzureServiceClient = createServiceClient([{ status: 201 }]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error(`Unexpected polling status code from long running operation "201" for method "PATCH".`)); - }); - it("with 201 status, PUT method, and undefined final response body", async () => { const serviceClient: AzureServiceClient = createServiceClient([ { status: 201 }, @@ -188,38 +2314,6 @@ describe("AzureServiceClient", () => { assert.strictEqual(error.code, undefined); }); - it("with 201 status and POST method", async () => { - const serviceClient: AzureServiceClient = createServiceClient([{ status: 201 }]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error(`Unexpected polling status code from long running operation "201" for method "POST".`)); - }); - - it("with 201 status and DELETE method", async () => { - const serviceClient: AzureServiceClient = createServiceClient([{ status: 201 }]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error(`Unexpected polling status code from long running operation "201" for method "DELETE".`)); - }); - - it("with 202 status and GET method", async () => { - const serviceClient: AzureServiceClient = createServiceClient([{ status: 202 }]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "GET"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error(`Can't determine long running operation polling strategy from initial response.`)); - }); - - it("with 202 status and PATCH method", async () => { - const serviceClient: AzureServiceClient = createServiceClient([{ status: 202 }]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error(`Can't determine long running operation polling strategy from initial response.`)); - }); - it("with 202 status, PUT method, and undefined final response body", async () => { const serviceClient: AzureServiceClient = createServiceClient([ { status: 202 }, @@ -231,14 +2325,6 @@ describe("AzureServiceClient", () => { new Error("The response from long running operation does not contain a body.")); }); - it("with 202 status and POST method", async () => { - const serviceClient: AzureServiceClient = createServiceClient([{ status: 202 }]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error(`Can't determine long running operation polling strategy from initial response.`)); - }); - it("with 202 status, POST method, azure-asyncoperation header, and undefined final response body", async () => { const serviceClient: AzureServiceClient = createServiceClient([ { @@ -463,76 +2549,6 @@ describe("AzureServiceClient", () => { serviceClient.sendLongRunningRequest(httpRequest), new Error(`The response with status code 204 from polling for long running operation url "https://fake.azure.com/longRunningOperation2" is not valid.`)); }); - - it("with 202 status, PUT method, location header, and 404 poll", async () => { - const serviceClient: AzureServiceClient = createServiceClient([ - { - status: 202, - headers: new HttpHeaders({ - "location": "https://fake.azure.com/longRunningOperation2" - }) - }, - { - status: 404, - } - ]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); - const error: RestError = await msAssert.throwsAsync(serviceClient.sendLongRunningRequest(httpRequest)); - assert.strictEqual(error.message, `Invalid status code with response body "undefined" occurred when polling for operation status.`); - assert.strictEqual(error.statusCode, 404); - assert.strictEqual(error.request!.headers.contains("authorization"), false); - assert.strictEqual(error.body, undefined); - }); - - it("with 202 status and DELETE method", async () => { - const serviceClient: AzureServiceClient = createServiceClient([{ status: 202 }]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error(`Can't determine long running operation polling strategy from initial response.`)); - }); - - it("with 204 status and GET method", async () => { - const serviceClient: AzureServiceClient = createServiceClient([{ status: 204 }]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "GET"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error(`Unexpected polling status code from long running operation "204" for method "GET".`)); - }); - - it("with 204 status and PATCH method", async () => { - const serviceClient: AzureServiceClient = createServiceClient([{ status: 204 }]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error(`Unexpected polling status code from long running operation "204" for method "PATCH".`)); - }); - - it("with 204 status and PUT method", async () => { - const serviceClient: AzureServiceClient = createServiceClient([{ status: 204 }]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error(`Unexpected polling status code from long running operation "204" for method "PUT".`)); - }); - - it("with 204 status and DELETE method", async () => { - const serviceClient: AzureServiceClient = createServiceClient([{ status: 204 }]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); - const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); - assert.strictEqual(httpResponse.status, 204); - assert.strictEqual(httpResponse.bodyAsText, undefined); - assert.strictEqual(httpResponse.parsedBody, undefined); - }); - - it("with 204 status and POST method", async () => { - const serviceClient: AzureServiceClient = createServiceClient([{ status: 204 }]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); - const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); - assert.strictEqual(httpResponse.status, 204); - assert.strictEqual(httpResponse.bodyAsText, undefined); - assert.strictEqual(httpResponse.parsedBody, undefined); - }); }); describe("updateOptionsWithDefaultValues()", () => { From f1ffeacda426de19bf5f89e04ce036a47366cb95 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 26 Jul 2018 14:50:28 -0700 Subject: [PATCH 071/289] Refactor LRO polling strategies --- lib/lroPollStrategy.ts | 107 +++++----- test/azureServiceClientTests.ts | 350 -------------------------------- 2 files changed, 55 insertions(+), 402 deletions(-) diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts index 3e01fc51a071..434945f78279 100644 --- a/lib/lroPollStrategy.ts +++ b/lib/lroPollStrategy.ts @@ -48,9 +48,7 @@ export abstract class LROPollStrategy { protected abstract sendPollRequest(): Promise; - protected finalStatusIsAcceptable(): boolean { - return this._status === "Succeeded"; - } + protected abstract finalStatusIsAcceptable(): boolean; protected shouldDoFinalGetResourceRequest(): boolean { return !this._resource && (this._initialRequestMethod === "PUT" || this._initialRequestMethod === "PATCH" || this._initialRequestMethod === "POST"); @@ -105,19 +103,6 @@ export abstract class LROPollStrategy { }); } - protected updateStateFromGetResourceOperation(): Promise { - return this.getStatus(this._initialRequestUrl).then(result => { - if (!result.parsedBody) { - throw new Error("The response from long running operation does not contain a body."); - } - - this._status = getProvisioningState(result.parsedBody) || "Succeeded"; - this._response = result; - this._mostRecentRequest = result.request; - this._resource = getResponseBody(result); - }); - } - /** * Retrieves operation status by querying the operation URL. * @param {string} statusUrl URL used to poll operation result. @@ -238,11 +223,9 @@ export function createLROPollStrategy(initialResponse: HttpOperationResponse, az result = new AzureAsyncOperationLROPollStrategy(initialResponse, azureServiceClient, options); } else if (getLocationHeaderValue(initialResponse)) { result = new LocationLROPollStrategy(initialResponse, azureServiceClient, options); - } else if (initialResponse.request.method === "PUT" || initialResponse.request.method === "PATCH" || isFinished(getStatusFromResponse(initialResponse))) { + } else if (initialResponse.request.method === "PUT" || initialResponse.request.method === "PATCH") { result = new GetResourceLROPollStrategy(initialResponse, azureServiceClient, options); - } else if (initialResponse.status === 201 || initialResponse.status === 202) { - // If the initial response didn't contain either azure-asyncoperation or location header, then - // we won't do any polling and we'll just return the initial response. + } else if (initialResponse.status === 201 || initialResponse.status === 202 || isFinished(getStatusFromResponse(initialResponse))) { result = undefined; } else { throw new Error("Can't determine long running operation polling strategy from initial response."); @@ -282,7 +265,8 @@ class LocationLROPollStrategy extends LROPollStrategy { (statusCode === 204 && (this._initialRequestMethod === "DELETE" || this._initialRequestMethod === "POST"))) { this._status = "Succeeded"; this._resource = getResponseBody(result); - } else if (statusCode === 404 && this._initialRequestMethod === "POST" && (this._initialRequestStatusCode === 200 || this._initialRequestStatusCode === 201 || this._initialRequestStatusCode === 202)) { + } else if (statusCode === 404 && this._initialRequestMethod === "POST" && + (this._initialRequestStatusCode === 200 || this._initialRequestStatusCode === 201 || this._initialRequestStatusCode === 202)) { this._status = "Failed"; this._resource = getResponseBody(result); } else { @@ -292,17 +276,19 @@ class LocationLROPollStrategy extends LROPollStrategy { } protected finalStatusIsAcceptable(): boolean { - return super.finalStatusIsAcceptable() || - (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 200 && this._response.status === 404) || - (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 201 && this._response.status === 404) || - (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 202 && this._response.status === 404); + return this._status === "Succeeded" || + (this._initialRequestMethod === "POST" && this._response.status === 404 && + (this._initialRequestStatusCode === 200 || + this._initialRequestStatusCode === 201 || + this._initialRequestStatusCode === 202)); } protected shouldDoFinalGetResourceRequest(): boolean { let result: boolean; - if ((this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 200 && this._response.status === 404) || - (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 201 && this._response.status === 404) || - (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 202 && this._response.status === 404)) { + if (this._initialRequestMethod === "POST" && this._response.status === 404 && + (this._initialRequestStatusCode === 200 || + this._initialRequestStatusCode === 201 || + this._initialRequestStatusCode === 202)) { result = false; } else { result = super.shouldDoFinalGetResourceRequest() || @@ -313,9 +299,10 @@ class LocationLROPollStrategy extends LROPollStrategy { protected doFinalGetResourceRequest(): Promise { let getResourceRequestUrl: string; - if ((this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 200) || - (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 201) || - (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 202)) { + if (this._initialRequestMethod === "POST" && + (this._initialRequestStatusCode === 200 || + this._initialRequestStatusCode === 201 || + this._initialRequestStatusCode === 202)) { getResourceRequestUrl = this._locationHeaderValue!; } else { getResourceRequestUrl = this._initialRequestUrl; @@ -359,33 +346,36 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { } protected shouldDoFinalGetResourceRequest(): boolean { - return this._initialRequestMethod === "PUT" || - this._initialRequestMethod === "PATCH" || - (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 200 && !!this._locationHeaderValue) || - (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 201 && !!this._locationHeaderValue) || - (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 202 && !!this._locationHeaderValue) || - (this._initialRequestMethod === "DELETE" && this._initialRequestStatusCode === 200 && !!this._locationHeaderValue) || - (this._initialRequestMethod === "DELETE" && this._initialRequestStatusCode === 202 && !!this._locationHeaderValue); + let result = false; + if (this._initialRequestMethod === "PUT" || this._initialRequestMethod === "PATCH") { + result = true; + } else { + if (this._locationHeaderValue) { + if (this._initialRequestMethod === "POST") { + result = this._initialRequestStatusCode === 200 || this._initialRequestStatusCode === 201 || this._initialRequestStatusCode === 202; + } else if (this._initialRequestMethod === "DELETE") { + result = this._initialRequestStatusCode === 200 || this._initialRequestStatusCode === 202; + } + } + } + return result; } protected doFinalGetResourceRequest(): Promise { - let getResourceRequestUrl: string; - if ((this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 200 && this._locationHeaderValue) || - (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 201 && this._locationHeaderValue) || - (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 202 && this._locationHeaderValue) || - (this._initialRequestMethod === "DELETE" && this._initialRequestStatusCode === 200 && !!this._locationHeaderValue) || - (this._initialRequestMethod === "DELETE" && this._initialRequestStatusCode === 202 && !!this._locationHeaderValue)) { - getResourceRequestUrl = this._locationHeaderValue; - } else { - getResourceRequestUrl = this._initialRequestUrl; + let getResourceRequestUrl: string = this._initialRequestUrl; + if (this._locationHeaderValue) { + if (this._initialRequestMethod === "POST" && (this._initialRequestStatusCode === 200 || this._initialRequestStatusCode === 201 || this._initialRequestStatusCode === 202)) { + getResourceRequestUrl = this._locationHeaderValue; + } else if (this._initialRequestMethod === "DELETE" && (this._initialRequestStatusCode === 200 || this._initialRequestStatusCode === 202)) { + getResourceRequestUrl = this._locationHeaderValue; + } } return this.updateState(getResourceRequestUrl); } protected finalStatusIsAcceptable(): boolean { - return super.finalStatusIsAcceptable() || - (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 200) || - (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 201); + return this._status === "Succeeded" || + (this._initialRequestMethod === "POST" && (this._initialRequestStatusCode === 200 || this._initialRequestStatusCode === 201)); } } @@ -394,10 +384,23 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { */ class GetResourceLROPollStrategy extends LROPollStrategy { protected sendPollRequest(): Promise { - return this.updateStateFromGetResourceOperation(); + return this.getStatus(this._initialRequestUrl).then(result => { + if (!result.parsedBody) { + throw new Error("The response from long running operation does not contain a body."); + } + + this._status = getProvisioningState(result.parsedBody) || "Succeeded"; + this._response = result; + this._mostRecentRequest = result.request; + this._resource = getResponseBody(result); + }); + } + + protected finalStatusIsAcceptable(): boolean { + return this._status === "Succeeded"; } protected doFinalGetResourceRequest(): Promise { - return this.updateStateFromGetResourceOperation(); + return this.sendPollRequest(); } } \ No newline at end of file diff --git a/test/azureServiceClientTests.ts b/test/azureServiceClientTests.ts index e4ded1af728a..c46a697c68f2 100644 --- a/test/azureServiceClientTests.ts +++ b/test/azureServiceClientTests.ts @@ -2182,109 +2182,6 @@ describe("AzureServiceClient", () => { }); }); - it("with 200 status, GET method, and undefined response body", async () => { - const serviceClient: AzureServiceClient = createServiceClient([{ status: 200 }]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "GET"); - const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); - assert.strictEqual(httpResponse.status, 200); - assert.strictEqual(httpResponse.bodyAsText, undefined); - assert.strictEqual(httpResponse.parsedBody, undefined); - }); - - it("with 200 status, GET method, and XML response body", async () => { - const serviceClient: AzureServiceClient = createServiceClient([ - { - status: 200, - body: `hello` - } - ]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "GET"); - const error: RestError = await msAssert.throwsAsync(serviceClient.sendLongRunningRequest(httpRequest)); - assert.strictEqual(error.message, `Error "SyntaxError: Unexpected token < in JSON at position 0" occurred while parsing the response body - hello.`); - assert.strictEqual(error.request!.headers.get("authorization"), "Bearer my-fake-token"); - }); - - it("with 200 status, GET method, and {} response body", async () => { - const serviceClient: AzureServiceClient = createServiceClient([{ status: 200, body: {} }]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "GET"); - const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); - assert.strictEqual(httpResponse.status, 200); - assert.strictEqual(httpResponse.bodyAsText, "{}"); - assert.deepEqual(httpResponse.parsedBody, {}); - }); - - it("with 200 status, PATCH method, and undefined response body", async () => { - const serviceClient: AzureServiceClient = createServiceClient([ - { status: 200 }, - { status: 200 } - ]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error("The response from long running operation does not contain a body.")); - }); - - it("with 200 status, PATCH method, and {} response body", async () => { - const serviceClient: AzureServiceClient = createServiceClient([{ status: 200, body: {} }]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PATCH"); - const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); - assert.strictEqual(httpResponse.status, 200); - assert.strictEqual(httpResponse.bodyAsText, "{}"); - assert.deepEqual(httpResponse.parsedBody, {}); - }); - - it("with 200 status, PUT method, and undefined response body", async () => { - const serviceClient: AzureServiceClient = createServiceClient([ - { status: 200 }, - { status: 200 } - ]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error("The response from long running operation does not contain a body.")); - }); - - it("with 200 status, PUT method, and {} response body", async () => { - const serviceClient: AzureServiceClient = createServiceClient([{ status: 200, body: {} }]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); - const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); - assert.strictEqual(httpResponse.status, 200); - assert.strictEqual(httpResponse.bodyAsText, "{}"); - assert.deepEqual(httpResponse.parsedBody, {}); - }); - - it("with 200 status, DELETE method, and undefined response body", async () => { - const serviceClient: AzureServiceClient = createServiceClient([{ status: 200 }]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); - const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); - assert.strictEqual(httpResponse.status, 200); - assert.strictEqual(httpResponse.bodyAsText, undefined); - assert.strictEqual(httpResponse.parsedBody, undefined); - }); - - it("with 201 status, PUT method, and undefined final response body", async () => { - const serviceClient: AzureServiceClient = createServiceClient([ - { status: 201 }, - { status: 200 } - ]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error("The response from long running operation does not contain a body.")); - }); - - it("with 201 status, PUT method, and {} final response body", async () => { - const serviceClient: AzureServiceClient = createServiceClient([ - { status: 201 }, - { status: 200, body: {} } - ]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); - const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); - assert.strictEqual(httpResponse.status, 200); - assert.strictEqual(httpResponse.bodyAsText, `{}`); - assert.deepEqual(httpResponse.parsedBody, {}); - }); - it("with 201 status, PUT method, {} final response body, and custom headers", async () => { const serviceClient: AzureServiceClient = createServiceClient([ { status: 201 }, @@ -2302,253 +2199,6 @@ describe("AzureServiceClient", () => { assert.deepEqual(httpResponse.parsedBody, {}); assert.strictEqual(httpResponse.request.headers.get("a"), "1"); }); - - it(`with 201 status, PUT method, and { properties: { provisioningState: "Failed" } } final response body`, async () => { - const serviceClient: AzureServiceClient = createServiceClient([ - { status: 201 }, - { status: 200, body: { properties: { provisioningState: "Failed" } } } - ]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); - const error: RestError = await msAssert.throwsAsync(serviceClient.sendLongRunningRequest(httpRequest)); - assert.strictEqual(error.message, `Long running operation failed with status: "Failed".`); - assert.strictEqual(error.code, undefined); - }); - - it("with 202 status, PUT method, and undefined final response body", async () => { - const serviceClient: AzureServiceClient = createServiceClient([ - { status: 202 }, - { status: 200 } - ]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error("The response from long running operation does not contain a body.")); - }); - - it("with 202 status, POST method, azure-asyncoperation header, and undefined final response body", async () => { - const serviceClient: AzureServiceClient = createServiceClient([ - { - status: 202, - headers: new HttpHeaders({ - "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" - }) - }, - { status: 200 } - ]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error(`The response from long running operation does not contain a body.`)); - }); - - it("with 202 status, POST method, azure-asyncoperation header, and {} final response body", async () => { - const serviceClient: AzureServiceClient = createServiceClient([ - { - status: 202, - headers: new HttpHeaders({ - "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" - }) - }, - { - status: 200, - body: {} - } - ]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error(`The response "{}" from long running operation does not contain the status property.`)); - }); - - it(`with 202 status, POST method, azure-asyncoperation header, and { status: "SPAM" } final response body`, async () => { - const serviceClient: AzureServiceClient = createServiceClient([ - { - status: 202, - headers: new HttpHeaders({ - "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" - }) - }, - { - status: 200, - body: { - status: "Succeeded" - } - } - ]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); - const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); - assert.strictEqual(httpResponse.status, 200); - assert.strictEqual(httpResponse.bodyAsText, `{"status":"Succeeded"}`); - assert.deepEqual(httpResponse.parsedBody, { status: "Succeeded" }); - assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); - }); - - it("with 202 status, DELETE method, azure-asyncoperation header, and undefined final response body", async () => { - const serviceClient: AzureServiceClient = createServiceClient([ - { - status: 202, - headers: new HttpHeaders({ - "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" - }) - }, - { status: 200 } - ]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error(`The response from long running operation does not contain a body.`)); - }); - - it("with 202 status, DELETE method, azure-asyncoperation header, and {} final response body", async () => { - const serviceClient: AzureServiceClient = createServiceClient([ - { - status: 202, - headers: new HttpHeaders({ - "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" - }) - }, - { - status: 200, - body: {} - } - ]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error(`The response "{}" from long running operation does not contain the status property.`)); - }); - - it(`with 202 status, DELETE method, azure-asyncoperation header, and { status: "SPAM" } final response body`, async () => { - const serviceClient: AzureServiceClient = createServiceClient([ - { - status: 202, - headers: new HttpHeaders({ - "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" - }) - }, - { - status: 200, - body: { - status: "Succeeded" - } - } - ]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "DELETE"); - const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); - assert.strictEqual(httpResponse.status, 200); - assert.strictEqual(httpResponse.bodyAsText, `{"status":"Succeeded"}`); - assert.deepEqual(httpResponse.parsedBody, { status: "Succeeded" }); - assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); - }); - - it(`with 202 status, PUT method, azure-asyncoperation header, and { a: 2 } final response body`, async () => { - const serviceClient: AzureServiceClient = createServiceClient([ - { - status: 202, - headers: new HttpHeaders({ - "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" - }) - }, - { - status: 200, - body: { - status: "Succeeded", - a: 1 - } - }, - { - status: 200, - body: { a: 2 } - } - ]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); - const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); - assert.strictEqual(httpResponse.status, 200); - assert.strictEqual(httpResponse.bodyAsText, `{"a":2}`); - assert.deepEqual(httpResponse.parsedBody, { a: 2 }); - assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation"); - }); - - it("with 202 status, POST method, location header, and {} final response body", async () => { - const serviceClient: AzureServiceClient = createServiceClient([ - { - status: 202, - headers: new HttpHeaders({ - "location": "https://fake.azure.com/longRunningOperation2" - }) - }, - { - status: 200, - body: {} - } - ]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); - const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); - assert.strictEqual(httpResponse.status, 200); - assert.strictEqual(httpResponse.bodyAsText, `{}`); - assert.deepEqual(httpResponse.parsedBody, {}); - assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); - }); - - it("with 202 status, POST method, location header, 202 poll, and {} final response body", async () => { - const serviceClient: AzureServiceClient = createServiceClient([ - { - status: 202, - headers: new HttpHeaders({ - "location": "https://fake.azure.com/longRunningOperation2" - }) - }, - { - status: 202, - }, - { - status: 200, - body: {} - } - ]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); - const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); - assert.strictEqual(httpResponse.status, 200); - assert.strictEqual(httpResponse.bodyAsText, `{}`); - assert.deepEqual(httpResponse.parsedBody, {}); - assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); - }); - - it("with 202 status, POST method, location header, and 201 poll", async () => { - const serviceClient: AzureServiceClient = createServiceClient([ - { - status: 202, - headers: new HttpHeaders({ - "location": "https://fake.azure.com/longRunningOperation2" - }) - }, - { - status: 201, - } - ]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error(`The response with status code 201 from polling for long running operation url "https://fake.azure.com/longRunningOperation2" is not valid.`)); - }); - - it("with 202 status, PUT method, location header, and 204 poll", async () => { - const serviceClient: AzureServiceClient = createServiceClient([ - { - status: 202, - headers: new HttpHeaders({ - "location": "https://fake.azure.com/longRunningOperation2" - }) - }, - { - status: 204, - } - ]); - const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "PUT"); - await msAssert.throwsAsync( - serviceClient.sendLongRunningRequest(httpRequest), - new Error(`The response with status code 204 from polling for long running operation url "https://fake.azure.com/longRunningOperation2" is not valid.`)); - }); }); describe("updateOptionsWithDefaultValues()", () => { From 8920e1512c423b5efc668fa50715915f7ddc48b9 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 26 Jul 2018 15:12:50 -0700 Subject: [PATCH 072/289] Rename LROPollStrategy._initialRequestStatusCode to LROPollStrategy._initialResponseStatusCode --- lib/lroPollStrategy.ts | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts index 434945f78279..4ceef8af86ed 100644 --- a/lib/lroPollStrategy.ts +++ b/lib/lroPollStrategy.ts @@ -11,7 +11,7 @@ import { LongRunningOperationStates } from "./util/constants"; export abstract class LROPollStrategy { protected readonly _initialRequestUrl: string; protected readonly _initialRequestMethod: HttpMethods; - protected readonly _initialRequestStatusCode: number; + protected readonly _initialResponseStatusCode: number; protected _status: LongRunningOperationStates; protected _mostRecentRequest: WebResource; protected _response: HttpOperationResponse; @@ -24,7 +24,7 @@ export abstract class LROPollStrategy { this._mostRecentRequest = initialResponse.request; this._initialRequestUrl = this._mostRecentRequest.url; - this._initialRequestStatusCode = initialResponse.status; + this._initialResponseStatusCode = initialResponse.status; this._initialRequestMethod = this._mostRecentRequest.method; this._resource = getResponseBody(initialResponse); @@ -266,7 +266,7 @@ class LocationLROPollStrategy extends LROPollStrategy { this._status = "Succeeded"; this._resource = getResponseBody(result); } else if (statusCode === 404 && this._initialRequestMethod === "POST" && - (this._initialRequestStatusCode === 200 || this._initialRequestStatusCode === 201 || this._initialRequestStatusCode === 202)) { + (this._initialResponseStatusCode === 200 || this._initialResponseStatusCode === 201 || this._initialResponseStatusCode === 202)) { this._status = "Failed"; this._resource = getResponseBody(result); } else { @@ -278,21 +278,21 @@ class LocationLROPollStrategy extends LROPollStrategy { protected finalStatusIsAcceptable(): boolean { return this._status === "Succeeded" || (this._initialRequestMethod === "POST" && this._response.status === 404 && - (this._initialRequestStatusCode === 200 || - this._initialRequestStatusCode === 201 || - this._initialRequestStatusCode === 202)); + (this._initialResponseStatusCode === 200 || + this._initialResponseStatusCode === 201 || + this._initialResponseStatusCode === 202)); } protected shouldDoFinalGetResourceRequest(): boolean { let result: boolean; if (this._initialRequestMethod === "POST" && this._response.status === 404 && - (this._initialRequestStatusCode === 200 || - this._initialRequestStatusCode === 201 || - this._initialRequestStatusCode === 202)) { + (this._initialResponseStatusCode === 200 || + this._initialResponseStatusCode === 201 || + this._initialResponseStatusCode === 202)) { result = false; } else { result = super.shouldDoFinalGetResourceRequest() || - (this._initialRequestMethod === "POST" && this._initialRequestStatusCode === 201); + (this._initialRequestMethod === "POST" && this._initialResponseStatusCode === 201); } return result; } @@ -300,9 +300,9 @@ class LocationLROPollStrategy extends LROPollStrategy { protected doFinalGetResourceRequest(): Promise { let getResourceRequestUrl: string; if (this._initialRequestMethod === "POST" && - (this._initialRequestStatusCode === 200 || - this._initialRequestStatusCode === 201 || - this._initialRequestStatusCode === 202)) { + (this._initialResponseStatusCode === 200 || + this._initialResponseStatusCode === 201 || + this._initialResponseStatusCode === 202)) { getResourceRequestUrl = this._locationHeaderValue!; } else { getResourceRequestUrl = this._initialRequestUrl; @@ -352,9 +352,9 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { } else { if (this._locationHeaderValue) { if (this._initialRequestMethod === "POST") { - result = this._initialRequestStatusCode === 200 || this._initialRequestStatusCode === 201 || this._initialRequestStatusCode === 202; + result = this._initialResponseStatusCode === 200 || this._initialResponseStatusCode === 201 || this._initialResponseStatusCode === 202; } else if (this._initialRequestMethod === "DELETE") { - result = this._initialRequestStatusCode === 200 || this._initialRequestStatusCode === 202; + result = this._initialResponseStatusCode === 200 || this._initialResponseStatusCode === 202; } } } @@ -364,9 +364,9 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { protected doFinalGetResourceRequest(): Promise { let getResourceRequestUrl: string = this._initialRequestUrl; if (this._locationHeaderValue) { - if (this._initialRequestMethod === "POST" && (this._initialRequestStatusCode === 200 || this._initialRequestStatusCode === 201 || this._initialRequestStatusCode === 202)) { + if (this._initialRequestMethod === "POST" && (this._initialResponseStatusCode === 200 || this._initialResponseStatusCode === 201 || this._initialResponseStatusCode === 202)) { getResourceRequestUrl = this._locationHeaderValue; - } else if (this._initialRequestMethod === "DELETE" && (this._initialRequestStatusCode === 200 || this._initialRequestStatusCode === 202)) { + } else if (this._initialRequestMethod === "DELETE" && (this._initialResponseStatusCode === 200 || this._initialResponseStatusCode === 202)) { getResourceRequestUrl = this._locationHeaderValue; } } @@ -375,7 +375,7 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { protected finalStatusIsAcceptable(): boolean { return this._status === "Succeeded" || - (this._initialRequestMethod === "POST" && (this._initialRequestStatusCode === 200 || this._initialRequestStatusCode === 201)); + (this._initialRequestMethod === "POST" && (this._initialResponseStatusCode === 200 || this._initialResponseStatusCode === 201)); } } From 67592b40debf637d8e344255ce72b04a8bfa8116 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 26 Jul 2018 15:26:43 -0700 Subject: [PATCH 073/289] Use local variables instead of referencing member variables --- lib/lroPollStrategy.ts | 81 +++++++++++++++++++++++++----------------- package-lock.json | 28 ++++----------- package.json | 2 +- 3 files changed, 56 insertions(+), 55 deletions(-) diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts index 4ceef8af86ed..38bafa0c31c9 100644 --- a/lib/lroPollStrategy.ts +++ b/lib/lroPollStrategy.ts @@ -51,7 +51,8 @@ export abstract class LROPollStrategy { protected abstract finalStatusIsAcceptable(): boolean; protected shouldDoFinalGetResourceRequest(): boolean { - return !this._resource && (this._initialRequestMethod === "PUT" || this._initialRequestMethod === "PATCH" || this._initialRequestMethod === "POST"); + const initialRequestMethod: HttpMethods = this._initialRequestMethod; + return !this._resource && (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH" || initialRequestMethod === "POST"); } protected abstract doFinalGetResourceRequest(): Promise; @@ -60,16 +61,18 @@ export abstract class LROPollStrategy { if (this.shouldDoFinalGetResourceRequest()) { await this.doFinalGetResourceRequest(); } + const response: HttpOperationResponse = this._response; const result: HttpOperationResponse = { - ...this._response, - headers: this._response.headers.clone() + ...response, + headers: response.headers.clone() }; - if (this._resource && typeof this._resource.valueOf() === "string") { - result.bodyAsText = this._resource; - result.parsedBody = JSON.parse(this._resource); + const resource: any = this._resource; + if (resource && typeof resource.valueOf() === "string") { + result.bodyAsText = resource; + result.parsedBody = JSON.parse(resource); } else { - result.bodyAsText = JSON.stringify(this._resource); - result.parsedBody = this._resource; + result.bodyAsText = JSON.stringify(resource); + result.parsedBody = resource; } return result; } @@ -257,16 +260,18 @@ class LocationLROPollStrategy extends LROPollStrategy { this._response = result; this._mostRecentRequest = result.request; + const initialRequestMethod: HttpMethods = this._initialRequestMethod; + const initialResponseStatusCode: number = this._initialResponseStatusCode; const statusCode: number = result.status; if (statusCode === 202) { this._status = "InProgress"; } else if (statusCode === 200 || - (statusCode === 201 && (this._initialRequestMethod === "PUT" || this._initialRequestMethod === "PATCH")) || - (statusCode === 204 && (this._initialRequestMethod === "DELETE" || this._initialRequestMethod === "POST"))) { + (statusCode === 201 && (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH")) || + (statusCode === 204 && (initialRequestMethod === "DELETE" || initialRequestMethod === "POST"))) { this._status = "Succeeded"; this._resource = getResponseBody(result); } else if (statusCode === 404 && this._initialRequestMethod === "POST" && - (this._initialResponseStatusCode === 200 || this._initialResponseStatusCode === 201 || this._initialResponseStatusCode === 202)) { + (initialResponseStatusCode === 200 || initialResponseStatusCode === 201 || initialResponseStatusCode === 202)) { this._status = "Failed"; this._resource = getResponseBody(result); } else { @@ -276,33 +281,37 @@ class LocationLROPollStrategy extends LROPollStrategy { } protected finalStatusIsAcceptable(): boolean { + const initialResponseStatusCode: number = this._initialResponseStatusCode; return this._status === "Succeeded" || (this._initialRequestMethod === "POST" && this._response.status === 404 && - (this._initialResponseStatusCode === 200 || - this._initialResponseStatusCode === 201 || - this._initialResponseStatusCode === 202)); + (initialResponseStatusCode === 200 || + initialResponseStatusCode === 201 || + initialResponseStatusCode === 202)); } protected shouldDoFinalGetResourceRequest(): boolean { let result: boolean; - if (this._initialRequestMethod === "POST" && this._response.status === 404 && - (this._initialResponseStatusCode === 200 || - this._initialResponseStatusCode === 201 || - this._initialResponseStatusCode === 202)) { + const initialRequestMethod: HttpMethods = this._initialRequestMethod; + const initialResponseStatusCode: number = this._initialResponseStatusCode; + if (initialRequestMethod === "POST" && this._response.status === 404 && + (initialResponseStatusCode === 200 || + initialResponseStatusCode === 201 || + initialResponseStatusCode === 202)) { result = false; } else { result = super.shouldDoFinalGetResourceRequest() || - (this._initialRequestMethod === "POST" && this._initialResponseStatusCode === 201); + (initialRequestMethod === "POST" && initialResponseStatusCode === 201); } return result; } protected doFinalGetResourceRequest(): Promise { let getResourceRequestUrl: string; + const initialResponseStatusCode: number = this._initialResponseStatusCode; if (this._initialRequestMethod === "POST" && - (this._initialResponseStatusCode === 200 || - this._initialResponseStatusCode === 201 || - this._initialResponseStatusCode === 202)) { + (initialResponseStatusCode === 200 || + initialResponseStatusCode === 201 || + initialResponseStatusCode === 202)) { getResourceRequestUrl = this._locationHeaderValue!; } else { getResourceRequestUrl = this._initialRequestUrl; @@ -346,15 +355,17 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { } protected shouldDoFinalGetResourceRequest(): boolean { + const initialRequestMethod: HttpMethods = this._initialRequestMethod; let result = false; - if (this._initialRequestMethod === "PUT" || this._initialRequestMethod === "PATCH") { + if (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH") { result = true; } else { if (this._locationHeaderValue) { - if (this._initialRequestMethod === "POST") { - result = this._initialResponseStatusCode === 200 || this._initialResponseStatusCode === 201 || this._initialResponseStatusCode === 202; - } else if (this._initialRequestMethod === "DELETE") { - result = this._initialResponseStatusCode === 200 || this._initialResponseStatusCode === 202; + const initialResponseStatusCode: number = this._initialResponseStatusCode; + if (initialRequestMethod === "POST") { + result = initialResponseStatusCode === 200 || initialResponseStatusCode === 201 || initialResponseStatusCode === 202; + } else if (initialRequestMethod === "DELETE") { + result = initialResponseStatusCode === 200 || initialResponseStatusCode === 202; } } } @@ -362,20 +373,24 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { } protected doFinalGetResourceRequest(): Promise { + const locationHeaderValue: string | undefined = this._locationHeaderValue; let getResourceRequestUrl: string = this._initialRequestUrl; - if (this._locationHeaderValue) { - if (this._initialRequestMethod === "POST" && (this._initialResponseStatusCode === 200 || this._initialResponseStatusCode === 201 || this._initialResponseStatusCode === 202)) { - getResourceRequestUrl = this._locationHeaderValue; - } else if (this._initialRequestMethod === "DELETE" && (this._initialResponseStatusCode === 200 || this._initialResponseStatusCode === 202)) { - getResourceRequestUrl = this._locationHeaderValue; + if (locationHeaderValue) { + const initialRequestMethod: HttpMethods = this._initialRequestMethod; + const initialResponseStatusCode: number = this._initialResponseStatusCode; + if (initialRequestMethod === "POST" && (initialResponseStatusCode === 200 || initialResponseStatusCode === 201 || initialResponseStatusCode === 202)) { + getResourceRequestUrl = locationHeaderValue; + } else if (initialRequestMethod === "DELETE" && (initialResponseStatusCode === 200 || initialResponseStatusCode === 202)) { + getResourceRequestUrl = locationHeaderValue; } } return this.updateState(getResourceRequestUrl); } protected finalStatusIsAcceptable(): boolean { + const initialResponseStatusCode: number = this._initialResponseStatusCode; return this._status === "Succeeded" || - (this._initialRequestMethod === "POST" && (this._initialResponseStatusCode === 200 || this._initialResponseStatusCode === 201)); + (this._initialRequestMethod === "POST" && (initialResponseStatusCode === 200 || initialResponseStatusCode === 201)); } } diff --git a/package-lock.json b/package-lock.json index 082f6723f9b3..3ac2389fd7c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -199,11 +199,6 @@ "integrity": "sha1-4rRgJDaF2+N3GC857zjTf00Veto=", "dev": true }, - "@types/tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha512-MDQLxNFRLasqS4UlkWMSACMKeSm1x4Q3TxzUC7KQUsh6RK1ZrQ0VEyE3yzXcBu+K8ejVj4wuX32eUG02yNp+YQ==" - }, "@types/uuid": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.3.tgz", @@ -2545,15 +2540,6 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "isomorphic-tough-cookie": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-tough-cookie/-/isomorphic-tough-cookie-0.0.1.tgz", - "integrity": "sha512-9vV3Nl9PpBdd/LHIjBdiMYwWoAU3j+v+WvYJNkVnMrAgFBthgkIwQvwRl+M1J8R1AE51N/Dyv3nT38zzi7FSaw==", - "requires": { - "@types/tough-cookie": "^2.3.3", - "tough-cookie": "^2.3.4" - } - }, "isomorphic-xml2js": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/isomorphic-xml2js/-/isomorphic-xml2js-0.1.3.tgz", @@ -2570,9 +2556,9 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.1.tgz", - "integrity": "sha512-h9Vg3nfbxrF0PK0kZiNiMAyL8zXaLiBP/BXniaKSwVvAi1TaumYV2b0wPdmy1CRX3irYbYD1p4Wjbv4uyECiiQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.2.tgz", + "integrity": "sha512-l7TD/VnBsIB2OJvSyxaLW/ab1+92dxZNH9wLH7uHPPioy3JZ8tnx2UXUdKmdkgmP2EFPzg64CToUP6dAS3U32Q==", "dev": true, "requires": { "@babel/generator": "7.0.0-beta.51", @@ -2938,9 +2924,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.16.372", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.16.372.tgz", - "integrity": "sha1-8xchzTHDXqv9piaAG/fJRSqJfJE=", + "version": "0.16.373", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.16.373.tgz", + "integrity": "sha1-O4H8JtP5uYVxlqQ/HH3OB49ZGp4=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", @@ -2948,8 +2934,8 @@ "@types/uuid": "^3.4.3", "axios": "^0.18.0", "form-data": "^2.3.2", - "isomorphic-tough-cookie": "^0.0.1", "isomorphic-xml2js": "^0.1.3", + "tough-cookie": "^2.4.3", "tslib": "^1.9.2", "uuid": "^3.2.1" } diff --git a/package.json b/package.json index 5db84ae5e437..1c0cf2178c70 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.16.372", + "ms-rest-js": "~0.16.373", "tslib": "^1.9.2" }, "devDependencies": { From 74e99d2f2dcc8550b5234c2c702e2736b42e05f5 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Fri, 27 Jul 2018 13:00:45 -0700 Subject: [PATCH 074/289] Changes required to fix autorest.typescript tests --- lib/lroPollStrategy.ts | 47 +- package-lock.json | 7052 ++++++++++++++++++++++++++++++++++++++-- package.json | 4 +- 3 files changed, 6833 insertions(+), 270 deletions(-) diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts index 38bafa0c31c9..578d8ef49497 100644 --- a/lib/lroPollStrategy.ts +++ b/lib/lroPollStrategy.ts @@ -67,7 +67,10 @@ export abstract class LROPollStrategy { headers: response.headers.clone() }; const resource: any = this._resource; - if (resource && typeof resource.valueOf() === "string") { + if (!resource) { + result.bodyAsText = response.bodyAsText; + result.parsedBody = response.parsedBody; + } else if (typeof resource.valueOf() === "string") { result.bodyAsText = resource; result.parsedBody = JSON.parse(resource); } else { @@ -102,7 +105,15 @@ export abstract class LROPollStrategy { this._status = getProvisioningState(result.parsedBody) || "Succeeded"; this._response = result; this._mostRecentRequest = result.request; - this._resource = getResponseBody(result); + try { + this._resource = getResponseBody(result); + } catch (error) { + this._resource = undefined; + const resultStatus: number = result.status; + if (this._initialRequestMethod !== "DELETE" || resultStatus < 400 || 499 < resultStatus) { + throw error; + } + } }); } @@ -270,10 +281,13 @@ class LocationLROPollStrategy extends LROPollStrategy { (statusCode === 204 && (initialRequestMethod === "DELETE" || initialRequestMethod === "POST"))) { this._status = "Succeeded"; this._resource = getResponseBody(result); - } else if (statusCode === 404 && this._initialRequestMethod === "POST" && + } else if (statusCode === 404 && initialRequestMethod === "POST" && (initialResponseStatusCode === 200 || initialResponseStatusCode === 201 || initialResponseStatusCode === 202)) { this._status = "Failed"; this._resource = getResponseBody(result); + } else if (400 <= statusCode && statusCode <= 499) { + const resultBody: string = result.bodyAsText!; + throw new RestError(resultBody, undefined, statusCode, stripRequest(result.request), result, resultBody); } else { throw new Error(`The response with status code ${statusCode} from polling for long running operation url "${this._locationHeaderValue}" is not valid.`); } @@ -309,9 +323,9 @@ class LocationLROPollStrategy extends LROPollStrategy { let getResourceRequestUrl: string; const initialResponseStatusCode: number = this._initialResponseStatusCode; if (this._initialRequestMethod === "POST" && - (initialResponseStatusCode === 200 || - initialResponseStatusCode === 201 || - initialResponseStatusCode === 202)) { + (initialResponseStatusCode === 200 || + initialResponseStatusCode === 201 || + initialResponseStatusCode === 202)) { getResourceRequestUrl = this._locationHeaderValue!; } else { getResourceRequestUrl = this._initialRequestUrl; @@ -335,7 +349,17 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { */ protected sendPollRequest(): Promise { return this.getStatus(this._azureAsyncOperationHeaderValue!).then((response: HttpOperationResponse) => { + const statusCode: number = response.status; const parsedResponse: any = response.parsedBody; + if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { + const error = new RestError(`Invalid status code with response body "${response.bodyAsText}" occurred when polling for operation status.`); + error.statusCode = statusCode; + error.request = stripRequest(response.request); + error.response = response; + error.body = parsedResponse; + throw error; + } + if (!parsedResponse) { throw new Error("The response from long running operation does not contain a body."); } else if (!parsedResponse.status) { @@ -400,6 +424,17 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { class GetResourceLROPollStrategy extends LROPollStrategy { protected sendPollRequest(): Promise { return this.getStatus(this._initialRequestUrl).then(result => { + const statusCode: number = result.status; + const responseBody: any = result.parsedBody; + if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { + const error = new RestError(`Invalid status code with response body "${result.bodyAsText}" occurred when polling for operation status.`); + error.statusCode = statusCode; + error.request = stripRequest(result.request); + error.response = result; + error.body = responseBody; + throw error; + } + if (!result.parsedBody) { throw new Error("The response from long running operation does not contain a body."); } diff --git a/package-lock.json b/package-lock.json index 3ac2389fd7c2..0dc42ebc3904 100644 --- a/package-lock.json +++ b/package-lock.json @@ -113,109 +113,18 @@ "to-fast-properties": "^2.0.0" } }, - "@types/body-parser": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz", - "integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==", - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.32", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", - "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==", - "requires": { - "@types/node": "*" - } - }, - "@types/events": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", - "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==" - }, - "@types/express": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.0.tgz", - "integrity": "sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.0.tgz", - "integrity": "sha512-lTeoCu5NxJU4OD9moCgm0ESZzweAx0YqsAcab6OB0EB3+As1OaHtKnaGJvcngQxYsi9UNv0abn4/DRavrRxt4w==", - "requires": { - "@types/events": "*", - "@types/node": "*", - "@types/range-parser": "*" - } - }, - "@types/form-data": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", - "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/mime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz", - "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==" - }, "@types/mocha": { "version": "5.2.5", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.5.tgz", "integrity": "sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww==", "dev": true }, - "@types/node": { - "version": "9.6.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.23.tgz", - "integrity": "sha512-d2SJJpwkiPudEQ3+9ysANN2Nvz4QJKUPoe/WL5zyQzI0RaEeZWH5K5xjvUIGszTItHQpFPdH+u51f6G/LkS8Cg==" - }, - "@types/range-parser": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.2.tgz", - "integrity": "sha512-HtKGu+qG1NPvYe1z7ezLsyIaXYyi8SoAVqWDZgDQ8dLrsZvSzUNCwZyfX33uhWxL/SU0ZDQZ3nwZ0nimt507Kw==" - }, - "@types/serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==", - "requires": { - "@types/express-serve-static-core": "*", - "@types/mime": "*" - } - }, "@types/should": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/@types/should/-/should-8.3.0.tgz", "integrity": "sha1-4rRgJDaF2+N3GC857zjTf00Veto=", "dev": true }, - "@types/uuid": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.3.tgz", - "integrity": "sha512-5fRLCYhLtDb3hMWqQyH10qtF+Ud2JnNCXTCZ+9ktNdCcgslcuXkDTkFcJNk++MT29yDntDnlF1+jD+uVGumsbw==", - "requires": { - "@types/node": "*" - } - }, - "@types/xml2js": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.3.tgz", - "integrity": "sha512-Pv2HGRE4gWLs31In7nsyXEH4uVVsd0HNV9i2dyASvtDIlOtSTr1eczPLDpdEuyv5LWH5LT20GIXwPjkshKWI1g==", - "requires": { - "@types/events": "*", - "@types/node": "*" - } - }, "acorn": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", @@ -408,26 +317,12 @@ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, "atob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", "dev": true }, - "axios": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", - "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", - "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" - } - }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -854,14 +749,6 @@ "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", "dev": true }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "requires": { - "delayed-stream": "~1.0.0" - } - }, "commander": { "version": "2.15.1", "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", @@ -995,6 +882,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -1068,11 +956,6 @@ } } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", @@ -1558,14 +1441,6 @@ "locate-path": "^2.0.0" } }, - "follow-redirects": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.1.tgz", - "integrity": "sha512-v9GI1hpaqq1ZZR6pBD1+kI7O24PhDvNGNodjS3MdcEqyrahCp8zbtpv+2B/krUnSmUH80lbAS7MrdeK5IylgKg==", - "requires": { - "debug": "^3.1.0" - } - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -1578,16 +1453,6 @@ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", "dev": true }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - } - }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -2396,7 +2261,8 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true }, "is-builtin-module": { "version": "1.0.0", @@ -2540,15 +2406,6 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "isomorphic-xml2js": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/isomorphic-xml2js/-/isomorphic-xml2js-0.1.3.tgz", - "integrity": "sha512-dIkT2U9ritKVWF/HfHfGwm5tTnlMnknYsv7l12oJlQQgOV2CNV65pX+FHy6HFL9YP8q0JcrlNQAFRJIN2agUmQ==", - "requires": { - "@types/xml2js": "^0.4.2", - "xml2js": "^0.4.19" - } - }, "istanbul-lib-coverage": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", @@ -2823,19 +2680,6 @@ "brorand": "^1.0.1" } }, - "mime-db": { - "version": "1.35.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", - "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" - }, - "mime-types": { - "version": "2.1.19", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", - "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", - "requires": { - "mime-db": "~1.35.0" - } - }, "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", @@ -2885,61 +2729,6782 @@ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "ms-rest-js": { + "version": "file:../ms-rest-js", + "requires": { + "@types/express": "^4.11.1", + "@types/form-data": "^2.2.1", + "@types/node": "^9.4.6", + "@types/uuid": "^3.4.3", + "axios": "^0.18.0", + "form-data": "^2.3.2", + "isomorphic-xml2js": "^0.1.3", + "tough-cookie": "^2.4.3", + "tslib": "^1.9.2", + "uuid": "^3.2.1" + }, + "dependencies": { + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "bundled": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.0", + "bundled": true + }, + "@samverschueren/stream-to-observable": { + "version": "0.3.0", + "bundled": true, + "requires": { + "any-observable": "^0.3.0" + } + }, + "@sindresorhus/is": { + "version": "0.7.0", + "bundled": true + }, + "@types/body-parser": { + "version": "1.17.0", + "bundled": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.32", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "@types/core-js": { + "version": "0.9.46", + "bundled": true + }, + "@types/events": { + "version": "1.2.0", + "bundled": true + }, + "@types/express": { + "version": "4.16.0", + "bundled": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.16.0", + "bundled": true, + "requires": { + "@types/events": "*", + "@types/node": "*", + "@types/range-parser": "*" + } + }, + "@types/form-data": { + "version": "2.2.1", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "@types/glob": { + "version": "5.0.35", + "bundled": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/loglevel": { + "version": "1.5.3", + "bundled": true + }, + "@types/memory-fs": { + "version": "0.3.1", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "@types/mime": { + "version": "2.0.0", + "bundled": true + }, + "@types/minimatch": { + "version": "3.0.3", + "bundled": true + }, + "@types/mkdirp": { + "version": "0.3.29", + "bundled": true + }, + "@types/mocha": { + "version": "5.2.5", + "bundled": true + }, + "@types/node": { + "version": "9.6.23", + "bundled": true + }, + "@types/range-parser": { + "version": "1.2.2", + "bundled": true + }, + "@types/rimraf": { + "version": "0.0.28", + "bundled": true + }, + "@types/serve-static": { + "version": "1.13.2", + "bundled": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/mime": "*" + } + }, + "@types/should": { + "version": "8.3.0", + "bundled": true + }, + "@types/tapable": { + "version": "1.0.4", + "bundled": true + }, + "@types/tough-cookie": { + "version": "2.3.3", + "bundled": true + }, + "@types/uglify-js": { + "version": "3.0.3", + "bundled": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "@types/uuid": { + "version": "3.4.3", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "@types/webpack": { + "version": "4.4.8", + "bundled": true, + "requires": { + "@types/node": "*", + "@types/tapable": "*", + "@types/uglify-js": "*", + "source-map": "^0.6.0" + } + }, + "@types/webpack-dev-middleware": { + "version": "2.0.2", + "bundled": true, + "requires": { + "@types/connect": "*", + "@types/loglevel": "*", + "@types/memory-fs": "*", + "@types/webpack": "*" + } + }, + "@types/xml2js": { + "version": "0.4.3", + "bundled": true, + "requires": { + "@types/events": "*", + "@types/node": "*" + } + }, + "@webassemblyjs/ast": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", + "debug": "^3.1.0", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.5.13", + "bundled": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.5.13", + "bundled": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.5.13", + "bundled": true, + "requires": { + "debug": "^3.1.0" + } + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/wast-printer": "1.5.13" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.5.13", + "bundled": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.5.13", + "bundled": true, + "requires": { + "debug": "^3.1.0", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.5.13", + "bundled": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "debug": "^3.1.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.5.13", + "bundled": true, + "requires": { + "ieee754": "^1.1.11" + } + }, + "@webassemblyjs/leb128": { + "version": "1.5.13", + "bundled": true, + "requires": { + "long": "4.0.0" + }, + "dependencies": { + "long": { + "version": "4.0.0", + "bundled": true + } + } + }, + "@webassemblyjs/utf8": { + "version": "1.5.13", + "bundled": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/helper-wasm-section": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-opt": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "@webassemblyjs/wast-printer": "1.5.13", + "debug": "^3.1.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "debug": "^3.1.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/floating-point-hex-parser": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-code-frame": "1.5.13", + "@webassemblyjs/helper-fsm": "1.5.13", + "long": "^3.2.0", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", + "long": "^3.2.0" + } + }, + "abortcontroller-polyfill": { + "version": "1.1.9", + "bundled": true + }, + "accepts": { + "version": "1.3.5", + "bundled": true, + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.7.1", + "bundled": true + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "bundled": true, + "requires": { + "acorn": "^5.0.0" + } + }, + "ajv": { + "version": "6.5.2", + "bundled": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.1" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "bundled": true + }, + "ansi-escapes": { + "version": "3.1.0", + "bundled": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "ansi-styles": { + "version": "2.2.1", + "bundled": true + }, + "any-observable": { + "version": "0.3.0", + "bundled": true + }, + "anymatch": { + "version": "2.0.0", + "bundled": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "argparse": { + "version": "1.0.10", + "bundled": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "bundled": true + }, + "arr-flatten": { + "version": "1.1.0", + "bundled": true + }, + "arr-union": { + "version": "3.1.0", + "bundled": true + }, + "array-differ": { + "version": "1.0.0", + "bundled": true + }, + "array-filter": { + "version": "0.0.1", + "bundled": true + }, + "array-find-index": { + "version": "1.0.2", + "bundled": true + }, + "array-flatten": { + "version": "1.1.1", + "bundled": true + }, + "array-map": { + "version": "0.0.0", + "bundled": true + }, + "array-reduce": { + "version": "0.0.0", + "bundled": true + }, + "array-union": { + "version": "1.0.2", + "bundled": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "bundled": true + }, + "array-unique": { + "version": "0.3.2", + "bundled": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true + }, + "asn1.js": { + "version": "4.10.1", + "bundled": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "bundled": true, + "requires": { + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "bundled": true + }, + "util": { + "version": "0.10.3", + "bundled": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assign-symbols": { + "version": "1.0.0", + "bundled": true + }, + "ast-types": { + "version": "0.11.5", + "bundled": true + }, + "async": { + "version": "1.5.2", + "bundled": true + }, + "async-each": { + "version": "1.0.1", + "bundled": true + }, + "async-limiter": { + "version": "1.0.0", + "bundled": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true + }, + "atob": { + "version": "2.1.1", + "bundled": true + }, + "axios": { + "version": "0.18.0", + "bundled": true, + "requires": { + "follow-redirects": "^1.3.0", + "is-buffer": "^1.1.5" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "bundled": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "babel-core": { + "version": "6.26.3", + "bundled": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "bundled": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "bundled": true + }, + "source-map": { + "version": "0.5.7", + "bundled": true + } + } + }, + "babel-helper-bindify-decorators": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-explode-class": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-bindify-decorators": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-async-generators": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-class-constructor-call": { + "version": "6.18.0", + "bundled": true + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "bundled": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-export-extensions": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "bundled": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "bundled": true + }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-generators": "^6.5.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-class-constructor-call": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-syntax-class-constructor-call": "^6.18.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-explode-class": "^6.24.1", + "babel-plugin-syntax-decorators": "^6.13.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "bundled": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-export-extensions": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-plugin-syntax-export-extensions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-plugin-syntax-flow": "^6.18.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "bundled": true, + "requires": { + "regenerator-transform": "^0.10.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-polyfill": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "bundled": true + } + } + }, + "babel-preset-env": { + "version": "1.7.0", + "bundled": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^3.2.6", + "invariant": "^2.2.2", + "semver": "^5.3.0" + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.24.1", + "babel-plugin-transform-es2015-classes": "^6.24.1", + "babel-plugin-transform-es2015-computed-properties": "^6.24.1", + "babel-plugin-transform-es2015-destructuring": "^6.22.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", + "babel-plugin-transform-es2015-for-of": "^6.22.0", + "babel-plugin-transform-es2015-function-name": "^6.24.1", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-umd": "^6.24.1", + "babel-plugin-transform-es2015-object-super": "^6.24.1", + "babel-plugin-transform-es2015-parameters": "^6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", + "babel-plugin-transform-regenerator": "^6.24.1" + } + }, + "babel-preset-stage-1": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-transform-class-constructor-call": "^6.24.1", + "babel-plugin-transform-export-extensions": "^6.22.0", + "babel-preset-stage-2": "^6.24.1" + } + }, + "babel-preset-stage-2": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-transform-class-properties": "^6.24.1", + "babel-plugin-transform-decorators": "^6.24.1", + "babel-preset-stage-3": "^6.24.1" + } + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-generator-functions": "^6.24.1", + "babel-plugin-transform-async-to-generator": "^6.24.1", + "babel-plugin-transform-exponentiation-operator": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.22.0" + } + }, + "babel-register": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + } + }, + "babel-runtime": { + "version": "6.26.0", + "bundled": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-types": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "bundled": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "base": { + "version": "0.11.2", + "bundled": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.0", + "bundled": true + }, + "big.js": { + "version": "3.2.0", + "bundled": true + }, + "binary-extensions": { + "version": "1.11.0", + "bundled": true + }, + "binaryextensions": { + "version": "2.1.1", + "bundled": true + }, + "bluebird": { + "version": "3.5.1", + "bundled": true + }, + "bn.js": { + "version": "4.11.8", + "bundled": true + }, + "body-parser": { + "version": "1.18.2", + "bundled": true, + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.1", + "http-errors": "~1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "~2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "~1.6.15" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "bundled": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "bundled": true + }, + "browser-stdout": { + "version": "1.3.1", + "bundled": true + }, + "browserify-aes": { + "version": "1.2.0", + "bundled": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "bundled": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "bundled": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "bundled": true + } + } + }, + "browserify-rsa": { + "version": "4.0.1", + "bundled": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "bundled": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "bundled": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "3.2.8", + "bundled": true, + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + }, + "buffer": { + "version": "4.9.1", + "bundled": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.0", + "bundled": true + }, + "buffer-xor": { + "version": "1.0.3", + "bundled": true + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "bundled": true + }, + "bytes": { + "version": "3.0.0", + "bundled": true + }, + "cacache": { + "version": "10.0.4", + "bundled": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "bundled": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cacheable-request": { + "version": "2.1.4", + "bundled": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "bundled": true + } + } + }, + "call-me-maybe": { + "version": "1.0.1", + "bundled": true + }, + "camelcase": { + "version": "4.1.0", + "bundled": true + }, + "camelcase-keys": { + "version": "4.2.0", + "bundled": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30000865", + "bundled": true + }, + "chalk": { + "version": "2.4.1", + "bundled": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "requires": { + "color-convert": "^1.9.0" + } + } + } + }, + "chardet": { + "version": "0.4.2", + "bundled": true + }, + "chokidar": { + "version": "2.0.4", + "bundled": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true + }, + "chrome-launcher": { + "version": "0.10.2", + "bundled": true, + "requires": { + "@types/core-js": "^0.9.41", + "@types/mkdirp": "^0.3.29", + "@types/node": "^9.3.0", + "@types/rimraf": "^0.0.28", + "is-wsl": "^1.1.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "0.5.1", + "rimraf": "^2.6.1" + } + }, + "chrome-remote-interface": { + "version": "0.25.7", + "bundled": true, + "requires": { + "commander": "2.11.x", + "ws": "3.3.x" + }, + "dependencies": { + "commander": { + "version": "2.11.0", + "bundled": true + } + } + }, + "chrome-trace-event": { + "version": "1.0.0", + "bundled": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "chrome-unmirror": { + "version": "0.1.0", + "bundled": true + }, + "cipher-base": { + "version": "1.0.4", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "bundled": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "bundled": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "0.1.2", + "bundled": true + }, + "cli-table": { + "version": "0.3.1", + "bundled": true, + "requires": { + "colors": "1.0.3" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "bundled": true + } + } + }, + "cli-truncate": { + "version": "0.2.1", + "bundled": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "cli-width": { + "version": "2.2.0", + "bundled": true + }, + "cliui": { + "version": "4.1.0", + "bundled": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "bundled": true + }, + "clone-buffer": { + "version": "1.0.0", + "bundled": true + }, + "clone-response": { + "version": "1.0.2", + "bundled": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "clone-stats": { + "version": "0.0.1", + "bundled": true + }, + "cloneable-readable": { + "version": "1.1.2", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "collection-visit": { + "version": "1.0.0", + "bundled": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.2", + "bundled": true, + "requires": { + "color-name": "1.1.1" + } + }, + "color-name": { + "version": "1.1.1", + "bundled": true + }, + "colors": { + "version": "1.3.1", + "bundled": true + }, + "combined-stream": { + "version": "1.0.6", + "bundled": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.15.1", + "bundled": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true + }, + "component-emitter": { + "version": "1.2.1", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "concat-stream": { + "version": "1.6.2", + "bundled": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.1.0", + "bundled": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "bundled": true + }, + "content-disposition": { + "version": "0.5.2", + "bundled": true + }, + "content-type": { + "version": "1.0.4", + "bundled": true + }, + "convert-source-map": { + "version": "1.5.1", + "bundled": true + }, + "cookie": { + "version": "0.3.1", + "bundled": true + }, + "cookie-signature": { + "version": "1.0.6", + "bundled": true + }, + "copy-concurrently": { + "version": "1.0.5", + "bundled": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "bundled": true + }, + "core-js": { + "version": "2.5.7", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "create-ecdh": { + "version": "4.0.3", + "bundled": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "bundled": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "bundled": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "bundled": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "bundled": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "bundled": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "cyclist": { + "version": "0.2.2", + "bundled": true + }, + "d": { + "version": "1.0.0", + "bundled": true, + "requires": { + "es5-ext": "^0.10.9" + } + }, + "dargs": { + "version": "5.1.0", + "bundled": true + }, + "date-fns": { + "version": "1.29.0", + "bundled": true + }, + "date-now": { + "version": "0.1.4", + "bundled": true + }, + "dateformat": { + "version": "3.0.3", + "bundled": true + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "bundled": true + }, + "decamelize-keys": { + "version": "1.1.0", + "bundled": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "bundled": true + } + } + }, + "decode-uri-component": { + "version": "0.2.0", + "bundled": true + }, + "decompress-response": { + "version": "3.3.0", + "bundled": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-assign": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true + }, + "define-properties": { + "version": "1.1.2", + "bundled": true, + "requires": { + "foreach": "^2.0.5", + "object-keys": "^1.0.8" + } + }, + "define-property": { + "version": "2.0.2", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "depd": { + "version": "1.1.2", + "bundled": true + }, + "des.js": { + "version": "1.0.0", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "bundled": true + }, + "detect-conflict": { + "version": "1.0.1", + "bundled": true + }, + "detect-indent": { + "version": "4.0.0", + "bundled": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "diff": { + "version": "3.5.0", + "bundled": true + }, + "diffie-hellman": { + "version": "5.0.3", + "bundled": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.0.0", + "bundled": true, + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "bundled": true + }, + "duplexer": { + "version": "0.1.1", + "bundled": true + }, + "duplexer3": { + "version": "0.1.4", + "bundled": true + }, + "duplexify": { + "version": "3.6.0", + "bundled": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "editions": { + "version": "1.3.4", + "bundled": true + }, + "ee-first": { + "version": "1.1.1", + "bundled": true + }, + "ejs": { + "version": "2.6.1", + "bundled": true + }, + "electron-to-chromium": { + "version": "1.3.52", + "bundled": true + }, + "elegant-spinner": { + "version": "1.0.1", + "bundled": true + }, + "elliptic": { + "version": "6.4.0", + "bundled": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emojis-list": { + "version": "2.1.0", + "bundled": true + }, + "encodeurl": { + "version": "1.0.2", + "bundled": true + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "envinfo": { + "version": "5.10.0", + "bundled": true + }, + "errno": { + "version": "0.1.7", + "bundled": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error": { + "version": "7.0.2", + "bundled": true, + "requires": { + "string-template": "~0.2.1", + "xtend": "~4.0.0" + } + }, + "error-ex": { + "version": "1.3.2", + "bundled": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.12.0", + "bundled": true, + "requires": { + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "bundled": true, + "requires": { + "is-callable": "^1.1.1", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.1" + } + }, + "es5-ext": { + "version": "0.10.45", + "bundled": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "bundled": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-object-assign": { + "version": "1.1.0", + "bundled": true + }, + "es6-symbol": { + "version": "3.1.1", + "bundled": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "escape-html": { + "version": "1.0.3", + "bundled": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true + }, + "eslint-scope": { + "version": "4.0.0", + "bundled": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "bundled": true + }, + "esrecurse": { + "version": "4.2.1", + "bundled": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "bundled": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true + }, + "etag": { + "version": "1.8.1", + "bundled": true + }, + "event-stream": { + "version": "3.3.4", + "bundled": true, + "requires": { + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" + } + }, + "events": { + "version": "1.1.1", + "bundled": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "bundled": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "exit-hook": { + "version": "1.1.1", + "bundled": true + }, + "expand-brackets": { + "version": "2.1.4", + "bundled": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-range": { + "version": "1.8.2", + "bundled": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "bundled": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "2.1.0", + "bundled": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "bundled": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "express": { + "version": "4.16.3", + "bundled": true, + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.3", + "qs": "6.5.1", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "bundled": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "2.2.0", + "bundled": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "bundled": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "bundled": true + }, + "fast-glob": { + "version": "2.2.2", + "bundled": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.0.1", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.1", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "bundled": true + }, + "figures": { + "version": "2.0.0", + "bundled": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "filename-regex": { + "version": "2.0.1", + "bundled": true + }, + "fill-range": { + "version": "4.0.0", + "bundled": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.1", + "bundled": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "find-cache-dir": { + "version": "1.0.0", + "bundled": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "first-chunk-stream": { + "version": "2.0.0", + "bundled": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "flow-parser": { + "version": "0.76.0", + "bundled": true + }, + "flush-write-stream": { + "version": "1.0.3", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "follow-redirects": { + "version": "1.5.1", + "bundled": true, + "requires": { + "debug": "^3.1.0" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true + }, + "for-own": { + "version": "0.1.5", + "bundled": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "foreach": { + "version": "2.0.5", + "bundled": true + }, + "form-data": { + "version": "2.3.2", + "bundled": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "bundled": true + }, + "fragment-cache": { + "version": "0.2.1", + "bundled": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "bundled": true + }, + "from": { + "version": "0.1.7", + "bundled": true + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "function-bind": { + "version": "1.1.1", + "bundled": true + }, + "get-caller-file": { + "version": "1.0.3", + "bundled": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "get-value": { + "version": "2.0.6", + "bundled": true + }, + "gh-got": { + "version": "6.0.0", + "bundled": true, + "requires": { + "got": "^7.0.0", + "is-plain-obj": "^1.1.0" + }, + "dependencies": { + "got": { + "version": "7.1.0", + "bundled": true, + "requires": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + } + }, + "p-cancelable": { + "version": "0.3.0", + "bundled": true + }, + "p-timeout": { + "version": "1.2.1", + "bundled": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "prepend-http": { + "version": "1.0.4", + "bundled": true + }, + "url-parse-lax": { + "version": "1.0.0", + "bundled": true, + "requires": { + "prepend-http": "^1.0.1" + } + } + } + }, + "github-username": { + "version": "4.1.0", + "bundled": true, + "requires": { + "gh-got": "^6.0.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-all": { + "version": "3.1.0", + "bundled": true, + "requires": { + "glob": "^7.0.5", + "yargs": "~1.2.6" + }, + "dependencies": { + "minimist": { + "version": "0.1.0", + "bundled": true + }, + "yargs": { + "version": "1.2.6", + "bundled": true, + "requires": { + "minimist": "^0.1.0" + } + } + } + }, + "glob-base": { + "version": "0.3.0", + "bundled": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "bundled": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "bundled": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "bundled": true + }, + "global-modules": { + "version": "1.0.0", + "bundled": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "bundled": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "9.18.0", + "bundled": true + }, + "globby": { + "version": "8.0.1", + "bundled": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "got": { + "version": "8.3.2", + "bundled": true, + "requires": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "grouped-queue": { + "version": "0.3.3", + "bundled": true, + "requires": { + "lodash": "^4.17.2" + } + }, + "growl": { + "version": "1.10.5", + "bundled": true + }, + "has": { + "version": "1.0.3", + "bundled": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-color": { + "version": "0.1.7", + "bundled": true + }, + "has-flag": { + "version": "3.0.0", + "bundled": true + }, + "has-symbol-support-x": { + "version": "1.4.2", + "bundled": true + }, + "has-symbols": { + "version": "1.0.0", + "bundled": true + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "bundled": true, + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, + "has-value": { + "version": "1.0.0", + "bundled": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.5", + "bundled": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.1.1", + "bundled": true + }, + "hmac-drbg": { + "version": "1.0.1", + "bundled": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "home-or-tmp": { + "version": "2.0.0", + "bundled": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.1", + "bundled": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "bundled": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "bundled": true + }, + "http-errors": { + "version": "1.6.3", + "bundled": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "https-browserify": { + "version": "1.0.0", + "bundled": true + }, + "iconv-lite": { + "version": "0.4.19", + "bundled": true + }, + "ieee754": { + "version": "1.1.12", + "bundled": true + }, + "iferr": { + "version": "0.1.5", + "bundled": true + }, + "ignore": { + "version": "3.3.10", + "bundled": true + }, + "import-local": { + "version": "1.0.0", + "bundled": true, + "requires": { + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true + }, + "indent-string": { + "version": "3.2.0", + "bundled": true + }, + "indexof": { + "version": "0.0.1", + "bundled": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true + }, + "inquirer": { + "version": "5.2.0", + "bundled": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.1.0", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^5.5.2", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "interpret": { + "version": "1.1.0", + "bundled": true + }, + "into-stream": { + "version": "3.1.0", + "bundled": true, + "requires": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + } + }, + "invariant": { + "version": "2.2.4", + "bundled": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true + }, + "ipaddr.js": { + "version": "1.8.0", + "bundled": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true + }, + "is-binary-path": { + "version": "1.0.1", + "bundled": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "bundled": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-callable": { + "version": "1.1.4", + "bundled": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "bundled": true + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "bundled": true + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "bundled": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "bundled": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true + }, + "is-extglob": { + "version": "2.1.1", + "bundled": true + }, + "is-finite": { + "version": "1.0.2", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "is-glob": { + "version": "4.0.0", + "bundled": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "bundled": true + }, + "is-object": { + "version": "1.0.1", + "bundled": true + }, + "is-observable": { + "version": "1.1.0", + "bundled": true, + "requires": { + "symbol-observable": "^1.1.0" + }, + "dependencies": { + "symbol-observable": { + "version": "1.2.0", + "bundled": true + } + } + }, + "is-plain-obj": { + "version": "1.1.0", + "bundled": true + }, + "is-plain-object": { + "version": "2.0.4", + "bundled": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "bundled": true + }, + "is-primitive": { + "version": "2.0.0", + "bundled": true + }, + "is-promise": { + "version": "2.1.0", + "bundled": true + }, + "is-regex": { + "version": "1.0.4", + "bundled": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-retry-allowed": { + "version": "1.1.0", + "bundled": true + }, + "is-scoped": { + "version": "1.0.0", + "bundled": true, + "requires": { + "scoped-regex": "^1.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "is-symbol": { + "version": "1.0.1", + "bundled": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true + }, + "is-windows": { + "version": "1.0.2", + "bundled": true + }, + "is-wsl": { + "version": "1.1.0", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isbinaryfile": { + "version": "3.0.2", + "bundled": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true + }, + "isobject": { + "version": "3.0.1", + "bundled": true + }, + "isomorphic-xml2js": { + "version": "0.1.3", + "bundled": true, + "requires": { + "@types/xml2js": "^0.4.2", + "xml2js": "^0.4.19" + } + }, + "istextorbinary": { + "version": "2.2.1", + "bundled": true, + "requires": { + "binaryextensions": "2", + "editions": "^1.3.3", + "textextensions": "2" + } + }, + "isurl": { + "version": "1.0.0", + "bundled": true, + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, + "js-tokens": { + "version": "3.0.2", + "bundled": true + }, + "js-yaml": { + "version": "3.12.0", + "bundled": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jscodeshift": { + "version": "0.5.1", + "bundled": true, + "requires": { + "babel-plugin-transform-flow-strip-types": "^6.8.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-stage-1": "^6.5.0", + "babel-register": "^6.9.0", + "babylon": "^7.0.0-beta.47", + "colors": "^1.1.2", + "flow-parser": "^0.*", + "lodash": "^4.13.1", + "micromatch": "^2.3.7", + "neo-async": "^2.5.0", + "node-dir": "0.1.8", + "nomnom": "^1.8.1", + "recast": "^0.15.0", + "temp": "^0.8.1", + "write-file-atomic": "^1.2.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "bundled": true + }, + "babylon": { + "version": "7.0.0-beta.47", + "bundled": true + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + } + } + }, + "jsesc": { + "version": "0.5.0", + "bundled": true + }, + "json-buffer": { + "version": "3.0.0", + "bundled": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "bundled": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "bundled": true + }, + "json5": { + "version": "0.5.1", + "bundled": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true + }, + "keyv": { + "version": "3.0.0", + "bundled": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lighthouse-logger": { + "version": "1.0.1", + "bundled": true, + "requires": { + "debug": "^2.6.8" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "listr": { + "version": "0.14.1", + "bundled": true, + "requires": { + "@samverschueren/stream-to-observable": "^0.3.0", + "cli-truncate": "^0.2.1", + "figures": "^1.7.0", + "indent-string": "^2.1.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.4.0", + "listr-verbose-renderer": "^0.4.0", + "log-symbols": "^1.0.2", + "log-update": "^1.0.2", + "ora": "^0.2.3", + "p-map": "^1.1.1", + "rxjs": "^6.1.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "bundled": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "indent-string": { + "version": "2.1.0", + "bundled": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "bundled": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "rxjs": { + "version": "6.2.2", + "bundled": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "bundled": true + }, + "listr-update-renderer": { + "version": "0.4.0", + "bundled": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^1.0.2", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "bundled": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "bundled": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "listr-verbose-renderer": { + "version": "0.4.1", + "bundled": true, + "requires": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "figures": { + "version": "1.7.0", + "bundled": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "onetime": { + "version": "1.1.0", + "bundled": true + }, + "restore-cursor": { + "version": "1.0.1", + "bundled": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "load-json-file": { + "version": "4.0.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "loader-runner": { + "version": "2.3.0", + "bundled": true + }, + "loader-utils": { + "version": "1.1.0", + "bundled": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.10", + "bundled": true + }, + "lodash.debounce": { + "version": "4.0.8", + "bundled": true + }, + "log-symbols": { + "version": "2.2.0", + "bundled": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "log-update": { + "version": "1.0.2", + "bundled": true, + "requires": { + "ansi-escapes": "^1.0.0", + "cli-cursor": "^1.0.2" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "bundled": true + }, + "cli-cursor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "bundled": true + }, + "restore-cursor": { + "version": "1.0.1", + "bundled": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + } + } + }, + "loglevel": { + "version": "1.6.1", + "bundled": true + }, + "loglevelnext": { + "version": "1.0.5", + "bundled": true, + "requires": { + "es6-symbol": "^3.1.1", + "object.assign": "^4.1.0" + } + }, + "long": { + "version": "3.2.0", + "bundled": true + }, + "loose-envify": { + "version": "1.4.0", + "bundled": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "bundled": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "bundled": true + }, + "lru-cache": { + "version": "4.1.3", + "bundled": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "bundled": true, + "requires": { + "pify": "^3.0.0" + } + }, + "make-error": { + "version": "1.3.4", + "bundled": true + }, + "mamacro": { + "version": "0.0.3", + "bundled": true + }, + "map-cache": { + "version": "0.2.2", + "bundled": true + }, + "map-obj": { + "version": "2.0.0", + "bundled": true + }, + "map-stream": { + "version": "0.1.0", + "bundled": true + }, + "map-visit": { + "version": "1.0.0", + "bundled": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "math-random": { + "version": "1.0.1", + "bundled": true + }, + "md5.js": { + "version": "1.3.4", + "bundled": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "media-typer": { + "version": "0.3.0", + "bundled": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "mem-fs": { + "version": "1.1.3", + "bundled": true, + "requires": { + "through2": "^2.0.0", + "vinyl": "^1.1.0", + "vinyl-file": "^2.0.0" + } + }, + "mem-fs-editor": { + "version": "4.0.3", + "bundled": true, + "requires": { + "commondir": "^1.0.1", + "deep-extend": "^0.6.0", + "ejs": "^2.5.9", + "glob": "^7.0.3", + "globby": "^7.1.1", + "isbinaryfile": "^3.0.2", + "mkdirp": "^0.5.0", + "multimatch": "^2.0.0", + "rimraf": "^2.2.8", + "through2": "^2.0.0", + "vinyl": "^2.0.1" + }, + "dependencies": { + "clone": { + "version": "2.1.1", + "bundled": true + }, + "clone-stats": { + "version": "1.0.0", + "bundled": true + }, + "globby": { + "version": "7.1.1", + "bundled": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "replace-ext": { + "version": "1.0.0", + "bundled": true + }, + "vinyl": { + "version": "2.2.0", + "bundled": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + } + } + }, + "memory-fs": { + "version": "0.4.1", + "bundled": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "memorystream": { + "version": "0.3.1", + "bundled": true + }, + "meow": { + "version": "4.0.1", + "bundled": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "bundled": true + }, + "merge2": { + "version": "1.2.2", + "bundled": true + }, + "methods": { + "version": "1.1.2", + "bundled": true + }, + "micromatch": { + "version": "3.1.10", + "bundled": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "bundled": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.4.1", + "bundled": true + }, + "mime-db": { + "version": "1.35.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.19", + "bundled": true, + "requires": { + "mime-db": "~1.35.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "bundled": true + }, + "mimic-response": { + "version": "1.0.1", + "bundled": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "bundled": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "minimist-options": { + "version": "3.0.2", + "bundled": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "mississippi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.1", + "bundled": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.2.0", + "bundled": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + } + }, + "mocha-chrome": { + "version": "1.1.0", + "bundled": true, + "requires": { + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-parameters": "^6.24.1", + "babel-polyfill": "^6.26.0", + "babel-preset-env": "^1.6.1", + "babel-register": "^6.26.0", + "chalk": "^2.0.1", + "chrome-launcher": "^0.10.2", + "chrome-remote-interface": "^0.25.2", + "chrome-unmirror": "^0.1.0", + "debug": "^3.1.0", + "deep-assign": "^2.0.0", + "import-local": "^1.0.0", + "loglevel": "^1.4.1", + "meow": "^4.0.0", + "nanobus": "^4.2.0" + } + }, + "move-concurrently": { + "version": "1.0.1", + "bundled": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true + }, + "multimatch": { + "version": "2.1.0", + "bundled": true, + "requires": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + } + }, + "mute-stream": { + "version": "0.0.7", + "bundled": true + }, + "nanoassert": { + "version": "1.1.0", + "bundled": true + }, + "nanobus": { + "version": "4.3.3", + "bundled": true, + "requires": { + "nanotiming": "^7.2.0", + "remove-array-items": "^1.0.0" + } + }, + "nanomatch": { + "version": "1.2.13", + "bundled": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "nanoscheduler": { + "version": "1.0.3", + "bundled": true, + "requires": { + "nanoassert": "^1.1.0" + } + }, + "nanotiming": { + "version": "7.3.1", + "bundled": true, + "requires": { + "nanoassert": "^1.1.0", + "nanoscheduler": "^1.0.2" + } + }, + "negotiator": { + "version": "0.6.1", + "bundled": true + }, + "neo-async": { + "version": "2.5.1", + "bundled": true + }, + "next-tick": { + "version": "1.0.0", + "bundled": true + }, + "nice-try": { + "version": "1.0.4", + "bundled": true + }, + "node-dir": { + "version": "0.1.8", + "bundled": true + }, + "node-libs-browser": { + "version": "2.1.0", + "bundled": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^1.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.10.3", + "vm-browserify": "0.0.4" + } + }, + "nomnom": { + "version": "1.8.1", + "bundled": true, + "requires": { + "chalk": "~0.4.0", + "underscore": "~1.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "bundled": true + }, + "chalk": { + "version": "0.4.0", + "bundled": true, + "requires": { + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" + } + }, + "strip-ansi": { + "version": "0.1.1", + "bundled": true + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "bundled": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-url": { + "version": "2.0.1", + "bundled": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, + "npm-run-all": { + "version": "4.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^3.2.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.4", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "ps-tree": "^1.1.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "requires": { + "color-convert": "^1.9.0" + } + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "object-copy": { + "version": "0.1.0", + "bundled": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.0.12", + "bundled": true + }, + "object-visit": { + "version": "1.0.1", + "bundled": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "bundled": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.omit": { + "version": "2.0.1", + "bundled": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "bundled": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "bundled": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "bundled": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "ora": { + "version": "0.2.3", + "bundled": true, + "requires": { + "chalk": "^1.1.1", + "cli-cursor": "^1.0.2", + "cli-spinners": "^0.1.2", + "object-assign": "^4.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "bundled": true + }, + "restore-cursor": { + "version": "1.0.1", + "bundled": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "os-browserify": { + "version": "0.3.0", + "bundled": true + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "p-cancelable": { + "version": "0.4.1", + "bundled": true + }, + "p-each-series": { + "version": "1.0.0", + "bundled": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true + }, + "p-is-promise": { + "version": "1.1.0", + "bundled": true + }, + "p-lazy": { + "version": "1.0.0", + "bundled": true + }, + "p-limit": { + "version": "1.3.0", + "bundled": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "bundled": true + }, + "p-reduce": { + "version": "1.0.0", + "bundled": true + }, + "p-timeout": { + "version": "2.0.1", + "bundled": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "p-try": { + "version": "1.0.0", + "bundled": true + }, + "pako": { + "version": "1.0.6", + "bundled": true + }, + "parallel-transform": { + "version": "1.1.0", + "bundled": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.1", + "bundled": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" + } + }, + "parse-glob": { + "version": "3.0.4", + "bundled": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "4.0.0", + "bundled": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "bundled": true + }, + "parseurl": { + "version": "1.3.2", + "bundled": true + }, + "pascalcase": { + "version": "0.1.1", + "bundled": true + }, + "path-browserify": { + "version": "0.0.0", + "bundled": true + }, + "path-dirname": { + "version": "1.0.2", + "bundled": true + }, + "path-exists": { + "version": "3.0.0", + "bundled": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true + }, + "path-to-regexp": { + "version": "0.1.7", + "bundled": true + }, + "path-type": { + "version": "3.0.0", + "bundled": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pause-stream": { + "version": "0.0.11", + "bundled": true, + "requires": { + "through": "~2.3" + } + }, + "pbkdf2": { + "version": "3.0.16", + "bundled": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pify": { + "version": "3.0.0", + "bundled": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "bundled": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "bundled": true + }, + "prepend-http": { + "version": "2.0.0", + "bundled": true + }, + "preserve": { + "version": "0.2.0", + "bundled": true + }, + "prettier": { + "version": "1.13.7", + "bundled": true + }, + "pretty-bytes": { + "version": "4.0.2", + "bundled": true + }, + "private": { + "version": "0.1.8", + "bundled": true + }, + "process": { + "version": "0.11.10", + "bundled": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true + }, + "promise-inflight": { + "version": "1.0.1", + "bundled": true + }, + "proxy-addr": { + "version": "2.0.4", + "bundled": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.8.0" + } + }, + "prr": { + "version": "1.0.1", + "bundled": true + }, + "ps-tree": { + "version": "1.1.0", + "bundled": true, + "requires": { + "event-stream": "~3.3.0" + } + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true + }, + "psl": { + "version": "1.1.28", + "bundled": true + }, + "public-encrypt": { + "version": "4.0.2", + "bundled": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "pump": { + "version": "2.0.1", + "bundled": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "bundled": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "1.4.1", + "bundled": true + }, + "qs": { + "version": "6.5.1", + "bundled": true + }, + "query-string": { + "version": "5.1.1", + "bundled": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "bundled": true + }, + "querystring-es3": { + "version": "0.2.1", + "bundled": true + }, + "quick-lru": { + "version": "1.1.0", + "bundled": true + }, + "randomatic": { + "version": "3.0.0", + "bundled": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "bundled": true + } + } + }, + "randombytes": { + "version": "2.0.6", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "bundled": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.0", + "bundled": true + }, + "raw-body": { + "version": "2.3.2", + "bundled": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "bundled": true + }, + "http-errors": { + "version": "1.6.2", + "bundled": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + } + }, + "setprototypeof": { + "version": "1.0.3", + "bundled": true + } + } + }, + "read-chunk": { + "version": "2.1.0", + "bundled": true, + "requires": { + "pify": "^3.0.0", + "safe-buffer": "^5.1.1" + } + }, + "read-pkg": { + "version": "3.0.0", + "bundled": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "bundled": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.1.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" + } + }, + "recast": { + "version": "0.15.3", + "bundled": true, + "requires": { + "ast-types": "0.11.5", + "esprima": "~4.0.0", + "private": "~0.1.5", + "source-map": "~0.6.1" + } + }, + "rechoir": { + "version": "0.6.2", + "bundled": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "2.0.0", + "bundled": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "regenerate": { + "version": "1.4.0", + "bundled": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "bundled": true + }, + "regenerator-transform": { + "version": "0.10.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + }, + "regex-cache": { + "version": "0.4.4", + "bundled": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "bundled": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpu-core": { + "version": "2.0.0", + "bundled": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "bundled": true + }, + "regjsparser": { + "version": "0.1.5", + "bundled": true, + "requires": { + "jsesc": "~0.5.0" + } + }, + "remove-array-items": { + "version": "1.0.0", + "bundled": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "bundled": true + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true + }, + "repeating": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "0.0.1", + "bundled": true + }, + "require-directory": { + "version": "2.1.1", + "bundled": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true + }, + "resolve": { + "version": "1.8.1", + "bundled": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "bundled": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "bundled": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "bundled": true + }, + "resolve-url": { + "version": "0.2.1", + "bundled": true + }, + "responselike": { + "version": "1.0.2", + "bundled": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "bundled": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "bundled": true + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "requires": { + "glob": "^7.0.5" + } + }, + "ripemd160": { + "version": "2.0.2", + "bundled": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.3.0", + "bundled": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "bundled": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "5.5.11", + "bundled": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true + }, + "safe-regex": { + "version": "1.1.0", + "bundled": true, + "requires": { + "ret": "~0.1.10" + } + }, + "sax": { + "version": "1.2.4", + "bundled": true + }, + "schema-utils": { + "version": "0.4.5", + "bundled": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + }, + "scoped-regex": { + "version": "1.0.0", + "bundled": true + }, + "semver": { + "version": "5.5.0", + "bundled": true + }, + "send": { + "version": "0.16.2", + "bundled": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "serialize-javascript": { + "version": "1.5.0", + "bundled": true + }, + "serve-static": { + "version": "1.13.2", + "bundled": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "bundled": true + }, + "set-value": { + "version": "2.0.0", + "bundled": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "bundled": true + }, + "setprototypeof": { + "version": "1.1.0", + "bundled": true + }, + "sha.js": { + "version": "2.4.11", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true + }, + "shell-quote": { + "version": "1.6.1", + "bundled": true, + "requires": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "shelljs": { + "version": "0.7.8", + "bundled": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "should": { + "version": "5.2.0", + "bundled": true, + "requires": { + "should-equal": "0.3.1", + "should-format": "0.0.7", + "should-type": "0.0.4" + } + }, + "should-equal": { + "version": "0.3.1", + "bundled": true, + "requires": { + "should-type": "0.0.4" + } + }, + "should-format": { + "version": "0.0.7", + "bundled": true, + "requires": { + "should-type": "0.0.4" + } + }, + "should-type": { + "version": "0.0.4", + "bundled": true + }, + "shx": { + "version": "0.2.2", + "bundled": true, + "requires": { + "es6-object-assign": "^1.0.3", + "minimist": "^1.2.0", + "shelljs": "^0.7.3" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "slash": { + "version": "1.0.0", + "bundled": true + }, + "slice-ansi": { + "version": "0.0.4", + "bundled": true + }, + "slide": { + "version": "1.1.6", + "bundled": true + }, + "snapdragon": { + "version": "0.8.2", + "bundled": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "bundled": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "bundled": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sort-keys": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.0", + "bundled": true + }, + "source-map": { + "version": "0.6.1", + "bundled": true + }, + "source-map-resolve": { + "version": "0.5.2", + "bundled": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "bundled": true, + "requires": { + "source-map": "^0.5.6" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "bundled": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "bundled": true + }, + "spdx-correct": { + "version": "3.0.0", + "bundled": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "bundled": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "bundled": true + }, + "split": { + "version": "0.3.3", + "bundled": true, + "requires": { + "through": "2" + } + }, + "split-string": { + "version": "3.1.0", + "bundled": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "bundled": true + }, + "ssri": { + "version": "5.3.0", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "static-extend": { + "version": "0.1.2", + "bundled": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.4.0", + "bundled": true + }, + "stream-browserify": { + "version": "2.0.1", + "bundled": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-combiner": { + "version": "0.0.4", + "bundled": true, + "requires": { + "duplexer": "~0.1.1" + } + }, + "stream-each": { + "version": "1.2.2", + "bundled": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "bundled": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "bundled": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "bundled": true + }, + "string-template": { + "version": "0.2.1", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.padend": { + "version": "3.0.0", + "bundled": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.4.3", + "function-bind": "^1.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "bundled": true + }, + "strip-bom-stream": { + "version": "2.0.0", + "bundled": true, + "requires": { + "first-chunk-stream": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true + }, + "strip-indent": { + "version": "2.0.0", + "bundled": true + }, + "supports-color": { + "version": "5.4.0", + "bundled": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-observable": { + "version": "1.0.1", + "bundled": true + }, + "tapable": { + "version": "1.0.0", + "bundled": true + }, + "temp": { + "version": "0.8.3", + "bundled": true, + "requires": { + "os-tmpdir": "^1.0.0", + "rimraf": "~2.2.6" + }, + "dependencies": { + "rimraf": { + "version": "2.2.8", + "bundled": true + } + } + }, + "text-table": { + "version": "0.2.0", + "bundled": true + }, + "textextensions": { + "version": "2.2.0", + "bundled": true + }, + "through": { + "version": "2.3.8", + "bundled": true + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "timed-out": { + "version": "4.0.1", + "bundled": true + }, + "timers-browserify": { + "version": "2.0.10", + "bundled": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.33", + "bundled": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "bundled": true + }, + "to-fast-properties": { + "version": "1.0.3", + "bundled": true + }, + "to-object-path": { + "version": "0.3.0", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "bundled": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tough-cookie": { + "version": "2.4.3", + "bundled": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + }, + "trim-newlines": { + "version": "2.0.0", + "bundled": true + }, + "trim-right": { + "version": "1.0.1", + "bundled": true + }, + "ts-loader": { + "version": "4.4.2", + "bundled": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^3.1.4", + "semver": "^5.0.1" + } + }, + "ts-node": { + "version": "5.0.1", + "bundled": true, + "requires": { + "arrify": "^1.0.0", + "chalk": "^2.3.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.3", + "yn": "^2.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "source-map-support": { + "version": "0.5.6", + "bundled": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, + "tslib": { + "version": "1.9.3", + "bundled": true + }, + "tslint": { + "version": "5.11.0", + "bundled": true, + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.27.2" + } + }, + "tsutils": { + "version": "2.29.0", + "bundled": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "bundled": true + }, + "type-is": { + "version": "1.6.16", + "bundled": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "bundled": true + }, + "typescript": { + "version": "2.9.2", + "bundled": true + }, + "uglify-es": { + "version": "3.3.9", + "bundled": true, + "requires": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "bundled": true + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "1.2.7", + "bundled": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.5", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + } + }, + "ultron": { + "version": "1.1.1", + "bundled": true + }, + "underscore": { + "version": "1.6.0", + "bundled": true + }, + "union-value": { + "version": "1.0.0", + "bundled": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "bundled": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unique-filename": { + "version": "1.1.0", + "bundled": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "bundled": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unpipe": { + "version": "1.0.0", + "bundled": true + }, + "unset-value": { + "version": "1.0.0", + "bundled": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "bundled": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "bundled": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "bundled": true + } + } + }, + "untildify": { + "version": "3.0.3", + "bundled": true + }, + "upath": { + "version": "1.1.0", + "bundled": true + }, + "uri-js": { + "version": "4.2.2", + "bundled": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "bundled": true + } + } + }, + "urix": { + "version": "0.1.0", + "bundled": true + }, + "url": { + "version": "0.11.0", + "bundled": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "bundled": true + } + } + }, + "url-join": { + "version": "4.0.0", + "bundled": true + }, + "url-parse-lax": { + "version": "3.0.0", + "bundled": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, + "url-to-options": { + "version": "1.0.1", + "bundled": true + }, + "use": { + "version": "3.1.1", + "bundled": true + }, + "util": { + "version": "0.10.4", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "utils-merge": { + "version": "1.0.1", + "bundled": true + }, + "uuid": { + "version": "3.3.2", + "bundled": true + }, + "v8-compile-cache": { + "version": "2.0.0", + "bundled": true + }, + "validate-npm-package-license": { + "version": "3.0.3", + "bundled": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "bundled": true + }, + "vinyl": { + "version": "1.2.0", + "bundled": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-file": { + "version": "2.0.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.3.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^2.0.0", + "vinyl": "^1.1.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "bundled": true + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "vm-browserify": { + "version": "0.0.4", + "bundled": true, + "requires": { + "indexof": "0.0.1" + } + }, + "watchpack": { + "version": "1.6.0", + "bundled": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "webpack": { + "version": "4.16.3", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-module-context": "1.5.13", + "@webassemblyjs/wasm-edit": "1.5.13", + "@webassemblyjs/wasm-opt": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "acorn": "^5.6.2", + "acorn-dynamic-import": "^3.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.0.0", + "uglifyjs-webpack-plugin": "^1.2.4", + "watchpack": "^1.5.0", + "webpack-sources": "^1.0.1" + } + }, + "webpack-addons": { + "version": "1.1.5", + "bundled": true, + "requires": { + "jscodeshift": "^0.4.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "bundled": true + }, + "ast-types": { + "version": "0.10.1", + "bundled": true + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "jscodeshift": { + "version": "0.4.1", + "bundled": true, + "requires": { + "async": "^1.5.0", + "babel-plugin-transform-flow-strip-types": "^6.8.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-stage-1": "^6.5.0", + "babel-register": "^6.9.0", + "babylon": "^6.17.3", + "colors": "^1.1.2", + "flow-parser": "^0.*", + "lodash": "^4.13.1", + "micromatch": "^2.3.7", + "node-dir": "0.1.8", + "nomnom": "^1.8.1", + "recast": "^0.12.5", + "temp": "^0.8.1", + "write-file-atomic": "^1.2.0" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "recast": { + "version": "0.12.9", + "bundled": true, + "requires": { + "ast-types": "0.10.1", + "core-js": "^2.4.1", + "esprima": "~4.0.0", + "private": "~0.1.5", + "source-map": "~0.6.1" + } + } + } + }, + "webpack-cli": { + "version": "2.1.5", + "bundled": true, + "requires": { + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "diff": "^3.5.0", + "enhanced-resolve": "^4.0.0", + "envinfo": "^5.7.0", + "glob-all": "^3.1.0", + "global-modules": "^1.0.0", + "got": "^8.3.1", + "import-local": "^1.0.0", + "inquirer": "^5.2.0", + "interpret": "^1.1.0", + "jscodeshift": "^0.5.0", + "listr": "^0.14.1", + "loader-utils": "^1.1.0", + "lodash": "^4.17.10", + "log-symbols": "^2.2.0", + "mkdirp": "^0.5.1", + "p-each-series": "^1.0.0", + "p-lazy": "^1.0.0", + "prettier": "^1.12.1", + "supports-color": "^5.4.0", + "v8-compile-cache": "^2.0.0", + "webpack-addons": "^1.1.5", + "yargs": "^11.1.0", + "yeoman-environment": "^2.1.1", + "yeoman-generator": "^2.0.5" + } + }, + "webpack-dev-middleware": { + "version": "3.1.3", + "bundled": true, + "requires": { + "loud-rejection": "^1.6.0", + "memory-fs": "~0.4.1", + "mime": "^2.1.0", + "path-is-absolute": "^1.0.0", + "range-parser": "^1.0.3", + "url-join": "^4.0.0", + "webpack-log": "^1.0.1" + }, + "dependencies": { + "mime": { + "version": "2.3.1", + "bundled": true + } + } + }, + "webpack-log": { + "version": "1.2.0", + "bundled": true, + "requires": { + "chalk": "^2.1.0", + "log-symbols": "^2.1.0", + "loglevelnext": "^1.0.1", + "uuid": "^3.1.0" + } + }, + "webpack-sources": { + "version": "1.1.0", + "bundled": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "which": { + "version": "1.3.1", + "bundled": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true + }, + "worker-farm": { + "version": "1.6.0", + "bundled": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" + } + }, + "ws": { + "version": "3.3.3", + "bundled": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "xml2js": { + "version": "0.4.19", + "bundled": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "bundled": true + }, + "xtend": { + "version": "4.0.1", + "bundled": true + }, + "y18n": { + "version": "4.0.0", + "bundled": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true + }, + "yargs": { + "version": "11.1.0", + "bundled": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + }, + "dependencies": { + "y18n": { + "version": "3.2.1", + "bundled": true + } + } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "requires": { + "camelcase": "^4.1.0" + } + }, + "yarn": { + "version": "1.9.2", + "bundled": true + }, + "yeoman-environment": { + "version": "2.3.1", + "bundled": true, + "requires": { + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^3.1.0", + "diff": "^3.3.1", + "escape-string-regexp": "^1.0.2", + "globby": "^8.0.1", + "grouped-queue": "^0.3.3", + "inquirer": "^5.2.0", + "is-scoped": "^1.0.0", + "lodash": "^4.17.10", + "log-symbols": "^2.1.0", + "mem-fs": "^1.1.0", + "strip-ansi": "^4.0.0", + "text-table": "^0.2.0", + "untildify": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } + }, + "yeoman-generator": { + "version": "2.0.5", + "bundled": true, + "requires": { + "async": "^2.6.0", + "chalk": "^2.3.0", + "cli-table": "^0.3.1", + "cross-spawn": "^6.0.5", + "dargs": "^5.1.0", + "dateformat": "^3.0.3", + "debug": "^3.1.0", + "detect-conflict": "^1.0.0", + "error": "^7.0.2", + "find-up": "^2.1.0", + "github-username": "^4.0.0", + "istextorbinary": "^2.2.1", + "lodash": "^4.17.10", + "make-dir": "^1.1.0", + "mem-fs-editor": "^4.0.0", + "minimist": "^1.2.0", + "pretty-bytes": "^4.0.2", + "read-chunk": "^2.1.0", + "read-pkg-up": "^3.0.0", + "rimraf": "^2.6.2", + "run-async": "^2.0.0", + "shelljs": "^0.8.0", + "text-table": "^0.2.0", + "through2": "^2.0.0", + "yeoman-environment": "^2.0.5" + }, + "dependencies": { + "async": { + "version": "2.6.1", + "bundled": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "shelljs": { + "version": "0.8.2", + "bundled": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + } + } + }, + "yn": { + "version": "2.0.0", + "bundled": true } } }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", - "dev": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "ms-rest-js": { - "version": "0.16.373", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.16.373.tgz", - "integrity": "sha1-O4H8JtP5uYVxlqQ/HH3OB49ZGp4=", - "requires": { - "@types/express": "^4.11.1", - "@types/form-data": "^2.2.1", - "@types/node": "^9.4.6", - "@types/uuid": "^3.4.3", - "axios": "^0.18.0", - "form-data": "^2.3.2", - "isomorphic-xml2js": "^0.1.3", - "tough-cookie": "^2.4.3", - "tslib": "^1.9.2", - "uuid": "^3.2.1" - } - }, "nan": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", @@ -3021,6 +9586,14 @@ "url": "^0.11.0", "util": "^0.10.3", "vm-browserify": "0.0.4" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } } }, "normalize-package-data": { @@ -5384,11 +11957,6 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, - "psl": { - "version": "1.1.28", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.28.tgz", - "integrity": "sha512-+AqO1Ae+N/4r7Rvchrdm432afjT9hqJRyBN3DQv9At0tPz4hIFSGKbq64fN9dVoCow4oggIIax5/iONx0r9hZw==" - }, "public-encrypt": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", @@ -5403,9 +11971,10 @@ } }, "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "querystring": { "version": "0.2.0", @@ -5639,11 +12208,6 @@ "ret": "~0.1.10" } }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", @@ -6215,15 +12779,6 @@ "repeat-string": "^1.6.1" } }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -6467,14 +13022,6 @@ "dev": true, "requires": { "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - } } }, "urix": { @@ -6522,11 +13069,6 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - }, "validate-npm-package-license": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", @@ -6678,20 +13220,6 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" - } - }, - "xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" - }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", @@ -6781,9 +13309,9 @@ } }, "yarn": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.7.0.tgz", - "integrity": "sha1-AHa5/eYBDgGVBSamCbxTvBde+SU=", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.9.2.tgz", + "integrity": "sha1-dmbG2w/tjcCQrg3OEaiiix2C45E=", "dev": true }, "yn": { diff --git a/package.json b/package.json index 1c0cf2178c70..588863ca87cc 100644 --- a/package.json +++ b/package.json @@ -25,12 +25,12 @@ "autorest", "clientruntime" ], - "main": "./dist/lib/msRestAzure.js", + "main": "./lib/msRestAzure.ts", "browser": "./es/lib/msRestAzure.js", "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.16.373", + "ms-rest-js": "file:../ms-rest-js", "tslib": "^1.9.2" }, "devDependencies": { From f0c4a8d617ebaf6b3f9ac41927b6a0cd1d3ecb54 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Fri, 27 Jul 2018 13:03:00 -0700 Subject: [PATCH 075/289] Reset dependencies to preview --- package-lock.json | 7366 +++------------------------------------------ package.json | 4 +- 2 files changed, 421 insertions(+), 6949 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0dc42ebc3904..793c7ed766d3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -113,18 +113,109 @@ "to-fast-properties": "^2.0.0" } }, + "@types/body-parser": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz", + "integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.32", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", + "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==", + "requires": { + "@types/node": "*" + } + }, + "@types/events": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", + "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==" + }, + "@types/express": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.0.tgz", + "integrity": "sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.0.tgz", + "integrity": "sha512-lTeoCu5NxJU4OD9moCgm0ESZzweAx0YqsAcab6OB0EB3+As1OaHtKnaGJvcngQxYsi9UNv0abn4/DRavrRxt4w==", + "requires": { + "@types/events": "*", + "@types/node": "*", + "@types/range-parser": "*" + } + }, + "@types/form-data": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", + "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/mime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz", + "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==" + }, "@types/mocha": { "version": "5.2.5", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.5.tgz", "integrity": "sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww==", "dev": true }, + "@types/node": { + "version": "9.6.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.23.tgz", + "integrity": "sha512-d2SJJpwkiPudEQ3+9ysANN2Nvz4QJKUPoe/WL5zyQzI0RaEeZWH5K5xjvUIGszTItHQpFPdH+u51f6G/LkS8Cg==" + }, + "@types/range-parser": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.2.tgz", + "integrity": "sha512-HtKGu+qG1NPvYe1z7ezLsyIaXYyi8SoAVqWDZgDQ8dLrsZvSzUNCwZyfX33uhWxL/SU0ZDQZ3nwZ0nimt507Kw==" + }, + "@types/serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==", + "requires": { + "@types/express-serve-static-core": "*", + "@types/mime": "*" + } + }, "@types/should": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/@types/should/-/should-8.3.0.tgz", "integrity": "sha1-4rRgJDaF2+N3GC857zjTf00Veto=", "dev": true }, + "@types/uuid": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.3.tgz", + "integrity": "sha512-5fRLCYhLtDb3hMWqQyH10qtF+Ud2JnNCXTCZ+9ktNdCcgslcuXkDTkFcJNk++MT29yDntDnlF1+jD+uVGumsbw==", + "requires": { + "@types/node": "*" + } + }, + "@types/xml2js": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.3.tgz", + "integrity": "sha512-Pv2HGRE4gWLs31In7nsyXEH4uVVsd0HNV9i2dyASvtDIlOtSTr1eczPLDpdEuyv5LWH5LT20GIXwPjkshKWI1g==", + "requires": { + "@types/events": "*", + "@types/node": "*" + } + }, "acorn": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", @@ -317,12 +408,26 @@ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, "atob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", "dev": true }, + "axios": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", + "requires": { + "follow-redirects": "^1.3.0", + "is-buffer": "^1.1.5" + } + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -749,6 +854,14 @@ "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", "dev": true }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "~1.0.0" + } + }, "commander": { "version": "2.15.1", "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", @@ -882,7 +995,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -956,6 +1068,11 @@ } } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", @@ -1441,6 +1558,14 @@ "locate-path": "^2.0.0" } }, + "follow-redirects": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.1.tgz", + "integrity": "sha512-v9GI1hpaqq1ZZR6pBD1+kI7O24PhDvNGNodjS3MdcEqyrahCp8zbtpv+2B/krUnSmUH80lbAS7MrdeK5IylgKg==", + "requires": { + "debug": "^3.1.0" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -1453,6 +1578,16 @@ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", "dev": true }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -2261,8 +2396,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-builtin-module": { "version": "1.0.0", @@ -2406,6 +2540,15 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "isomorphic-xml2js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/isomorphic-xml2js/-/isomorphic-xml2js-0.1.3.tgz", + "integrity": "sha512-dIkT2U9ritKVWF/HfHfGwm5tTnlMnknYsv7l12oJlQQgOV2CNV65pX+FHy6HFL9YP8q0JcrlNQAFRJIN2agUmQ==", + "requires": { + "@types/xml2js": "^0.4.2", + "xml2js": "^0.4.19" + } + }, "istanbul-lib-coverage": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", @@ -2568,6943 +2711,235 @@ "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } - }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-error": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz", - "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==", - "dev": true - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", - "dev": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "ms-rest-js": { - "version": "file:../ms-rest-js", - "requires": { - "@types/express": "^4.11.1", - "@types/form-data": "^2.2.1", - "@types/node": "^9.4.6", - "@types/uuid": "^3.4.3", - "axios": "^0.18.0", - "form-data": "^2.3.2", - "isomorphic-xml2js": "^0.1.3", - "tough-cookie": "^2.4.3", - "tslib": "^1.9.2", - "uuid": "^3.2.1" - }, - "dependencies": { - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "bundled": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.0", - "bundled": true - }, - "@samverschueren/stream-to-observable": { - "version": "0.3.0", - "bundled": true, - "requires": { - "any-observable": "^0.3.0" - } - }, - "@sindresorhus/is": { - "version": "0.7.0", - "bundled": true - }, - "@types/body-parser": { - "version": "1.17.0", - "bundled": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.32", - "bundled": true, - "requires": { - "@types/node": "*" - } - }, - "@types/core-js": { - "version": "0.9.46", - "bundled": true - }, - "@types/events": { - "version": "1.2.0", - "bundled": true - }, - "@types/express": { - "version": "4.16.0", - "bundled": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.16.0", - "bundled": true, - "requires": { - "@types/events": "*", - "@types/node": "*", - "@types/range-parser": "*" - } - }, - "@types/form-data": { - "version": "2.2.1", - "bundled": true, - "requires": { - "@types/node": "*" - } - }, - "@types/glob": { - "version": "5.0.35", - "bundled": true, - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/loglevel": { - "version": "1.5.3", - "bundled": true - }, - "@types/memory-fs": { - "version": "0.3.1", - "bundled": true, - "requires": { - "@types/node": "*" - } - }, - "@types/mime": { - "version": "2.0.0", - "bundled": true - }, - "@types/minimatch": { - "version": "3.0.3", - "bundled": true - }, - "@types/mkdirp": { - "version": "0.3.29", - "bundled": true - }, - "@types/mocha": { - "version": "5.2.5", - "bundled": true - }, - "@types/node": { - "version": "9.6.23", - "bundled": true - }, - "@types/range-parser": { - "version": "1.2.2", - "bundled": true - }, - "@types/rimraf": { - "version": "0.0.28", - "bundled": true - }, - "@types/serve-static": { - "version": "1.13.2", - "bundled": true, - "requires": { - "@types/express-serve-static-core": "*", - "@types/mime": "*" - } - }, - "@types/should": { - "version": "8.3.0", - "bundled": true - }, - "@types/tapable": { - "version": "1.0.4", - "bundled": true - }, - "@types/tough-cookie": { - "version": "2.3.3", - "bundled": true - }, - "@types/uglify-js": { - "version": "3.0.3", - "bundled": true, - "requires": { - "source-map": "^0.6.1" - } - }, - "@types/uuid": { - "version": "3.4.3", - "bundled": true, - "requires": { - "@types/node": "*" - } - }, - "@types/webpack": { - "version": "4.4.8", - "bundled": true, - "requires": { - "@types/node": "*", - "@types/tapable": "*", - "@types/uglify-js": "*", - "source-map": "^0.6.0" - } - }, - "@types/webpack-dev-middleware": { - "version": "2.0.2", - "bundled": true, - "requires": { - "@types/connect": "*", - "@types/loglevel": "*", - "@types/memory-fs": "*", - "@types/webpack": "*" - } - }, - "@types/xml2js": { - "version": "0.4.3", - "bundled": true, - "requires": { - "@types/events": "*", - "@types/node": "*" - } - }, - "@webassemblyjs/ast": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/wast-parser": "1.5.13", - "debug": "^3.1.0", - "mamacro": "^0.0.3" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.5.13", - "bundled": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.5.13", - "bundled": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.5.13", - "bundled": true, - "requires": { - "debug": "^3.1.0" - } - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/wast-printer": "1.5.13" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.5.13", - "bundled": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.5.13", - "bundled": true, - "requires": { - "debug": "^3.1.0", - "mamacro": "^0.0.3" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.5.13", - "bundled": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-buffer": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/wasm-gen": "1.5.13", - "debug": "^3.1.0" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.5.13", - "bundled": true, - "requires": { - "ieee754": "^1.1.11" - } - }, - "@webassemblyjs/leb128": { - "version": "1.5.13", - "bundled": true, - "requires": { - "long": "4.0.0" - }, - "dependencies": { - "long": { - "version": "4.0.0", - "bundled": true - } - } - }, - "@webassemblyjs/utf8": { - "version": "1.5.13", - "bundled": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-buffer": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/helper-wasm-section": "1.5.13", - "@webassemblyjs/wasm-gen": "1.5.13", - "@webassemblyjs/wasm-opt": "1.5.13", - "@webassemblyjs/wasm-parser": "1.5.13", - "@webassemblyjs/wast-printer": "1.5.13", - "debug": "^3.1.0" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/ieee754": "1.5.13", - "@webassemblyjs/leb128": "1.5.13", - "@webassemblyjs/utf8": "1.5.13" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-buffer": "1.5.13", - "@webassemblyjs/wasm-gen": "1.5.13", - "@webassemblyjs/wasm-parser": "1.5.13", - "debug": "^3.1.0" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-api-error": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/ieee754": "1.5.13", - "@webassemblyjs/leb128": "1.5.13", - "@webassemblyjs/utf8": "1.5.13" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/floating-point-hex-parser": "1.5.13", - "@webassemblyjs/helper-api-error": "1.5.13", - "@webassemblyjs/helper-code-frame": "1.5.13", - "@webassemblyjs/helper-fsm": "1.5.13", - "long": "^3.2.0", - "mamacro": "^0.0.3" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/wast-parser": "1.5.13", - "long": "^3.2.0" - } - }, - "abortcontroller-polyfill": { - "version": "1.1.9", - "bundled": true - }, - "accepts": { - "version": "1.3.5", - "bundled": true, - "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" - } - }, - "acorn": { - "version": "5.7.1", - "bundled": true - }, - "acorn-dynamic-import": { - "version": "3.0.0", - "bundled": true, - "requires": { - "acorn": "^5.0.0" - } - }, - "ajv": { - "version": "6.5.2", - "bundled": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.1" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "bundled": true - }, - "ansi-escapes": { - "version": "3.1.0", - "bundled": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true - }, - "any-observable": { - "version": "0.3.0", - "bundled": true - }, - "anymatch": { - "version": "2.0.0", - "bundled": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "aproba": { - "version": "1.2.0", - "bundled": true - }, - "argparse": { - "version": "1.0.10", - "bundled": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "bundled": true - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true - }, - "arr-union": { - "version": "3.1.0", - "bundled": true - }, - "array-differ": { - "version": "1.0.0", - "bundled": true - }, - "array-filter": { - "version": "0.0.1", - "bundled": true - }, - "array-find-index": { - "version": "1.0.2", - "bundled": true - }, - "array-flatten": { - "version": "1.1.1", - "bundled": true - }, - "array-map": { - "version": "0.0.0", - "bundled": true - }, - "array-reduce": { - "version": "0.0.0", - "bundled": true - }, - "array-union": { - "version": "1.0.2", - "bundled": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "bundled": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true - }, - "asn1.js": { - "version": "4.10.1", - "bundled": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "bundled": true, - "requires": { - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "bundled": true - }, - "util": { - "version": "0.10.3", - "bundled": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assign-symbols": { - "version": "1.0.0", - "bundled": true - }, - "ast-types": { - "version": "0.11.5", - "bundled": true - }, - "async": { - "version": "1.5.2", - "bundled": true - }, - "async-each": { - "version": "1.0.1", - "bundled": true - }, - "async-limiter": { - "version": "1.0.0", - "bundled": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true - }, - "atob": { - "version": "2.1.1", - "bundled": true - }, - "axios": { - "version": "0.18.0", - "bundled": true, - "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "bundled": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "babel-core": { - "version": "6.26.3", - "bundled": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "source-map": { - "version": "0.5.7", - "bundled": true - } - } - }, - "babel-generator": { - "version": "6.26.1", - "bundled": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "bundled": true - }, - "source-map": { - "version": "0.5.7", - "bundled": true - } - } - }, - "babel-helper-bindify-decorators": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-define-map": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-explode-class": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-bindify-decorators": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-regex": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-async-generators": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-class-constructor-call": { - "version": "6.18.0", - "bundled": true - }, - "babel-plugin-syntax-class-properties": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-decorators": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-dynamic-import": { - "version": "6.18.0", - "bundled": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-export-extensions": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-flow": { - "version": "6.18.0", - "bundled": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "bundled": true - }, - "babel-plugin-transform-async-generator-functions": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-generators": "^6.5.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-class-constructor-call": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-syntax-class-constructor-call": "^6.18.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-class-properties": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-plugin-syntax-class-properties": "^6.8.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-decorators": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-explode-class": "^6.24.1", - "babel-plugin-syntax-decorators": "^6.13.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-define-map": "^6.24.1", - "babel-helper-function-name": "^6.24.1", - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-helper-replace-supers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "bundled": true, - "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-replace-supers": "^6.24.1", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-export-extensions": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-plugin-syntax-export-extensions": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-flow-strip-types": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-plugin-syntax-flow": "^6.18.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.8.0", - "babel-runtime": "^6.26.0" - } - }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "bundled": true, - "requires": { - "regenerator-transform": "^0.10.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-polyfill": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "regenerator-runtime": "^0.10.5" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.10.5", - "bundled": true - } - } - }, - "babel-preset-env": { - "version": "1.7.0", - "bundled": true, - "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-to-generator": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.23.0", - "babel-plugin-transform-es2015-classes": "^6.23.0", - "babel-plugin-transform-es2015-computed-properties": "^6.22.0", - "babel-plugin-transform-es2015-destructuring": "^6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", - "babel-plugin-transform-es2015-for-of": "^6.23.0", - "babel-plugin-transform-es2015-function-name": "^6.22.0", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.22.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-umd": "^6.23.0", - "babel-plugin-transform-es2015-object-super": "^6.22.0", - "babel-plugin-transform-es2015-parameters": "^6.23.0", - "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", - "babel-plugin-transform-exponentiation-operator": "^6.22.0", - "babel-plugin-transform-regenerator": "^6.22.0", - "browserslist": "^3.2.6", - "invariant": "^2.2.2", - "semver": "^5.3.0" - } - }, - "babel-preset-es2015": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.24.1", - "babel-plugin-transform-es2015-classes": "^6.24.1", - "babel-plugin-transform-es2015-computed-properties": "^6.24.1", - "babel-plugin-transform-es2015-destructuring": "^6.22.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", - "babel-plugin-transform-es2015-for-of": "^6.22.0", - "babel-plugin-transform-es2015-function-name": "^6.24.1", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-umd": "^6.24.1", - "babel-plugin-transform-es2015-object-super": "^6.24.1", - "babel-plugin-transform-es2015-parameters": "^6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", - "babel-plugin-transform-regenerator": "^6.24.1" - } - }, - "babel-preset-stage-1": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-transform-class-constructor-call": "^6.24.1", - "babel-plugin-transform-export-extensions": "^6.22.0", - "babel-preset-stage-2": "^6.24.1" - } - }, - "babel-preset-stage-2": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-syntax-dynamic-import": "^6.18.0", - "babel-plugin-transform-class-properties": "^6.24.1", - "babel-plugin-transform-decorators": "^6.24.1", - "babel-preset-stage-3": "^6.24.1" - } - }, - "babel-preset-stage-3": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-generator-functions": "^6.24.1", - "babel-plugin-transform-async-to-generator": "^6.24.1", - "babel-plugin-transform-exponentiation-operator": "^6.24.1", - "babel-plugin-transform-object-rest-spread": "^6.22.0" - } - }, - "babel-register": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - } - }, - "babel-runtime": { - "version": "6.26.0", - "bundled": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "babel-types": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "bundled": true - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "base": { - "version": "0.11.2", - "bundled": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.3.0", - "bundled": true - }, - "big.js": { - "version": "3.2.0", - "bundled": true - }, - "binary-extensions": { - "version": "1.11.0", - "bundled": true - }, - "binaryextensions": { - "version": "2.1.1", - "bundled": true - }, - "bluebird": { - "version": "3.5.1", - "bundled": true - }, - "bn.js": { - "version": "4.11.8", - "bundled": true - }, - "body-parser": { - "version": "1.18.2", - "bundled": true, - "requires": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.1", - "http-errors": "~1.6.2", - "iconv-lite": "0.4.19", - "on-finished": "~2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "~1.6.15" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "bundled": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "bundled": true - }, - "browser-stdout": { - "version": "1.3.1", - "bundled": true - }, - "browserify-aes": { - "version": "1.2.0", - "bundled": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "bundled": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "bundled": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "bundled": true - } - } - }, - "browserify-rsa": { - "version": "4.0.1", - "bundled": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "bundled": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "bundled": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "3.2.8", - "bundled": true, - "requires": { - "caniuse-lite": "^1.0.30000844", - "electron-to-chromium": "^1.3.47" - } - }, - "buffer": { - "version": "4.9.1", - "bundled": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.0", - "bundled": true - }, - "buffer-xor": { - "version": "1.0.3", - "bundled": true - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "bundled": true - }, - "bytes": { - "version": "3.0.0", - "bundled": true - }, - "cacache": { - "version": "10.0.4", - "bundled": true, - "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" - } - }, - "cache-base": { - "version": "1.0.1", - "bundled": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cacheable-request": { - "version": "2.1.4", - "bundled": true, - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.0", - "bundled": true - } - } - }, - "call-me-maybe": { - "version": "1.0.1", - "bundled": true - }, - "camelcase": { - "version": "4.1.0", - "bundled": true - }, - "camelcase-keys": { - "version": "4.2.0", - "bundled": true, - "requires": { - "camelcase": "^4.1.0", - "map-obj": "^2.0.0", - "quick-lru": "^1.0.0" - } - }, - "caniuse-lite": { - "version": "1.0.30000865", - "bundled": true - }, - "chalk": { - "version": "2.4.1", - "bundled": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "bundled": true, - "requires": { - "color-convert": "^1.9.0" - } - } - } - }, - "chardet": { - "version": "0.4.2", - "bundled": true - }, - "chokidar": { - "version": "2.0.4", - "bundled": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true - }, - "chrome-launcher": { - "version": "0.10.2", - "bundled": true, - "requires": { - "@types/core-js": "^0.9.41", - "@types/mkdirp": "^0.3.29", - "@types/node": "^9.3.0", - "@types/rimraf": "^0.0.28", - "is-wsl": "^1.1.0", - "lighthouse-logger": "^1.0.0", - "mkdirp": "0.5.1", - "rimraf": "^2.6.1" - } - }, - "chrome-remote-interface": { - "version": "0.25.7", - "bundled": true, - "requires": { - "commander": "2.11.x", - "ws": "3.3.x" - }, - "dependencies": { - "commander": { - "version": "2.11.0", - "bundled": true - } - } - }, - "chrome-trace-event": { - "version": "1.0.0", - "bundled": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "chrome-unmirror": { - "version": "0.1.0", - "bundled": true - }, - "cipher-base": { - "version": "1.0.4", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "bundled": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cli-cursor": { - "version": "2.1.0", - "bundled": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-spinners": { - "version": "0.1.2", - "bundled": true - }, - "cli-table": { - "version": "0.3.1", - "bundled": true, - "requires": { - "colors": "1.0.3" - }, - "dependencies": { - "colors": { - "version": "1.0.3", - "bundled": true - } - } - }, - "cli-truncate": { - "version": "0.2.1", - "bundled": true, - "requires": { - "slice-ansi": "0.0.4", - "string-width": "^1.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "cli-width": { - "version": "2.2.0", - "bundled": true - }, - "cliui": { - "version": "4.1.0", - "bundled": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "clone": { - "version": "1.0.4", - "bundled": true - }, - "clone-buffer": { - "version": "1.0.0", - "bundled": true - }, - "clone-response": { - "version": "1.0.2", - "bundled": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "clone-stats": { - "version": "0.0.1", - "bundled": true - }, - "cloneable-readable": { - "version": "1.1.2", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "collection-visit": { - "version": "1.0.0", - "bundled": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.2", - "bundled": true, - "requires": { - "color-name": "1.1.1" - } - }, - "color-name": { - "version": "1.1.1", - "bundled": true - }, - "colors": { - "version": "1.3.1", - "bundled": true - }, - "combined-stream": { - "version": "1.0.6", - "bundled": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.15.1", - "bundled": true - }, - "commondir": { - "version": "1.0.1", - "bundled": true - }, - "component-emitter": { - "version": "1.2.1", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "concat-stream": { - "version": "1.6.2", - "bundled": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "console-browserify": { - "version": "1.1.0", - "bundled": true, - "requires": { - "date-now": "^0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "bundled": true - }, - "content-disposition": { - "version": "0.5.2", - "bundled": true - }, - "content-type": { - "version": "1.0.4", - "bundled": true - }, - "convert-source-map": { - "version": "1.5.1", - "bundled": true - }, - "cookie": { - "version": "0.3.1", - "bundled": true - }, - "cookie-signature": { - "version": "1.0.6", - "bundled": true - }, - "copy-concurrently": { - "version": "1.0.5", - "bundled": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "bundled": true - }, - "core-js": { - "version": "2.5.7", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "create-ecdh": { - "version": "4.0.3", - "bundled": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "bundled": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "bundled": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "bundled": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "bundled": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "currently-unhandled": { - "version": "0.4.1", - "bundled": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "cyclist": { - "version": "0.2.2", - "bundled": true - }, - "d": { - "version": "1.0.0", - "bundled": true, - "requires": { - "es5-ext": "^0.10.9" - } - }, - "dargs": { - "version": "5.1.0", - "bundled": true - }, - "date-fns": { - "version": "1.29.0", - "bundled": true - }, - "date-now": { - "version": "0.1.4", - "bundled": true - }, - "dateformat": { - "version": "3.0.3", - "bundled": true - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "bundled": true - }, - "decamelize-keys": { - "version": "1.1.0", - "bundled": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "bundled": true - } - } - }, - "decode-uri-component": { - "version": "0.2.0", - "bundled": true - }, - "decompress-response": { - "version": "3.3.0", - "bundled": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-assign": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true - }, - "define-properties": { - "version": "1.1.2", - "bundled": true, - "requires": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" - } - }, - "define-property": { - "version": "2.0.2", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true - }, - "depd": { - "version": "1.1.2", - "bundled": true - }, - "des.js": { - "version": "1.0.0", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "bundled": true - }, - "detect-conflict": { - "version": "1.0.1", - "bundled": true - }, - "detect-indent": { - "version": "4.0.0", - "bundled": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "diff": { - "version": "3.5.0", - "bundled": true - }, - "diffie-hellman": { - "version": "5.0.3", - "bundled": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "dir-glob": { - "version": "2.0.0", - "bundled": true, - "requires": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" - } - }, - "domain-browser": { - "version": "1.2.0", - "bundled": true - }, - "duplexer": { - "version": "0.1.1", - "bundled": true - }, - "duplexer3": { - "version": "0.1.4", - "bundled": true - }, - "duplexify": { - "version": "3.6.0", - "bundled": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "editions": { - "version": "1.3.4", - "bundled": true - }, - "ee-first": { - "version": "1.1.1", - "bundled": true - }, - "ejs": { - "version": "2.6.1", - "bundled": true - }, - "electron-to-chromium": { - "version": "1.3.52", - "bundled": true - }, - "elegant-spinner": { - "version": "1.0.1", - "bundled": true - }, - "elliptic": { - "version": "6.4.0", - "bundled": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "emojis-list": { - "version": "2.1.0", - "bundled": true - }, - "encodeurl": { - "version": "1.0.2", - "bundled": true - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.1.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" - } - }, - "envinfo": { - "version": "5.10.0", - "bundled": true - }, - "errno": { - "version": "0.1.7", - "bundled": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error": { - "version": "7.0.2", - "bundled": true, - "requires": { - "string-template": "~0.2.1", - "xtend": "~4.0.0" - } - }, - "error-ex": { - "version": "1.3.2", - "bundled": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.12.0", - "bundled": true, - "requires": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" - } - }, - "es-to-primitive": { - "version": "1.1.1", - "bundled": true, - "requires": { - "is-callable": "^1.1.1", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.1" - } - }, - "es5-ext": { - "version": "0.10.45", - "bundled": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" - } - }, - "es6-iterator": { - "version": "2.0.3", - "bundled": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-object-assign": { - "version": "1.1.0", - "bundled": true - }, - "es6-symbol": { - "version": "3.1.1", - "bundled": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "escape-html": { - "version": "1.0.3", - "bundled": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true - }, - "eslint-scope": { - "version": "4.0.0", - "bundled": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "bundled": true - }, - "esrecurse": { - "version": "4.2.1", - "bundled": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.2.0", - "bundled": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true - }, - "etag": { - "version": "1.8.1", - "bundled": true - }, - "event-stream": { - "version": "3.3.4", - "bundled": true, - "requires": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", - "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" - } - }, - "events": { - "version": "1.1.1", - "bundled": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "bundled": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "0.7.0", - "bundled": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "exit-hook": { - "version": "1.1.1", - "bundled": true - }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-range": { - "version": "1.8.2", - "bundled": true, - "requires": { - "fill-range": "^2.1.0" - }, - "dependencies": { - "fill-range": { - "version": "2.2.4", - "bundled": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "is-number": { - "version": "2.1.0", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isobject": { - "version": "2.1.0", - "bundled": true, - "requires": { - "isarray": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "bundled": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "express": { - "version": "4.16.3", - "bundled": true, - "requires": { - "accepts": "~1.3.5", - "array-flatten": "1.1.1", - "body-parser": "1.18.2", - "content-disposition": "0.5.2", - "content-type": "~1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.3", - "qs": "6.5.1", - "range-parser": "~1.2.0", - "safe-buffer": "5.1.1", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "bundled": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "external-editor": { - "version": "2.2.0", - "bundled": true, - "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "bundled": true - }, - "fast-glob": { - "version": "2.2.2", - "bundled": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.0.1", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.1", - "micromatch": "^3.1.10" - } - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "bundled": true - }, - "figures": { - "version": "2.0.0", - "bundled": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "filename-regex": { - "version": "2.0.1", - "bundled": true - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "finalhandler": { - "version": "1.1.1", - "bundled": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "find-cache-dir": { - "version": "1.0.0", - "bundled": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "first-chunk-stream": { - "version": "2.0.0", - "bundled": true, - "requires": { - "readable-stream": "^2.0.2" - } - }, - "flow-parser": { - "version": "0.76.0", - "bundled": true - }, - "flush-write-stream": { - "version": "1.0.3", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" - } - }, - "follow-redirects": { - "version": "1.5.1", - "bundled": true, - "requires": { - "debug": "^3.1.0" - } - }, - "for-in": { - "version": "1.0.2", - "bundled": true - }, - "for-own": { - "version": "0.1.5", - "bundled": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "foreach": { - "version": "2.0.5", - "bundled": true - }, - "form-data": { - "version": "2.3.2", - "bundled": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "bundled": true - }, - "fragment-cache": { - "version": "0.2.1", - "bundled": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "bundled": true - }, - "from": { - "version": "0.1.7", - "bundled": true - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "function-bind": { - "version": "1.1.1", - "bundled": true - }, - "get-caller-file": { - "version": "1.0.3", - "bundled": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "get-value": { - "version": "2.0.6", - "bundled": true - }, - "gh-got": { - "version": "6.0.0", - "bundled": true, - "requires": { - "got": "^7.0.0", - "is-plain-obj": "^1.1.0" - }, - "dependencies": { - "got": { - "version": "7.1.0", - "bundled": true, - "requires": { - "decompress-response": "^3.2.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-plain-obj": "^1.1.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^1.1.1", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "url-parse-lax": "^1.0.0", - "url-to-options": "^1.0.1" - } - }, - "p-cancelable": { - "version": "0.3.0", - "bundled": true - }, - "p-timeout": { - "version": "1.2.1", - "bundled": true, - "requires": { - "p-finally": "^1.0.0" - } - }, - "prepend-http": { - "version": "1.0.4", - "bundled": true - }, - "url-parse-lax": { - "version": "1.0.0", - "bundled": true, - "requires": { - "prepend-http": "^1.0.1" - } - } - } - }, - "github-username": { - "version": "4.1.0", - "bundled": true, - "requires": { - "gh-got": "^6.0.0" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-all": { - "version": "3.1.0", - "bundled": true, - "requires": { - "glob": "^7.0.5", - "yargs": "~1.2.6" - }, - "dependencies": { - "minimist": { - "version": "0.1.0", - "bundled": true - }, - "yargs": { - "version": "1.2.6", - "bundled": true, - "requires": { - "minimist": "^0.1.0" - } - } - } - }, - "glob-base": { - "version": "0.3.0", - "bundled": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "bundled": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "bundled": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "bundled": true - }, - "global-modules": { - "version": "1.0.0", - "bundled": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "bundled": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "globals": { - "version": "9.18.0", - "bundled": true - }, - "globby": { - "version": "8.0.1", - "bundled": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - }, - "got": { - "version": "8.3.2", - "bundled": true, - "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "grouped-queue": { - "version": "0.3.3", - "bundled": true, - "requires": { - "lodash": "^4.17.2" - } - }, - "growl": { - "version": "1.10.5", - "bundled": true - }, - "has": { - "version": "1.0.3", - "bundled": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-color": { - "version": "0.1.7", - "bundled": true - }, - "has-flag": { - "version": "3.0.0", - "bundled": true - }, - "has-symbol-support-x": { - "version": "1.4.2", - "bundled": true - }, - "has-symbols": { - "version": "1.0.0", - "bundled": true - }, - "has-to-string-tag-x": { - "version": "1.4.1", - "bundled": true, - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, - "has-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash.js": { - "version": "1.1.5", - "bundled": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.1.1", - "bundled": true - }, - "hmac-drbg": { - "version": "1.0.1", - "bundled": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "home-or-tmp": { - "version": "2.0.0", - "bundled": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "homedir-polyfill": { - "version": "1.0.1", - "bundled": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hosted-git-info": { - "version": "2.7.1", - "bundled": true - }, - "http-cache-semantics": { - "version": "3.8.1", - "bundled": true - }, - "http-errors": { - "version": "1.6.3", - "bundled": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "https-browserify": { - "version": "1.0.0", - "bundled": true - }, - "iconv-lite": { - "version": "0.4.19", - "bundled": true - }, - "ieee754": { - "version": "1.1.12", - "bundled": true - }, - "iferr": { - "version": "0.1.5", - "bundled": true - }, - "ignore": { - "version": "3.3.10", - "bundled": true - }, - "import-local": { - "version": "1.0.0", - "bundled": true, - "requires": { - "pkg-dir": "^2.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true - }, - "indent-string": { - "version": "3.2.0", - "bundled": true - }, - "indexof": { - "version": "0.0.1", - "bundled": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true - }, - "inquirer": { - "version": "5.2.0", - "bundled": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.1.0", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^5.5.2", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "interpret": { - "version": "1.1.0", - "bundled": true - }, - "into-stream": { - "version": "3.1.0", - "bundled": true, - "requires": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" - } - }, - "invariant": { - "version": "2.2.4", - "bundled": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true - }, - "ipaddr.js": { - "version": "1.8.0", - "bundled": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true - }, - "is-binary-path": { - "version": "1.0.1", - "bundled": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-callable": { - "version": "1.1.4", - "bundled": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.1", - "bundled": true - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "bundled": true - } - } - }, - "is-dotfile": { - "version": "1.0.3", - "bundled": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "bundled": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true - }, - "is-extglob": { - "version": "2.1.1", - "bundled": true - }, - "is-finite": { - "version": "1.0.2", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - }, - "is-glob": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-obj": { - "version": "1.0.1", - "bundled": true - }, - "is-object": { - "version": "1.0.1", - "bundled": true - }, - "is-observable": { - "version": "1.1.0", - "bundled": true, - "requires": { - "symbol-observable": "^1.1.0" - }, - "dependencies": { - "symbol-observable": { - "version": "1.2.0", - "bundled": true - } - } - }, - "is-plain-obj": { - "version": "1.1.0", - "bundled": true - }, - "is-plain-object": { - "version": "2.0.4", - "bundled": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "bundled": true - }, - "is-primitive": { - "version": "2.0.0", - "bundled": true - }, - "is-promise": { - "version": "2.1.0", - "bundled": true - }, - "is-regex": { - "version": "1.0.4", - "bundled": true, - "requires": { - "has": "^1.0.1" - } - }, - "is-retry-allowed": { - "version": "1.1.0", - "bundled": true - }, - "is-scoped": { - "version": "1.0.0", - "bundled": true, - "requires": { - "scoped-regex": "^1.0.0" - } - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "is-symbol": { - "version": "1.0.1", - "bundled": true - }, - "is-utf8": { - "version": "0.2.1", - "bundled": true - }, - "is-windows": { - "version": "1.0.2", - "bundled": true - }, - "is-wsl": { - "version": "1.1.0", - "bundled": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isbinaryfile": { - "version": "3.0.2", - "bundled": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true - }, - "isobject": { - "version": "3.0.1", - "bundled": true - }, - "isomorphic-xml2js": { - "version": "0.1.3", - "bundled": true, - "requires": { - "@types/xml2js": "^0.4.2", - "xml2js": "^0.4.19" - } - }, - "istextorbinary": { - "version": "2.2.1", - "bundled": true, - "requires": { - "binaryextensions": "2", - "editions": "^1.3.3", - "textextensions": "2" - } - }, - "isurl": { - "version": "1.0.0", - "bundled": true, - "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - } - }, - "js-tokens": { - "version": "3.0.2", - "bundled": true - }, - "js-yaml": { - "version": "3.12.0", - "bundled": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jscodeshift": { - "version": "0.5.1", - "bundled": true, - "requires": { - "babel-plugin-transform-flow-strip-types": "^6.8.0", - "babel-preset-es2015": "^6.9.0", - "babel-preset-stage-1": "^6.5.0", - "babel-register": "^6.9.0", - "babylon": "^7.0.0-beta.47", - "colors": "^1.1.2", - "flow-parser": "^0.*", - "lodash": "^4.13.1", - "micromatch": "^2.3.7", - "neo-async": "^2.5.0", - "node-dir": "0.1.8", - "nomnom": "^1.8.1", - "recast": "^0.15.0", - "temp": "^0.8.1", - "write-file-atomic": "^1.2.0" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "bundled": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "bundled": true - }, - "babylon": { - "version": "7.0.0-beta.47", - "bundled": true - }, - "braces": { - "version": "1.8.5", - "bundled": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "bundled": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "bundled": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - } - } - }, - "jsesc": { - "version": "0.5.0", - "bundled": true - }, - "json-buffer": { - "version": "3.0.0", - "bundled": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "bundled": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "bundled": true - }, - "json5": { - "version": "0.5.1", - "bundled": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true - }, - "keyv": { - "version": "3.0.0", - "bundled": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "lighthouse-logger": { - "version": "1.0.1", - "bundled": true, - "requires": { - "debug": "^2.6.8" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "listr": { - "version": "0.14.1", - "bundled": true, - "requires": { - "@samverschueren/stream-to-observable": "^0.3.0", - "cli-truncate": "^0.2.1", - "figures": "^1.7.0", - "indent-string": "^2.1.0", - "is-observable": "^1.1.0", - "is-promise": "^2.1.0", - "is-stream": "^1.1.0", - "listr-silent-renderer": "^1.1.1", - "listr-update-renderer": "^0.4.0", - "listr-verbose-renderer": "^0.4.0", - "log-symbols": "^1.0.2", - "log-update": "^1.0.2", - "ora": "^0.2.3", - "p-map": "^1.1.1", - "rxjs": "^6.1.0", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "figures": { - "version": "1.7.0", - "bundled": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "indent-string": { - "version": "2.1.0", - "bundled": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "log-symbols": { - "version": "1.0.2", - "bundled": true, - "requires": { - "chalk": "^1.0.0" - } - }, - "rxjs": { - "version": "6.2.2", - "bundled": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "listr-silent-renderer": { - "version": "1.1.1", - "bundled": true - }, - "listr-update-renderer": { - "version": "0.4.0", - "bundled": true, - "requires": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^1.0.2", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "figures": { - "version": "1.7.0", - "bundled": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "log-symbols": { - "version": "1.0.2", - "bundled": true, - "requires": { - "chalk": "^1.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "listr-verbose-renderer": { - "version": "0.4.1", - "bundled": true, - "requires": { - "chalk": "^1.1.3", - "cli-cursor": "^1.0.2", - "date-fns": "^1.27.2", - "figures": "^1.7.0" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cli-cursor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "restore-cursor": "^1.0.1" - } - }, - "figures": { - "version": "1.7.0", - "bundled": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "onetime": { - "version": "1.1.0", - "bundled": true - }, - "restore-cursor": { - "version": "1.0.1", - "bundled": true, - "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "load-json-file": { - "version": "4.0.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "loader-runner": { - "version": "2.3.0", - "bundled": true - }, - "loader-utils": { - "version": "1.1.0", - "bundled": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0" - } - }, - "locate-path": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.10", - "bundled": true - }, - "lodash.debounce": { - "version": "4.0.8", - "bundled": true - }, - "log-symbols": { - "version": "2.2.0", - "bundled": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "log-update": { - "version": "1.0.2", - "bundled": true, - "requires": { - "ansi-escapes": "^1.0.0", - "cli-cursor": "^1.0.2" - }, - "dependencies": { - "ansi-escapes": { - "version": "1.4.0", - "bundled": true - }, - "cli-cursor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "restore-cursor": "^1.0.1" - } - }, - "onetime": { - "version": "1.1.0", - "bundled": true - }, - "restore-cursor": { - "version": "1.0.1", - "bundled": true, - "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - } - } - } - }, - "loglevel": { - "version": "1.6.1", - "bundled": true - }, - "loglevelnext": { - "version": "1.0.5", - "bundled": true, - "requires": { - "es6-symbol": "^3.1.1", - "object.assign": "^4.1.0" - } - }, - "long": { - "version": "3.2.0", - "bundled": true - }, - "loose-envify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "bundled": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "bundled": true - }, - "lru-cache": { - "version": "4.1.3", - "bundled": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-dir": { - "version": "1.3.0", - "bundled": true, - "requires": { - "pify": "^3.0.0" - } - }, - "make-error": { - "version": "1.3.4", - "bundled": true - }, - "mamacro": { - "version": "0.0.3", - "bundled": true - }, - "map-cache": { - "version": "0.2.2", - "bundled": true - }, - "map-obj": { - "version": "2.0.0", - "bundled": true - }, - "map-stream": { - "version": "0.1.0", - "bundled": true - }, - "map-visit": { - "version": "1.0.0", - "bundled": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "math-random": { - "version": "1.0.1", - "bundled": true - }, - "md5.js": { - "version": "1.3.4", - "bundled": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "media-typer": { - "version": "0.3.0", - "bundled": true - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "mem-fs": { - "version": "1.1.3", - "bundled": true, - "requires": { - "through2": "^2.0.0", - "vinyl": "^1.1.0", - "vinyl-file": "^2.0.0" - } - }, - "mem-fs-editor": { - "version": "4.0.3", - "bundled": true, - "requires": { - "commondir": "^1.0.1", - "deep-extend": "^0.6.0", - "ejs": "^2.5.9", - "glob": "^7.0.3", - "globby": "^7.1.1", - "isbinaryfile": "^3.0.2", - "mkdirp": "^0.5.0", - "multimatch": "^2.0.0", - "rimraf": "^2.2.8", - "through2": "^2.0.0", - "vinyl": "^2.0.1" - }, - "dependencies": { - "clone": { - "version": "2.1.1", - "bundled": true - }, - "clone-stats": { - "version": "1.0.0", - "bundled": true - }, - "globby": { - "version": "7.1.1", - "bundled": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - }, - "replace-ext": { - "version": "1.0.0", - "bundled": true - }, - "vinyl": { - "version": "2.2.0", - "bundled": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - } - } - }, - "memory-fs": { - "version": "0.4.1", - "bundled": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "memorystream": { - "version": "0.3.1", - "bundled": true - }, - "meow": { - "version": "4.0.1", - "bundled": true, - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist": "^1.1.3", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "bundled": true - }, - "merge2": { - "version": "1.2.2", - "bundled": true - }, - "methods": { - "version": "1.1.2", - "bundled": true - }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "bundled": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mime": { - "version": "1.4.1", - "bundled": true - }, - "mime-db": { - "version": "1.35.0", - "bundled": true - }, - "mime-types": { - "version": "2.1.19", - "bundled": true, - "requires": { - "mime-db": "~1.35.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "bundled": true - }, - "mimic-response": { - "version": "1.0.1", - "bundled": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "bundled": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "minimist-options": { - "version": "3.0.2", - "bundled": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0" - } - }, - "mississippi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^2.0.1", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.1", - "bundled": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "5.2.0", - "bundled": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - } - }, - "mocha-chrome": { - "version": "1.1.0", - "bundled": true, - "requires": { - "babel-plugin-transform-es2015-destructuring": "^6.23.0", - "babel-plugin-transform-es2015-parameters": "^6.24.1", - "babel-polyfill": "^6.26.0", - "babel-preset-env": "^1.6.1", - "babel-register": "^6.26.0", - "chalk": "^2.0.1", - "chrome-launcher": "^0.10.2", - "chrome-remote-interface": "^0.25.2", - "chrome-unmirror": "^0.1.0", - "debug": "^3.1.0", - "deep-assign": "^2.0.0", - "import-local": "^1.0.0", - "loglevel": "^1.4.1", - "meow": "^4.0.0", - "nanobus": "^4.2.0" - } - }, - "move-concurrently": { - "version": "1.0.1", - "bundled": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true - }, - "multimatch": { - "version": "2.1.0", - "bundled": true, - "requires": { - "array-differ": "^1.0.0", - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "minimatch": "^3.0.0" - } - }, - "mute-stream": { - "version": "0.0.7", - "bundled": true - }, - "nanoassert": { - "version": "1.1.0", - "bundled": true - }, - "nanobus": { - "version": "4.3.3", - "bundled": true, - "requires": { - "nanotiming": "^7.2.0", - "remove-array-items": "^1.0.0" - } - }, - "nanomatch": { - "version": "1.2.13", - "bundled": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "nanoscheduler": { - "version": "1.0.3", - "bundled": true, - "requires": { - "nanoassert": "^1.1.0" - } - }, - "nanotiming": { - "version": "7.3.1", - "bundled": true, - "requires": { - "nanoassert": "^1.1.0", - "nanoscheduler": "^1.0.2" - } - }, - "negotiator": { - "version": "0.6.1", - "bundled": true - }, - "neo-async": { - "version": "2.5.1", - "bundled": true - }, - "next-tick": { - "version": "1.0.0", - "bundled": true - }, - "nice-try": { - "version": "1.0.4", - "bundled": true - }, - "node-dir": { - "version": "0.1.8", - "bundled": true - }, - "node-libs-browser": { - "version": "2.1.0", - "bundled": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^1.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.10.3", - "vm-browserify": "0.0.4" - } - }, - "nomnom": { - "version": "1.8.1", - "bundled": true, - "requires": { - "chalk": "~0.4.0", - "underscore": "~1.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "bundled": true - }, - "chalk": { - "version": "0.4.0", - "bundled": true, - "requires": { - "ansi-styles": "~1.0.0", - "has-color": "~0.1.0", - "strip-ansi": "~0.1.0" - } - }, - "strip-ansi": { - "version": "0.1.1", - "bundled": true - } - } - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "bundled": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "normalize-url": { - "version": "2.0.1", - "bundled": true, - "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - } - }, - "npm-run-all": { - "version": "4.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^3.2.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.4", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "ps-tree": "^1.1.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "bundled": true, - "requires": { - "color-convert": "^1.9.0" - } - } - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "object-copy": { - "version": "0.1.0", - "bundled": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-keys": { - "version": "1.0.12", - "bundled": true - }, - "object-visit": { - "version": "1.0.1", - "bundled": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "bundled": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.omit": { - "version": "2.0.1", - "bundled": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, - "object.pick": { - "version": "1.3.0", - "bundled": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "on-finished": { - "version": "2.3.0", - "bundled": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "bundled": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "ora": { - "version": "0.2.3", - "bundled": true, - "requires": { - "chalk": "^1.1.1", - "cli-cursor": "^1.0.2", - "cli-spinners": "^0.1.2", - "object-assign": "^4.0.1" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cli-cursor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "restore-cursor": "^1.0.1" - } - }, - "onetime": { - "version": "1.1.0", - "bundled": true - }, - "restore-cursor": { - "version": "1.0.1", - "bundled": true, - "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "os-browserify": { - "version": "0.3.0", - "bundled": true - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true - }, - "p-cancelable": { - "version": "0.4.1", - "bundled": true - }, - "p-each-series": { - "version": "1.0.0", - "bundled": true, - "requires": { - "p-reduce": "^1.0.0" - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true - }, - "p-is-promise": { - "version": "1.1.0", - "bundled": true - }, - "p-lazy": { - "version": "1.0.0", - "bundled": true - }, - "p-limit": { - "version": "1.3.0", - "bundled": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-map": { - "version": "1.2.0", - "bundled": true - }, - "p-reduce": { - "version": "1.0.0", - "bundled": true - }, - "p-timeout": { - "version": "2.0.1", - "bundled": true, - "requires": { - "p-finally": "^1.0.0" - } - }, - "p-try": { - "version": "1.0.0", - "bundled": true - }, - "pako": { - "version": "1.0.6", - "bundled": true - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "requires": { - "cyclist": "~0.2.2", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "parse-asn1": { - "version": "5.1.1", - "bundled": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" - } - }, - "parse-glob": { - "version": "3.0.4", - "bundled": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "parse-json": { - "version": "4.0.0", - "bundled": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parse-passwd": { - "version": "1.0.0", - "bundled": true - }, - "parseurl": { - "version": "1.3.2", - "bundled": true - }, - "pascalcase": { - "version": "0.1.1", - "bundled": true - }, - "path-browserify": { - "version": "0.0.0", - "bundled": true - }, - "path-dirname": { - "version": "1.0.2", - "bundled": true - }, - "path-exists": { - "version": "3.0.0", - "bundled": true - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true - }, - "path-to-regexp": { - "version": "0.1.7", - "bundled": true - }, - "path-type": { - "version": "3.0.0", - "bundled": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pause-stream": { - "version": "0.0.11", - "bundled": true, - "requires": { - "through": "~2.3" - } - }, - "pbkdf2": { - "version": "3.0.16", - "bundled": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "pify": { - "version": "3.0.0", - "bundled": true - }, - "pinkie": { - "version": "2.0.4", - "bundled": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "2.0.0", - "bundled": true, - "requires": { - "find-up": "^2.1.0" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "bundled": true - }, - "prepend-http": { - "version": "2.0.0", - "bundled": true - }, - "preserve": { - "version": "0.2.0", - "bundled": true - }, - "prettier": { - "version": "1.13.7", - "bundled": true - }, - "pretty-bytes": { - "version": "4.0.2", - "bundled": true - }, - "private": { - "version": "0.1.8", - "bundled": true - }, - "process": { - "version": "0.11.10", - "bundled": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true - }, - "promise-inflight": { - "version": "1.0.1", - "bundled": true - }, - "proxy-addr": { - "version": "2.0.4", - "bundled": true, - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.8.0" - } - }, - "prr": { - "version": "1.0.1", - "bundled": true - }, - "ps-tree": { - "version": "1.1.0", - "bundled": true, - "requires": { - "event-stream": "~3.3.0" - } - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true - }, - "psl": { - "version": "1.1.28", - "bundled": true - }, - "public-encrypt": { - "version": "4.0.2", - "bundled": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "bundled": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "punycode": { - "version": "1.4.1", - "bundled": true - }, - "qs": { - "version": "6.5.1", - "bundled": true - }, - "query-string": { - "version": "5.1.1", - "bundled": true, - "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "querystring": { - "version": "0.2.0", - "bundled": true - }, - "querystring-es3": { - "version": "0.2.1", - "bundled": true - }, - "quick-lru": { - "version": "1.1.0", - "bundled": true - }, - "randomatic": { - "version": "3.0.0", - "bundled": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "bundled": true - } - } - }, - "randombytes": { - "version": "2.0.6", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "bundled": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.0", - "bundled": true - }, - "raw-body": { - "version": "2.3.2", - "bundled": true, - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "bundled": true - }, - "http-errors": { - "version": "1.6.2", - "bundled": true, - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" - } - }, - "setprototypeof": { - "version": "1.0.3", - "bundled": true - } - } - }, - "read-chunk": { - "version": "2.1.0", - "bundled": true, - "requires": { - "pify": "^3.0.0", - "safe-buffer": "^5.1.1" - } - }, - "read-pkg": { - "version": "3.0.0", - "bundled": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "3.0.0", - "bundled": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.1.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" - } - }, - "recast": { - "version": "0.15.3", - "bundled": true, - "requires": { - "ast-types": "0.11.5", - "esprima": "~4.0.0", - "private": "~0.1.5", - "source-map": "~0.6.1" - } - }, - "rechoir": { - "version": "0.6.2", - "bundled": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "redent": { - "version": "2.0.0", - "bundled": true, - "requires": { - "indent-string": "^3.0.0", - "strip-indent": "^2.0.0" - } - }, - "regenerate": { - "version": "1.4.0", - "bundled": true - }, - "regenerator-runtime": { - "version": "0.11.1", - "bundled": true - }, - "regenerator-transform": { - "version": "0.10.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.18.0", - "babel-types": "^6.19.0", - "private": "^0.1.6" - } - }, - "regex-cache": { - "version": "0.4.4", - "bundled": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, - "regex-not": { - "version": "1.0.2", - "bundled": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpu-core": { - "version": "2.0.0", - "bundled": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "regjsgen": { - "version": "0.2.0", - "bundled": true - }, - "regjsparser": { - "version": "0.1.5", - "bundled": true, - "requires": { - "jsesc": "~0.5.0" - } - }, - "remove-array-items": { - "version": "1.0.0", - "bundled": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "bundled": true - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true - }, - "repeating": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "replace-ext": { - "version": "0.0.1", - "bundled": true - }, - "require-directory": { - "version": "2.1.1", - "bundled": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true - }, - "resolve": { - "version": "1.8.1", - "bundled": true, - "requires": { - "path-parse": "^1.0.5" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "bundled": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-dir": { - "version": "1.0.1", - "bundled": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "bundled": true - }, - "resolve-url": { - "version": "0.2.1", - "bundled": true - }, - "responselike": { - "version": "1.0.2", - "bundled": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "restore-cursor": { - "version": "2.0.0", - "bundled": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "bundled": true - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "requires": { - "glob": "^7.0.5" - } - }, - "ripemd160": { - "version": "2.0.2", - "bundled": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-async": { - "version": "2.3.0", - "bundled": true, - "requires": { - "is-promise": "^2.1.0" - } - }, - "run-queue": { - "version": "1.0.3", - "bundled": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "rxjs": { - "version": "5.5.11", - "bundled": true, - "requires": { - "symbol-observable": "1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true - }, - "safe-regex": { - "version": "1.1.0", - "bundled": true, - "requires": { - "ret": "~0.1.10" - } - }, - "sax": { - "version": "1.2.4", - "bundled": true - }, - "schema-utils": { - "version": "0.4.5", - "bundled": true, - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } - }, - "scoped-regex": { - "version": "1.0.0", - "bundled": true - }, - "semver": { - "version": "5.5.0", - "bundled": true - }, - "send": { - "version": "0.16.2", - "bundled": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "serialize-javascript": { - "version": "1.5.0", - "bundled": true - }, - "serve-static": { - "version": "1.13.2", - "bundled": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - } - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "bundled": true - }, - "set-value": { - "version": "2.0.0", - "bundled": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "bundled": true - }, - "setprototypeof": { - "version": "1.1.0", - "bundled": true - }, - "sha.js": { - "version": "2.4.11", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true - }, - "shell-quote": { - "version": "1.6.1", - "bundled": true, - "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" - } - }, - "shelljs": { - "version": "0.7.8", - "bundled": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "should": { - "version": "5.2.0", - "bundled": true, - "requires": { - "should-equal": "0.3.1", - "should-format": "0.0.7", - "should-type": "0.0.4" - } - }, - "should-equal": { - "version": "0.3.1", - "bundled": true, - "requires": { - "should-type": "0.0.4" - } - }, - "should-format": { - "version": "0.0.7", - "bundled": true, - "requires": { - "should-type": "0.0.4" - } - }, - "should-type": { - "version": "0.0.4", - "bundled": true - }, - "shx": { - "version": "0.2.2", - "bundled": true, - "requires": { - "es6-object-assign": "^1.0.3", - "minimist": "^1.2.0", - "shelljs": "^0.7.3" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true - } - } - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "slash": { - "version": "1.0.0", - "bundled": true - }, - "slice-ansi": { - "version": "0.0.4", - "bundled": true - }, - "slide": { - "version": "1.1.6", - "bundled": true - }, - "snapdragon": { - "version": "0.8.2", - "bundled": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "source-map": { - "version": "0.5.7", - "bundled": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "bundled": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "bundled": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "sort-keys": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "source-list-map": { - "version": "2.0.0", - "bundled": true - }, - "source-map": { - "version": "0.6.1", - "bundled": true - }, - "source-map-resolve": { - "version": "0.5.2", - "bundled": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.4.18", - "bundled": true, - "requires": { - "source-map": "^0.5.6" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "bundled": true - } - } - }, - "source-map-url": { - "version": "0.4.0", - "bundled": true - }, - "spdx-correct": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "bundled": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "bundled": true - }, - "split": { - "version": "0.3.3", - "bundled": true, - "requires": { - "through": "2" - } - }, - "split-string": { - "version": "3.1.0", - "bundled": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "bundled": true - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.1" - } - }, - "static-extend": { - "version": "0.1.2", - "bundled": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.4.0", - "bundled": true - }, - "stream-browserify": { - "version": "2.0.1", - "bundled": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-combiner": { - "version": "0.0.4", - "bundled": true, - "requires": { - "duplexer": "~0.1.1" - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "bundled": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.0", - "bundled": true - }, - "strict-uri-encode": { - "version": "1.1.0", - "bundled": true - }, - "string-template": { - "version": "0.2.1", - "bundled": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string.prototype.padend": { - "version": "3.0.0", - "bundled": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.4.3", - "function-bind": "^1.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "bundled": true - }, - "strip-bom-stream": { - "version": "2.0.0", - "bundled": true, - "requires": { - "first-chunk-stream": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-utf8": "^0.2.0" - } - } - } - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true - }, - "strip-indent": { - "version": "2.0.0", - "bundled": true - }, - "supports-color": { - "version": "5.4.0", - "bundled": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "symbol-observable": { - "version": "1.0.1", - "bundled": true - }, - "tapable": { - "version": "1.0.0", - "bundled": true - }, - "temp": { - "version": "0.8.3", - "bundled": true, - "requires": { - "os-tmpdir": "^1.0.0", - "rimraf": "~2.2.6" - }, - "dependencies": { - "rimraf": { - "version": "2.2.8", - "bundled": true - } - } - }, - "text-table": { - "version": "0.2.0", - "bundled": true - }, - "textextensions": { - "version": "2.2.0", - "bundled": true - }, - "through": { - "version": "2.3.8", - "bundled": true - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" - } - }, - "timed-out": { - "version": "4.0.1", - "bundled": true - }, - "timers-browserify": { - "version": "2.0.10", - "bundled": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "tmp": { - "version": "0.0.33", - "bundled": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "bundled": true - }, - "to-fast-properties": { - "version": "1.0.3", - "bundled": true - }, - "to-object-path": { - "version": "0.3.0", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "bundled": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "tough-cookie": { - "version": "2.4.3", - "bundled": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - }, - "trim-newlines": { - "version": "2.0.0", - "bundled": true - }, - "trim-right": { - "version": "1.0.1", - "bundled": true - }, - "ts-loader": { - "version": "4.4.2", - "bundled": true, - "requires": { - "chalk": "^2.3.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^3.1.4", - "semver": "^5.0.1" - } - }, - "ts-node": { - "version": "5.0.1", - "bundled": true, - "requires": { - "arrify": "^1.0.0", - "chalk": "^2.3.0", - "diff": "^3.1.0", - "make-error": "^1.1.1", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "source-map-support": "^0.5.3", - "yn": "^2.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "source-map-support": { - "version": "0.5.6", - "bundled": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - } - } - }, - "tslib": { - "version": "1.9.3", - "bundled": true - }, - "tslint": { - "version": "5.11.0", - "bundled": true, - "requires": { - "babel-code-frame": "^6.22.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^3.2.0", - "glob": "^7.1.1", - "js-yaml": "^3.7.0", - "minimatch": "^3.0.4", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.27.2" - } - }, - "tsutils": { - "version": "2.29.0", - "bundled": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "tty-browserify": { - "version": "0.0.0", - "bundled": true - }, - "type-is": { - "version": "1.6.16", - "bundled": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.18" - } - }, - "typedarray": { - "version": "0.0.6", - "bundled": true - }, - "typescript": { - "version": "2.9.2", - "bundled": true - }, - "uglify-es": { - "version": "3.3.9", - "bundled": true, - "requires": { - "commander": "~2.13.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.13.0", - "bundled": true - } - } - }, - "uglifyjs-webpack-plugin": { - "version": "1.2.7", - "bundled": true, - "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", - "schema-utils": "^0.4.5", - "serialize-javascript": "^1.4.0", - "source-map": "^0.6.1", - "uglify-es": "^3.3.4", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" - } - }, - "ultron": { - "version": "1.1.1", - "bundled": true - }, - "underscore": { - "version": "1.6.0", - "bundled": true - }, - "union-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "bundled": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unique-filename": { - "version": "1.1.0", - "bundled": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.0", - "bundled": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "unpipe": { - "version": "1.0.0", - "bundled": true - }, - "unset-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "bundled": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "bundled": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "bundled": true - } - } - }, - "untildify": { - "version": "3.0.3", - "bundled": true - }, - "upath": { - "version": "1.1.0", - "bundled": true - }, - "uri-js": { - "version": "4.2.2", - "bundled": true, - "requires": { - "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "bundled": true - } - } - }, - "urix": { - "version": "0.1.0", - "bundled": true - }, - "url": { - "version": "0.11.0", - "bundled": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "bundled": true - } - } - }, - "url-join": { - "version": "4.0.0", - "bundled": true - }, - "url-parse-lax": { - "version": "3.0.0", - "bundled": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, - "url-to-options": { - "version": "1.0.1", - "bundled": true - }, - "use": { - "version": "3.1.1", - "bundled": true - }, - "util": { - "version": "0.10.4", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "utils-merge": { - "version": "1.0.1", - "bundled": true - }, - "uuid": { - "version": "3.3.2", - "bundled": true - }, - "v8-compile-cache": { - "version": "2.0.0", - "bundled": true - }, - "validate-npm-package-license": { - "version": "3.0.3", - "bundled": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vary": { - "version": "1.1.2", - "bundled": true - }, - "vinyl": { - "version": "1.2.0", - "bundled": true, - "requires": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" - } - }, - "vinyl-file": { - "version": "2.0.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.3.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0", - "strip-bom-stream": "^2.0.0", - "vinyl": "^1.1.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "bundled": true - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-utf8": "^0.2.0" - } - } - } - }, - "vm-browserify": { - "version": "0.0.4", - "bundled": true, - "requires": { - "indexof": "0.0.1" - } - }, - "watchpack": { - "version": "1.6.0", - "bundled": true, - "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - } - }, - "webpack": { - "version": "4.16.3", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-module-context": "1.5.13", - "@webassemblyjs/wasm-edit": "1.5.13", - "@webassemblyjs/wasm-opt": "1.5.13", - "@webassemblyjs/wasm-parser": "1.5.13", - "acorn": "^5.6.2", - "acorn-dynamic-import": "^3.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.4", - "tapable": "^1.0.0", - "uglifyjs-webpack-plugin": "^1.2.4", - "watchpack": "^1.5.0", - "webpack-sources": "^1.0.1" - } - }, - "webpack-addons": { - "version": "1.1.5", - "bundled": true, - "requires": { - "jscodeshift": "^0.4.0" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "bundled": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "bundled": true - }, - "ast-types": { - "version": "0.10.1", - "bundled": true - }, - "braces": { - "version": "1.8.5", - "bundled": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "bundled": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "jscodeshift": { - "version": "0.4.1", - "bundled": true, - "requires": { - "async": "^1.5.0", - "babel-plugin-transform-flow-strip-types": "^6.8.0", - "babel-preset-es2015": "^6.9.0", - "babel-preset-stage-1": "^6.5.0", - "babel-register": "^6.9.0", - "babylon": "^6.17.3", - "colors": "^1.1.2", - "flow-parser": "^0.*", - "lodash": "^4.13.1", - "micromatch": "^2.3.7", - "node-dir": "0.1.8", - "nomnom": "^1.8.1", - "recast": "^0.12.5", - "temp": "^0.8.1", - "write-file-atomic": "^1.2.0" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "bundled": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "recast": { - "version": "0.12.9", - "bundled": true, - "requires": { - "ast-types": "0.10.1", - "core-js": "^2.4.1", - "esprima": "~4.0.0", - "private": "~0.1.5", - "source-map": "~0.6.1" - } - } - } - }, - "webpack-cli": { - "version": "2.1.5", - "bundled": true, - "requires": { - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "diff": "^3.5.0", - "enhanced-resolve": "^4.0.0", - "envinfo": "^5.7.0", - "glob-all": "^3.1.0", - "global-modules": "^1.0.0", - "got": "^8.3.1", - "import-local": "^1.0.0", - "inquirer": "^5.2.0", - "interpret": "^1.1.0", - "jscodeshift": "^0.5.0", - "listr": "^0.14.1", - "loader-utils": "^1.1.0", - "lodash": "^4.17.10", - "log-symbols": "^2.2.0", - "mkdirp": "^0.5.1", - "p-each-series": "^1.0.0", - "p-lazy": "^1.0.0", - "prettier": "^1.12.1", - "supports-color": "^5.4.0", - "v8-compile-cache": "^2.0.0", - "webpack-addons": "^1.1.5", - "yargs": "^11.1.0", - "yeoman-environment": "^2.1.1", - "yeoman-generator": "^2.0.5" - } - }, - "webpack-dev-middleware": { - "version": "3.1.3", - "bundled": true, - "requires": { - "loud-rejection": "^1.6.0", - "memory-fs": "~0.4.1", - "mime": "^2.1.0", - "path-is-absolute": "^1.0.0", - "range-parser": "^1.0.3", - "url-join": "^4.0.0", - "webpack-log": "^1.0.1" - }, - "dependencies": { - "mime": { - "version": "2.3.1", - "bundled": true - } - } - }, - "webpack-log": { - "version": "1.2.0", - "bundled": true, - "requires": { - "chalk": "^2.1.0", - "log-symbols": "^2.1.0", - "loglevelnext": "^1.0.1", - "uuid": "^3.1.0" - } - }, - "webpack-sources": { - "version": "1.1.0", - "bundled": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "which": { - "version": "1.3.1", - "bundled": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true - }, - "worker-farm": { - "version": "1.6.0", - "bundled": true, - "requires": { - "errno": "~0.1.7" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "write-file-atomic": { - "version": "1.3.4", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - }, - "ws": { - "version": "3.3.3", - "bundled": true, - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } - }, - "xml2js": { - "version": "0.4.19", - "bundled": true, - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" - } - }, - "xmlbuilder": { - "version": "9.0.7", - "bundled": true - }, - "xtend": { - "version": "4.0.1", - "bundled": true - }, - "y18n": { - "version": "4.0.0", - "bundled": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true - }, - "yargs": { - "version": "11.1.0", - "bundled": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - }, - "dependencies": { - "y18n": { - "version": "3.2.1", - "bundled": true - } - } - }, - "yargs-parser": { - "version": "9.0.2", - "bundled": true, - "requires": { - "camelcase": "^4.1.0" - } - }, - "yarn": { - "version": "1.9.2", - "bundled": true - }, - "yeoman-environment": { - "version": "2.3.1", - "bundled": true, - "requires": { - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^3.1.0", - "diff": "^3.3.1", - "escape-string-regexp": "^1.0.2", - "globby": "^8.0.1", - "grouped-queue": "^0.3.3", - "inquirer": "^5.2.0", - "is-scoped": "^1.0.0", - "lodash": "^4.17.10", - "log-symbols": "^2.1.0", - "mem-fs": "^1.1.0", - "strip-ansi": "^4.0.0", - "text-table": "^0.2.0", - "untildify": "^3.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "yeoman-generator": { - "version": "2.0.5", - "bundled": true, + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-error": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz", + "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==", + "dev": true + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime-db": { + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", + "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" + }, + "mime-types": { + "version": "2.1.19", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", + "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", + "requires": { + "mime-db": "~1.35.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, "requires": { - "async": "^2.6.0", - "chalk": "^2.3.0", - "cli-table": "^0.3.1", - "cross-spawn": "^6.0.5", - "dargs": "^5.1.0", - "dateformat": "^3.0.3", - "debug": "^3.1.0", - "detect-conflict": "^1.0.0", - "error": "^7.0.2", - "find-up": "^2.1.0", - "github-username": "^4.0.0", - "istextorbinary": "^2.2.1", - "lodash": "^4.17.10", - "make-dir": "^1.1.0", - "mem-fs-editor": "^4.0.0", - "minimist": "^1.2.0", - "pretty-bytes": "^4.0.2", - "read-chunk": "^2.1.0", - "read-pkg-up": "^3.0.0", - "rimraf": "^2.6.2", - "run-async": "^2.0.0", - "shelljs": "^0.8.0", - "text-table": "^0.2.0", - "through2": "^2.0.0", - "yeoman-environment": "^2.0.5" - }, - "dependencies": { - "async": { - "version": "2.6.1", - "bundled": true, - "requires": { - "lodash": "^4.17.10" - } - }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "shelljs": { - "version": "0.8.2", - "bundled": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - } + "is-plain-object": "^2.0.4" } - }, - "yn": { - "version": "2.0.0", - "bundled": true } } }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "ms-rest-js": { + "version": "0.16.374", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.16.374.tgz", + "integrity": "sha1-c009DinsWgZy8QZqRnVi2m2wtYw=", + "requires": { + "@types/express": "^4.11.1", + "@types/form-data": "^2.2.1", + "@types/node": "^9.4.6", + "@types/uuid": "^3.4.3", + "axios": "^0.18.0", + "form-data": "^2.3.2", + "isomorphic-xml2js": "^0.1.3", + "tough-cookie": "^2.4.3", + "tslib": "^1.9.2", + "uuid": "^3.2.1" + } + }, "nan": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", @@ -9586,14 +3021,6 @@ "url": "^0.11.0", "util": "^0.10.3", "vm-browserify": "0.0.4" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } } }, "normalize-package-data": { @@ -11957,6 +5384,11 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, + "psl": { + "version": "1.1.28", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.28.tgz", + "integrity": "sha512-+AqO1Ae+N/4r7Rvchrdm432afjT9hqJRyBN3DQv9At0tPz4hIFSGKbq64fN9dVoCow4oggIIax5/iONx0r9hZw==" + }, "public-encrypt": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", @@ -11971,10 +5403,9 @@ } }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, "querystring": { "version": "0.2.0", @@ -12208,6 +5639,11 @@ "ret": "~0.1.10" } }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", @@ -12779,6 +6215,15 @@ "repeat-string": "^1.6.1" } }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -13022,6 +6467,14 @@ "dev": true, "requires": { "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } } }, "urix": { @@ -13069,6 +6522,11 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, "validate-npm-package-license": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", @@ -13220,6 +6678,20 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", diff --git a/package.json b/package.json index 588863ca87cc..b615b38a5ae3 100644 --- a/package.json +++ b/package.json @@ -25,12 +25,12 @@ "autorest", "clientruntime" ], - "main": "./lib/msRestAzure.ts", + "main": "./dist/lib/msRestAzure.js", "browser": "./es/lib/msRestAzure.js", "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "file:../ms-rest-js", + "ms-rest-js": "~0.16.374", "tslib": "^1.9.2" }, "devDependencies": { From 418aee977665153fc1453fb5f213465542b1b721 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Mon, 30 Jul 2018 16:47:09 -0700 Subject: [PATCH 076/289] Add type annotations to built in mappers --- lib/baseResource.ts | 4 +++- lib/cloudError.ts | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/baseResource.ts b/lib/baseResource.ts index f7c7e150e102..42d8725051cc 100644 --- a/lib/baseResource.ts +++ b/lib/baseResource.ts @@ -1,3 +1,5 @@ +import { CompositeMapper } from "ms-rest-js"; + // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. @@ -7,7 +9,7 @@ */ export interface BaseResource { } -export const BaseResourceMapper = { +export const BaseResourceMapper: CompositeMapper = { serializedName: "BaseResource", type: { name: "Composite", diff --git a/lib/cloudError.ts b/lib/cloudError.ts index 2f551cc32593..a1bda3313ed2 100644 --- a/lib/cloudError.ts +++ b/lib/cloudError.ts @@ -1,3 +1,5 @@ +import { CompositeMapper } from "ms-rest-js"; + // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. @@ -24,7 +26,7 @@ export interface CloudError extends Error { details?: Array; } -export const CloudErrorMapper = { +export const CloudErrorMapper: CompositeMapper = { serializedName: "CloudError", type: { name: "Composite", From 26cc445d509f94b1e2b13b623d33960d26db35ca Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Tue, 31 Jul 2018 13:22:17 -0700 Subject: [PATCH 077/289] Update ms-rest-js --- package-lock.json | 18 +++++++++--------- package.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 793c7ed766d3..3de64d0ac213 100644 --- a/package-lock.json +++ b/package-lock.json @@ -175,9 +175,9 @@ "dev": true }, "@types/node": { - "version": "9.6.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.23.tgz", - "integrity": "sha512-d2SJJpwkiPudEQ3+9ysANN2Nvz4QJKUPoe/WL5zyQzI0RaEeZWH5K5xjvUIGszTItHQpFPdH+u51f6G/LkS8Cg==" + "version": "9.6.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.24.tgz", + "integrity": "sha512-o5K0mt8x735EaqS7F2x+5AG0b1Mt3V9jgV5SeW8SD6RNhE++dvwqLf2R2e4c8FmhNLaogz2oXrsiXnqnsBSSIQ==" }, "@types/range-parser": { "version": "1.2.2", @@ -691,9 +691,9 @@ } }, "buffer-from": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", - "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, "buffer-xor": { @@ -2924,9 +2924,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.16.374", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.16.374.tgz", - "integrity": "sha1-c009DinsWgZy8QZqRnVi2m2wtYw=", + "version": "0.17.375", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.17.375.tgz", + "integrity": "sha1-oRwWS6O8mo45DFNTliOfqTgIysQ=", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", diff --git a/package.json b/package.json index b615b38a5ae3..fea14403b5bf 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.16.374", + "ms-rest-js": "~0.17.375", "tslib": "^1.9.2" }, "devDependencies": { From 651810242a4b9ba9af8bf5299f8dfa845c3367fb Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Tue, 31 Jul 2018 13:38:00 -0700 Subject: [PATCH 078/289] Fixes from feedback --- lib/baseResource.ts | 4 ++-- lib/cloudError.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/baseResource.ts b/lib/baseResource.ts index 42d8725051cc..26b04f459908 100644 --- a/lib/baseResource.ts +++ b/lib/baseResource.ts @@ -1,8 +1,8 @@ -import { CompositeMapper } from "ms-rest-js"; - // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. +import { CompositeMapper } from "ms-rest-js"; + /** * @class * An empty interface. diff --git a/lib/cloudError.ts b/lib/cloudError.ts index a1bda3313ed2..0edd3b69c659 100644 --- a/lib/cloudError.ts +++ b/lib/cloudError.ts @@ -1,8 +1,8 @@ -import { CompositeMapper } from "ms-rest-js"; - // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. +import { CompositeMapper } from "ms-rest-js"; + /** * @class * Provides additional information about an http error response returned from a Microsoft Azure service. From 52856a0d852db0a96a79fb18b8b6532ddd615a39 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Tue, 31 Jul 2018 13:39:09 -0700 Subject: [PATCH 079/289] Bump to v0.12.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fea14403b5bf..5c0156da3ffb 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.11.0", + "version": "0.12.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", From 016bfb7ad76bac2b7c05b8c1502ae13ec7668d2a Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Tue, 31 Jul 2018 17:28:30 -0700 Subject: [PATCH 080/289] Add HttpLongRunningOperationResponse --- lib/azureServiceClient.ts | 39 ++-- lib/httpLongRunningOperationResponse.ts | 88 ++++++++ lib/lroPollStrategy.ts | 283 +++++++++++++++--------- package-lock.json | 2 +- 4 files changed, 293 insertions(+), 119 deletions(-) create mode 100644 lib/httpLongRunningOperationResponse.ts diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index 93b6b0c84a91..de60b52b6c58 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -2,8 +2,9 @@ // Licensed under the MIT License. See License.txt in the project root for license information. import { HttpOperationResponse, RequestOptionsBase, RequestPrepareOptions, ServiceClient, ServiceClientCredentials, ServiceClientOptions, WebResource } from "ms-rest-js"; -import { createLROPollStrategy, LROPollStrategy } from "./lroPollStrategy"; +import { HttpLongRunningOperationResponse, createHttpLongRunningOperationResponseFromInitialResponse, createHttpLongRunningOperationResponseFromMemento } from "./httpLongRunningOperationResponse"; import * as Constants from "./util/constants"; +import { LROMemento } from "./lroPollStrategy"; /** * Options to be provided while creating the client. @@ -58,7 +59,20 @@ export class AzureServiceClient extends ServiceClient { * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody. */ async sendLongRunningRequest(request: RequestPrepareOptions | WebResource, options?: RequestOptionsBase): Promise { - return this.sendRequest(request).then((response: HttpOperationResponse) => this.getLongRunningOperationResult(response, options)); + return this.beginLongRunningRequest(request, options).then((lroResponse: HttpLongRunningOperationResponse) => lroResponse.pollUntilFinished()); + } + + /** + * Send the initial request of a LRO (long running operation) and get back an + * HttpLongRunningOperationResponse that provides methods for polling the LRO and checking if the + * LRO is finished. + * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object + * @param {AzureRequestOptionsBase} [options] Additional options to be sent while making the request + * @returns {Promise} The HttpLongRunningOperationResponse + * that provides methods for interacting with the LRO. + */ + async beginLongRunningRequest(request: RequestPrepareOptions | WebResource, options?: RequestOptionsBase): Promise { + return this.sendRequest(request).then((initialResponse: HttpOperationResponse) => createHttpLongRunningOperationResponseFromInitialResponse(this, initialResponse, options)); } /** @@ -68,17 +82,16 @@ export class AzureServiceClient extends ServiceClient { * @returns {Promise} The final response after polling is complete. */ async getLongRunningOperationResult(initialResponse: HttpOperationResponse, options?: RequestOptionsBase): Promise { - const lroPollStrategy: LROPollStrategy | undefined = createLROPollStrategy(initialResponse, this, options); - if (!lroPollStrategy) { - return initialResponse; - } else { - const succeeded: boolean = await lroPollStrategy.pollUntilFinished(); - if (succeeded) { - return lroPollStrategy.getOperationResponse(); - } else { - throw lroPollStrategy.getRestError(); - } - } + const lroResponse: HttpLongRunningOperationResponse = createHttpLongRunningOperationResponseFromInitialResponse(this, initialResponse, options); + return lroResponse.pollUntilFinished(); + } + + /** + * Restore an HttpLongRunningOperationResponse from the provided LROMemento. This method can be + * used to recreate an HttpLongRunningOperationResponse on a different process or machine. + */ + restoreHttpLongRunningOperationResponse(lroMemento: LROMemento): HttpLongRunningOperationResponse { + return createHttpLongRunningOperationResponseFromMemento(this, lroMemento); } } diff --git a/lib/httpLongRunningOperationResponse.ts b/lib/httpLongRunningOperationResponse.ts new file mode 100644 index 000000000000..fe1eb03799d5 --- /dev/null +++ b/lib/httpLongRunningOperationResponse.ts @@ -0,0 +1,88 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +import { HttpOperationResponse, RequestOptionsBase } from "ms-rest-js"; +import { AzureServiceClient } from "./azureServiceClient"; +import { createLROPollStrategyFromInitialResponse, createLROPollStrategyFromMemento, LROMemento, LROPollStrategy } from "./lroPollStrategy"; +import { LongRunningOperationStates } from "./util/constants"; + +/** + * An HTTP operation response that provides special methods for interacting with LROs (long running + * operations). + */ +export class HttpLongRunningOperationResponse { + /** + * Create a new HttpLongRunningOperationResponse. + * @param _lroPollStrategy The LROPollStrategy that this HttpLongRunningOperationResponse will + * use to interact with the LRO. + */ + constructor(private readonly _lroPollStrategy: LROPollStrategy | undefined, private readonly _initialResponse: HttpOperationResponse) { + } + + /** + * Get the current status of the LRO. + * @returns The current status of the LRO. + */ + public getOperationStatus(): LongRunningOperationStates { + const lroPollStrategy: LROPollStrategy | undefined = this._lroPollStrategy; + return !lroPollStrategy ? "Succeeded" : lroPollStrategy.getOperationStatus(); + } + + /** + * Send a single poll request and return the LRO's state. + * @returns The LRO's state. + */ + public poll(): Promise { + let result: Promise; + const lroPollStrategy: LROPollStrategy | undefined = this._lroPollStrategy; + if (!lroPollStrategy) { + result = Promise.resolve("Succeeded"); + } else { + result = lroPollStrategy.sendPollRequest().then(() => { + return lroPollStrategy.getOperationStatus(); + }); + } + return result; + } + + /** + * Send poll requests that check the LRO's status until it is determined that the LRO is finished. + * @returns Whether or not the LRO succeeded. + */ + public async pollUntilFinished(): Promise { + let result: Promise; + const lroPollStrategy: LROPollStrategy | undefined = this._lroPollStrategy; + if (!lroPollStrategy) { + result = Promise.resolve(this._initialResponse); + } else { + result = lroPollStrategy.pollUntilFinished().then((succeeded: boolean) => { + if (succeeded) { + return lroPollStrategy.getOperationResponse(); + } else { + throw lroPollStrategy.getRestError(); + } + }); + } + return result; + } + + /** + * Get an LROMemento object that can be used to poll this LRO in a different context (such as on a + * different process or a different machine). If the LRO couldn't produce an LRO polling strategy, + * then this will return undefined. + */ + public getMemento(): LROMemento | undefined { + const lroPollStrategy: LROPollStrategy | undefined = this._lroPollStrategy; + return !lroPollStrategy ? undefined : lroPollStrategy.getMemento(); + } +} + +export function createHttpLongRunningOperationResponseFromInitialResponse(azureServiceClient: AzureServiceClient, initialResponse: HttpOperationResponse, options?: RequestOptionsBase): HttpLongRunningOperationResponse { + const lroPollStrategy: LROPollStrategy | undefined = createLROPollStrategyFromInitialResponse(initialResponse, azureServiceClient, options); + return new HttpLongRunningOperationResponse(lroPollStrategy, initialResponse); +} + +export function createHttpLongRunningOperationResponseFromMemento(azureServiceClient: AzureServiceClient, lroMemento: LROMemento): HttpLongRunningOperationResponse { + const lroPollStrategy: LROPollStrategy | undefined = createLROPollStrategyFromMemento(azureServiceClient, lroMemento); + return new HttpLongRunningOperationResponse(lroPollStrategy, lroMemento.initialResponse); +} \ No newline at end of file diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts index 578d8ef49497..c9080a434348 100644 --- a/lib/lroPollStrategy.ts +++ b/lib/lroPollStrategy.ts @@ -5,40 +5,46 @@ import { delay, HttpMethods, HttpOperationResponse, RequestOptionsBase, RequestP import { AzureServiceClient } from "./azureServiceClient"; import { LongRunningOperationStates } from "./util/constants"; +export type LROPollStrategyType = "AzureAsyncOperation" | "Location" | "GetResource"; + +export interface LROMemento { + pollStrategyType: LROPollStrategyType; + initialResponse: HttpOperationResponse; + state: LongRunningOperationStates; + mostRecentRequest: WebResource; + mostRecentResponse: HttpOperationResponse; + resource: any; + azureAsyncOperationHeaderValue?: string; + locationHeaderValue?: string; + options?: RequestOptionsBase; +} + /** * A long-running operation polling strategy base class that other polling strategies should extend. */ export abstract class LROPollStrategy { - protected readonly _initialRequestUrl: string; - protected readonly _initialRequestMethod: HttpMethods; - protected readonly _initialResponseStatusCode: number; - protected _status: LongRunningOperationStates; - protected _mostRecentRequest: WebResource; - protected _response: HttpOperationResponse; - protected _resource: any; - protected _azureAsyncOperationHeaderValue: string | undefined; - protected _locationHeaderValue: string | undefined; - - constructor(initialResponse: HttpOperationResponse, private readonly _azureServiceClient: AzureServiceClient, private readonly _options?: RequestOptionsBase) { - this._response = initialResponse; - - this._mostRecentRequest = initialResponse.request; - this._initialRequestUrl = this._mostRecentRequest.url; - this._initialResponseStatusCode = initialResponse.status; - this._initialRequestMethod = this._mostRecentRequest.method; - - this._resource = getResponseBody(initialResponse); - this._status = getStatusFromResponse(initialResponse, this._resource); - this._resource = getResponseBody(initialResponse); - - this._azureAsyncOperationHeaderValue = getAzureAsyncOperationHeaderValue(initialResponse); - this._locationHeaderValue = getLocationHeaderValue(initialResponse); + constructor(private readonly _azureServiceClient: AzureServiceClient, protected readonly _memento: LROMemento) { + } + + public getOperationStatus(): LongRunningOperationStates { + return this._memento.state; + } + /** + * Get whether or not this poll strategy's LRO is finished. + * @returns Whether or not this poll strategy's LRO is finished. + */ + public isFinished(): boolean { + return isFinished(this._memento.state); } + /** + * Send poll requests that check the LRO's status until it is determined that the LRO is finished. + * @returns Whether or not the LRO succeeded. + */ public async pollUntilFinished(): Promise { - while (!isFinished(this._status)) { - const delayInSeconds: number = getDelayInSeconds(this._azureServiceClient, this._response); + while (!this.isFinished()) { + const delayInSeconds: number = getDelayInSeconds(this._azureServiceClient, this._memento.mostRecentResponse); await delay(delayInSeconds * 1000); await this.sendPollRequest(); @@ -46,13 +52,17 @@ export abstract class LROPollStrategy { return this.finalStatusIsAcceptable(); } - protected abstract sendPollRequest(): Promise; + /** + * Send a single poll request that checks the LRO's status and return the response. If the LRO is + * finished, then no request will be sent and the last response received will be returned. + */ + public abstract sendPollRequest(): Promise; - protected abstract finalStatusIsAcceptable(): boolean; + public abstract finalStatusIsAcceptable(): boolean; protected shouldDoFinalGetResourceRequest(): boolean { - const initialRequestMethod: HttpMethods = this._initialRequestMethod; - return !this._resource && (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH" || initialRequestMethod === "POST"); + const initialRequestMethod: HttpMethods = this._memento.initialResponse.request.method; + return !this._memento.resource && (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH" || initialRequestMethod === "POST"); } protected abstract doFinalGetResourceRequest(): Promise; @@ -61,12 +71,12 @@ export abstract class LROPollStrategy { if (this.shouldDoFinalGetResourceRequest()) { await this.doFinalGetResourceRequest(); } - const response: HttpOperationResponse = this._response; + const response: HttpOperationResponse = this._memento.mostRecentResponse; const result: HttpOperationResponse = { ...response, headers: response.headers.clone() }; - const resource: any = this._resource; + const resource: any = this._memento.resource; if (!resource) { result.bodyAsText = response.bodyAsText; result.parsedBody = response.parsedBody; @@ -82,10 +92,10 @@ export abstract class LROPollStrategy { public getRestError(): RestError { const error = new RestError(""); - error.request = stripRequest(this._mostRecentRequest); - error.response = this._response; - error.message = `Long running operation failed with status: "${this._status}".`; - error.body = this._resource; + error.request = stripRequest(this._memento.mostRecentRequest); + error.response = this._memento.mostRecentResponse; + error.message = `Long running operation failed with status: "${this._memento.state}".`; + error.body = this._memento.resource; if (error.body) { const innerError: any = error.body.error; if (innerError) { @@ -101,16 +111,16 @@ export abstract class LROPollStrategy { } protected updateState(url: string): Promise { - return this.getStatus(url).then(result => { - this._status = getProvisioningState(result.parsedBody) || "Succeeded"; - this._response = result; - this._mostRecentRequest = result.request; + return this.updateOperationStatus(url).then(result => { + this._memento.state = getProvisioningState(result.parsedBody) || "Succeeded"; + this._memento.mostRecentResponse = result; + this._memento.mostRecentRequest = result.request; try { - this._resource = getResponseBody(result); + this._memento.resource = getResponseBody(result); } catch (error) { - this._resource = undefined; + this._memento.resource = undefined; const resultStatus: number = result.status; - if (this._initialRequestMethod !== "DELETE" || resultStatus < 400 || 499 < resultStatus) { + if (this._memento.initialResponse.request.method !== "DELETE" || resultStatus < 400 || 499 < resultStatus) { throw error; } } @@ -121,21 +131,26 @@ export abstract class LROPollStrategy { * Retrieves operation status by querying the operation URL. * @param {string} statusUrl URL used to poll operation result. */ - protected getStatus(statusUrl: string): Promise { + protected updateOperationStatus(statusUrl: string): Promise { const requestUrl: string = statusUrl.replace(" ", "%20"); const httpRequest: RequestPrepareOptions = { method: "GET", url: requestUrl, headers: {} }; - if (this._options && this._options.customHeaders) { - const customHeaders = this._options.customHeaders; + const options: RequestOptionsBase | undefined = this._memento.options; + if (options && options.customHeaders) { + const customHeaders = options.customHeaders; for (const headerName of Object.keys(customHeaders)) { httpRequest.headers![headerName] = customHeaders[headerName]; } } return this._azureServiceClient.sendRequest(httpRequest); } + + public getMemento(): LROMemento { + return this._memento; + } } export function getDelayInSeconds(azureServiceClient: AzureServiceClient, previousResponse: HttpOperationResponse): number { @@ -230,21 +245,61 @@ function isFinished(status: LongRunningOperationStates): boolean { * @param azureServiceClient The AzureServiceClient that was used to send the initial request. * @param options Any options that were provided to the initial request. */ -export function createLROPollStrategy(initialResponse: HttpOperationResponse, azureServiceClient: AzureServiceClient, options?: RequestOptionsBase): LROPollStrategy | undefined { - let result: LROPollStrategy | undefined; +export function createLROPollStrategyFromInitialResponse(initialResponse: HttpOperationResponse, azureServiceClient: AzureServiceClient, options?: RequestOptionsBase): LROPollStrategy | undefined { + const initialRequestMethod: HttpMethods = initialResponse.request.method; + const initialResponseStatus: number = initialResponse.status; + let lroPollStrategyType: LROPollStrategyType | undefined; if (getAzureAsyncOperationHeaderValue(initialResponse)) { - result = new AzureAsyncOperationLROPollStrategy(initialResponse, azureServiceClient, options); + lroPollStrategyType = "AzureAsyncOperation"; } else if (getLocationHeaderValue(initialResponse)) { - result = new LocationLROPollStrategy(initialResponse, azureServiceClient, options); - } else if (initialResponse.request.method === "PUT" || initialResponse.request.method === "PATCH") { - result = new GetResourceLROPollStrategy(initialResponse, azureServiceClient, options); - } else if (initialResponse.status === 201 || initialResponse.status === 202 || isFinished(getStatusFromResponse(initialResponse))) { - result = undefined; + lroPollStrategyType = "Location"; + } else if (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH") { + lroPollStrategyType = "GetResource"; + } else if (initialResponseStatus !== 201 && initialResponseStatus !== 202 && !isFinished(getStatusFromResponse(initialResponse))) { + throw new Error("Can't determine long running operation polling strategy."); + } + + let result: LROPollStrategy | undefined; + if (lroPollStrategyType) { + const resource: any = getResponseBody(initialResponse); + const lroMemento: LROMemento = { + pollStrategyType: lroPollStrategyType, + options: options, + initialResponse: initialResponse, + mostRecentResponse: initialResponse, + mostRecentRequest: initialResponse.request, + azureAsyncOperationHeaderValue: getAzureAsyncOperationHeaderValue(initialResponse), + locationHeaderValue: getLocationHeaderValue(initialResponse), + resource: resource, + state: getStatusFromResponse(initialResponse, resource) + }; + result = createLROPollStrategyFromMemento(azureServiceClient, lroMemento); } else { - throw new Error("Can't determine long running operation polling strategy from initial response."); + result = undefined; } + return result; +} + +export function createLROPollStrategyFromMemento(azureServiceClient: AzureServiceClient, lroMemento: LROMemento): LROPollStrategy | undefined { + let result: LROPollStrategy; + switch (lroMemento.pollStrategyType) { + case "AzureAsyncOperation": + result = new AzureAsyncOperationLROPollStrategy(azureServiceClient, lroMemento); + break; + case "Location": + result = new LocationLROPollStrategy(azureServiceClient, lroMemento); + break; + + case "GetResource": + result = new GetResourceLROPollStrategy(azureServiceClient, lroMemento); + break; + + default: + throw new Error(`Unrecognized LRO poll strategy type: "${lroMemento.pollStrategyType}"`); + break; + } return result; } @@ -261,53 +316,59 @@ class LocationLROPollStrategy extends LROPollStrategy { * @param {string} method - The HTTP method. * @param {PollingState} pollingState - The object to persist current operation state. */ - protected sendPollRequest(): Promise { - return this.getStatus(this._locationHeaderValue!).then((result: HttpOperationResponse) => { + public sendPollRequest(): Promise { + const memento: LROMemento = this._memento; + return this.updateOperationStatus(memento.locationHeaderValue!).then((result: HttpOperationResponse) => { const locationHeaderValue: string | undefined = getLocationHeaderValue(result); if (locationHeaderValue) { - this._locationHeaderValue = locationHeaderValue; + memento.locationHeaderValue = locationHeaderValue; } - this._response = result; - this._mostRecentRequest = result.request; + memento.mostRecentResponse = result; + memento.mostRecentRequest = result.request; - const initialRequestMethod: HttpMethods = this._initialRequestMethod; - const initialResponseStatusCode: number = this._initialResponseStatusCode; + const initialResponse: HttpOperationResponse = memento.initialResponse; + const initialRequestMethod: HttpMethods = initialResponse.request.method; + const initialResponseStatusCode: number = initialResponse.status; const statusCode: number = result.status; if (statusCode === 202) { - this._status = "InProgress"; + memento.state = "InProgress"; } else if (statusCode === 200 || (statusCode === 201 && (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH")) || (statusCode === 204 && (initialRequestMethod === "DELETE" || initialRequestMethod === "POST"))) { - this._status = "Succeeded"; - this._resource = getResponseBody(result); + memento.state = "Succeeded"; + memento.resource = getResponseBody(result); } else if (statusCode === 404 && initialRequestMethod === "POST" && (initialResponseStatusCode === 200 || initialResponseStatusCode === 201 || initialResponseStatusCode === 202)) { - this._status = "Failed"; - this._resource = getResponseBody(result); + memento.state = "Failed"; + memento.resource = getResponseBody(result); } else if (400 <= statusCode && statusCode <= 499) { const resultBody: string = result.bodyAsText!; throw new RestError(resultBody, undefined, statusCode, stripRequest(result.request), result, resultBody); } else { - throw new Error(`The response with status code ${statusCode} from polling for long running operation url "${this._locationHeaderValue}" is not valid.`); + throw new Error(`The response with status code ${statusCode} from polling for long running operation url "${memento.locationHeaderValue}" is not valid.`); } }); } - protected finalStatusIsAcceptable(): boolean { - const initialResponseStatusCode: number = this._initialResponseStatusCode; - return this._status === "Succeeded" || - (this._initialRequestMethod === "POST" && this._response.status === 404 && + public finalStatusIsAcceptable(): boolean { + const memento: LROMemento = this._memento; + const initialResponse: HttpOperationResponse = memento.initialResponse; + const initialResponseStatusCode: number = initialResponse.status; + return memento.state === "Succeeded" || + (initialResponse.request.method === "POST" && memento.mostRecentResponse.status === 404 && (initialResponseStatusCode === 200 || initialResponseStatusCode === 201 || initialResponseStatusCode === 202)); } protected shouldDoFinalGetResourceRequest(): boolean { + const memento: LROMemento = this._memento; + const initialResponse: HttpOperationResponse = memento.initialResponse; let result: boolean; - const initialRequestMethod: HttpMethods = this._initialRequestMethod; - const initialResponseStatusCode: number = this._initialResponseStatusCode; - if (initialRequestMethod === "POST" && this._response.status === 404 && + const initialRequestMethod: HttpMethods = initialResponse.request.method; + const initialResponseStatusCode: number = initialResponse.status; + if (initialRequestMethod === "POST" && memento.mostRecentResponse.status === 404 && (initialResponseStatusCode === 200 || initialResponseStatusCode === 201 || initialResponseStatusCode === 202)) { @@ -320,15 +381,18 @@ class LocationLROPollStrategy extends LROPollStrategy { } protected doFinalGetResourceRequest(): Promise { + const memento: LROMemento = this._memento; + const initialResponse: HttpOperationResponse = memento.initialResponse; let getResourceRequestUrl: string; - const initialResponseStatusCode: number = this._initialResponseStatusCode; - if (this._initialRequestMethod === "POST" && + const initialResponseStatusCode: number = initialResponse.status; + const initialRequest: WebResource = initialResponse.request; + if (initialRequest.method === "POST" && (initialResponseStatusCode === 200 || initialResponseStatusCode === 201 || initialResponseStatusCode === 202)) { - getResourceRequestUrl = this._locationHeaderValue!; + getResourceRequestUrl = memento.locationHeaderValue!; } else { - getResourceRequestUrl = this._initialRequestUrl; + getResourceRequestUrl = initialRequest.url; } return this.updateState(getResourceRequestUrl); } @@ -347,8 +411,9 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { * @param {PollingState} pollingState - The object to persist current operation state. * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation. */ - protected sendPollRequest(): Promise { - return this.getStatus(this._azureAsyncOperationHeaderValue!).then((response: HttpOperationResponse) => { + public sendPollRequest(): Promise { + const memento: LROMemento = this._memento; + return this.updateOperationStatus(memento.azureAsyncOperationHeaderValue!).then((response: HttpOperationResponse) => { const statusCode: number = response.status; const parsedResponse: any = response.parsedBody; if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { @@ -368,24 +433,26 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { const azureAsyncOperationHeaderValue: string | undefined = getAzureAsyncOperationHeaderValue(response); if (azureAsyncOperationHeaderValue) { - this._azureAsyncOperationHeaderValue = azureAsyncOperationHeaderValue; + memento.azureAsyncOperationHeaderValue = azureAsyncOperationHeaderValue; } - this._status = parsedResponse.status; - this._response = response; - this._mostRecentRequest = response.request; - this._resource = getResponseBody(response); + memento.state = parsedResponse.status; + memento.mostRecentResponse = response; + memento.mostRecentRequest = response.request; + memento.resource = getResponseBody(response); }); } protected shouldDoFinalGetResourceRequest(): boolean { - const initialRequestMethod: HttpMethods = this._initialRequestMethod; + const memento: LROMemento = this._memento; + const initialResponse: HttpOperationResponse = memento.initialResponse; + const initialRequestMethod: HttpMethods = initialResponse.request.method; let result = false; if (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH") { result = true; } else { - if (this._locationHeaderValue) { - const initialResponseStatusCode: number = this._initialResponseStatusCode; + if (memento.locationHeaderValue) { + const initialResponseStatusCode: number = initialResponse.status; if (initialRequestMethod === "POST") { result = initialResponseStatusCode === 200 || initialResponseStatusCode === 201 || initialResponseStatusCode === 202; } else if (initialRequestMethod === "DELETE") { @@ -397,11 +464,14 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { } protected doFinalGetResourceRequest(): Promise { - const locationHeaderValue: string | undefined = this._locationHeaderValue; - let getResourceRequestUrl: string = this._initialRequestUrl; + const memento: LROMemento = this._memento; + const locationHeaderValue: string | undefined = memento.locationHeaderValue; + const initialResponse: HttpOperationResponse = memento.initialResponse; + const initialRequest: WebResource = initialResponse.request; + let getResourceRequestUrl: string = initialRequest.url; if (locationHeaderValue) { - const initialRequestMethod: HttpMethods = this._initialRequestMethod; - const initialResponseStatusCode: number = this._initialResponseStatusCode; + const initialRequestMethod: HttpMethods = initialRequest.method; + const initialResponseStatusCode: number = initialResponse.status; if (initialRequestMethod === "POST" && (initialResponseStatusCode === 200 || initialResponseStatusCode === 201 || initialResponseStatusCode === 202)) { getResourceRequestUrl = locationHeaderValue; } else if (initialRequestMethod === "DELETE" && (initialResponseStatusCode === 200 || initialResponseStatusCode === 202)) { @@ -411,10 +481,12 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { return this.updateState(getResourceRequestUrl); } - protected finalStatusIsAcceptable(): boolean { - const initialResponseStatusCode: number = this._initialResponseStatusCode; - return this._status === "Succeeded" || - (this._initialRequestMethod === "POST" && (initialResponseStatusCode === 200 || initialResponseStatusCode === 201)); + public finalStatusIsAcceptable(): boolean { + const memento: LROMemento = this._memento; + const initialResponse: HttpOperationResponse = memento.initialResponse; + const initialResponseStatusCode: number = initialResponse.status; + return memento.state === "Succeeded" || + (initialResponse.request.method === "POST" && (initialResponseStatusCode === 200 || initialResponseStatusCode === 201)); } } @@ -422,8 +494,9 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { * A long-running operation polling strategy that is based on the resource's provisioning state. */ class GetResourceLROPollStrategy extends LROPollStrategy { - protected sendPollRequest(): Promise { - return this.getStatus(this._initialRequestUrl).then(result => { + public sendPollRequest(): Promise { + const memento: LROMemento = this._memento; + return this.updateOperationStatus(memento.initialResponse.request.url).then(result => { const statusCode: number = result.status; const responseBody: any = result.parsedBody; if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { @@ -439,15 +512,15 @@ class GetResourceLROPollStrategy extends LROPollStrategy { throw new Error("The response from long running operation does not contain a body."); } - this._status = getProvisioningState(result.parsedBody) || "Succeeded"; - this._response = result; - this._mostRecentRequest = result.request; - this._resource = getResponseBody(result); + memento.state = getProvisioningState(result.parsedBody) || "Succeeded"; + memento.mostRecentResponse = result; + memento.mostRecentRequest = result.request; + memento.resource = getResponseBody(result); }); } - protected finalStatusIsAcceptable(): boolean { - return this._status === "Succeeded"; + public finalStatusIsAcceptable(): boolean { + return this._memento.state === "Succeeded"; } protected doFinalGetResourceRequest(): Promise { diff --git a/package-lock.json b/package-lock.json index 3de64d0ac213..32c382641bd0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ms-rest-azure-js", - "version": "0.11.0", + "version": "0.12.0", "lockfileVersion": 1, "requires": true, "dependencies": { From 7d4a3f1313811739e7b99597460301c972960df5 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Thu, 2 Aug 2018 15:10:19 -0700 Subject: [PATCH 081/289] Add "sideEffects": false for webpack 4 Same as Azure/ms-rest-js#181 --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 5c0156da3ffb..9a8f363f7030 100644 --- a/package.json +++ b/package.json @@ -88,5 +88,6 @@ "local": "node ./.scripts/local.js", "preview": "node ./.scripts/preview.js", "latest": "node ./.scripts/latest.js" - } + }, + "sideEffects": false } From 68db1f1605022618f2f28e229e17c76b725eac4c Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Wed, 8 Aug 2018 17:04:36 -0700 Subject: [PATCH 082/289] Update ms-rest-js to v0.18 and bump to v0.13 --- package-lock.json | 26 +++++++++++++------------- package.json | 4 ++-- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3de64d0ac213..d565fc5d05f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ms-rest-azure-js", - "version": "0.11.0", + "version": "0.13.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -175,9 +175,9 @@ "dev": true }, "@types/node": { - "version": "9.6.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.24.tgz", - "integrity": "sha512-o5K0mt8x735EaqS7F2x+5AG0b1Mt3V9jgV5SeW8SD6RNhE++dvwqLf2R2e4c8FmhNLaogz2oXrsiXnqnsBSSIQ==" + "version": "9.6.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.26.tgz", + "integrity": "sha512-3LKKscYUZdZreOuvnly8oWsCA1TOWtmkV3mbcUnV34f+nqDWJic+4SGjRi1C/sPHnZcSs/x209O+Dgy8aWHt2A==" }, "@types/range-parser": { "version": "1.2.2", @@ -1559,9 +1559,9 @@ } }, "follow-redirects": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.1.tgz", - "integrity": "sha512-v9GI1hpaqq1ZZR6pBD1+kI7O24PhDvNGNodjS3MdcEqyrahCp8zbtpv+2B/krUnSmUH80lbAS7MrdeK5IylgKg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.2.tgz", + "integrity": "sha512-kssLorP/9acIdpQ2udQVTiCS5LQmdEz9mvdIfDcl1gYX2tPKFADHSyFdvJS040XdFsPzemWtgI3q8mFVCxtX8A==", "requires": { "debug": "^3.1.0" } @@ -2924,9 +2924,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.17.375", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.17.375.tgz", - "integrity": "sha1-oRwWS6O8mo45DFNTliOfqTgIysQ=", + "version": "0.18.377", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.18.377.tgz", + "integrity": "sha512-HTYeBKqZN5uTfYEhodbtopAw82bHDU17EGMWCob9oq3o3+iV3eMjtd0J5/Koqf7U9dkfciqVOVdPWBKdHQnmqA==", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", @@ -5385,9 +5385,9 @@ "dev": true }, "psl": { - "version": "1.1.28", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.28.tgz", - "integrity": "sha512-+AqO1Ae+N/4r7Rvchrdm432afjT9hqJRyBN3DQv9At0tPz4hIFSGKbq64fN9dVoCow4oggIIax5/iONx0r9hZw==" + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" }, "public-encrypt": { "version": "4.0.2", diff --git a/package.json b/package.json index 9a8f363f7030..e8d800bad992 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.12.0", + "version": "0.13.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -30,7 +30,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.17.375", + "ms-rest-js": "~0.18.377", "tslib": "^1.9.2" }, "devDependencies": { From d5de4bb835dc332ae7968a7eb25bbf1d9eba170a Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Wed, 15 Aug 2018 14:48:13 -0700 Subject: [PATCH 083/289] Export HttpLongRunningOperationResponse --- lib/msRestAzure.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/msRestAzure.ts b/lib/msRestAzure.ts index 771643cfaaf2..5317da2c2731 100644 --- a/lib/msRestAzure.ts +++ b/lib/msRestAzure.ts @@ -5,4 +5,5 @@ export { AzureServiceClient, AzureServiceClientOptions } from "./azureServiceCli export { BaseResource, BaseResourceMapper } from "./baseResource"; export { CloudError, CloudErrorMapper } from "./cloudError"; export { CognitiveServicesCredentials } from "./credentials/cognitiveServicesCredentials"; +export { HttpLongRunningOperationResponse } from "./httpLongRunningOperationResponse"; export { DEFAULT_LANGUAGE, LongRunningOperationStates, msRestAzureVersion } from "./util/constants"; From 98f4cb8cad25a4577459d85a1027d7182e34d625 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Thu, 16 Aug 2018 09:11:34 -0700 Subject: [PATCH 084/289] Update ms-rest-js and bump to v0.14 --- package-lock.json | 14 +++++++------- package.json | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index d5f1b2b35546..879bf5162427 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ms-rest-azure-js", - "version": "0.13.0", + "version": "0.14.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -175,9 +175,9 @@ "dev": true }, "@types/node": { - "version": "9.6.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.27.tgz", - "integrity": "sha512-fGWGG9Wypv6JZLIrnq9jXFX/FhQzgNccTlojez9hBbQ9UiBdxtc0ONMMe4/vnB2nDgOMDpPR/7HhenUB+Bw5yQ==" + "version": "9.6.28", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.28.tgz", + "integrity": "sha512-LMSOxMKNJ8tGqUVs8lSIT8RGo1XGWYada/ZU2QZcbcD6AW9futXDE99tfQA0K6DK60GXcwplsGGK5KABRmI5GA==" }, "@types/range-parser": { "version": "1.2.2", @@ -2917,9 +2917,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.18.378", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.18.378.tgz", - "integrity": "sha512-gtiQIYLWJ+5WLoJnwZYhOYA55s8TCV6Oh2dPMQzFC07nDbyxW++0Okes2Q9hyFZzyFiij0W2h5UuWY7PfNLgCw==", + "version": "0.19.379", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.19.379.tgz", + "integrity": "sha512-/bPhVON6gbEuoQwLA8v0GC5cC6fztYHDv3KsEyCr32p26ORaqKJUwro1DjhdI/rhaab3U09R7IbUskt3oI7s7Q==", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", diff --git a/package.json b/package.json index e8d800bad992..0631602627b8 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.13.0", + "version": "0.14.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -30,7 +30,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.18.377", + "ms-rest-js": "~0.19.379", "tslib": "^1.9.2" }, "devDependencies": { From aeb53e6444fddca0d644671988796363d6944429 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 16 Aug 2018 14:17:59 -0700 Subject: [PATCH 085/289] Rename HttpLongRunningOperationResponse to LROPoller --- lib/azureServiceClient.ts | 22 +-- lib/lroPollStrategy.ts | 150 +++++++++--------- ...nningOperationResponse.ts => lroPoller.ts} | 53 +++++-- lib/msRestAzure.ts | 2 +- package-lock.json | 6 +- package.json | 2 +- 6 files changed, 132 insertions(+), 103 deletions(-) rename lib/{httpLongRunningOperationResponse.ts => lroPoller.ts} (57%) diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index de60b52b6c58..154307ea2527 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -2,9 +2,9 @@ // Licensed under the MIT License. See License.txt in the project root for license information. import { HttpOperationResponse, RequestOptionsBase, RequestPrepareOptions, ServiceClient, ServiceClientCredentials, ServiceClientOptions, WebResource } from "ms-rest-js"; -import { HttpLongRunningOperationResponse, createHttpLongRunningOperationResponseFromInitialResponse, createHttpLongRunningOperationResponseFromMemento } from "./httpLongRunningOperationResponse"; +import { createLROPollerFromInitialResponse, createLROPollerFromPollState, LROPoller } from "./lroPoller"; +import { LROPollState } from "./lroPollStrategy"; import * as Constants from "./util/constants"; -import { LROMemento } from "./lroPollStrategy"; /** * Options to be provided while creating the client. @@ -59,7 +59,7 @@ export class AzureServiceClient extends ServiceClient { * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody. */ async sendLongRunningRequest(request: RequestPrepareOptions | WebResource, options?: RequestOptionsBase): Promise { - return this.beginLongRunningRequest(request, options).then((lroResponse: HttpLongRunningOperationResponse) => lroResponse.pollUntilFinished()); + return this.beginLongRunningRequest(request, options).then((lroResponse: LROPoller) => lroResponse.pollUntilFinished()); } /** @@ -68,11 +68,11 @@ export class AzureServiceClient extends ServiceClient { * LRO is finished. * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object * @param {AzureRequestOptionsBase} [options] Additional options to be sent while making the request - * @returns {Promise} The HttpLongRunningOperationResponse + * @returns {Promise} The HttpLongRunningOperationResponse * that provides methods for interacting with the LRO. */ - async beginLongRunningRequest(request: RequestPrepareOptions | WebResource, options?: RequestOptionsBase): Promise { - return this.sendRequest(request).then((initialResponse: HttpOperationResponse) => createHttpLongRunningOperationResponseFromInitialResponse(this, initialResponse, options)); + async beginLongRunningRequest(request: RequestPrepareOptions | WebResource, options?: RequestOptionsBase): Promise { + return this.sendRequest(request).then((initialResponse: HttpOperationResponse) => createLROPollerFromInitialResponse(this, initialResponse, options)); } /** @@ -82,16 +82,16 @@ export class AzureServiceClient extends ServiceClient { * @returns {Promise} The final response after polling is complete. */ async getLongRunningOperationResult(initialResponse: HttpOperationResponse, options?: RequestOptionsBase): Promise { - const lroResponse: HttpLongRunningOperationResponse = createHttpLongRunningOperationResponseFromInitialResponse(this, initialResponse, options); + const lroResponse: LROPoller = createLROPollerFromInitialResponse(this, initialResponse, options); return lroResponse.pollUntilFinished(); } /** - * Restore an HttpLongRunningOperationResponse from the provided LROMemento. This method can be - * used to recreate an HttpLongRunningOperationResponse on a different process or machine. + * Restore an LROPoller from the provided LROPollState. This method can be used to recreate an + * LROPoller on a different process or machine. */ - restoreHttpLongRunningOperationResponse(lroMemento: LROMemento): HttpLongRunningOperationResponse { - return createHttpLongRunningOperationResponseFromMemento(this, lroMemento); + restoreLROPoller(lroPollState: LROPollState): LROPoller { + return createLROPollerFromPollState(this, lroPollState); } } diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts index c9080a434348..c7850f1fd7c2 100644 --- a/lib/lroPollStrategy.ts +++ b/lib/lroPollStrategy.ts @@ -7,7 +7,7 @@ import { LongRunningOperationStates } from "./util/constants"; export type LROPollStrategyType = "AzureAsyncOperation" | "Location" | "GetResource"; -export interface LROMemento { +export interface LROPollState { pollStrategyType: LROPollStrategyType; initialResponse: HttpOperationResponse; state: LongRunningOperationStates; @@ -23,11 +23,11 @@ export interface LROMemento { * A long-running operation polling strategy base class that other polling strategies should extend. */ export abstract class LROPollStrategy { - constructor(private readonly _azureServiceClient: AzureServiceClient, protected readonly _memento: LROMemento) { + constructor(private readonly _azureServiceClient: AzureServiceClient, protected readonly _pollState: LROPollState) { } public getOperationStatus(): LongRunningOperationStates { - return this._memento.state; + return this._pollState.state; } /** @@ -35,7 +35,7 @@ export abstract class LROPollStrategy { * @returns Whether or not this poll strategy's LRO is finished. */ public isFinished(): boolean { - return isFinished(this._memento.state); + return isFinished(this._pollState.state); } /** @@ -44,7 +44,7 @@ export abstract class LROPollStrategy { */ public async pollUntilFinished(): Promise { while (!this.isFinished()) { - const delayInSeconds: number = getDelayInSeconds(this._azureServiceClient, this._memento.mostRecentResponse); + const delayInSeconds: number = getDelayInSeconds(this._azureServiceClient, this._pollState.mostRecentResponse); await delay(delayInSeconds * 1000); await this.sendPollRequest(); @@ -61,8 +61,8 @@ export abstract class LROPollStrategy { public abstract finalStatusIsAcceptable(): boolean; protected shouldDoFinalGetResourceRequest(): boolean { - const initialRequestMethod: HttpMethods = this._memento.initialResponse.request.method; - return !this._memento.resource && (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH" || initialRequestMethod === "POST"); + const initialRequestMethod: HttpMethods = this._pollState.initialResponse.request.method; + return !this._pollState.resource && (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH" || initialRequestMethod === "POST"); } protected abstract doFinalGetResourceRequest(): Promise; @@ -71,12 +71,12 @@ export abstract class LROPollStrategy { if (this.shouldDoFinalGetResourceRequest()) { await this.doFinalGetResourceRequest(); } - const response: HttpOperationResponse = this._memento.mostRecentResponse; + const response: HttpOperationResponse = this._pollState.mostRecentResponse; const result: HttpOperationResponse = { ...response, headers: response.headers.clone() }; - const resource: any = this._memento.resource; + const resource: any = this._pollState.resource; if (!resource) { result.bodyAsText = response.bodyAsText; result.parsedBody = response.parsedBody; @@ -92,10 +92,10 @@ export abstract class LROPollStrategy { public getRestError(): RestError { const error = new RestError(""); - error.request = stripRequest(this._memento.mostRecentRequest); - error.response = this._memento.mostRecentResponse; - error.message = `Long running operation failed with status: "${this._memento.state}".`; - error.body = this._memento.resource; + error.request = stripRequest(this._pollState.mostRecentRequest); + error.response = this._pollState.mostRecentResponse; + error.message = `Long running operation failed with status: "${this._pollState.state}".`; + error.body = this._pollState.resource; if (error.body) { const innerError: any = error.body.error; if (innerError) { @@ -112,15 +112,15 @@ export abstract class LROPollStrategy { protected updateState(url: string): Promise { return this.updateOperationStatus(url).then(result => { - this._memento.state = getProvisioningState(result.parsedBody) || "Succeeded"; - this._memento.mostRecentResponse = result; - this._memento.mostRecentRequest = result.request; + this._pollState.state = getProvisioningState(result.parsedBody) || "Succeeded"; + this._pollState.mostRecentResponse = result; + this._pollState.mostRecentRequest = result.request; try { - this._memento.resource = getResponseBody(result); + this._pollState.resource = getResponseBody(result); } catch (error) { - this._memento.resource = undefined; + this._pollState.resource = undefined; const resultStatus: number = result.status; - if (this._memento.initialResponse.request.method !== "DELETE" || resultStatus < 400 || 499 < resultStatus) { + if (this._pollState.initialResponse.request.method !== "DELETE" || resultStatus < 400 || 499 < resultStatus) { throw error; } } @@ -138,7 +138,7 @@ export abstract class LROPollStrategy { url: requestUrl, headers: {} }; - const options: RequestOptionsBase | undefined = this._memento.options; + const options: RequestOptionsBase | undefined = this._pollState.options; if (options && options.customHeaders) { const customHeaders = options.customHeaders; for (const headerName of Object.keys(customHeaders)) { @@ -148,8 +148,8 @@ export abstract class LROPollStrategy { return this._azureServiceClient.sendRequest(httpRequest); } - public getMemento(): LROMemento { - return this._memento; + public getPollState(): LROPollState { + return this._pollState; } } @@ -263,7 +263,7 @@ export function createLROPollStrategyFromInitialResponse(initialResponse: HttpOp let result: LROPollStrategy | undefined; if (lroPollStrategyType) { const resource: any = getResponseBody(initialResponse); - const lroMemento: LROMemento = { + const lroPollState: LROPollState = { pollStrategyType: lroPollStrategyType, options: options, initialResponse: initialResponse, @@ -274,30 +274,30 @@ export function createLROPollStrategyFromInitialResponse(initialResponse: HttpOp resource: resource, state: getStatusFromResponse(initialResponse, resource) }; - result = createLROPollStrategyFromMemento(azureServiceClient, lroMemento); + result = createLROPollStrategyFromPollState(azureServiceClient, lroPollState); } else { result = undefined; } return result; } -export function createLROPollStrategyFromMemento(azureServiceClient: AzureServiceClient, lroMemento: LROMemento): LROPollStrategy | undefined { +export function createLROPollStrategyFromPollState(azureServiceClient: AzureServiceClient, lroPollState: LROPollState): LROPollStrategy | undefined { let result: LROPollStrategy; - switch (lroMemento.pollStrategyType) { + switch (lroPollState.pollStrategyType) { case "AzureAsyncOperation": - result = new AzureAsyncOperationLROPollStrategy(azureServiceClient, lroMemento); + result = new AzureAsyncOperationLROPollStrategy(azureServiceClient, lroPollState); break; case "Location": - result = new LocationLROPollStrategy(azureServiceClient, lroMemento); + result = new LocationLROPollStrategy(azureServiceClient, lroPollState); break; case "GetResource": - result = new GetResourceLROPollStrategy(azureServiceClient, lroMemento); + result = new GetResourceLROPollStrategy(azureServiceClient, lroPollState); break; default: - throw new Error(`Unrecognized LRO poll strategy type: "${lroMemento.pollStrategyType}"`); + throw new Error(`Unrecognized LRO poll strategy type: "${lroPollState.pollStrategyType}"`); break; } return result; @@ -317,58 +317,58 @@ class LocationLROPollStrategy extends LROPollStrategy { * @param {PollingState} pollingState - The object to persist current operation state. */ public sendPollRequest(): Promise { - const memento: LROMemento = this._memento; - return this.updateOperationStatus(memento.locationHeaderValue!).then((result: HttpOperationResponse) => { + const lroPollState: LROPollState = this._pollState; + return this.updateOperationStatus(lroPollState.locationHeaderValue!).then((result: HttpOperationResponse) => { const locationHeaderValue: string | undefined = getLocationHeaderValue(result); if (locationHeaderValue) { - memento.locationHeaderValue = locationHeaderValue; + lroPollState.locationHeaderValue = locationHeaderValue; } - memento.mostRecentResponse = result; - memento.mostRecentRequest = result.request; + lroPollState.mostRecentResponse = result; + lroPollState.mostRecentRequest = result.request; - const initialResponse: HttpOperationResponse = memento.initialResponse; + const initialResponse: HttpOperationResponse = lroPollState.initialResponse; const initialRequestMethod: HttpMethods = initialResponse.request.method; const initialResponseStatusCode: number = initialResponse.status; const statusCode: number = result.status; if (statusCode === 202) { - memento.state = "InProgress"; + lroPollState.state = "InProgress"; } else if (statusCode === 200 || (statusCode === 201 && (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH")) || (statusCode === 204 && (initialRequestMethod === "DELETE" || initialRequestMethod === "POST"))) { - memento.state = "Succeeded"; - memento.resource = getResponseBody(result); + lroPollState.state = "Succeeded"; + lroPollState.resource = getResponseBody(result); } else if (statusCode === 404 && initialRequestMethod === "POST" && (initialResponseStatusCode === 200 || initialResponseStatusCode === 201 || initialResponseStatusCode === 202)) { - memento.state = "Failed"; - memento.resource = getResponseBody(result); + lroPollState.state = "Failed"; + lroPollState.resource = getResponseBody(result); } else if (400 <= statusCode && statusCode <= 499) { const resultBody: string = result.bodyAsText!; throw new RestError(resultBody, undefined, statusCode, stripRequest(result.request), result, resultBody); } else { - throw new Error(`The response with status code ${statusCode} from polling for long running operation url "${memento.locationHeaderValue}" is not valid.`); + throw new Error(`The response with status code ${statusCode} from polling for long running operation url "${lroPollState.locationHeaderValue}" is not valid.`); } }); } public finalStatusIsAcceptable(): boolean { - const memento: LROMemento = this._memento; - const initialResponse: HttpOperationResponse = memento.initialResponse; + const lroPollState: LROPollState = this._pollState; + const initialResponse: HttpOperationResponse = lroPollState.initialResponse; const initialResponseStatusCode: number = initialResponse.status; - return memento.state === "Succeeded" || - (initialResponse.request.method === "POST" && memento.mostRecentResponse.status === 404 && + return lroPollState.state === "Succeeded" || + (initialResponse.request.method === "POST" && lroPollState.mostRecentResponse.status === 404 && (initialResponseStatusCode === 200 || initialResponseStatusCode === 201 || initialResponseStatusCode === 202)); } protected shouldDoFinalGetResourceRequest(): boolean { - const memento: LROMemento = this._memento; - const initialResponse: HttpOperationResponse = memento.initialResponse; + const lroPollState: LROPollState = this._pollState; + const initialResponse: HttpOperationResponse = lroPollState.initialResponse; let result: boolean; const initialRequestMethod: HttpMethods = initialResponse.request.method; const initialResponseStatusCode: number = initialResponse.status; - if (initialRequestMethod === "POST" && memento.mostRecentResponse.status === 404 && + if (initialRequestMethod === "POST" && lroPollState.mostRecentResponse.status === 404 && (initialResponseStatusCode === 200 || initialResponseStatusCode === 201 || initialResponseStatusCode === 202)) { @@ -381,8 +381,8 @@ class LocationLROPollStrategy extends LROPollStrategy { } protected doFinalGetResourceRequest(): Promise { - const memento: LROMemento = this._memento; - const initialResponse: HttpOperationResponse = memento.initialResponse; + const lroPollState: LROPollState = this._pollState; + const initialResponse: HttpOperationResponse = lroPollState.initialResponse; let getResourceRequestUrl: string; const initialResponseStatusCode: number = initialResponse.status; const initialRequest: WebResource = initialResponse.request; @@ -390,7 +390,7 @@ class LocationLROPollStrategy extends LROPollStrategy { (initialResponseStatusCode === 200 || initialResponseStatusCode === 201 || initialResponseStatusCode === 202)) { - getResourceRequestUrl = memento.locationHeaderValue!; + getResourceRequestUrl = lroPollState.locationHeaderValue!; } else { getResourceRequestUrl = initialRequest.url; } @@ -412,8 +412,8 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { * @param {boolean} inPostOrDelete - Invoked by Post Or Delete operation. */ public sendPollRequest(): Promise { - const memento: LROMemento = this._memento; - return this.updateOperationStatus(memento.azureAsyncOperationHeaderValue!).then((response: HttpOperationResponse) => { + const lroPollState: LROPollState = this._pollState; + return this.updateOperationStatus(lroPollState.azureAsyncOperationHeaderValue!).then((response: HttpOperationResponse) => { const statusCode: number = response.status; const parsedResponse: any = response.parsedBody; if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { @@ -433,25 +433,25 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { const azureAsyncOperationHeaderValue: string | undefined = getAzureAsyncOperationHeaderValue(response); if (azureAsyncOperationHeaderValue) { - memento.azureAsyncOperationHeaderValue = azureAsyncOperationHeaderValue; + lroPollState.azureAsyncOperationHeaderValue = azureAsyncOperationHeaderValue; } - memento.state = parsedResponse.status; - memento.mostRecentResponse = response; - memento.mostRecentRequest = response.request; - memento.resource = getResponseBody(response); + lroPollState.state = parsedResponse.status; + lroPollState.mostRecentResponse = response; + lroPollState.mostRecentRequest = response.request; + lroPollState.resource = getResponseBody(response); }); } protected shouldDoFinalGetResourceRequest(): boolean { - const memento: LROMemento = this._memento; - const initialResponse: HttpOperationResponse = memento.initialResponse; + const lroPollState: LROPollState = this._pollState; + const initialResponse: HttpOperationResponse = lroPollState.initialResponse; const initialRequestMethod: HttpMethods = initialResponse.request.method; let result = false; if (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH") { result = true; } else { - if (memento.locationHeaderValue) { + if (lroPollState.locationHeaderValue) { const initialResponseStatusCode: number = initialResponse.status; if (initialRequestMethod === "POST") { result = initialResponseStatusCode === 200 || initialResponseStatusCode === 201 || initialResponseStatusCode === 202; @@ -464,9 +464,9 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { } protected doFinalGetResourceRequest(): Promise { - const memento: LROMemento = this._memento; - const locationHeaderValue: string | undefined = memento.locationHeaderValue; - const initialResponse: HttpOperationResponse = memento.initialResponse; + const lroPollState: LROPollState = this._pollState; + const locationHeaderValue: string | undefined = lroPollState.locationHeaderValue; + const initialResponse: HttpOperationResponse = lroPollState.initialResponse; const initialRequest: WebResource = initialResponse.request; let getResourceRequestUrl: string = initialRequest.url; if (locationHeaderValue) { @@ -482,10 +482,10 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { } public finalStatusIsAcceptable(): boolean { - const memento: LROMemento = this._memento; - const initialResponse: HttpOperationResponse = memento.initialResponse; + const lroPollState: LROPollState = this._pollState; + const initialResponse: HttpOperationResponse = lroPollState.initialResponse; const initialResponseStatusCode: number = initialResponse.status; - return memento.state === "Succeeded" || + return lroPollState.state === "Succeeded" || (initialResponse.request.method === "POST" && (initialResponseStatusCode === 200 || initialResponseStatusCode === 201)); } } @@ -495,8 +495,8 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { */ class GetResourceLROPollStrategy extends LROPollStrategy { public sendPollRequest(): Promise { - const memento: LROMemento = this._memento; - return this.updateOperationStatus(memento.initialResponse.request.url).then(result => { + const lroPollState: LROPollState = this._pollState; + return this.updateOperationStatus(lroPollState.initialResponse.request.url).then(result => { const statusCode: number = result.status; const responseBody: any = result.parsedBody; if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { @@ -512,15 +512,15 @@ class GetResourceLROPollStrategy extends LROPollStrategy { throw new Error("The response from long running operation does not contain a body."); } - memento.state = getProvisioningState(result.parsedBody) || "Succeeded"; - memento.mostRecentResponse = result; - memento.mostRecentRequest = result.request; - memento.resource = getResponseBody(result); + lroPollState.state = getProvisioningState(result.parsedBody) || "Succeeded"; + lroPollState.mostRecentResponse = result; + lroPollState.mostRecentRequest = result.request; + lroPollState.resource = getResponseBody(result); }); } public finalStatusIsAcceptable(): boolean { - return this._memento.state === "Succeeded"; + return this._pollState.state === "Succeeded"; } protected doFinalGetResourceRequest(): Promise { diff --git a/lib/httpLongRunningOperationResponse.ts b/lib/lroPoller.ts similarity index 57% rename from lib/httpLongRunningOperationResponse.ts rename to lib/lroPoller.ts index fe1eb03799d5..45b1bdaa76ed 100644 --- a/lib/httpLongRunningOperationResponse.ts +++ b/lib/lroPoller.ts @@ -3,14 +3,14 @@ import { HttpOperationResponse, RequestOptionsBase } from "ms-rest-js"; import { AzureServiceClient } from "./azureServiceClient"; -import { createLROPollStrategyFromInitialResponse, createLROPollStrategyFromMemento, LROMemento, LROPollStrategy } from "./lroPollStrategy"; +import { createLROPollStrategyFromInitialResponse, createLROPollStrategyFromPollState, LROPollState, LROPollStrategy } from "./lroPollStrategy"; import { LongRunningOperationStates } from "./util/constants"; /** * An HTTP operation response that provides special methods for interacting with LROs (long running * operations). */ -export class HttpLongRunningOperationResponse { +export class LROPoller { /** * Create a new HttpLongRunningOperationResponse. * @param _lroPollStrategy The LROPollStrategy that this HttpLongRunningOperationResponse will @@ -19,6 +19,15 @@ export class HttpLongRunningOperationResponse { constructor(private readonly _lroPollStrategy: LROPollStrategy | undefined, private readonly _initialResponse: HttpOperationResponse) { } + /** + * Get whether or not the LRO is finished. + * @returns Whether or not the LRO is finished. + */ + public isFinished(): boolean { + const lroPollStrategy: LROPollStrategy | undefined = this._lroPollStrategy; + return !lroPollStrategy ? true : lroPollStrategy.isFinished(); + } + /** * Get the current status of the LRO. * @returns The current status of the LRO. @@ -28,6 +37,26 @@ export class HttpLongRunningOperationResponse { return !lroPollStrategy ? "Succeeded" : lroPollStrategy.getOperationStatus(); } + /** + * If the LRO is finished and in an acceptable state, then return the HttpOperationResponse. If + * the LRO is finished and not in an acceptable state, then throw the error that the LRO produced. + * If the LRO is not finished, then return undefined. + */ + public getOperationResponse(): Promise { + let result: Promise; + const lroPollStrategy: LROPollStrategy | undefined = this._lroPollStrategy; + if (!lroPollStrategy) { + result = Promise.resolve(this._initialResponse); + } else if (!lroPollStrategy.isFinished()) { + result = Promise.resolve(undefined); + } else if (lroPollStrategy.finalStatusIsAcceptable()) { + result = lroPollStrategy.getOperationResponse(); + } else { + throw lroPollStrategy.getRestError(); + } + return result; + } + /** * Send a single poll request and return the LRO's state. * @returns The LRO's state. @@ -67,22 +96,22 @@ export class HttpLongRunningOperationResponse { } /** - * Get an LROMemento object that can be used to poll this LRO in a different context (such as on a - * different process or a different machine). If the LRO couldn't produce an LRO polling strategy, - * then this will return undefined. + * Get an LROPollState object that can be used to poll this LRO in a different context (such as on + * a different process or a different machine). If the LRO couldn't produce an LRO polling + * strategy, then this will return undefined. */ - public getMemento(): LROMemento | undefined { + public getPollState(): LROPollState | undefined { const lroPollStrategy: LROPollStrategy | undefined = this._lroPollStrategy; - return !lroPollStrategy ? undefined : lroPollStrategy.getMemento(); + return !lroPollStrategy ? undefined : lroPollStrategy.getPollState(); } } -export function createHttpLongRunningOperationResponseFromInitialResponse(azureServiceClient: AzureServiceClient, initialResponse: HttpOperationResponse, options?: RequestOptionsBase): HttpLongRunningOperationResponse { +export function createLROPollerFromInitialResponse(azureServiceClient: AzureServiceClient, initialResponse: HttpOperationResponse, options?: RequestOptionsBase): LROPoller { const lroPollStrategy: LROPollStrategy | undefined = createLROPollStrategyFromInitialResponse(initialResponse, azureServiceClient, options); - return new HttpLongRunningOperationResponse(lroPollStrategy, initialResponse); + return new LROPoller(lroPollStrategy, initialResponse); } -export function createHttpLongRunningOperationResponseFromMemento(azureServiceClient: AzureServiceClient, lroMemento: LROMemento): HttpLongRunningOperationResponse { - const lroPollStrategy: LROPollStrategy | undefined = createLROPollStrategyFromMemento(azureServiceClient, lroMemento); - return new HttpLongRunningOperationResponse(lroPollStrategy, lroMemento.initialResponse); +export function createLROPollerFromPollState(azureServiceClient: AzureServiceClient, lroMemento: LROPollState): LROPoller { + const lroPollStrategy: LROPollStrategy | undefined = createLROPollStrategyFromPollState(azureServiceClient, lroMemento); + return new LROPoller(lroPollStrategy, lroMemento.initialResponse); } \ No newline at end of file diff --git a/lib/msRestAzure.ts b/lib/msRestAzure.ts index 5317da2c2731..2cfff9cf8fdd 100644 --- a/lib/msRestAzure.ts +++ b/lib/msRestAzure.ts @@ -5,5 +5,5 @@ export { AzureServiceClient, AzureServiceClientOptions } from "./azureServiceCli export { BaseResource, BaseResourceMapper } from "./baseResource"; export { CloudError, CloudErrorMapper } from "./cloudError"; export { CognitiveServicesCredentials } from "./credentials/cognitiveServicesCredentials"; -export { HttpLongRunningOperationResponse } from "./httpLongRunningOperationResponse"; +export { LROPoller } from "./lroPoller"; export { DEFAULT_LANGUAGE, LongRunningOperationStates, msRestAzureVersion } from "./util/constants"; diff --git a/package-lock.json b/package-lock.json index d5f1b2b35546..38b161c9fa82 100644 --- a/package-lock.json +++ b/package-lock.json @@ -175,9 +175,9 @@ "dev": true }, "@types/node": { - "version": "9.6.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.27.tgz", - "integrity": "sha512-fGWGG9Wypv6JZLIrnq9jXFX/FhQzgNccTlojez9hBbQ9UiBdxtc0ONMMe4/vnB2nDgOMDpPR/7HhenUB+Bw5yQ==" + "version": "9.6.28", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.28.tgz", + "integrity": "sha512-LMSOxMKNJ8tGqUVs8lSIT8RGo1XGWYada/ZU2QZcbcD6AW9futXDE99tfQA0K6DK60GXcwplsGGK5KABRmI5GA==" }, "@types/range-parser": { "version": "1.2.2", diff --git a/package.json b/package.json index e8d800bad992..b443497e5d5e 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.18.377", + "ms-rest-js": "~0.18.378", "tslib": "^1.9.2" }, "devDependencies": { From ce4a269d4b845a5c328540943aae6cc92a68edc5 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 16 Aug 2018 14:24:14 -0700 Subject: [PATCH 086/289] Rename some of the LROPollStrategy methods, add LROPoller.getOperationResponse() --- lib/lroPollStrategy.ts | 10 +++++----- lib/lroPoller.ts | 22 +++++++++++++++++----- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts index c7850f1fd7c2..c37283ea547b 100644 --- a/lib/lroPollStrategy.ts +++ b/lib/lroPollStrategy.ts @@ -49,7 +49,7 @@ export abstract class LROPollStrategy { await this.sendPollRequest(); } - return this.finalStatusIsAcceptable(); + return this.isFinalStatusAcceptable(); } /** @@ -58,7 +58,7 @@ export abstract class LROPollStrategy { */ public abstract sendPollRequest(): Promise; - public abstract finalStatusIsAcceptable(): boolean; + public abstract isFinalStatusAcceptable(): boolean; protected shouldDoFinalGetResourceRequest(): boolean { const initialRequestMethod: HttpMethods = this._pollState.initialResponse.request.method; @@ -351,7 +351,7 @@ class LocationLROPollStrategy extends LROPollStrategy { }); } - public finalStatusIsAcceptable(): boolean { + public isFinalStatusAcceptable(): boolean { const lroPollState: LROPollState = this._pollState; const initialResponse: HttpOperationResponse = lroPollState.initialResponse; const initialResponseStatusCode: number = initialResponse.status; @@ -481,7 +481,7 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { return this.updateState(getResourceRequestUrl); } - public finalStatusIsAcceptable(): boolean { + public isFinalStatusAcceptable(): boolean { const lroPollState: LROPollState = this._pollState; const initialResponse: HttpOperationResponse = lroPollState.initialResponse; const initialResponseStatusCode: number = initialResponse.status; @@ -519,7 +519,7 @@ class GetResourceLROPollStrategy extends LROPollStrategy { }); } - public finalStatusIsAcceptable(): boolean { + public isFinalStatusAcceptable(): boolean { return this._pollState.state === "Succeeded"; } diff --git a/lib/lroPoller.ts b/lib/lroPoller.ts index 45b1bdaa76ed..130ed669d95d 100644 --- a/lib/lroPoller.ts +++ b/lib/lroPoller.ts @@ -21,16 +21,30 @@ export class LROPoller { /** * Get whether or not the LRO is finished. - * @returns Whether or not the LRO is finished. */ public isFinished(): boolean { const lroPollStrategy: LROPollStrategy | undefined = this._lroPollStrategy; return !lroPollStrategy ? true : lroPollStrategy.isFinished(); } + /** + * Get whether or not the LRO is finished and its final state is acceptable. If the LRO has not + * finished yet, then undefined will be returned. An "acceptable" final state is determined by the + * LRO strategy that the Azure service uses to perform long running operations. + */ + public isFinalStatusAcceptable(): boolean | undefined { + let result: boolean | undefined; + const lroPollStrategy: LROPollStrategy | undefined = this._lroPollStrategy; + if (!lroPollStrategy) { + result = true; + } else if (lroPollStrategy.isFinished()) { + result = lroPollStrategy.isFinalStatusAcceptable(); + } + return result; + } + /** * Get the current status of the LRO. - * @returns The current status of the LRO. */ public getOperationStatus(): LongRunningOperationStates { const lroPollStrategy: LROPollStrategy | undefined = this._lroPollStrategy; @@ -49,7 +63,7 @@ export class LROPoller { result = Promise.resolve(this._initialResponse); } else if (!lroPollStrategy.isFinished()) { result = Promise.resolve(undefined); - } else if (lroPollStrategy.finalStatusIsAcceptable()) { + } else if (lroPollStrategy.isFinalStatusAcceptable()) { result = lroPollStrategy.getOperationResponse(); } else { throw lroPollStrategy.getRestError(); @@ -59,7 +73,6 @@ export class LROPoller { /** * Send a single poll request and return the LRO's state. - * @returns The LRO's state. */ public poll(): Promise { let result: Promise; @@ -76,7 +89,6 @@ export class LROPoller { /** * Send poll requests that check the LRO's status until it is determined that the LRO is finished. - * @returns Whether or not the LRO succeeded. */ public async pollUntilFinished(): Promise { let result: Promise; From 3bf89687e9dc6130991ce27d9ab08955e0ba6269 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Mon, 20 Aug 2018 13:32:04 -0700 Subject: [PATCH 087/289] Update local script --- .scripts/dependencies.js | 52 +++++++++++++++++++++++++++++++++------- .scripts/local.js | 3 ++- package-lock.json | 38 ++++++++++++++--------------- package.json | 5 ++-- 4 files changed, 67 insertions(+), 31 deletions(-) diff --git a/.scripts/dependencies.js b/.scripts/dependencies.js index 204295b19deb..1db8370be8b2 100644 --- a/.scripts/dependencies.js +++ b/.scripts/dependencies.js @@ -2,6 +2,27 @@ const fs = require("fs"); const path = require("path"); const { execSync } = require("child_process"); +/** + * Get whether or not the node_modules folder should be refreshed based on the command line + * arguments. + * @param {string} argv The command line arguments that were provided. + * @returns {boolean} Whether or not the node_modules folder should be refreshed. + */ +function shouldForceRefresh(argv) { + let result = false; + if (argv) { + for (const arg of argv) { + const argLower = arg && arg.toLocaleLowerCase(); + if (argLower === "-f" || argLower === "-force" || argLower === "--force") { + result = true; + break; + } + } + } + return result; +} +exports.shouldForceRefresh = shouldForceRefresh; + /** * Replace all of the instances of searchValue in text with replaceValue. * @param {string} text The text to search and replace in. @@ -57,6 +78,15 @@ function deleteFolder(folderPath) { } } +/** + * Read the contents of text file at the provided filePath. + * @param {string} filePath The path to the text file to read. + * @returns {string} The text contents of the text file at the provided filePath. + */ +function readTextFileContents(filePath) { + return fs.readFileSync(filePath, { encoding: "utf8" }); +} + /** * Execute the provided command on the shell synchronously. * @param {string} command The command to execute. @@ -65,7 +95,7 @@ function deleteFolder(folderPath) { */ function execute(command, workingDirectory) { console.log(`Running "${command}" in "${workingDirectory}"...`); - execSync(command, {cwd: workingDirectory, stdio:[0,1,2]}); + execSync(command, { cwd: workingDirectory, stdio: [0, 1, 2] }); } /** @@ -92,6 +122,7 @@ function getPackageJsonFilePath() { function getLocalRepositoryPath(repoName) { return normalizePath(path.resolve(__dirname, "..", "..", repoName)); } +exports.getLocalRepositoryPath = getLocalRepositoryPath; /** * Get the package.json file contents parsed as a JSON object. @@ -103,7 +134,7 @@ function getPackageJson(packageJsonFilePath) { if (!packageJsonFilePath) { packageJsonFilePath = getPackageJsonFilePath(); } - return JSON.parse(fs.readFileSync(packageJsonFilePath)); + return JSON.parse(readTextFileContents(packageJsonFilePath)); } /** @@ -151,7 +182,7 @@ exports.getDependenciesWithClonedRepositories = getDependenciesWithClonedReposit */ function runLocalRepositoryNPMScript(repoName, scriptName) { const repoFolderPath = getLocalRepositoryPath(repoName); - const packageJsonFilePath = normalizePath(path.join(repoFolderPath, "package.json")); + const packageJsonFilePath = path.join(repoFolderPath, "package.json"); const packageJson = getPackageJson(packageJsonFilePath); const repoScripts = packageJson.scripts; if (repoScripts && repoScripts[scriptName]) { @@ -168,7 +199,7 @@ exports.runLocalRepositoryNPMScript = runLocalRepositoryNPMScript; * will be run for the changed dependency. * @param {string} dependencyName The name of the dependency to update. * @param {string} dependencyVersion The version to update the dependency to. - * @returns {boolean} Whether or not the dependency needs to be installed. + * @returns {boolean} Whether or not the dependency changed. */ function updatePackageJsonDependency(dependencyName, dependencyVersion) { let dependencyChanged = false; @@ -183,19 +214,21 @@ function updatePackageJsonDependency(dependencyName, dependencyVersion) { packageJson.dependencies[dependencyName] = dependencyVersion; writePackageJson(packageJson, packageJsonFilePath); - + dependencyChanged = true; } - + return dependencyChanged; } exports.updatePackageJsonDependency = updatePackageJsonDependency; /** * Run NPM install in this repository + * @param {object} options + * @param {boolean} options.ignoreScripts whether to ignore scripts in npm install (skips dotnet build) * @returns {void} */ -function refreshNodeModules() { +function refreshNodeModules(options) { const thisRepositoryFolderPath = getThisRepositoryFolderPath(); const nodeModulesFolderPath = normalizePath(path.resolve(thisRepositoryFolderPath, "node_modules")); if (fs.existsSync(nodeModulesFolderPath)) { @@ -209,7 +242,8 @@ function refreshNodeModules() { console.log(`Deleting "${nodeModulesFolderPath}"...`); deleteFolder(nodeModulesFolderPath); } - execute(`npm install`, getThisRepositoryFolderPath()); + const ignoreScripts = options && options.ignoreScripts; + execute("npm install" + (ignoreScripts ? " --ignore-scripts" : ""), getThisRepositoryFolderPath()); } exports.refreshNodeModules = refreshNodeModules; @@ -240,7 +274,7 @@ function updatePackageJsonMain(mainValue) { } else { console.log(`Changing "main" to "${mainValue}" in "${packageJsonFilePath}"`) packageJson.main = mainValue; - + writePackageJson(packageJson, packageJsonFilePath); } } diff --git a/.scripts/local.js b/.scripts/local.js index 6b4971506152..ee2d1a0d81e9 100644 --- a/.scripts/local.js +++ b/.scripts/local.js @@ -6,7 +6,8 @@ for (const localDependency of localDependencies) { } let refreshNodeModules = false; for (const localDependency of localDependencies) { - if (dependencies.updatePackageJsonDependency(localDependency, `file:../${localDependency}`)) { + const localRepositoryPath = dependencies.getLocalRepositoryPath(localDependency); + if (dependencies.updatePackageJsonDependency(localDependency, `file:${localRepositoryPath}`)) { refreshNodeModules = true; } } diff --git a/package-lock.json b/package-lock.json index 879bf5162427..3ff4fbf231f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -240,15 +240,15 @@ } }, "ajv": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.2.tgz", - "integrity": "sha512-hOs7GfvI6tUI1LfZddH82ky6mOMyTuY0mk7kE2pWpmhhUSkumzaTO5vbVwij39MdwPQWCV4Zv57Eo06NtL/GVA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.1" + "uri-js": "^4.2.2" } }, "ajv-keywords": { @@ -414,9 +414,9 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "atob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, "axios": { @@ -2917,9 +2917,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.19.379", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.19.379.tgz", - "integrity": "sha512-/bPhVON6gbEuoQwLA8v0GC5cC6fztYHDv3KsEyCr32p26ORaqKJUwro1DjhdI/rhaab3U09R7IbUskt3oI7s7Q==", + "version": "0.19.380", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.19.380.tgz", + "integrity": "sha512-ZIfAor6B7rD7XV1cqy1e/CTEIyQYXuCoUJ54YulPReoUWYMDdfuUqoBSZL5vjx2AYbO7Al1l1NDvZUWidlpQ+A==", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", @@ -5554,9 +5554,9 @@ "dev": true }, "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", "dev": true }, "repeat-string": { @@ -5638,9 +5638,9 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", "dev": true }, "set-blocking": { @@ -5929,9 +5929,9 @@ } }, "source-map-support": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.8.tgz", - "integrity": "sha512-WqAEWPdb78u25RfKzOF0swBpY0dKrNdjc4GvLwm7ScX/o9bj8Eh/YL8mcMhBHYDGl87UkkSXDOFnW4G7GhWhGg==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", + "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", "dev": true, "requires": { "buffer-from": "^1.0.0", diff --git a/package.json b/package.json index 0631602627b8..591b208138bd 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.19.379", + "ms-rest-js": "~0.19.380", "tslib": "^1.9.2" }, "devDependencies": { @@ -47,7 +47,8 @@ "typescript": "^2.5.2", "uglify-es": "^3.1.0", "webpack": "^3.6.0", - "yarn": "^1.6.0" + "yarn": "^1.6.0", + "ms-rest-js": "~0.19.380" }, "homepage": "https://github.com/Azure/ms-rest-azure-js", "repository": { From 784ed48023d6b7e87b0617b28ac9b9ba979ad36a Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Tue, 21 Aug 2018 13:23:16 -0700 Subject: [PATCH 088/289] Various improvements to our script infrastructure --- .scripts/dependencies.js | 257 ---------------------------- .scripts/dependencies.ts | 361 +++++++++++++++++++++++++++++++++++++++ .scripts/latest.js | 17 -- .scripts/latest.ts | 5 + .scripts/local.js | 16 -- .scripts/local.ts | 5 + .scripts/preview.js | 20 --- .scripts/preview.ts | 5 + .scripts/repository.ts | 7 + package-lock.json | 44 ++--- package.json | 8 +- 11 files changed, 409 insertions(+), 336 deletions(-) delete mode 100644 .scripts/dependencies.js create mode 100644 .scripts/dependencies.ts delete mode 100644 .scripts/latest.js create mode 100644 .scripts/latest.ts delete mode 100644 .scripts/local.js create mode 100644 .scripts/local.ts delete mode 100644 .scripts/preview.js create mode 100644 .scripts/preview.ts create mode 100644 .scripts/repository.ts diff --git a/.scripts/dependencies.js b/.scripts/dependencies.js deleted file mode 100644 index 204295b19deb..000000000000 --- a/.scripts/dependencies.js +++ /dev/null @@ -1,257 +0,0 @@ -const fs = require("fs"); -const path = require("path"); -const { execSync } = require("child_process"); - -/** - * Replace all of the instances of searchValue in text with replaceValue. - * @param {string} text The text to search and replace in. - * @param {string} searchValue The value to search for in text. - * @param {string} replaceValue The value to replace searchValue with in text. - * @returns {string} The value of text after all of the instances of searchValue have been replaced - * by replaceValue. - */ -function replaceAll(text, searchValue, replaceValue) { - return text.split(searchValue).join(replaceValue); -} - -/** - * Normalize the provided path by ensuring that all path separators are forward slashes ('/'). - * @param {string} pathString The path to normalize. - * @returns {string} The normalized path. - */ -function normalizePath(pathString) { - return replaceAll(pathString, "\\", "/") -} - -/** - * Delete the file at the provided file path. - * @param {string} filePath The path to the file to delete. - */ -function deleteFile(filePath) { - fs.unlinkSync(filePath); -} - -/** - * Delete the folder at the provided folder path. - * @param {string} folderPath The path to the folder to delete. - */ -function deleteFolder(folderPath) { - try { - fs.rmdirSync(folderPath); - } catch (error) { - if (error.code === "ENOTEMPTY") { - const folderEntryPaths = fs.readdirSync(folderPath); - for (const entryName of folderEntryPaths) { - const entryPath = normalizePath(path.resolve(folderPath, entryName)); - const entryStats = fs.lstatSync(entryPath); - if (entryStats.isDirectory()) { - deleteFolder(entryPath); - } else { - deleteFile(entryPath); - } - } - fs.rmdirSync(folderPath); - } else { - throw error; - } - } -} - -/** - * Execute the provided command on the shell synchronously. - * @param {string} command The command to execute. - * @param {string} workingDirectory The working directory to execute the command in. - * @returns {void} - */ -function execute(command, workingDirectory) { - console.log(`Running "${command}" in "${workingDirectory}"...`); - execSync(command, {cwd: workingDirectory, stdio:[0,1,2]}); -} - -/** - * Get the absolute path to this repository's folder path. - * @returns {string} The absolute path to this repository's folder path. - */ -function getThisRepositoryFolderPath() { - return normalizePath(path.resolve(__dirname, "..")); -} - -/** - * Get the absolute path to the package.json in this repository. - * @returns {string} The absolute path to the package.json. - */ -function getPackageJsonFilePath() { - return normalizePath(path.resolve(__dirname, "../package.json")); -} - -/** - * Get the absolute path to the local clone of the repository with the provided name. - * @param {string} repoName The name of the repository. - * @returns {string} The absolute path to the local clone of the repository. - */ -function getLocalRepositoryPath(repoName) { - return normalizePath(path.resolve(__dirname, "..", "..", repoName)); -} - -/** - * Get the package.json file contents parsed as a JSON object. - * @param {string=} packageJsonFilePath The path to the package.json file to read. If this is not - * provided, then the package.json file at the root of this repository will be used. - * @returns {{}} The parsed package.json file contents. - */ -function getPackageJson(packageJsonFilePath) { - if (!packageJsonFilePath) { - packageJsonFilePath = getPackageJsonFilePath(); - } - return JSON.parse(fs.readFileSync(packageJsonFilePath)); -} - -/** - * Get the dependencies from the provided dependencies dictionary that have local clones. - * @param {{ [packageName: string]: string }} dependencies A dictionary of package names to package - * versions. - * @param {string[]} clonedRepositoryNames The array to put the names of the local cloned - * repositories into. - * @returns {void} - */ -function getClonedRepositories(dependencies, clonedRepositoryNames) { - if (clonedRepositoryNames && dependencies) { - for (const dependencyName in dependencies) { - if (clonedRepositoryNames.indexOf(dependencyName) === -1) { - const repoFolderPath = getLocalRepositoryPath(dependencyName); - if (fs.existsSync(repoFolderPath)) { - clonedRepositoryNames.push(dependencyName); - } - } - } - } -} - -/** - * Get the names of the dependencies of this repository that have local clones. - * @returns {string[]} The names of the dependencies of this repository that have local clones. - */ -function getDependenciesWithClonedRepositories() { - const clonedRepositoryNames = []; - - const packageJson = getPackageJson(); - - getClonedRepositories(packageJson.dependencies, clonedRepositoryNames); - getClonedRepositories(packageJson.devDependencies, clonedRepositoryNames); - - return clonedRepositoryNames; -} -exports.getDependenciesWithClonedRepositories = getDependenciesWithClonedRepositories; - -/** - * Run a script with the provided name in the local clone of the repository with the provided name. - * @param {string} repoName The name of the repository to run the script in. - * @param {string} scriptName The name of the script to run in the local repository. - * @returns {void} - */ -function runLocalRepositoryNPMScript(repoName, scriptName) { - const repoFolderPath = getLocalRepositoryPath(repoName); - const packageJsonFilePath = normalizePath(path.join(repoFolderPath, "package.json")); - const packageJson = getPackageJson(packageJsonFilePath); - const repoScripts = packageJson.scripts; - if (repoScripts && repoScripts[scriptName]) { - execute(`npm run ${scriptName}`, repoFolderPath); - } else { - console.log(`No script named "${scriptName}" is specified in "${packageJsonFilePath}".`); - } -} -exports.runLocalRepositoryNPMScript = runLocalRepositoryNPMScript; - -/** - * Update this repository's package.json file's dependency version with the provided name to the - * provided version. If the dependency version in the package.json file changes, then "npm install" - * will be run for the changed dependency. - * @param {string} dependencyName The name of the dependency to update. - * @param {string} dependencyVersion The version to update the dependency to. - * @returns {boolean} Whether or not the dependency needs to be installed. - */ -function updatePackageJsonDependency(dependencyName, dependencyVersion) { - let dependencyChanged = false; - - const packageJsonFilePath = getPackageJsonFilePath(); - - const packageJson = getPackageJson(packageJsonFilePath); - if (packageJson.dependencies[dependencyName] == dependencyVersion) { - console.log(`"${dependencyName}" is already set to "${dependencyVersion}" in "${packageJsonFilePath}".`); - } else { - console.log(`Changing "${dependencyName}" to "${dependencyVersion}" in "${packageJsonFilePath}"`) - packageJson.dependencies[dependencyName] = dependencyVersion; - - writePackageJson(packageJson, packageJsonFilePath); - - dependencyChanged = true; - } - - return dependencyChanged; -} -exports.updatePackageJsonDependency = updatePackageJsonDependency; - -/** - * Run NPM install in this repository - * @returns {void} - */ -function refreshNodeModules() { - const thisRepositoryFolderPath = getThisRepositoryFolderPath(); - const nodeModulesFolderPath = normalizePath(path.resolve(thisRepositoryFolderPath, "node_modules")); - if (fs.existsSync(nodeModulesFolderPath)) { - - const packageLockFilePath = normalizePath(path.resolve(thisRepositoryFolderPath, "package-lock.json")); - if (fs.existsSync(packageLockFilePath)) { - console.log(`Deleting "${packageLockFilePath}"...`); - deleteFile(packageLockFilePath); - } - - console.log(`Deleting "${nodeModulesFolderPath}"...`); - deleteFolder(nodeModulesFolderPath); - } - execute(`npm install`, getThisRepositoryFolderPath()); -} -exports.refreshNodeModules = refreshNodeModules; - -/** - * Get the npm package version of the package with the provided name at the provided tag. - * @param {string} packageName The name of the package. - * @param {string} tag The tag of the version to retrieve. - * @returns {string?} The version of the provided package at the provided tag. - */ -function getNpmPackageVersion(packageName, tag) { - const npmViewResult = JSON.parse(execSync(`npm view ${packageName} --json`, { stdio: ['pipe', 'pipe', 'ignore'] })); - return npmViewResult['dist-tags'][tag]; -} -exports.getNpmPackageVersion = getNpmPackageVersion; - -/** - * Update the package.json property values for "main". - * @param {string} mainValue The value that will be used for "main". - * @returns {void} - */ -function updatePackageJsonMain(mainValue) { - const packageJsonFilePath = getPackageJsonFilePath(); - - const packageJson = getPackageJson(packageJsonFilePath); - - if (packageJson.main == mainValue) { - console.log(`"main" is already set to "${mainValue}" in "${packageJsonFilePath}".`); - } else { - console.log(`Changing "main" to "${mainValue}" in "${packageJsonFilePath}"`) - packageJson.main = mainValue; - - writePackageJson(packageJson, packageJsonFilePath); - } -} -exports.updatePackageJsonMain = updatePackageJsonMain; - -/** - * Write the provided packageJSON object to the file at the provided packageJsonFilePath. - * @param {any} packageJson The package json object to write. - * @param {string} packageJsonFilePath The path to the package.json file. - * @returns {void} - */ -function writePackageJson(packageJson, packageJsonFilePath) { - fs.writeFileSync(packageJsonFilePath, JSON.stringify(packageJson, undefined, " ") + "\n"); -} \ No newline at end of file diff --git a/.scripts/dependencies.ts b/.scripts/dependencies.ts new file mode 100644 index 000000000000..d4217f64383a --- /dev/null +++ b/.scripts/dependencies.ts @@ -0,0 +1,361 @@ +import * as fs from "fs"; +import * as path from "path"; +import { execSync } from "child_process"; + +export interface PackageFolder { + folderPath: string; + extraFilePaths?: string[]; +} + +export interface RefreshNodeModulesOptions { + ignoreScripts?: boolean; +} + +function log(filePath: string, message: string): void { + console.log(`[${filePath}] - ${message}`); +} + +/** + * Get whether or not the node_modules folder should be refreshed based on the command line + * arguments. + * @param argv The command line arguments that were provided. + * @returns Whether or not the node_modules folder should be refreshed. + */ +export function shouldForceRefresh(argv: string[]): boolean { + let result = false; + if (argv) { + for (const arg of argv) { + const argLower: string = arg && arg.toLocaleLowerCase(); + if (argLower === "-f" || argLower === "-force" || argLower === "--force") { + result = true; + break; + } + } + } + return result; +} + +export function resolvePath(...paths: string[]): string { + return path.resolve(...paths).split("\\").join("/"); +} + +function exists(path: string): boolean { + return fs.existsSync(path); +} + +/** + * Delete the file at the provided file path. + * @param {string} filePath The path to the file to delete. + */ +function deleteFile(filePath: string): void { + fs.unlinkSync(filePath); +} + +/** + * Delete the folder at the provided folder path. + * @param {string} folderPath The path to the folder to delete. + */ +function deleteFolder(folderPath: string): void { + try { + fs.rmdirSync(folderPath); + } catch (error) { + if (error.code === "ENOTEMPTY") { + const folderEntryPaths: string[] = fs.readdirSync(folderPath); + for (const entryName of folderEntryPaths) { + const entryPath: string = resolvePath(folderPath, entryName); + const entryStats: fs.Stats = fs.lstatSync(entryPath); + if (entryStats.isDirectory()) { + deleteFolder(entryPath); + } else { + deleteFile(entryPath); + } + } + fs.rmdirSync(folderPath); + } else { + throw error; + } + } +} + +/** + * Read the contents of text file at the provided filePath. + * @param {string} filePath The path to the text file to read. + * @returns {string} The text contents of the text file at the provided filePath. + */ +function readTextFileContents(filePath: string): string { + return fs.readFileSync(filePath, { encoding: "utf8" }); +} + +/** + * Execute the provided command on the shell synchronously. + * @param {string} command The command to execute. + * @param {string} workingDirectory The working directory to execute the command in. + * @returns {void} + */ +function execute(command: string, workingDirectory: string): void { + log(workingDirectory, `Running "${command}"...`); + execSync(command, { cwd: workingDirectory, stdio: [0, 1, 2] }); +} + +/** + * Get the absolute path to this repository's folder path. + * @returns {string} The absolute path to this repository's folder path. + */ +export function getThisRepositoryFolderPath(): string { + return resolvePath(__dirname, ".."); +} + +/** + * Get the absolute path to the package.json in this repository. + * @returns {string} The absolute path to the package.json. + */ +function getPackageJsonFilePath(packageFolder?: string): string { + return resolvePath(packageFolder, "package.json"); +} + +/** + * Get the absolute path to the local clone of the repository with the provided name. + * @param {string} repoName The name of the repository. + * @returns {string} The absolute path to the local clone of the repository. + */ +export function getLocalRepositoryPath(repoName: string): string { + return resolvePath(getThisRepositoryFolderPath(), "..", repoName); +} + +/** + * Get the package.json file contents parsed as a JSON object. + * @param {string=} packageJsonFilePath The path to the package.json file to read. If this is not + * provided, then the package.json file at the root of this repository will be used. + * @returns {{}} The parsed package.json file contents. + */ +function getPackageJson(packageJsonFilePath: string): any { + return JSON.parse(readTextFileContents(packageJsonFilePath)); +} + +/** + * Get the dependencies from the provided dependencies dictionary that have local clones. + * @param {{ [packageName: string]: string }} dependencies A dictionary of package names to package + * versions. + * @param {string[]} clonedRepositoryNames The array to put the names of the local cloned + * repositories into. + * @returns {void} + */ +function getClonedRepositories(dependencies: { [packageName: string]: string }): string[] { + const clonedRepositoryNames: string[] = []; + if (clonedRepositoryNames && dependencies) { + for (const dependencyName in dependencies) { + if (clonedRepositoryNames.indexOf(dependencyName) === -1) { + const repoFolderPath = getLocalRepositoryPath(dependencyName); + if (exists(repoFolderPath)) { + clonedRepositoryNames.push(dependencyName); + } + } + } + } + return clonedRepositoryNames; +} + +/** + * Run a script with the provided name in the local clone of the repository with the provided name. + * @param {string} repoName The name of the repository to run the script in. + * @param {string} scriptName The name of the script to run in the local repository. + * @returns {void} + */ +export function runLocalRepositoryNPMScript(repoName: string, scriptName: string): void { + const repoFolderPath: string = getLocalRepositoryPath(repoName); + const packageJsonFilePath: string = getPackageJsonFilePath(repoFolderPath); + const packageJson: any = getPackageJson(packageJsonFilePath); + const repoScripts: any = packageJson.scripts; + if (repoScripts && repoScripts[scriptName]) { + execute(`npm run ${scriptName}`, repoFolderPath); + } else { + log(packageJsonFilePath, `No script named "${scriptName}" is defined.`); + } +} + +/** + * Get the npm package version of the package with the provided name at the provided tag. + * @param {string} packageName The name of the package. + * @param {string} tag The tag of the version to retrieve. + * @returns {string?} The version of the provided package at the provided tag. + */ +export function getNpmPackageVersion(packageName: string, tag: string): string | undefined { + const npmViewResult: any = JSON.parse(execSync(`npm view ${packageName} --json`, { stdio: ["pipe", "pipe", "ignore"] }).toString()); + return npmViewResult["dist-tags"][tag]; +} + +/** + * Update the package.json property values for "main". + * @param {string} mainValue The value that will be used for "main". + * @returns {void} + */ +export function updatePackageJsonMain(packageFolderPath: string, mainValue: string): void { + const packageJsonFilePath: string = getPackageJsonFilePath(packageFolderPath); + + const packageJson: any = getPackageJson(packageJsonFilePath); + + if (packageJson.main === mainValue) { + log(packageJsonFilePath, `"main" is already set to "${mainValue}".`); + } else { + log(packageJsonFilePath, `Changing "main" to "${mainValue}".`); + packageJson.main = mainValue; + + writePackageJson(packageJson, packageJsonFilePath); + } +} + +/** + * Update the dependency versions in the files at the provided codeFilePaths. + * @param {string[]} codeFilePath The paths to the code files that should be updated. + * @param {string} dependencyName The name of the dependency to update. + * @param {RegExp} regularExpression The regular expression to use to find the dependency name and + * version in the code file's contents. + * @param {string} newValue The replacement string that will replace the text that matches the + * provided regularExpression. + * @param {string} newDependencyVersion The version of the dependency to set in the provided code + * files. + */ +function updateGeneratedPackageDependencyVersion(codeFilePath: string, dependencyName: string, newDependencyVersion: string): boolean { + let fileChanged = false; + codeFilePath = resolvePath(codeFilePath); + if (exists(codeFilePath)) { + const originalCodeFileContents: string = readTextFileContents(codeFilePath); + let codeFileContents: string = originalCodeFileContents; + + codeFileContents = regularExpressionReplace( + codeFilePath, + codeFileContents, + dependencyName, + new RegExp(`\\\\"${dependencyName}\\\\": \\\\"(.*)\\\\"`), + `\\"${dependencyName}\\": \\"${newDependencyVersion}\\"`, + newDependencyVersion); + + codeFileContents = regularExpressionReplace( + codeFilePath, + codeFileContents, + dependencyName, + new RegExp(`"${dependencyName}": "(.*)"`), + `"${dependencyName}": "${newDependencyVersion}"`, + newDependencyVersion); + + if (codeFileContents !== originalCodeFileContents) { + fileChanged = true; + fs.writeFileSync(codeFilePath, codeFileContents); + } + } + return fileChanged; +} + +function regularExpressionReplace(filePath: string, fileContents: string, dependencyName: string, regularExpression: RegExp, newValue: string, newDependencyVersion: string): string { + let newFileContents: string = fileContents; + const match: RegExpMatchArray = fileContents.match(regularExpression); + if (match) { + if (match[1] === newDependencyVersion) { + log(filePath, `"${dependencyName}" is already set to "${newDependencyVersion}".`); + } else { + log(filePath, `Changing "${dependencyName}" version from "${match[1]}" to "${newDependencyVersion}".`); + newFileContents = fileContents.replace(regularExpression, newValue); + } + } + return newFileContents; +} + +/** + * Write the provided packageJSON object to the file at the provided packageJsonFilePath. + * @param {any} packageJson The package json object to write. + * @param {string} packageJsonFilePath The path to the package.json file. + * @returns {void} + */ +function writePackageJson(packageJson: any, packageJsonFilePath: string): void { + fs.writeFileSync(packageJsonFilePath, JSON.stringify(packageJson, undefined, " ") + "\n"); +} + +export function updateLocalDependencies(packageFolders: PackageFolder[], localDependencyNPMScript: string, getNewDependencyVersion: (dependencyName: string) => string): void { + const forceRefresh: boolean = shouldForceRefresh(process.argv); + + for (const packageFolder of packageFolders) { + const packageFolderPath: string = packageFolder.folderPath; + + let refreshPackageFolder: boolean = forceRefresh; + + const packageJson: any = getPackageJson(resolvePath(packageFolderPath, "package.json")); + + const localDependencies: string[] = getClonedRepositories(packageJson.dependencies); + const localDevDependencies: string[] = getClonedRepositories(packageJson.devDependencies); + + const allLocalDependencies: string[] = localDependencies.concat(localDevDependencies); + + for (const localDependency of allLocalDependencies) { + runLocalRepositoryNPMScript(localDependency, localDependencyNPMScript); + } + + for (const localDependency of allLocalDependencies) { + if (updateLocalDependency(packageFolder, localDependency, getNewDependencyVersion)) { + refreshPackageFolder = true; + } + } + + if (refreshPackageFolder) { + const packageLockFilePath = resolvePath(packageFolderPath, "package-lock.json"); + if (exists(packageLockFilePath)) { + log(packageLockFilePath, `Deleting...`); + deleteFile(packageLockFilePath); + } + + const nodeModulesFolderPath = resolvePath(packageFolderPath, "node_modules"); + if (exists(nodeModulesFolderPath)) { + log(nodeModulesFolderPath, `Deleting...`); + deleteFolder(nodeModulesFolderPath); + } + + execute("npm install", packageFolderPath); + } + } +} + +function updateLocalDependency(packageFolder: PackageFolder, dependencyName: string, getNewDependencyVersion: (dependencyName: string) => string): boolean { + const newDependencyVersion: string = getNewDependencyVersion(dependencyName); + + const packageFolderPath: string = packageFolder.folderPath; + + const localDependencyUpdated = updateGeneratedPackageDependencyVersion( + resolvePath(packageFolderPath, "package.json"), + dependencyName, + newDependencyVersion); + + updateGeneratedPackageDependencyVersion( + resolvePath(packageFolderPath, "README.md"), + dependencyName, + newDependencyVersion); + + if (packageFolder.extraFilePaths) { + for (const extraFilePath of packageFolder.extraFilePaths) { + updateGeneratedPackageDependencyVersion( + resolvePath(packageFolderPath, extraFilePath), + dependencyName, + newDependencyVersion); + } + } + + return localDependencyUpdated; +} + +export function getLocalDependencyVersion(dependencyName: string): string { + return `file:${getLocalRepositoryPath(dependencyName)}`; +} + +export function getPreviewDependencyVersion(dependencyName: string): string { + let version: string = addTildePrefix(getNpmPackageVersion(dependencyName, "preview")); + if (!version) { + version = getLatestDependencyVersion(dependencyName); + } + return version; +} + +export function getLatestDependencyVersion(dependencyName: string): string { + return addTildePrefix(getNpmPackageVersion(dependencyName, "latest")); +} + +function addTildePrefix(version: string): string { + return version ? `~${version}` : version; +} \ No newline at end of file diff --git a/.scripts/latest.js b/.scripts/latest.js deleted file mode 100644 index d0d971e4cdc0..000000000000 --- a/.scripts/latest.js +++ /dev/null @@ -1,17 +0,0 @@ -const dependencies = require("./dependencies"); - -const localDependencies = dependencies.getDependenciesWithClonedRepositories(); -for (const localDependency of localDependencies) { - dependencies.runLocalRepositoryNPMScript(localDependency, "latest"); -} -let refreshNodeModules = false; -for (const localDependency of localDependencies) { - const version = dependencies.getNpmPackageVersion(localDependency, "latest"); - if (dependencies.updatePackageJsonDependency(localDependency, `~${version}`)) { - refreshNodeModules = true; - } -} -if (refreshNodeModules) { - dependencies.refreshNodeModules(); -} -dependencies.updatePackageJsonMain("./dist/lib/msRestAzure.js"); \ No newline at end of file diff --git a/.scripts/latest.ts b/.scripts/latest.ts new file mode 100644 index 000000000000..c4a078fddc60 --- /dev/null +++ b/.scripts/latest.ts @@ -0,0 +1,5 @@ +import * as dependencies from "./dependencies"; +import * as repository from "./repository"; + +dependencies.updatePackageJsonMain(dependencies.getThisRepositoryFolderPath(), "./dist/lib/msRestAzure.js"); +dependencies.updateLocalDependencies(repository.packageFolders, "latest", dependencies.getLatestDependencyVersion); \ No newline at end of file diff --git a/.scripts/local.js b/.scripts/local.js deleted file mode 100644 index 6b4971506152..000000000000 --- a/.scripts/local.js +++ /dev/null @@ -1,16 +0,0 @@ -const dependencies = require("./dependencies"); - -const localDependencies = dependencies.getDependenciesWithClonedRepositories(); -for (const localDependency of localDependencies) { - dependencies.runLocalRepositoryNPMScript(localDependency, "local"); -} -let refreshNodeModules = false; -for (const localDependency of localDependencies) { - if (dependencies.updatePackageJsonDependency(localDependency, `file:../${localDependency}`)) { - refreshNodeModules = true; - } -} -if (refreshNodeModules) { - dependencies.refreshNodeModules(); -} -dependencies.updatePackageJsonMain("./lib/msRestAzure.ts"); \ No newline at end of file diff --git a/.scripts/local.ts b/.scripts/local.ts new file mode 100644 index 000000000000..89920adf88fe --- /dev/null +++ b/.scripts/local.ts @@ -0,0 +1,5 @@ +import * as dependencies from "./dependencies"; +import * as repository from "./repository"; + +dependencies.updatePackageJsonMain(dependencies.getThisRepositoryFolderPath(), "./lib/msRestAzure.ts"); +dependencies.updateLocalDependencies(repository.packageFolders, "local", dependencies.getLocalDependencyVersion); \ No newline at end of file diff --git a/.scripts/preview.js b/.scripts/preview.js deleted file mode 100644 index 8d44176de7b8..000000000000 --- a/.scripts/preview.js +++ /dev/null @@ -1,20 +0,0 @@ -const dependencies = require("./dependencies"); - -const localDependencies = dependencies.getDependenciesWithClonedRepositories(); -for (const localDependency of localDependencies) { - dependencies.runLocalRepositoryNPMScript(localDependency, "preview"); -} -let refreshNodeModules = false; -for (const localDependency of localDependencies) { - let version = dependencies.getNpmPackageVersion(localDependency, "preview"); - if (!version) { - version = dependencies.getNpmPackageVersion(localDependency, "latest"); - } - if (dependencies.updatePackageJsonDependency(localDependency, `~${version}`)) { - refreshNodeModules = true; - } -} -if (refreshNodeModules) { - dependencies.refreshNodeModules(); -} -dependencies.updatePackageJsonMain("./dist/lib/msRestAzure.js"); \ No newline at end of file diff --git a/.scripts/preview.ts b/.scripts/preview.ts new file mode 100644 index 000000000000..5cf4bfe8cd89 --- /dev/null +++ b/.scripts/preview.ts @@ -0,0 +1,5 @@ +import * as dependencies from "./dependencies"; +import * as repository from "./repository"; + +dependencies.updatePackageJsonMain(dependencies.getThisRepositoryFolderPath(), "./dist/lib/msRestAzure.js"); +dependencies.updateLocalDependencies(repository.packageFolders, "preview", dependencies.getPreviewDependencyVersion); \ No newline at end of file diff --git a/.scripts/repository.ts b/.scripts/repository.ts new file mode 100644 index 000000000000..efafd13eb767 --- /dev/null +++ b/.scripts/repository.ts @@ -0,0 +1,7 @@ +import * as dependencies from "./dependencies"; + +export const packageFolders: dependencies.PackageFolder[] = [ + { + folderPath: dependencies.getThisRepositoryFolderPath() + } +]; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 879bf5162427..9c26516bf434 100644 --- a/package-lock.json +++ b/package-lock.json @@ -240,15 +240,15 @@ } }, "ajv": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.2.tgz", - "integrity": "sha512-hOs7GfvI6tUI1LfZddH82ky6mOMyTuY0mk7kE2pWpmhhUSkumzaTO5vbVwij39MdwPQWCV4Zv57Eo06NtL/GVA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.1" + "uri-js": "^4.2.2" } }, "ajv-keywords": { @@ -414,9 +414,9 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "atob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, "axios": { @@ -1558,9 +1558,9 @@ } }, "follow-redirects": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.5.tgz", - "integrity": "sha512-GHjtHDlY/ehslqv0Gr5N0PUJppgg/q0rOBvX0na1s7y1A3LWxPqCYU76s3Z1bM4+UZB4QF0usaXLT5wFpof5PA==", + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.6.tgz", + "integrity": "sha512-xay/eYZGgdpb3rpugZj1HunNaPcqc6fud/RW7LNEQntvKzuRO4DDLL+MnJIbTHh6t3Kda3v2RvhY2doxUddnig==", "requires": { "debug": "^3.1.0" } @@ -2917,9 +2917,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.19.379", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.19.379.tgz", - "integrity": "sha512-/bPhVON6gbEuoQwLA8v0GC5cC6fztYHDv3KsEyCr32p26ORaqKJUwro1DjhdI/rhaab3U09R7IbUskt3oI7s7Q==", + "version": "0.19.380", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.19.380.tgz", + "integrity": "sha512-ZIfAor6B7rD7XV1cqy1e/CTEIyQYXuCoUJ54YulPReoUWYMDdfuUqoBSZL5vjx2AYbO7Al1l1NDvZUWidlpQ+A==", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", @@ -5554,9 +5554,9 @@ "dev": true }, "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", "dev": true }, "repeat-string": { @@ -5638,9 +5638,9 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", "dev": true }, "set-blocking": { @@ -5929,9 +5929,9 @@ } }, "source-map-support": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.8.tgz", - "integrity": "sha512-WqAEWPdb78u25RfKzOF0swBpY0dKrNdjc4GvLwm7ScX/o9bj8Eh/YL8mcMhBHYDGl87UkkSXDOFnW4G7GhWhGg==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", + "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", "dev": true, "requires": { "buffer-from": "^1.0.0", diff --git a/package.json b/package.json index 0631602627b8..30379c654568 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.19.379", + "ms-rest-js": "~0.19.380", "tslib": "^1.9.2" }, "devDependencies": { @@ -85,9 +85,9 @@ "test:tslint": "tslint -p . -c tslint.json --exclude test/**/*.ts", "prepare": "npm run build", "publish-preview": "npm test && shx rm -rf dist/test && node ./.scripts/publish", - "local": "node ./.scripts/local.js", - "preview": "node ./.scripts/preview.js", - "latest": "node ./.scripts/latest.js" + "local": "ts-node ./.scripts/local.ts", + "preview": "ts-node ./.scripts/preview.ts", + "latest": "ts-node ./.scripts/latest.ts" }, "sideEffects": false } From ca2f6d3e7e3b03280b39c1b17f1dfc782e3352b5 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Tue, 21 Aug 2018 13:39:03 -0700 Subject: [PATCH 089/289] Remove RefreshNodeModulesOptions and unnecessary checks --- .scripts/dependencies.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.scripts/dependencies.ts b/.scripts/dependencies.ts index d4217f64383a..6d5fafef1cfb 100644 --- a/.scripts/dependencies.ts +++ b/.scripts/dependencies.ts @@ -7,10 +7,6 @@ export interface PackageFolder { extraFilePaths?: string[]; } -export interface RefreshNodeModulesOptions { - ignoreScripts?: boolean; -} - function log(filePath: string, message: string): void { console.log(`[${filePath}] - ${message}`); } @@ -140,9 +136,9 @@ function getPackageJson(packageJsonFilePath: string): any { * repositories into. * @returns {void} */ -function getClonedRepositories(dependencies: { [packageName: string]: string }): string[] { +function getClonedRepositories(dependencies?: { [packageName: string]: string }): string[] { const clonedRepositoryNames: string[] = []; - if (clonedRepositoryNames && dependencies) { + if (dependencies) { for (const dependencyName in dependencies) { if (clonedRepositoryNames.indexOf(dependencyName) === -1) { const repoFolderPath = getLocalRepositoryPath(dependencyName); From 99fca762d146ccfbf91b8489bf14543d65cb3980 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Wed, 22 Aug 2018 15:00:23 -0700 Subject: [PATCH 090/289] Rename HttpLongRunningOperationResponse to LROPoller --- lib/azureServiceClient.ts | 27 ++++++++++--- lib/lroPollStrategy.ts | 6 ++- lib/lroPoller.ts | 15 +++++++ package-lock.json | 12 +++--- package.json | 2 +- test/azureServiceClientTests.ts | 69 ++++++++++++++++++++++++++++++++- 6 files changed, 116 insertions(+), 15 deletions(-) diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index 154307ea2527..6ccec2f652dc 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { HttpOperationResponse, RequestOptionsBase, RequestPrepareOptions, ServiceClient, ServiceClientCredentials, ServiceClientOptions, WebResource } from "ms-rest-js"; +import { HttpOperationResponse, OperationArguments, OperationSpec, RequestOptionsBase, RequestPrepareOptions, ServiceClient, ServiceClientCredentials, ServiceClientOptions, WebResource } from "ms-rest-js"; import { createLROPollerFromInitialResponse, createLROPollerFromPollState, LROPoller } from "./lroPoller"; import { LROPollState } from "./lroPollStrategy"; import * as Constants from "./util/constants"; @@ -52,14 +52,28 @@ export class AzureServiceClient extends ServiceClient { this.addUserAgentInfo(`ms-rest-azure/${Constants.msRestAzureVersion}`); } + /** + * Send the initial request of a LRO (long running operation) and get back an + * LROPoller that provides methods for polling the LRO and checking if the LRO is finished. + * @param operationArguments The arguments to the operation. + * @param operationSpec The specification for the operation. + * @param options Additional options to be sent while making the request. + * @returns The LROPoller object that provides methods for interacting with the LRO. + */ + sendLRORequest(operationArguments: OperationArguments, operationSpec: OperationSpec, options?: RequestOptionsBase): Promise { + return this.sendOperationRequest(operationArguments, operationSpec) + .then((initialResponse: HttpOperationResponse) => createLROPollerFromInitialResponse(this, initialResponse, options)); + } + /** * Provides a mechanism to make a request that will poll and provide the final result. * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object * @param {AzureRequestOptionsBase} [options] Additional options to be sent while making the request * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody. */ - async sendLongRunningRequest(request: RequestPrepareOptions | WebResource, options?: RequestOptionsBase): Promise { - return this.beginLongRunningRequest(request, options).then((lroResponse: LROPoller) => lroResponse.pollUntilFinished()); + sendLongRunningRequest(request: RequestPrepareOptions | WebResource, options?: RequestOptionsBase): Promise { + return this.beginLongRunningRequest(request, options) + .then((lroResponse: LROPoller) => lroResponse.pollUntilFinished()); } /** @@ -71,8 +85,9 @@ export class AzureServiceClient extends ServiceClient { * @returns {Promise} The HttpLongRunningOperationResponse * that provides methods for interacting with the LRO. */ - async beginLongRunningRequest(request: RequestPrepareOptions | WebResource, options?: RequestOptionsBase): Promise { - return this.sendRequest(request).then((initialResponse: HttpOperationResponse) => createLROPollerFromInitialResponse(this, initialResponse, options)); + beginLongRunningRequest(request: RequestPrepareOptions | WebResource, options?: RequestOptionsBase): Promise { + return this.sendRequest(request) + .then((initialResponse: HttpOperationResponse) => createLROPollerFromInitialResponse(this, initialResponse, options)); } /** @@ -81,7 +96,7 @@ export class AzureServiceClient extends ServiceClient { * @param {AzureRequestOptionsBase} [options] - custom request options. * @returns {Promise} The final response after polling is complete. */ - async getLongRunningOperationResult(initialResponse: HttpOperationResponse, options?: RequestOptionsBase): Promise { + getLongRunningOperationResult(initialResponse: HttpOperationResponse, options?: RequestOptionsBase): Promise { const lroResponse: LROPoller = createLROPollerFromInitialResponse(this, initialResponse, options); return lroResponse.pollUntilFinished(); } diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts index c37283ea547b..9f18b2e5f226 100644 --- a/lib/lroPollStrategy.ts +++ b/lib/lroPollStrategy.ts @@ -67,6 +67,10 @@ export abstract class LROPollStrategy { protected abstract doFinalGetResourceRequest(): Promise; + public getMostRecentResponse(): HttpOperationResponse { + return this._pollState.mostRecentResponse; + } + public async getOperationResponse(): Promise { if (this.shouldDoFinalGetResourceRequest()) { await this.doFinalGetResourceRequest(); @@ -417,7 +421,7 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { const statusCode: number = response.status; const parsedResponse: any = response.parsedBody; if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { - const error = new RestError(`Invalid status code with response body "${response.bodyAsText}" occurred when polling for operation status.`); + const error = new RestError(`Invalid status code (${statusCode}) with response body "${response.bodyAsText}" occurred when polling for operation status.`); error.statusCode = statusCode; error.request = stripRequest(response.request); error.response = response; diff --git a/lib/lroPoller.ts b/lib/lroPoller.ts index 130ed669d95d..ab302c985f6b 100644 --- a/lib/lroPoller.ts +++ b/lib/lroPoller.ts @@ -19,6 +19,21 @@ export class LROPoller { constructor(private readonly _lroPollStrategy: LROPollStrategy | undefined, private readonly _initialResponse: HttpOperationResponse) { } + /** + * Get the first response that the service sent back when the LRO was initiated. + */ + public getInitialResponse(): HttpOperationResponse { + return this._initialResponse; + } + + /** + * Get the most recent response that the service sent back during this LRO. + */ + public getMostRecentResponse(): HttpOperationResponse { + const lroPollStrategy: LROPollStrategy | undefined = this._lroPollStrategy; + return !lroPollStrategy ? this._initialResponse : lroPollStrategy.getMostRecentResponse(); + } + /** * Get whether or not the LRO is finished. */ diff --git a/package-lock.json b/package-lock.json index 9c26516bf434..1fc9a69fe2a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1558,9 +1558,9 @@ } }, "follow-redirects": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.6.tgz", - "integrity": "sha512-xay/eYZGgdpb3rpugZj1HunNaPcqc6fud/RW7LNEQntvKzuRO4DDLL+MnJIbTHh6t3Kda3v2RvhY2doxUddnig==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.7.tgz", + "integrity": "sha512-NONJVIFiX7Z8k2WxfqBjtwqMifx7X42ORLFrOZ2LTKGj71G3C0kfdyTqGqr8fx5zSX6Foo/D95dgGWbPUiwnew==", "requires": { "debug": "^3.1.0" } @@ -2917,9 +2917,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.19.380", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.19.380.tgz", - "integrity": "sha512-ZIfAor6B7rD7XV1cqy1e/CTEIyQYXuCoUJ54YulPReoUWYMDdfuUqoBSZL5vjx2AYbO7Al1l1NDvZUWidlpQ+A==", + "version": "0.19.383", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.19.383.tgz", + "integrity": "sha512-gk182QGu3o4+YqKEQLfl9t5LijhYyPlq0XkaWca6XI3Y+Efp371t+keaekGVHcXP2HcF+KR1hgkCGJmJckfdcQ==", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", diff --git a/package.json b/package.json index deb6d1090ebc..a829377bd184 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.19.380", + "ms-rest-js": "~0.19.383", "tslib": "^1.9.2" }, "devDependencies": { diff --git a/test/azureServiceClientTests.ts b/test/azureServiceClientTests.ts index c46a697c68f2..3213d0188172 100644 --- a/test/azureServiceClientTests.ts +++ b/test/azureServiceClientTests.ts @@ -2,9 +2,10 @@ // Licensed under the MIT License. See License.txt in the project root for license information. import * as assert from "assert"; -import { HttpHeaders, HttpOperationResponse, RequestOptionsBase, RestError, TokenCredentials, WebResource } from "ms-rest-js"; +import { HttpHeaders, HttpOperationResponse, RequestOptionsBase, RestError, TokenCredentials, WebResource, OperationArguments, OperationSpec, Serializer } from "ms-rest-js"; import { AzureServiceClient, AzureServiceClientOptions, updateOptionsWithDefaultValues } from "../lib/azureServiceClient"; import * as msAssert from "./msAssert"; +import { LROPoller } from "../lib/lroPoller"; describe("AzureServiceClient", () => { describe("constructor", () => { @@ -30,6 +31,72 @@ describe("AzureServiceClient", () => { }); }); + describe("sendLRORequest()", () => { + it("should include custom headers", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "azure-asyncoperation": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + status: "Succeeded" + } + }, + { + status: 200, + body: { + a: "A" + } + } + ]); + + const requestId = "9C4D50EE-2D56-4CD3-8152-34347DC9F2B0"; + const options: RequestOptionsBase = { + customHeaders: { + "x-ms-client-request-id": requestId + } + }; + const operationArguments: OperationArguments = { + options + }; + const operationSpec: OperationSpec = { + httpMethod: "PUT", + baseUrl: "https://fake.azure.com/", + path: "longRunningOperation", + responses: { + 200: {} + }, + serializer: new Serializer() + }; + + const lroPoller: LROPoller = await serviceClient.sendLRORequest(operationArguments, operationSpec, options); + assert.strictEqual(lroPoller.isFinished(), false); + assert.strictEqual(lroPoller.isFinalStatusAcceptable(), undefined); + assert.strictEqual(lroPoller.getOperationStatus(), "InProgress"); + assert.strictEqual(await lroPoller.getOperationResponse(), undefined); + assert.strictEqual(lroPoller.getMostRecentResponse().request.url, "https://fake.azure.com/longRunningOperation"); + assert.strictEqual(lroPoller.getMostRecentResponse().request.headers.get("x-ms-client-request-id"), requestId); + + assert.strictEqual(await lroPoller.poll(), "Succeeded"); + + assert.strictEqual(lroPoller.isFinished(), true); + assert.strictEqual(lroPoller.isFinalStatusAcceptable(), true); + assert.strictEqual(lroPoller.getOperationStatus(), "Succeeded"); + assert.strictEqual(lroPoller.getMostRecentResponse().request.url, "https://fake.azure.com/longRunningOperation2"); + assert.strictEqual(lroPoller.getMostRecentResponse().request.headers.get("x-ms-client-request-id"), requestId); + + const operationResponse: HttpOperationResponse = (await lroPoller.getOperationResponse()) as HttpOperationResponse; + assert(operationResponse); + assert.deepEqual(operationResponse.parsedBody, { a: "A" }); + assert.strictEqual(lroPoller.getMostRecentResponse().request.url, "https://fake.azure.com/longRunningOperation"); + assert.strictEqual(lroPoller.getMostRecentResponse().request.headers.get("x-ms-client-request-id"), requestId); + }); + }); + describe("sendLongRunningRequest(),", () => { describe("Method: PUT,", () => { describe("Status: 201,", () => { From fcda3ec61fe63204a0e4d38ae9bb2e07b9daedde Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 23 Aug 2018 10:15:00 -0700 Subject: [PATCH 091/289] Small script fixes --- .scripts/dependencies.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.scripts/dependencies.ts b/.scripts/dependencies.ts index 6d5fafef1cfb..ca27e9b142dc 100644 --- a/.scripts/dependencies.ts +++ b/.scripts/dependencies.ts @@ -105,7 +105,7 @@ export function getThisRepositoryFolderPath(): string { * Get the absolute path to the package.json in this repository. * @returns {string} The absolute path to the package.json. */ -function getPackageJsonFilePath(packageFolder?: string): string { +function getPackageJsonFilePath(packageFolder: string): string { return resolvePath(packageFolder, "package.json"); } @@ -244,7 +244,7 @@ function updateGeneratedPackageDependencyVersion(codeFilePath: string, dependenc function regularExpressionReplace(filePath: string, fileContents: string, dependencyName: string, regularExpression: RegExp, newValue: string, newDependencyVersion: string): string { let newFileContents: string = fileContents; - const match: RegExpMatchArray = fileContents.match(regularExpression); + const match: RegExpMatchArray | null = fileContents.match(regularExpression); if (match) { if (match[1] === newDependencyVersion) { log(filePath, `"${dependencyName}" is already set to "${newDependencyVersion}".`); @@ -340,18 +340,18 @@ export function getLocalDependencyVersion(dependencyName: string): string { return `file:${getLocalRepositoryPath(dependencyName)}`; } -export function getPreviewDependencyVersion(dependencyName: string): string { - let version: string = addTildePrefix(getNpmPackageVersion(dependencyName, "preview")); +export function getPreviewDependencyVersion(dependencyName: string): string | undefined { + let version: string | undefined = addTildePrefix(getNpmPackageVersion(dependencyName, "preview")); if (!version) { version = getLatestDependencyVersion(dependencyName); } return version; } -export function getLatestDependencyVersion(dependencyName: string): string { +export function getLatestDependencyVersion(dependencyName: string): string | undefined { return addTildePrefix(getNpmPackageVersion(dependencyName, "latest")); } -function addTildePrefix(version: string): string { +function addTildePrefix(version: string | undefined): string | undefined { return version ? `~${version}` : version; } \ No newline at end of file From 446a67940a25c946280cf61a73702d06ea69f54f Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Fri, 24 Aug 2018 14:13:53 -0700 Subject: [PATCH 092/289] Remove Promise return types --- lib/lroPollStrategy.ts | 72 +- package-lock.json | 7044 +++++++++++++++++++++++++++++-- package.json | 4 +- test/azureServiceClientTests.ts | 250 +- 4 files changed, 7083 insertions(+), 287 deletions(-) diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts index 9f18b2e5f226..c6b2cc7e8814 100644 --- a/lib/lroPollStrategy.ts +++ b/lib/lroPollStrategy.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { delay, HttpMethods, HttpOperationResponse, RequestOptionsBase, RequestPrepareOptions, RestError, stripRequest, WebResource } from "ms-rest-js"; +import { delay, HttpMethods, HttpOperationResponse, RequestOptionsBase, RestError, stripRequest, WebResource, OperationResponse, OperationSpec } from "ms-rest-js"; import { AzureServiceClient } from "./azureServiceClient"; import { LongRunningOperationStates } from "./util/constants"; @@ -114,8 +114,8 @@ export abstract class LROPollStrategy { return error; } - protected updateState(url: string): Promise { - return this.updateOperationStatus(url).then(result => { + protected updateState(url: string, shouldDeserialize: boolean | ((response: HttpOperationResponse) => boolean)): Promise { + return this.updateOperationStatus(url, shouldDeserialize).then(result => { this._pollState.state = getProvisioningState(result.parsedBody) || "Succeeded"; this._pollState.mostRecentResponse = result; this._pollState.mostRecentRequest = result.request; @@ -135,18 +135,18 @@ export abstract class LROPollStrategy { * Retrieves operation status by querying the operation URL. * @param {string} statusUrl URL used to poll operation result. */ - protected updateOperationStatus(statusUrl: string): Promise { + protected updateOperationStatus(statusUrl: string, shouldDeserialize: boolean | ((response: HttpOperationResponse) => boolean)): Promise { const requestUrl: string = statusUrl.replace(" ", "%20"); - const httpRequest: RequestPrepareOptions = { - method: "GET", - url: requestUrl, - headers: {} - }; - const options: RequestOptionsBase | undefined = this._pollState.options; + const httpRequest = new WebResource(requestUrl, "GET"); + const pollState: LROPollState = this._pollState; + httpRequest.operationSpec = pollState.mostRecentRequest.operationSpec; + httpRequest.shouldDeserialize = shouldDeserialize; + httpRequest.operationResponseGetter = getOperationResponse; + const options: RequestOptionsBase | undefined = pollState.options; if (options && options.customHeaders) { const customHeaders = options.customHeaders; for (const headerName of Object.keys(customHeaders)) { - httpRequest.headers![headerName] = customHeaders[headerName]; + httpRequest.headers.set(headerName, customHeaders[headerName]); } } return this._azureServiceClient.sendRequest(httpRequest); @@ -157,6 +157,26 @@ export abstract class LROPollStrategy { } } +function getOperationResponse(operationSpec: OperationSpec, response: HttpOperationResponse): OperationResponse | undefined { + const statusCode: number = response.status; + const operationResponses: { [statusCode: string]: OperationResponse } = operationSpec.responses; + let result: OperationResponse | undefined = operationResponses[statusCode]; + if (!result) { + if (statusCode === 200) { + for (const expectedStatusCode of [201, 202]) { + const operationResponse: OperationResponse | undefined = operationResponses[expectedStatusCode]; + if (operationResponse) { + result = operationResponse; + break; + } + } + } else if (201 <= statusCode && statusCode <= 299) { + result = {}; + } + } + return result; +} + export function getDelayInSeconds(azureServiceClient: AzureServiceClient, previousResponse: HttpOperationResponse): number { let delayInSeconds = 30; if (azureServiceClient.longRunningOperationRetryTimeout != undefined) { @@ -180,10 +200,10 @@ function getProvisioningState(responseBody: any): LongRunningOperationStates | u function getResponseBody(response: HttpOperationResponse): any { let result: any; try { - if (response.bodyAsText && response.bodyAsText.length > 0) { - result = JSON.parse(response.bodyAsText); - } else { + if (response.parsedBody) { result = response.parsedBody; + } else if (response.bodyAsText && response.bodyAsText.length > 0) { + result = JSON.parse(response.bodyAsText); } } catch (error) { const deserializationError = new RestError(`Error "${error}" occurred in parsing the responseBody " + @@ -315,6 +335,20 @@ function getLocationHeaderValue(response: HttpOperationResponse): string | undef * A long-running operation polling strategy that is based on the location header. */ class LocationLROPollStrategy extends LROPollStrategy { + private locationStrategyShouldDeserialize(parsedResponse: HttpOperationResponse): boolean { + let shouldDeserialize = false; + + const initialResponse: HttpOperationResponse = this._pollState.initialResponse; + const initialRequestMethod: HttpMethods = initialResponse.request.method; + const statusCode: number = parsedResponse.status; + if (statusCode === 200 || + (statusCode === 201 && (initialRequestMethod === "PUT" || initialRequestMethod === "PATCH")) || + (statusCode === 204 && (initialRequestMethod === "DELETE" || initialRequestMethod === "POST"))) { + shouldDeserialize = true; + } + + return shouldDeserialize; + } /** * Retrieve PUT operation status by polling from "location" header. * @param {string} method - The HTTP method. @@ -322,7 +356,7 @@ class LocationLROPollStrategy extends LROPollStrategy { */ public sendPollRequest(): Promise { const lroPollState: LROPollState = this._pollState; - return this.updateOperationStatus(lroPollState.locationHeaderValue!).then((result: HttpOperationResponse) => { + return this.updateOperationStatus(lroPollState.locationHeaderValue!, this.locationStrategyShouldDeserialize.bind(this)).then((result: HttpOperationResponse) => { const locationHeaderValue: string | undefined = getLocationHeaderValue(result); if (locationHeaderValue) { lroPollState.locationHeaderValue = locationHeaderValue; @@ -398,7 +432,7 @@ class LocationLROPollStrategy extends LROPollStrategy { } else { getResourceRequestUrl = initialRequest.url; } - return this.updateState(getResourceRequestUrl); + return this.updateState(getResourceRequestUrl, true); } } @@ -417,7 +451,7 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { */ public sendPollRequest(): Promise { const lroPollState: LROPollState = this._pollState; - return this.updateOperationStatus(lroPollState.azureAsyncOperationHeaderValue!).then((response: HttpOperationResponse) => { + return this.updateOperationStatus(lroPollState.azureAsyncOperationHeaderValue!, false).then((response: HttpOperationResponse) => { const statusCode: number = response.status; const parsedResponse: any = response.parsedBody; if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { @@ -482,7 +516,7 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { getResourceRequestUrl = locationHeaderValue; } } - return this.updateState(getResourceRequestUrl); + return this.updateState(getResourceRequestUrl, true); } public isFinalStatusAcceptable(): boolean { @@ -500,7 +534,7 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { class GetResourceLROPollStrategy extends LROPollStrategy { public sendPollRequest(): Promise { const lroPollState: LROPollState = this._pollState; - return this.updateOperationStatus(lroPollState.initialResponse.request.url).then(result => { + return this.updateOperationStatus(lroPollState.initialResponse.request.url, false).then(result => { const statusCode: number = result.status; const responseBody: any = result.parsedBody; if (statusCode !== 200 && statusCode !== 201 && statusCode !== 202 && statusCode !== 204) { diff --git a/package-lock.json b/package-lock.json index 1fc9a69fe2a2..d45ff576524b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -113,113 +113,22 @@ "to-fast-properties": "^2.0.0" } }, - "@types/body-parser": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz", - "integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==", - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.32", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", - "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==", - "requires": { - "@types/node": "*" - } - }, - "@types/events": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", - "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==" - }, - "@types/express": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.0.tgz", - "integrity": "sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.0.tgz", - "integrity": "sha512-lTeoCu5NxJU4OD9moCgm0ESZzweAx0YqsAcab6OB0EB3+As1OaHtKnaGJvcngQxYsi9UNv0abn4/DRavrRxt4w==", - "requires": { - "@types/events": "*", - "@types/node": "*", - "@types/range-parser": "*" - } - }, - "@types/form-data": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", - "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/mime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz", - "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==" - }, "@types/mocha": { "version": "5.2.5", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.5.tgz", "integrity": "sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww==", "dev": true }, - "@types/node": { - "version": "9.6.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.28.tgz", - "integrity": "sha512-LMSOxMKNJ8tGqUVs8lSIT8RGo1XGWYada/ZU2QZcbcD6AW9futXDE99tfQA0K6DK60GXcwplsGGK5KABRmI5GA==" - }, - "@types/range-parser": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.2.tgz", - "integrity": "sha512-HtKGu+qG1NPvYe1z7ezLsyIaXYyi8SoAVqWDZgDQ8dLrsZvSzUNCwZyfX33uhWxL/SU0ZDQZ3nwZ0nimt507Kw==" - }, - "@types/serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==", - "requires": { - "@types/express-serve-static-core": "*", - "@types/mime": "*" - } - }, "@types/should": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/@types/should/-/should-8.3.0.tgz", "integrity": "sha1-4rRgJDaF2+N3GC857zjTf00Veto=", "dev": true }, - "@types/uuid": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.3.tgz", - "integrity": "sha512-5fRLCYhLtDb3hMWqQyH10qtF+Ud2JnNCXTCZ+9ktNdCcgslcuXkDTkFcJNk++MT29yDntDnlF1+jD+uVGumsbw==", - "requires": { - "@types/node": "*" - } - }, - "@types/xml2js": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.3.tgz", - "integrity": "sha512-Pv2HGRE4gWLs31In7nsyXEH4uVVsd0HNV9i2dyASvtDIlOtSTr1eczPLDpdEuyv5LWH5LT20GIXwPjkshKWI1g==", - "requires": { - "@types/events": "*", - "@types/node": "*" - } - }, "acorn": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", - "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.2.tgz", + "integrity": "sha512-cJrKCNcr2kv8dlDnbw+JPUGjHZzo4myaxOLmpOX8a+rgX94YeTcTMv/LFJUSByRpc+i4GgVnnhLxvMu/2Y+rqw==", "dev": true }, "acorn-dynamic-import": { @@ -408,26 +317,12 @@ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, - "axios": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", - "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", - "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" - } - }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -854,14 +749,6 @@ "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", "dev": true }, - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "requires": { - "delayed-stream": "~1.0.0" - } - }, "commander": { "version": "2.15.1", "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", @@ -995,6 +882,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -1067,11 +955,6 @@ } } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", @@ -1557,30 +1440,12 @@ "locate-path": "^2.0.0" } }, - "follow-redirects": { - "version": "1.5.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.7.tgz", - "integrity": "sha512-NONJVIFiX7Z8k2WxfqBjtwqMifx7X42ORLFrOZ2LTKGj71G3C0kfdyTqGqr8fx5zSX6Foo/D95dgGWbPUiwnew==", - "requires": { - "debug": "^3.1.0" - } - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - } - }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -2389,7 +2254,8 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true }, "is-builtin-module": { "version": "1.0.0", @@ -2533,15 +2399,6 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "isomorphic-xml2js": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/isomorphic-xml2js/-/isomorphic-xml2js-0.1.3.tgz", - "integrity": "sha512-dIkT2U9ritKVWF/HfHfGwm5tTnlMnknYsv7l12oJlQQgOV2CNV65pX+FHy6HFL9YP8q0JcrlNQAFRJIN2agUmQ==", - "requires": { - "@types/xml2js": "^0.4.2", - "xml2js": "^0.4.19" - } - }, "istanbul-lib-coverage": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", @@ -2816,19 +2673,6 @@ "brorand": "^1.0.1" } }, - "mime-db": { - "version": "1.35.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", - "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" - }, - "mime-types": { - "version": "2.1.19", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", - "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", - "requires": { - "mime-db": "~1.35.0" - } - }, "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", @@ -2878,61 +2722,6774 @@ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "ms-rest-js": { + "version": "file:../ms-rest-js", + "requires": { + "@types/express": "^4.11.1", + "@types/form-data": "^2.2.1", + "@types/node": "^9.4.6", + "@types/uuid": "^3.4.3", + "axios": "^0.18.0", + "form-data": "^2.3.2", + "tough-cookie": "^2.4.3", + "tslib": "^1.9.2", + "uuid": "^3.2.1", + "xml2js": "^0.4.19" + }, + "dependencies": { + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "bundled": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.0", + "bundled": true + }, + "@samverschueren/stream-to-observable": { + "version": "0.3.0", + "bundled": true, + "requires": { + "any-observable": "^0.3.0" + } + }, + "@sindresorhus/is": { + "version": "0.7.0", + "bundled": true + }, + "@types/body-parser": { + "version": "1.17.0", + "bundled": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.32", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "@types/core-js": { + "version": "0.9.46", + "bundled": true + }, + "@types/events": { + "version": "1.2.0", + "bundled": true + }, + "@types/express": { + "version": "4.16.0", + "bundled": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.16.0", + "bundled": true, + "requires": { + "@types/events": "*", + "@types/node": "*", + "@types/range-parser": "*" + } + }, + "@types/form-data": { + "version": "2.2.1", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "@types/glob": { + "version": "5.0.35", + "bundled": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/loglevel": { + "version": "1.5.3", + "bundled": true + }, + "@types/memory-fs": { + "version": "0.3.1", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "@types/mime": { + "version": "2.0.0", + "bundled": true + }, + "@types/minimatch": { + "version": "3.0.3", + "bundled": true + }, + "@types/mkdirp": { + "version": "0.3.29", + "bundled": true + }, + "@types/mocha": { + "version": "5.2.4", + "bundled": true + }, + "@types/node": { + "version": "9.6.23", + "bundled": true + }, + "@types/range-parser": { + "version": "1.2.2", + "bundled": true + }, + "@types/rimraf": { + "version": "0.0.28", + "bundled": true + }, + "@types/serve-static": { + "version": "1.13.2", + "bundled": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/mime": "*" + } + }, + "@types/should": { + "version": "8.3.0", + "bundled": true + }, + "@types/tapable": { + "version": "1.0.4", + "bundled": true + }, + "@types/tough-cookie": { + "version": "2.3.3", + "bundled": true + }, + "@types/uglify-js": { + "version": "3.0.3", + "bundled": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "@types/uuid": { + "version": "3.4.3", + "bundled": true, + "requires": { + "@types/node": "*" + } + }, + "@types/webpack": { + "version": "4.4.6", + "bundled": true, + "requires": { + "@types/node": "*", + "@types/tapable": "*", + "@types/uglify-js": "*", + "source-map": "^0.6.0" + } + }, + "@types/webpack-dev-middleware": { + "version": "2.0.2", + "bundled": true, + "requires": { + "@types/connect": "*", + "@types/loglevel": "*", + "@types/memory-fs": "*", + "@types/webpack": "*" + } + }, + "@types/xml2js": { + "version": "0.4.3", + "bundled": true, + "requires": { + "@types/events": "*", + "@types/node": "*" + } + }, + "@webassemblyjs/ast": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", + "debug": "^3.1.0", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.5.13", + "bundled": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.5.13", + "bundled": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.5.13", + "bundled": true, + "requires": { + "debug": "^3.1.0" + } + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/wast-printer": "1.5.13" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.5.13", + "bundled": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.5.13", + "bundled": true, + "requires": { + "debug": "^3.1.0", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.5.13", + "bundled": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "debug": "^3.1.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.5.13", + "bundled": true, + "requires": { + "ieee754": "^1.1.11" + } + }, + "@webassemblyjs/leb128": { + "version": "1.5.13", + "bundled": true, + "requires": { + "long": "4.0.0" + }, + "dependencies": { + "long": { + "version": "4.0.0", + "bundled": true + } + } + }, + "@webassemblyjs/utf8": { + "version": "1.5.13", + "bundled": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/helper-wasm-section": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-opt": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "@webassemblyjs/wast-printer": "1.5.13", + "debug": "^3.1.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "debug": "^3.1.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/floating-point-hex-parser": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-code-frame": "1.5.13", + "@webassemblyjs/helper-fsm": "1.5.13", + "long": "^3.2.0", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.5.13", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", + "long": "^3.2.0" + } + }, + "abortcontroller-polyfill": { + "version": "1.1.9", + "bundled": true + }, + "accepts": { + "version": "1.3.5", + "bundled": true, + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.7.1", + "bundled": true + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "bundled": true, + "requires": { + "acorn": "^5.0.0" + } + }, + "ajv": { + "version": "6.5.2", + "bundled": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.1" + } + }, + "ajv-keywords": { + "version": "3.2.0", + "bundled": true + }, + "ansi-escapes": { + "version": "3.1.0", + "bundled": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "ansi-styles": { + "version": "2.2.1", + "bundled": true + }, + "any-observable": { + "version": "0.3.0", + "bundled": true + }, + "anymatch": { + "version": "2.0.0", + "bundled": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "argparse": { + "version": "1.0.10", + "bundled": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "bundled": true + }, + "arr-flatten": { + "version": "1.1.0", + "bundled": true + }, + "arr-union": { + "version": "3.1.0", + "bundled": true + }, + "array-differ": { + "version": "1.0.0", + "bundled": true + }, + "array-filter": { + "version": "0.0.1", + "bundled": true + }, + "array-find-index": { + "version": "1.0.2", + "bundled": true + }, + "array-flatten": { + "version": "1.1.1", + "bundled": true + }, + "array-map": { + "version": "0.0.0", + "bundled": true + }, + "array-reduce": { + "version": "0.0.0", + "bundled": true + }, + "array-union": { + "version": "1.0.2", + "bundled": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "bundled": true + }, + "array-unique": { + "version": "0.3.2", + "bundled": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true + }, + "asn1.js": { + "version": "4.10.1", + "bundled": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "bundled": true, + "requires": { + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "bundled": true + }, + "util": { + "version": "0.10.3", + "bundled": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assign-symbols": { + "version": "1.0.0", + "bundled": true + }, + "ast-types": { + "version": "0.11.5", + "bundled": true + }, + "async": { + "version": "1.5.2", + "bundled": true + }, + "async-each": { + "version": "1.0.1", + "bundled": true + }, + "async-limiter": { + "version": "1.0.0", + "bundled": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true + }, + "atob": { + "version": "2.1.1", + "bundled": true + }, + "axios": { + "version": "0.18.0", + "bundled": true, + "requires": { + "follow-redirects": "^1.3.0", + "is-buffer": "^1.1.5" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "bundled": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "babel-core": { + "version": "6.26.3", + "bundled": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "bundled": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "bundled": true + }, + "source-map": { + "version": "0.5.7", + "bundled": true + } + } + }, + "babel-helper-bindify-decorators": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-explode-class": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-bindify-decorators": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-async-generators": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-class-constructor-call": { + "version": "6.18.0", + "bundled": true + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "bundled": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-export-extensions": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "bundled": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "bundled": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "bundled": true + }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-generators": "^6.5.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-class-constructor-call": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-syntax-class-constructor-call": "^6.18.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-explode-class": "^6.24.1", + "babel-plugin-syntax-decorators": "^6.13.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "bundled": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-export-extensions": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-plugin-syntax-export-extensions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "bundled": true, + "requires": { + "babel-plugin-syntax-flow": "^6.18.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "bundled": true, + "requires": { + "regenerator-transform": "^0.10.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-polyfill": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "bundled": true + } + } + }, + "babel-preset-env": { + "version": "1.7.0", + "bundled": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^3.2.6", + "invariant": "^2.2.2", + "semver": "^5.3.0" + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.24.1", + "babel-plugin-transform-es2015-classes": "^6.24.1", + "babel-plugin-transform-es2015-computed-properties": "^6.24.1", + "babel-plugin-transform-es2015-destructuring": "^6.22.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", + "babel-plugin-transform-es2015-for-of": "^6.22.0", + "babel-plugin-transform-es2015-function-name": "^6.24.1", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-umd": "^6.24.1", + "babel-plugin-transform-es2015-object-super": "^6.24.1", + "babel-plugin-transform-es2015-parameters": "^6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", + "babel-plugin-transform-regenerator": "^6.24.1" + } + }, + "babel-preset-stage-1": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-transform-class-constructor-call": "^6.24.1", + "babel-plugin-transform-export-extensions": "^6.22.0", + "babel-preset-stage-2": "^6.24.1" + } + }, + "babel-preset-stage-2": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-transform-class-properties": "^6.24.1", + "babel-plugin-transform-decorators": "^6.24.1", + "babel-preset-stage-3": "^6.24.1" + } + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "bundled": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-generator-functions": "^6.24.1", + "babel-plugin-transform-async-to-generator": "^6.24.1", + "babel-plugin-transform-exponentiation-operator": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.22.0" + } + }, + "babel-register": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + } + }, + "babel-runtime": { + "version": "6.26.0", + "bundled": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-types": { + "version": "6.26.0", + "bundled": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "bundled": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "base": { + "version": "0.11.2", + "bundled": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.0", + "bundled": true + }, + "big.js": { + "version": "3.2.0", + "bundled": true + }, + "binary-extensions": { + "version": "1.11.0", + "bundled": true + }, + "binaryextensions": { + "version": "2.1.1", + "bundled": true + }, + "bluebird": { + "version": "3.5.1", + "bundled": true + }, + "bn.js": { + "version": "4.11.8", + "bundled": true + }, + "body-parser": { + "version": "1.18.2", + "bundled": true, + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.1", + "http-errors": "~1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "~2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "~1.6.15" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "bundled": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "bundled": true + }, + "browser-stdout": { + "version": "1.3.1", + "bundled": true + }, + "browserify-aes": { + "version": "1.2.0", + "bundled": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "bundled": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "bundled": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "bundled": true + } + } + }, + "browserify-rsa": { + "version": "4.0.1", + "bundled": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "bundled": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "bundled": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "3.2.8", + "bundled": true, + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + }, + "buffer": { + "version": "4.9.1", + "bundled": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.0", + "bundled": true + }, + "buffer-xor": { + "version": "1.0.3", + "bundled": true + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "bundled": true + }, + "bytes": { + "version": "3.0.0", + "bundled": true + }, + "cacache": { + "version": "10.0.4", + "bundled": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "bundled": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cacheable-request": { + "version": "2.1.4", + "bundled": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "bundled": true + } + } + }, + "call-me-maybe": { + "version": "1.0.1", + "bundled": true + }, + "camelcase": { + "version": "4.1.0", + "bundled": true + }, + "camelcase-keys": { + "version": "4.2.0", + "bundled": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30000865", + "bundled": true + }, + "chalk": { + "version": "2.4.1", + "bundled": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "requires": { + "color-convert": "^1.9.0" + } + } + } + }, + "chardet": { + "version": "0.4.2", + "bundled": true + }, + "chokidar": { + "version": "2.0.4", + "bundled": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true + }, + "chrome-launcher": { + "version": "0.10.2", + "bundled": true, + "requires": { + "@types/core-js": "^0.9.41", + "@types/mkdirp": "^0.3.29", + "@types/node": "^9.3.0", + "@types/rimraf": "^0.0.28", + "is-wsl": "^1.1.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "0.5.1", + "rimraf": "^2.6.1" + } + }, + "chrome-remote-interface": { + "version": "0.25.7", + "bundled": true, + "requires": { + "commander": "2.11.x", + "ws": "3.3.x" + }, + "dependencies": { + "commander": { + "version": "2.11.0", + "bundled": true + } + } + }, + "chrome-trace-event": { + "version": "1.0.0", + "bundled": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "chrome-unmirror": { + "version": "0.1.0", + "bundled": true + }, + "cipher-base": { + "version": "1.0.4", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "bundled": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "bundled": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "0.1.2", + "bundled": true + }, + "cli-table": { + "version": "0.3.1", + "bundled": true, + "requires": { + "colors": "1.0.3" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "bundled": true + } + } + }, + "cli-truncate": { + "version": "0.2.1", + "bundled": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "cli-width": { + "version": "2.2.0", + "bundled": true + }, + "cliui": { + "version": "4.1.0", + "bundled": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "bundled": true + }, + "clone-buffer": { + "version": "1.0.0", + "bundled": true + }, + "clone-response": { + "version": "1.0.2", + "bundled": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "clone-stats": { + "version": "0.0.1", + "bundled": true + }, + "cloneable-readable": { + "version": "1.1.2", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "collection-visit": { + "version": "1.0.0", + "bundled": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.2", + "bundled": true, + "requires": { + "color-name": "1.1.1" + } + }, + "color-name": { + "version": "1.1.1", + "bundled": true + }, + "colors": { + "version": "1.3.0", + "bundled": true + }, + "combined-stream": { + "version": "1.0.6", + "bundled": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.15.1", + "bundled": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true + }, + "component-emitter": { + "version": "1.2.1", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "concat-stream": { + "version": "1.6.2", + "bundled": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.1.0", + "bundled": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "bundled": true + }, + "content-disposition": { + "version": "0.5.2", + "bundled": true + }, + "content-type": { + "version": "1.0.4", + "bundled": true + }, + "convert-source-map": { + "version": "1.5.1", + "bundled": true + }, + "cookie": { + "version": "0.3.1", + "bundled": true + }, + "cookie-signature": { + "version": "1.0.6", + "bundled": true + }, + "copy-concurrently": { + "version": "1.0.5", + "bundled": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "bundled": true + }, + "core-js": { + "version": "2.5.7", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "create-ecdh": { + "version": "4.0.3", + "bundled": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "bundled": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "bundled": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "bundled": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "bundled": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "bundled": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "cyclist": { + "version": "0.2.2", + "bundled": true + }, + "d": { + "version": "1.0.0", + "bundled": true, + "requires": { + "es5-ext": "^0.10.9" + } + }, + "dargs": { + "version": "5.1.0", + "bundled": true + }, + "date-fns": { + "version": "1.29.0", + "bundled": true + }, + "date-now": { + "version": "0.1.4", + "bundled": true + }, + "dateformat": { + "version": "3.0.3", + "bundled": true + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "bundled": true + }, + "decamelize-keys": { + "version": "1.1.0", + "bundled": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "bundled": true + } + } + }, + "decode-uri-component": { + "version": "0.2.0", + "bundled": true + }, + "decompress-response": { + "version": "3.3.0", + "bundled": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-assign": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true + }, + "define-properties": { + "version": "1.1.2", + "bundled": true, + "requires": { + "foreach": "^2.0.5", + "object-keys": "^1.0.8" + } + }, + "define-property": { + "version": "2.0.2", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "depd": { + "version": "1.1.2", + "bundled": true + }, + "des.js": { + "version": "1.0.0", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "bundled": true + }, + "detect-conflict": { + "version": "1.0.1", + "bundled": true + }, + "detect-indent": { + "version": "4.0.0", + "bundled": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "diff": { + "version": "3.5.0", + "bundled": true + }, + "diffie-hellman": { + "version": "5.0.3", + "bundled": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.0.0", + "bundled": true, + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "bundled": true + }, + "duplexer": { + "version": "0.1.1", + "bundled": true + }, + "duplexer3": { + "version": "0.1.4", + "bundled": true + }, + "duplexify": { + "version": "3.6.0", + "bundled": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "editions": { + "version": "1.3.4", + "bundled": true + }, + "ee-first": { + "version": "1.1.1", + "bundled": true + }, + "ejs": { + "version": "2.6.1", + "bundled": true + }, + "electron-to-chromium": { + "version": "1.3.52", + "bundled": true + }, + "elegant-spinner": { + "version": "1.0.1", + "bundled": true + }, + "elliptic": { + "version": "6.4.0", + "bundled": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emojis-list": { + "version": "2.1.0", + "bundled": true + }, + "encodeurl": { + "version": "1.0.2", + "bundled": true + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "envinfo": { + "version": "5.10.0", + "bundled": true + }, + "errno": { + "version": "0.1.7", + "bundled": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error": { + "version": "7.0.2", + "bundled": true, + "requires": { + "string-template": "~0.2.1", + "xtend": "~4.0.0" + } + }, + "error-ex": { + "version": "1.3.2", + "bundled": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.12.0", + "bundled": true, + "requires": { + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "bundled": true, + "requires": { + "is-callable": "^1.1.1", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.1" + } + }, + "es5-ext": { + "version": "0.10.45", + "bundled": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "bundled": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-object-assign": { + "version": "1.1.0", + "bundled": true + }, + "es6-symbol": { + "version": "3.1.1", + "bundled": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "escape-html": { + "version": "1.0.3", + "bundled": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true + }, + "eslint-scope": { + "version": "4.0.0", + "bundled": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "bundled": true + }, + "esrecurse": { + "version": "4.2.1", + "bundled": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "bundled": true + }, + "esutils": { + "version": "2.0.2", + "bundled": true + }, + "etag": { + "version": "1.8.1", + "bundled": true + }, + "event-stream": { + "version": "3.3.4", + "bundled": true, + "requires": { + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" + } + }, + "events": { + "version": "1.1.1", + "bundled": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "bundled": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "exit-hook": { + "version": "1.1.1", + "bundled": true + }, + "expand-brackets": { + "version": "2.1.4", + "bundled": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-range": { + "version": "1.8.2", + "bundled": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "bundled": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "2.1.0", + "bundled": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "bundled": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "express": { + "version": "4.16.3", + "bundled": true, + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.3", + "qs": "6.5.1", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "bundled": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "2.2.0", + "bundled": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "bundled": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "bundled": true + }, + "fast-glob": { + "version": "2.2.2", + "bundled": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.0.1", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.1", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "bundled": true + }, + "figures": { + "version": "2.0.0", + "bundled": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "filename-regex": { + "version": "2.0.1", + "bundled": true + }, + "fill-range": { + "version": "4.0.0", + "bundled": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.1", + "bundled": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "find-cache-dir": { + "version": "1.0.0", + "bundled": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "first-chunk-stream": { + "version": "2.0.0", + "bundled": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "flow-parser": { + "version": "0.76.0", + "bundled": true + }, + "flush-write-stream": { + "version": "1.0.3", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "follow-redirects": { + "version": "1.5.1", + "bundled": true, + "requires": { + "debug": "^3.1.0" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true + }, + "for-own": { + "version": "0.1.5", + "bundled": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "foreach": { + "version": "2.0.5", + "bundled": true + }, + "form-data": { + "version": "2.3.2", + "bundled": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "bundled": true + }, + "fragment-cache": { + "version": "0.2.1", + "bundled": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "bundled": true + }, + "from": { + "version": "0.1.7", + "bundled": true + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "function-bind": { + "version": "1.1.1", + "bundled": true + }, + "get-caller-file": { + "version": "1.0.3", + "bundled": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true + }, + "get-value": { + "version": "2.0.6", + "bundled": true + }, + "gh-got": { + "version": "6.0.0", + "bundled": true, + "requires": { + "got": "^7.0.0", + "is-plain-obj": "^1.1.0" + }, + "dependencies": { + "got": { + "version": "7.1.0", + "bundled": true, + "requires": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + } + }, + "p-cancelable": { + "version": "0.3.0", + "bundled": true + }, + "p-timeout": { + "version": "1.2.1", + "bundled": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "prepend-http": { + "version": "1.0.4", + "bundled": true + }, + "url-parse-lax": { + "version": "1.0.0", + "bundled": true, + "requires": { + "prepend-http": "^1.0.1" + } + } + } + }, + "github-username": { + "version": "4.1.0", + "bundled": true, + "requires": { + "gh-got": "^6.0.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-all": { + "version": "3.1.0", + "bundled": true, + "requires": { + "glob": "^7.0.5", + "yargs": "~1.2.6" + }, + "dependencies": { + "minimist": { + "version": "0.1.0", + "bundled": true + }, + "yargs": { + "version": "1.2.6", + "bundled": true, + "requires": { + "minimist": "^0.1.0" + } + } + } + }, + "glob-base": { + "version": "0.3.0", + "bundled": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "bundled": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "bundled": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "bundled": true + }, + "global-modules": { + "version": "1.0.0", + "bundled": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "bundled": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "9.18.0", + "bundled": true + }, + "globby": { + "version": "8.0.1", + "bundled": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "got": { + "version": "8.3.2", + "bundled": true, + "requires": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true + }, + "grouped-queue": { + "version": "0.3.3", + "bundled": true, + "requires": { + "lodash": "^4.17.2" + } + }, + "growl": { + "version": "1.10.5", + "bundled": true + }, + "has": { + "version": "1.0.3", + "bundled": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-color": { + "version": "0.1.7", + "bundled": true + }, + "has-flag": { + "version": "3.0.0", + "bundled": true + }, + "has-symbol-support-x": { + "version": "1.4.2", + "bundled": true + }, + "has-symbols": { + "version": "1.0.0", + "bundled": true + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "bundled": true, + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, + "has-value": { + "version": "1.0.0", + "bundled": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.5", + "bundled": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.1.1", + "bundled": true + }, + "hmac-drbg": { + "version": "1.0.1", + "bundled": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "home-or-tmp": { + "version": "2.0.0", + "bundled": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.1", + "bundled": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "bundled": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "bundled": true + }, + "http-errors": { + "version": "1.6.3", + "bundled": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "https-browserify": { + "version": "1.0.0", + "bundled": true + }, + "iconv-lite": { + "version": "0.4.19", + "bundled": true + }, + "ieee754": { + "version": "1.1.12", + "bundled": true + }, + "iferr": { + "version": "0.1.5", + "bundled": true + }, + "ignore": { + "version": "3.3.10", + "bundled": true + }, + "import-local": { + "version": "1.0.0", + "bundled": true, + "requires": { + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true + }, + "indent-string": { + "version": "3.2.0", + "bundled": true + }, + "indexof": { + "version": "0.0.1", + "bundled": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true + }, + "inquirer": { + "version": "5.2.0", + "bundled": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.1.0", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^5.5.2", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "interpret": { + "version": "1.1.0", + "bundled": true + }, + "into-stream": { + "version": "3.1.0", + "bundled": true, + "requires": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + } + }, + "invariant": { + "version": "2.2.4", + "bundled": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true + }, + "ipaddr.js": { + "version": "1.6.0", + "bundled": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true + }, + "is-binary-path": { + "version": "1.0.1", + "bundled": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "bundled": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-callable": { + "version": "1.1.4", + "bundled": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "bundled": true + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "bundled": true + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "bundled": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "bundled": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true + }, + "is-extglob": { + "version": "2.1.1", + "bundled": true + }, + "is-finite": { + "version": "1.0.2", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "is-glob": { + "version": "4.0.0", + "bundled": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "bundled": true + }, + "is-object": { + "version": "1.0.1", + "bundled": true + }, + "is-observable": { + "version": "1.1.0", + "bundled": true, + "requires": { + "symbol-observable": "^1.1.0" + }, + "dependencies": { + "symbol-observable": { + "version": "1.2.0", + "bundled": true + } + } + }, + "is-plain-obj": { + "version": "1.1.0", + "bundled": true + }, + "is-plain-object": { + "version": "2.0.4", + "bundled": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "bundled": true + }, + "is-primitive": { + "version": "2.0.0", + "bundled": true + }, + "is-promise": { + "version": "2.1.0", + "bundled": true + }, + "is-regex": { + "version": "1.0.4", + "bundled": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-retry-allowed": { + "version": "1.1.0", + "bundled": true + }, + "is-scoped": { + "version": "1.0.0", + "bundled": true, + "requires": { + "scoped-regex": "^1.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "bundled": true + }, + "is-symbol": { + "version": "1.0.1", + "bundled": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true + }, + "is-windows": { + "version": "1.0.2", + "bundled": true + }, + "is-wsl": { + "version": "1.1.0", + "bundled": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "isbinaryfile": { + "version": "3.0.2", + "bundled": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true + }, + "isobject": { + "version": "3.0.1", + "bundled": true + }, + "istextorbinary": { + "version": "2.2.1", + "bundled": true, + "requires": { + "binaryextensions": "2", + "editions": "^1.3.3", + "textextensions": "2" + } + }, + "isurl": { + "version": "1.0.0", + "bundled": true, + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, + "js-tokens": { + "version": "3.0.2", + "bundled": true + }, + "js-yaml": { + "version": "3.12.0", + "bundled": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jscodeshift": { + "version": "0.5.1", + "bundled": true, + "requires": { + "babel-plugin-transform-flow-strip-types": "^6.8.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-stage-1": "^6.5.0", + "babel-register": "^6.9.0", + "babylon": "^7.0.0-beta.47", + "colors": "^1.1.2", + "flow-parser": "^0.*", + "lodash": "^4.13.1", + "micromatch": "^2.3.7", + "neo-async": "^2.5.0", + "node-dir": "0.1.8", + "nomnom": "^1.8.1", + "recast": "^0.15.0", + "temp": "^0.8.1", + "write-file-atomic": "^1.2.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "bundled": true + }, + "babylon": { + "version": "7.0.0-beta.47", + "bundled": true + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + } + } + }, + "jsesc": { + "version": "0.5.0", + "bundled": true + }, + "json-buffer": { + "version": "3.0.0", + "bundled": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "bundled": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "bundled": true + }, + "json5": { + "version": "0.5.1", + "bundled": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true + }, + "keyv": { + "version": "3.0.0", + "bundled": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lighthouse-logger": { + "version": "1.0.1", + "bundled": true, + "requires": { + "debug": "^2.6.8" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "listr": { + "version": "0.14.1", + "bundled": true, + "requires": { + "@samverschueren/stream-to-observable": "^0.3.0", + "cli-truncate": "^0.2.1", + "figures": "^1.7.0", + "indent-string": "^2.1.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.4.0", + "listr-verbose-renderer": "^0.4.0", + "log-symbols": "^1.0.2", + "log-update": "^1.0.2", + "ora": "^0.2.3", + "p-map": "^1.1.1", + "rxjs": "^6.1.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "bundled": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "indent-string": { + "version": "2.1.0", + "bundled": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "bundled": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "rxjs": { + "version": "6.2.2", + "bundled": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "bundled": true + }, + "listr-update-renderer": { + "version": "0.4.0", + "bundled": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^1.0.2", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "bundled": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "bundled": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "listr-verbose-renderer": { + "version": "0.4.1", + "bundled": true, + "requires": { + "chalk": "^1.1.3", + "cli-cursor": "^1.0.2", + "date-fns": "^1.27.2", + "figures": "^1.7.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "figures": { + "version": "1.7.0", + "bundled": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "onetime": { + "version": "1.1.0", + "bundled": true + }, + "restore-cursor": { + "version": "1.0.1", + "bundled": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "load-json-file": { + "version": "4.0.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "loader-runner": { + "version": "2.3.0", + "bundled": true + }, + "loader-utils": { + "version": "1.1.0", + "bundled": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.10", + "bundled": true + }, + "lodash.debounce": { + "version": "4.0.8", + "bundled": true + }, + "log-symbols": { + "version": "2.2.0", + "bundled": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "log-update": { + "version": "1.0.2", + "bundled": true, + "requires": { + "ansi-escapes": "^1.0.0", + "cli-cursor": "^1.0.2" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "bundled": true + }, + "cli-cursor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "bundled": true + }, + "restore-cursor": { + "version": "1.0.1", + "bundled": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + } + } + }, + "loglevel": { + "version": "1.6.1", + "bundled": true + }, + "loglevelnext": { + "version": "1.0.5", + "bundled": true, + "requires": { + "es6-symbol": "^3.1.1", + "object.assign": "^4.1.0" + } + }, + "long": { + "version": "3.2.0", + "bundled": true + }, + "loose-envify": { + "version": "1.4.0", + "bundled": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "bundled": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "bundled": true + }, + "lru-cache": { + "version": "4.1.3", + "bundled": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "bundled": true, + "requires": { + "pify": "^3.0.0" + } + }, + "make-error": { + "version": "1.3.4", + "bundled": true + }, + "mamacro": { + "version": "0.0.3", + "bundled": true + }, + "map-cache": { + "version": "0.2.2", + "bundled": true + }, + "map-obj": { + "version": "2.0.0", + "bundled": true + }, + "map-stream": { + "version": "0.1.0", + "bundled": true + }, + "map-visit": { + "version": "1.0.0", + "bundled": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "math-random": { + "version": "1.0.1", + "bundled": true + }, + "md5.js": { + "version": "1.3.4", + "bundled": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "media-typer": { + "version": "0.3.0", + "bundled": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "mem-fs": { + "version": "1.1.3", + "bundled": true, + "requires": { + "through2": "^2.0.0", + "vinyl": "^1.1.0", + "vinyl-file": "^2.0.0" + } + }, + "mem-fs-editor": { + "version": "4.0.3", + "bundled": true, + "requires": { + "commondir": "^1.0.1", + "deep-extend": "^0.6.0", + "ejs": "^2.5.9", + "glob": "^7.0.3", + "globby": "^7.1.1", + "isbinaryfile": "^3.0.2", + "mkdirp": "^0.5.0", + "multimatch": "^2.0.0", + "rimraf": "^2.2.8", + "through2": "^2.0.0", + "vinyl": "^2.0.1" + }, + "dependencies": { + "clone": { + "version": "2.1.1", + "bundled": true + }, + "clone-stats": { + "version": "1.0.0", + "bundled": true + }, + "globby": { + "version": "7.1.1", + "bundled": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "replace-ext": { + "version": "1.0.0", + "bundled": true + }, + "vinyl": { + "version": "2.2.0", + "bundled": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + } + } + }, + "memory-fs": { + "version": "0.4.1", + "bundled": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "memorystream": { + "version": "0.3.1", + "bundled": true + }, + "meow": { + "version": "4.0.1", + "bundled": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "bundled": true + }, + "merge2": { + "version": "1.2.2", + "bundled": true + }, + "methods": { + "version": "1.1.2", + "bundled": true + }, + "micromatch": { + "version": "3.1.10", + "bundled": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "bundled": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.4.1", + "bundled": true + }, + "mime-db": { + "version": "1.33.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.18", + "bundled": true, + "requires": { + "mime-db": "~1.33.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "bundled": true + }, + "mimic-response": { + "version": "1.0.1", + "bundled": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "bundled": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "bundled": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "minimist-options": { + "version": "3.0.2", + "bundled": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "mississippi": { + "version": "2.0.0", + "bundled": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.1", + "bundled": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.2.0", + "bundled": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + } + }, + "mocha-chrome": { + "version": "1.1.0", + "bundled": true, + "requires": { + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-parameters": "^6.24.1", + "babel-polyfill": "^6.26.0", + "babel-preset-env": "^1.6.1", + "babel-register": "^6.26.0", + "chalk": "^2.0.1", + "chrome-launcher": "^0.10.2", + "chrome-remote-interface": "^0.25.2", + "chrome-unmirror": "^0.1.0", + "debug": "^3.1.0", + "deep-assign": "^2.0.0", + "import-local": "^1.0.0", + "loglevel": "^1.4.1", + "meow": "^4.0.0", + "nanobus": "^4.2.0" + } + }, + "move-concurrently": { + "version": "1.0.1", + "bundled": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true + }, + "multimatch": { + "version": "2.1.0", + "bundled": true, + "requires": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + } + }, + "mute-stream": { + "version": "0.0.7", + "bundled": true + }, + "nanoassert": { + "version": "1.1.0", + "bundled": true + }, + "nanobus": { + "version": "4.3.3", + "bundled": true, + "requires": { + "nanotiming": "^7.2.0", + "remove-array-items": "^1.0.0" + } + }, + "nanomatch": { + "version": "1.2.13", + "bundled": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "nanoscheduler": { + "version": "1.0.3", + "bundled": true, + "requires": { + "nanoassert": "^1.1.0" + } + }, + "nanotiming": { + "version": "7.3.1", + "bundled": true, + "requires": { + "nanoassert": "^1.1.0", + "nanoscheduler": "^1.0.2" + } + }, + "negotiator": { + "version": "0.6.1", + "bundled": true + }, + "neo-async": { + "version": "2.5.1", + "bundled": true + }, + "next-tick": { + "version": "1.0.0", + "bundled": true + }, + "nice-try": { + "version": "1.0.4", + "bundled": true + }, + "node-dir": { + "version": "0.1.8", + "bundled": true + }, + "node-libs-browser": { + "version": "2.1.0", + "bundled": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^1.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.10.3", + "vm-browserify": "0.0.4" + } + }, + "nomnom": { + "version": "1.8.1", + "bundled": true, + "requires": { + "chalk": "~0.4.0", + "underscore": "~1.6.0" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "bundled": true + }, + "chalk": { + "version": "0.4.0", + "bundled": true, + "requires": { + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" + } + }, + "strip-ansi": { + "version": "0.1.1", + "bundled": true + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "bundled": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-url": { + "version": "2.0.1", + "bundled": true, + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, + "npm-run-all": { + "version": "4.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^3.2.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.4", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "ps-tree": "^1.1.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "requires": { + "color-convert": "^1.9.0" + } + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "object-copy": { + "version": "0.1.0", + "bundled": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.0.12", + "bundled": true + }, + "object-visit": { + "version": "1.0.1", + "bundled": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "bundled": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.omit": { + "version": "2.0.1", + "bundled": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "bundled": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "bundled": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "bundled": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "ora": { + "version": "0.2.3", + "bundled": true, + "requires": { + "chalk": "^1.1.1", + "cli-cursor": "^1.0.2", + "cli-spinners": "^0.1.2", + "object-assign": "^4.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "bundled": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "bundled": true + }, + "restore-cursor": { + "version": "1.0.1", + "bundled": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "bundled": true + } + } + }, + "os-browserify": { + "version": "0.3.0", + "bundled": true + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "p-cancelable": { + "version": "0.4.1", + "bundled": true + }, + "p-each-series": { + "version": "1.0.0", + "bundled": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true + }, + "p-is-promise": { + "version": "1.1.0", + "bundled": true + }, + "p-lazy": { + "version": "1.0.0", + "bundled": true + }, + "p-limit": { + "version": "1.3.0", + "bundled": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "bundled": true + }, + "p-reduce": { + "version": "1.0.0", + "bundled": true + }, + "p-timeout": { + "version": "2.0.1", + "bundled": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "p-try": { + "version": "1.0.0", + "bundled": true + }, + "pako": { + "version": "1.0.6", + "bundled": true + }, + "parallel-transform": { + "version": "1.1.0", + "bundled": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.1", + "bundled": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" + } + }, + "parse-glob": { + "version": "3.0.4", + "bundled": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "4.0.0", + "bundled": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "bundled": true + }, + "parseurl": { + "version": "1.3.2", + "bundled": true + }, + "pascalcase": { + "version": "0.1.1", + "bundled": true + }, + "path-browserify": { + "version": "0.0.0", + "bundled": true + }, + "path-dirname": { + "version": "1.0.2", + "bundled": true + }, + "path-exists": { + "version": "3.0.0", + "bundled": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true + }, + "path-to-regexp": { + "version": "0.1.7", + "bundled": true + }, + "path-type": { + "version": "3.0.0", + "bundled": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pause-stream": { + "version": "0.0.11", + "bundled": true, + "requires": { + "through": "~2.3" + } + }, + "pbkdf2": { + "version": "3.0.16", + "bundled": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pify": { + "version": "3.0.0", + "bundled": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "bundled": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "bundled": true + }, + "prepend-http": { + "version": "2.0.0", + "bundled": true + }, + "preserve": { + "version": "0.2.0", + "bundled": true + }, + "prettier": { + "version": "1.13.7", + "bundled": true + }, + "pretty-bytes": { + "version": "4.0.2", + "bundled": true + }, + "private": { + "version": "0.1.8", + "bundled": true + }, + "process": { + "version": "0.11.10", + "bundled": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true + }, + "promise-inflight": { + "version": "1.0.1", + "bundled": true + }, + "proxy-addr": { + "version": "2.0.3", + "bundled": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.6.0" + } + }, + "prr": { + "version": "1.0.1", + "bundled": true + }, + "ps-tree": { + "version": "1.1.0", + "bundled": true, + "requires": { + "event-stream": "~3.3.0" + } + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true + }, + "psl": { + "version": "1.1.28", + "bundled": true + }, + "public-encrypt": { + "version": "4.0.2", + "bundled": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "pump": { + "version": "2.0.1", + "bundled": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "bundled": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "1.4.1", + "bundled": true + }, + "qs": { + "version": "6.5.1", + "bundled": true + }, + "query-string": { + "version": "5.1.1", + "bundled": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "bundled": true + }, + "querystring-es3": { + "version": "0.2.1", + "bundled": true + }, + "quick-lru": { + "version": "1.1.0", + "bundled": true + }, + "randomatic": { + "version": "3.0.0", + "bundled": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "bundled": true + } + } + }, + "randombytes": { + "version": "2.0.6", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "bundled": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.0", + "bundled": true + }, + "raw-body": { + "version": "2.3.2", + "bundled": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "bundled": true + }, + "http-errors": { + "version": "1.6.2", + "bundled": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + } + }, + "setprototypeof": { + "version": "1.0.3", + "bundled": true + } + } + }, + "read-chunk": { + "version": "2.1.0", + "bundled": true, + "requires": { + "pify": "^3.0.0", + "safe-buffer": "^5.1.1" + } + }, + "read-pkg": { + "version": "3.0.0", + "bundled": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "bundled": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.1.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" + } + }, + "recast": { + "version": "0.15.2", + "bundled": true, + "requires": { + "ast-types": "0.11.5", + "esprima": "~4.0.0", + "private": "~0.1.5", + "source-map": "~0.6.1" + } + }, + "rechoir": { + "version": "0.6.2", + "bundled": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "2.0.0", + "bundled": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "regenerate": { + "version": "1.4.0", + "bundled": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "bundled": true + }, + "regenerator-transform": { + "version": "0.10.1", + "bundled": true, + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + }, + "regex-cache": { + "version": "0.4.4", + "bundled": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "bundled": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpu-core": { + "version": "2.0.0", + "bundled": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "bundled": true + }, + "regjsparser": { + "version": "0.1.5", + "bundled": true, + "requires": { + "jsesc": "~0.5.0" + } + }, + "remove-array-items": { + "version": "1.0.0", + "bundled": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "bundled": true + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true + }, + "repeating": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "0.0.1", + "bundled": true + }, + "require-directory": { + "version": "2.1.1", + "bundled": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true + }, + "resolve": { + "version": "1.8.1", + "bundled": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "bundled": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "bundled": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "bundled": true + }, + "resolve-url": { + "version": "0.2.1", + "bundled": true + }, + "responselike": { + "version": "1.0.2", + "bundled": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "bundled": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "bundled": true + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "requires": { + "glob": "^7.0.5" + } + }, + "ripemd160": { + "version": "2.0.2", + "bundled": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.3.0", + "bundled": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "bundled": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "5.5.11", + "bundled": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true + }, + "safe-regex": { + "version": "1.1.0", + "bundled": true, + "requires": { + "ret": "~0.1.10" + } + }, + "sax": { + "version": "1.2.4", + "bundled": true + }, + "schema-utils": { + "version": "0.4.5", + "bundled": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + }, + "scoped-regex": { + "version": "1.0.0", + "bundled": true + }, + "semver": { + "version": "5.5.0", + "bundled": true + }, + "send": { + "version": "0.16.2", + "bundled": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "serialize-javascript": { + "version": "1.5.0", + "bundled": true + }, + "serve-static": { + "version": "1.13.2", + "bundled": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "bundled": true + }, + "set-value": { + "version": "2.0.0", + "bundled": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "bundled": true + }, + "setprototypeof": { + "version": "1.1.0", + "bundled": true + }, + "sha.js": { + "version": "2.4.11", + "bundled": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true + }, + "shell-quote": { + "version": "1.6.1", + "bundled": true, + "requires": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, + "shelljs": { + "version": "0.7.8", + "bundled": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "should": { + "version": "5.2.0", + "bundled": true, + "requires": { + "should-equal": "0.3.1", + "should-format": "0.0.7", + "should-type": "0.0.4" + } + }, + "should-equal": { + "version": "0.3.1", + "bundled": true, + "requires": { + "should-type": "0.0.4" + } + }, + "should-format": { + "version": "0.0.7", + "bundled": true, + "requires": { + "should-type": "0.0.4" + } + }, + "should-type": { + "version": "0.0.4", + "bundled": true + }, + "shx": { + "version": "0.2.2", + "bundled": true, + "requires": { + "es6-object-assign": "^1.0.3", + "minimist": "^1.2.0", + "shelljs": "^0.7.3" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + } + } + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "slash": { + "version": "1.0.0", + "bundled": true + }, + "slice-ansi": { + "version": "0.0.4", + "bundled": true + }, + "slide": { + "version": "1.1.6", + "bundled": true + }, + "snapdragon": { + "version": "0.8.2", + "bundled": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "bundled": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "bundled": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sort-keys": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.0", + "bundled": true + }, + "source-map": { + "version": "0.6.1", + "bundled": true + }, + "source-map-resolve": { + "version": "0.5.2", + "bundled": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "bundled": true, + "requires": { + "source-map": "^0.5.6" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "bundled": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "bundled": true + }, + "spdx-correct": { + "version": "3.0.0", + "bundled": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "bundled": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "bundled": true + }, + "split": { + "version": "0.3.3", + "bundled": true, + "requires": { + "through": "2" + } + }, + "split-string": { + "version": "3.1.0", + "bundled": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "bundled": true + }, + "ssri": { + "version": "5.3.0", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "static-extend": { + "version": "0.1.2", + "bundled": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.4.0", + "bundled": true + }, + "stream-browserify": { + "version": "2.0.1", + "bundled": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-combiner": { + "version": "0.0.4", + "bundled": true, + "requires": { + "duplexer": "~0.1.1" + } + }, + "stream-each": { + "version": "1.2.2", + "bundled": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "bundled": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "bundled": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "bundled": true + }, + "string-template": { + "version": "0.2.1", + "bundled": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.padend": { + "version": "3.0.0", + "bundled": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.4.3", + "function-bind": "^1.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "bundled": true + }, + "strip-bom-stream": { + "version": "2.0.0", + "bundled": true, + "requires": { + "first-chunk-stream": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true + }, + "strip-indent": { + "version": "2.0.0", + "bundled": true + }, + "supports-color": { + "version": "5.4.0", + "bundled": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-observable": { + "version": "1.0.1", + "bundled": true + }, + "tapable": { + "version": "1.0.0", + "bundled": true + }, + "temp": { + "version": "0.8.3", + "bundled": true, + "requires": { + "os-tmpdir": "^1.0.0", + "rimraf": "~2.2.6" + }, + "dependencies": { + "rimraf": { + "version": "2.2.8", + "bundled": true + } + } + }, + "text-table": { + "version": "0.2.0", + "bundled": true + }, + "textextensions": { + "version": "2.2.0", + "bundled": true + }, + "through": { + "version": "2.3.8", + "bundled": true + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "timed-out": { + "version": "4.0.1", + "bundled": true + }, + "timers-browserify": { + "version": "2.0.10", + "bundled": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.33", + "bundled": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "bundled": true + }, + "to-fast-properties": { + "version": "1.0.3", + "bundled": true + }, + "to-object-path": { + "version": "0.3.0", + "bundled": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "bundled": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tough-cookie": { + "version": "2.4.3", + "bundled": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + }, + "trim-newlines": { + "version": "2.0.0", + "bundled": true + }, + "trim-right": { + "version": "1.0.1", + "bundled": true + }, + "ts-loader": { + "version": "4.4.2", + "bundled": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^3.1.4", + "semver": "^5.0.1" + } + }, + "ts-node": { + "version": "7.0.0", + "bundled": true, + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "source-map-support": { + "version": "0.5.6", + "bundled": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, + "tslib": { + "version": "1.9.3", + "bundled": true + }, + "tslint": { + "version": "5.10.0", + "bundled": true, + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.12.1" + } + }, + "tsutils": { + "version": "2.27.2", + "bundled": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "bundled": true + }, + "type-is": { + "version": "1.6.16", + "bundled": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "bundled": true + }, + "typescript": { + "version": "3.0.1", + "bundled": true + }, + "uglify-es": { + "version": "3.3.9", + "bundled": true, + "requires": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "bundled": true + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "1.2.7", + "bundled": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.5", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + } + }, + "ultron": { + "version": "1.1.1", + "bundled": true + }, + "underscore": { + "version": "1.6.0", + "bundled": true + }, + "union-value": { + "version": "1.0.0", + "bundled": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "bundled": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unique-filename": { + "version": "1.1.0", + "bundled": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "bundled": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unpipe": { + "version": "1.0.0", + "bundled": true + }, + "unset-value": { + "version": "1.0.0", + "bundled": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "bundled": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "bundled": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "bundled": true + } + } + }, + "untildify": { + "version": "3.0.3", + "bundled": true + }, + "upath": { + "version": "1.1.0", + "bundled": true + }, + "uri-js": { + "version": "4.2.2", + "bundled": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "bundled": true + } + } + }, + "urix": { + "version": "0.1.0", + "bundled": true + }, + "url": { + "version": "0.11.0", + "bundled": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "bundled": true + } + } + }, + "url-join": { + "version": "4.0.0", + "bundled": true + }, + "url-parse-lax": { + "version": "3.0.0", + "bundled": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, + "url-to-options": { + "version": "1.0.1", + "bundled": true + }, + "use": { + "version": "3.1.1", + "bundled": true + }, + "util": { + "version": "0.10.4", + "bundled": true, + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "utils-merge": { + "version": "1.0.1", + "bundled": true + }, + "uuid": { + "version": "3.3.2", + "bundled": true + }, + "v8-compile-cache": { + "version": "2.0.0", + "bundled": true + }, + "validate-npm-package-license": { + "version": "3.0.3", + "bundled": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "bundled": true + }, + "vinyl": { + "version": "1.2.0", + "bundled": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-file": { + "version": "2.0.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.3.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^2.0.0", + "vinyl": "^1.1.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "bundled": true + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "vm-browserify": { + "version": "0.0.4", + "bundled": true, + "requires": { + "indexof": "0.0.1" + } + }, + "watchpack": { + "version": "1.6.0", + "bundled": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "webpack": { + "version": "4.16.1", + "bundled": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-module-context": "1.5.13", + "@webassemblyjs/wasm-edit": "1.5.13", + "@webassemblyjs/wasm-opt": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "acorn": "^5.6.2", + "acorn-dynamic-import": "^3.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.0.0", + "uglifyjs-webpack-plugin": "^1.2.4", + "watchpack": "^1.5.0", + "webpack-sources": "^1.0.1" + } + }, + "webpack-addons": { + "version": "1.1.5", + "bundled": true, + "requires": { + "jscodeshift": "^0.4.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "bundled": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "bundled": true + }, + "ast-types": { + "version": "0.10.1", + "bundled": true + }, + "braces": { + "version": "1.8.5", + "bundled": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "bundled": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "bundled": true + }, + "is-glob": { + "version": "2.0.1", + "bundled": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "jscodeshift": { + "version": "0.4.1", + "bundled": true, + "requires": { + "async": "^1.5.0", + "babel-plugin-transform-flow-strip-types": "^6.8.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-stage-1": "^6.5.0", + "babel-register": "^6.9.0", + "babylon": "^6.17.3", + "colors": "^1.1.2", + "flow-parser": "^0.*", + "lodash": "^4.13.1", + "micromatch": "^2.3.7", + "node-dir": "0.1.8", + "nomnom": "^1.8.1", + "recast": "^0.12.5", + "temp": "^0.8.1", + "write-file-atomic": "^1.2.0" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "bundled": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "recast": { + "version": "0.12.9", + "bundled": true, + "requires": { + "ast-types": "0.10.1", + "core-js": "^2.4.1", + "esprima": "~4.0.0", + "private": "~0.1.5", + "source-map": "~0.6.1" + } + } + } + }, + "webpack-cli": { + "version": "2.1.5", + "bundled": true, + "requires": { + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "diff": "^3.5.0", + "enhanced-resolve": "^4.0.0", + "envinfo": "^5.7.0", + "glob-all": "^3.1.0", + "global-modules": "^1.0.0", + "got": "^8.3.1", + "import-local": "^1.0.0", + "inquirer": "^5.2.0", + "interpret": "^1.1.0", + "jscodeshift": "^0.5.0", + "listr": "^0.14.1", + "loader-utils": "^1.1.0", + "lodash": "^4.17.10", + "log-symbols": "^2.2.0", + "mkdirp": "^0.5.1", + "p-each-series": "^1.0.0", + "p-lazy": "^1.0.0", + "prettier": "^1.12.1", + "supports-color": "^5.4.0", + "v8-compile-cache": "^2.0.0", + "webpack-addons": "^1.1.5", + "yargs": "^11.1.0", + "yeoman-environment": "^2.1.1", + "yeoman-generator": "^2.0.5" + } + }, + "webpack-dev-middleware": { + "version": "3.1.3", + "bundled": true, + "requires": { + "loud-rejection": "^1.6.0", + "memory-fs": "~0.4.1", + "mime": "^2.1.0", + "path-is-absolute": "^1.0.0", + "range-parser": "^1.0.3", + "url-join": "^4.0.0", + "webpack-log": "^1.0.1" + }, + "dependencies": { + "mime": { + "version": "2.3.1", + "bundled": true + } + } + }, + "webpack-log": { + "version": "1.2.0", + "bundled": true, + "requires": { + "chalk": "^2.1.0", + "log-symbols": "^2.1.0", + "loglevelnext": "^1.0.1", + "uuid": "^3.1.0" + } + }, + "webpack-sources": { + "version": "1.1.0", + "bundled": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "which": { + "version": "1.3.1", + "bundled": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true + }, + "worker-farm": { + "version": "1.6.0", + "bundled": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" + } + }, + "ws": { + "version": "3.3.3", + "bundled": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "xml2js": { + "version": "0.4.19", + "bundled": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "bundled": true + }, + "xtend": { + "version": "4.0.1", + "bundled": true + }, + "y18n": { + "version": "4.0.0", + "bundled": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true + }, + "yargs": { + "version": "11.1.0", + "bundled": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + }, + "dependencies": { + "y18n": { + "version": "3.2.1", + "bundled": true + } + } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "requires": { + "camelcase": "^4.1.0" + } + }, + "yarn": { + "version": "1.7.0", + "bundled": true + }, + "yeoman-environment": { + "version": "2.3.0", + "bundled": true, + "requires": { + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^3.1.0", + "diff": "^3.3.1", + "escape-string-regexp": "^1.0.2", + "globby": "^8.0.1", + "grouped-queue": "^0.3.3", + "inquirer": "^5.2.0", + "is-scoped": "^1.0.0", + "lodash": "^4.17.10", + "log-symbols": "^2.1.0", + "mem-fs": "^1.1.0", + "strip-ansi": "^4.0.0", + "text-table": "^0.2.0", + "untildify": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "yeoman-generator": { + "version": "2.0.5", + "bundled": true, + "requires": { + "async": "^2.6.0", + "chalk": "^2.3.0", + "cli-table": "^0.3.1", + "cross-spawn": "^6.0.5", + "dargs": "^5.1.0", + "dateformat": "^3.0.3", + "debug": "^3.1.0", + "detect-conflict": "^1.0.0", + "error": "^7.0.2", + "find-up": "^2.1.0", + "github-username": "^4.0.0", + "istextorbinary": "^2.2.1", + "lodash": "^4.17.10", + "make-dir": "^1.1.0", + "mem-fs-editor": "^4.0.0", + "minimist": "^1.2.0", + "pretty-bytes": "^4.0.2", + "read-chunk": "^2.1.0", + "read-pkg-up": "^3.0.0", + "rimraf": "^2.6.2", + "run-async": "^2.0.0", + "shelljs": "^0.8.0", + "text-table": "^0.2.0", + "through2": "^2.0.0", + "yeoman-environment": "^2.0.5" + }, + "dependencies": { + "async": { + "version": "2.6.1", + "bundled": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "shelljs": { + "version": "0.8.2", + "bundled": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + } } + }, + "yn": { + "version": "2.0.0", + "bundled": true } } }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", - "dev": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "ms-rest-js": { - "version": "0.19.383", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.19.383.tgz", - "integrity": "sha512-gk182QGu3o4+YqKEQLfl9t5LijhYyPlq0XkaWca6XI3Y+Efp371t+keaekGVHcXP2HcF+KR1hgkCGJmJckfdcQ==", - "requires": { - "@types/express": "^4.11.1", - "@types/form-data": "^2.2.1", - "@types/node": "^9.4.6", - "@types/uuid": "^3.4.3", - "axios": "^0.18.0", - "form-data": "^2.3.2", - "isomorphic-xml2js": "^0.1.3", - "tough-cookie": "^2.4.3", - "tslib": "^1.9.2", - "uuid": "^3.2.1" - } - }, "nan": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", @@ -3014,6 +9571,14 @@ "url": "^0.11.0", "util": "^0.10.3", "vm-browserify": "0.0.4" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } } }, "normalize-package-data": { @@ -5377,11 +11942,6 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, - "psl": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", - "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" - }, "public-encrypt": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", @@ -5396,9 +11956,10 @@ } }, "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "querystring": { "version": "0.2.0", @@ -5632,11 +12193,6 @@ "ret": "~0.1.10" } }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, "semver": { "version": "5.5.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", @@ -6208,15 +12764,6 @@ "repeat-string": "^1.6.1" } }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -6460,14 +13007,6 @@ "dev": true, "requires": { "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - } } }, "urix": { @@ -6515,11 +13054,6 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -6671,20 +13205,6 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" - } - }, - "xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" - }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", diff --git a/package.json b/package.json index a829377bd184..fd8c06083f1c 100644 --- a/package.json +++ b/package.json @@ -25,12 +25,12 @@ "autorest", "clientruntime" ], - "main": "./dist/lib/msRestAzure.js", + "main": "./lib/msRestAzure.ts", "browser": "./es/lib/msRestAzure.js", "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.19.383", + "ms-rest-js": "file:C:/Users/daschult/Sources/ms-rest-js", "tslib": "^1.9.2" }, "devDependencies": { diff --git a/test/azureServiceClientTests.ts b/test/azureServiceClientTests.ts index 3213d0188172..eebdce528a92 100644 --- a/test/azureServiceClientTests.ts +++ b/test/azureServiceClientTests.ts @@ -6,6 +6,7 @@ import { HttpHeaders, HttpOperationResponse, RequestOptionsBase, RestError, Toke import { AzureServiceClient, AzureServiceClientOptions, updateOptionsWithDefaultValues } from "../lib/azureServiceClient"; import * as msAssert from "./msAssert"; import { LROPoller } from "../lib/lroPoller"; +import { CloudErrorMapper } from "../lib/cloudError"; describe("AzureServiceClient", () => { describe("constructor", () => { @@ -32,7 +33,7 @@ describe("AzureServiceClient", () => { }); describe("sendLRORequest()", () => { - it("should include custom headers", async () => { + it("with 201 (azure-asyncoperation header), 200 (status: Succeeded), and 200 (resource)", async () => { const serviceClient: AzureServiceClient = createServiceClient([ { status: 201, @@ -49,7 +50,7 @@ describe("AzureServiceClient", () => { { status: 200, body: { - a: "A" + date: "2015-01-01T00:00:00.000Z" } } ]); @@ -68,7 +69,28 @@ describe("AzureServiceClient", () => { baseUrl: "https://fake.azure.com/", path: "longRunningOperation", responses: { - 200: {} + 200: { + bodyMapper: { + serializedName: "lroFinalResponseType", + required: true, + type: { + name: "Composite", + modelProperties: { + date: { + serializedName: "date", + required: true, + type: { + name: "DateTime" + } + } + } + } + } + }, + 201: {}, + default: { + bodyMapper: CloudErrorMapper + } }, serializer: new Serializer() }; @@ -91,10 +113,230 @@ describe("AzureServiceClient", () => { const operationResponse: HttpOperationResponse = (await lroPoller.getOperationResponse()) as HttpOperationResponse; assert(operationResponse); - assert.deepEqual(operationResponse.parsedBody, { a: "A" }); + assert.deepEqual(operationResponse.parsedBody, { date: new Date("2015-01-01") }); assert.strictEqual(lroPoller.getMostRecentResponse().request.url, "https://fake.azure.com/longRunningOperation"); assert.strictEqual(lroPoller.getMostRecentResponse().request.headers.get("x-ms-client-request-id"), requestId); }); + + it("with 201 (location header) and 200 (resource)", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 201, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 200, + body: { + date: "2015-01-02T00:00:00.000Z" + } + } + ]); + + const operationSpec: OperationSpec = { + httpMethod: "PUT", + baseUrl: "https://fake.azure.com/", + path: "longRunningOperation", + responses: { + 200: { + bodyMapper: { + serializedName: "lroFinalResponseType", + required: true, + type: { + name: "Composite", + modelProperties: { + date: { + serializedName: "date", + required: true, + type: { + name: "DateTime" + } + } + } + } + } + }, + 201: {}, + default: { + bodyMapper: CloudErrorMapper + } + }, + serializer: new Serializer() + }; + + const lroPoller: LROPoller = await serviceClient.sendLRORequest({}, operationSpec); + assert.strictEqual(lroPoller.isFinished(), false); + assert.strictEqual(lroPoller.isFinalStatusAcceptable(), undefined); + assert.strictEqual(lroPoller.getOperationStatus(), "InProgress"); + assert.strictEqual(await lroPoller.getOperationResponse(), undefined); + assert.strictEqual(lroPoller.getMostRecentResponse().request.url, "https://fake.azure.com/longRunningOperation"); + + assert.strictEqual(await lroPoller.poll(), "Succeeded"); + + assert.strictEqual(lroPoller.isFinished(), true); + assert.strictEqual(lroPoller.isFinalStatusAcceptable(), true); + assert.strictEqual(lroPoller.getOperationStatus(), "Succeeded"); + assert.strictEqual(lroPoller.getMostRecentResponse().request.url, "https://fake.azure.com/longRunningOperation2"); + + const operationResponse: HttpOperationResponse = (await lroPoller.getOperationResponse()) as HttpOperationResponse; + assert(operationResponse); + assert.deepEqual(operationResponse.parsedBody, { date: new Date("2015-01-02") }); + assert.strictEqual(lroPoller.getMostRecentResponse().request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("with 200 operation response and 202 (location header), 202 (no headers or body), and 200 (status: Succeeded, resource)", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 202 + }, + { + status: 200, + body: { + date: "2015-01-03T00:00:00.000Z" + } + } + ]); + + const operationSpec: OperationSpec = { + httpMethod: "PUT", + baseUrl: "https://fake.azure.com/", + path: "longRunningOperation", + responses: { + 200: { + bodyMapper: { + serializedName: "lroFinalResponseType", + required: true, + type: { + name: "Composite", + modelProperties: { + date: { + serializedName: "date", + required: true, + type: { + name: "DateTime" + } + } + } + } + } + }, + 202: {}, + default: { + bodyMapper: CloudErrorMapper + } + }, + serializer: new Serializer() + }; + + const lroPoller: LROPoller = await serviceClient.sendLRORequest({}, operationSpec); + assert.strictEqual(lroPoller.isFinished(), false); + assert.strictEqual(lroPoller.isFinalStatusAcceptable(), undefined); + assert.strictEqual(lroPoller.getOperationStatus(), "InProgress"); + assert.strictEqual(await lroPoller.getOperationResponse(), undefined); + assert.strictEqual(lroPoller.getMostRecentResponse().request.url, "https://fake.azure.com/longRunningOperation"); + + assert.strictEqual(await lroPoller.poll(), "InProgress"); + + assert.strictEqual(lroPoller.isFinished(), false); + assert.strictEqual(lroPoller.isFinalStatusAcceptable(), undefined); + assert.strictEqual(lroPoller.getOperationStatus(), "InProgress"); + assert.strictEqual(lroPoller.getMostRecentResponse().request.url, "https://fake.azure.com/longRunningOperation2"); + + assert.strictEqual(await lroPoller.poll(), "Succeeded"); + + assert.strictEqual(lroPoller.isFinished(), true); + assert.strictEqual(lroPoller.isFinalStatusAcceptable(), true); + assert.strictEqual(lroPoller.getOperationStatus(), "Succeeded"); + assert.strictEqual(lroPoller.getMostRecentResponse().request.url, "https://fake.azure.com/longRunningOperation2"); + + const operationResponse: HttpOperationResponse = (await lroPoller.getOperationResponse()) as HttpOperationResponse; + assert(operationResponse); + assert.deepEqual(operationResponse.parsedBody, { date: new Date("2015-01-03") }); + assert.strictEqual(lroPoller.getMostRecentResponse().request.url, "https://fake.azure.com/longRunningOperation2"); + }); + + it("with 202 operation response and 202 (location header), 202 (no headers or body), and 200 (status: Succeeded, resource)", async () => { + const serviceClient: AzureServiceClient = createServiceClient([ + { + status: 202, + headers: new HttpHeaders({ + "location": "https://fake.azure.com/longRunningOperation2" + }) + }, + { + status: 202 + }, + { + status: 200, + body: { + date: "2015-01-03T00:00:00.000Z" + } + } + ]); + + const operationSpec: OperationSpec = { + httpMethod: "PUT", + baseUrl: "https://fake.azure.com/", + path: "longRunningOperation", + responses: { + 202: { + bodyMapper: { + serializedName: "lroFinalResponseType", + required: true, + type: { + name: "Composite", + modelProperties: { + date: { + serializedName: "date", + required: true, + type: { + name: "DateTime" + } + } + } + } + } + }, + default: { + bodyMapper: CloudErrorMapper + } + }, + serializer: new Serializer() + }; + + const lroPoller: LROPoller = await serviceClient.sendLRORequest({}, operationSpec); + assert.strictEqual(lroPoller.isFinished(), false); + assert.strictEqual(lroPoller.isFinalStatusAcceptable(), undefined); + assert.strictEqual(lroPoller.getOperationStatus(), "InProgress"); + assert.strictEqual(await lroPoller.getOperationResponse(), undefined); + assert.strictEqual(lroPoller.getMostRecentResponse().request.url, "https://fake.azure.com/longRunningOperation"); + + assert.strictEqual(await lroPoller.poll(), "InProgress"); + + assert.strictEqual(lroPoller.isFinished(), false); + assert.strictEqual(lroPoller.isFinalStatusAcceptable(), undefined); + assert.strictEqual(lroPoller.getOperationStatus(), "InProgress"); + assert.strictEqual(lroPoller.getMostRecentResponse().request.url, "https://fake.azure.com/longRunningOperation2"); + + assert.strictEqual(await lroPoller.poll(), "Succeeded"); + + assert.strictEqual(lroPoller.isFinished(), true); + assert.strictEqual(lroPoller.isFinalStatusAcceptable(), true); + assert.strictEqual(lroPoller.getOperationStatus(), "Succeeded"); + assert.strictEqual(lroPoller.getMostRecentResponse().request.url, "https://fake.azure.com/longRunningOperation2"); + + const operationResponse: HttpOperationResponse = (await lroPoller.getOperationResponse()) as HttpOperationResponse; + assert(operationResponse); + assert.deepEqual(operationResponse.parsedBody, { date: new Date("2015-01-03") }); + assert.strictEqual(lroPoller.getMostRecentResponse().request.url, "https://fake.azure.com/longRunningOperation2"); + }); }); describe("sendLongRunningRequest(),", () => { From 2f0a6701699cdd540cffbccc76f86e121a8e66d0 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Fri, 24 Aug 2018 14:15:39 -0700 Subject: [PATCH 093/289] Fix case-sensitivity test failure --- test/credentials/cognitiveServicesCredentialsTests.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/credentials/cognitiveServicesCredentialsTests.ts b/test/credentials/cognitiveServicesCredentialsTests.ts index 9bada6df081a..12bf4ce29275 100644 --- a/test/credentials/cognitiveServicesCredentialsTests.ts +++ b/test/credentials/cognitiveServicesCredentialsTests.ts @@ -35,8 +35,8 @@ describe("CognitiveServicesCredentials", () => { const signedHttpRequest: WebResource = await credentials.signRequest(httpRequest); assert.strictEqual(signedHttpRequest, httpRequest); assert.deepEqual(signedHttpRequest.headers.rawHeaders(), { - "Ocp-Apim-Subscription-Key": "fake-subscription-key", - "X-BingApis-SDK-Client": "node-SDK" + "ocp-apim-subscription-key": "fake-subscription-key", + "x-bingapis-sdk-client": "node-SDK" }); }); }); From bbcea90a7e413078d074477794b034f2011f3e29 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Fri, 24 Aug 2018 15:26:06 -0700 Subject: [PATCH 094/289] Fix getProvisioningState() and bump minor version --- lib/lroPollStrategy.ts | 10 +- package-lock.json | 7340 +++------------------------------------- package.json | 6 +- 3 files changed, 413 insertions(+), 6943 deletions(-) diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts index c6b2cc7e8814..47d0a5ca6f7d 100644 --- a/lib/lroPollStrategy.ts +++ b/lib/lroPollStrategy.ts @@ -194,7 +194,15 @@ export function getDelayInSeconds(azureServiceClient: AzureServiceClient, previo } function getProvisioningState(responseBody: any): LongRunningOperationStates | undefined { - return responseBody && responseBody.properties && responseBody.properties.provisioningState; + let result: LongRunningOperationStates | undefined; + if (responseBody) { + if (responseBody.provisioningState) { + result = responseBody.provisioningState; + } else if (responseBody.properties) { + result = responseBody.properties.provisioningState; + } + } + return result; } function getResponseBody(response: HttpOperationResponse): any { diff --git a/package-lock.json b/package-lock.json index d45ff576524b..cedbc70c0a24 100644 --- a/package-lock.json +++ b/package-lock.json @@ -113,18 +113,100 @@ "to-fast-properties": "^2.0.0" } }, + "@types/body-parser": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz", + "integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.32", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", + "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==", + "requires": { + "@types/node": "*" + } + }, + "@types/events": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", + "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==" + }, + "@types/express": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.0.tgz", + "integrity": "sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.0.tgz", + "integrity": "sha512-lTeoCu5NxJU4OD9moCgm0ESZzweAx0YqsAcab6OB0EB3+As1OaHtKnaGJvcngQxYsi9UNv0abn4/DRavrRxt4w==", + "requires": { + "@types/events": "*", + "@types/node": "*", + "@types/range-parser": "*" + } + }, + "@types/form-data": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", + "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/mime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz", + "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==" + }, "@types/mocha": { "version": "5.2.5", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.5.tgz", "integrity": "sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww==", "dev": true }, + "@types/node": { + "version": "9.6.29", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.29.tgz", + "integrity": "sha512-KtYsg4/OzMV8CIgwT0kGwHn2J5DNd3w7hY6/AYwIfxRhrN0isNFlT5nN+pgvcMUkiba2+A3D6Ig0onBGgSj18A==" + }, + "@types/range-parser": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.2.tgz", + "integrity": "sha512-HtKGu+qG1NPvYe1z7ezLsyIaXYyi8SoAVqWDZgDQ8dLrsZvSzUNCwZyfX33uhWxL/SU0ZDQZ3nwZ0nimt507Kw==" + }, + "@types/serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==", + "requires": { + "@types/express-serve-static-core": "*", + "@types/mime": "*" + } + }, "@types/should": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/@types/should/-/should-8.3.0.tgz", "integrity": "sha1-4rRgJDaF2+N3GC857zjTf00Veto=", "dev": true }, + "@types/uuid": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.3.tgz", + "integrity": "sha512-5fRLCYhLtDb3hMWqQyH10qtF+Ud2JnNCXTCZ+9ktNdCcgslcuXkDTkFcJNk++MT29yDntDnlF1+jD+uVGumsbw==", + "requires": { + "@types/node": "*" + } + }, "acorn": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.2.tgz", @@ -317,12 +399,26 @@ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, + "axios": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", + "requires": { + "follow-redirects": "^1.3.0", + "is-buffer": "^1.1.5" + } + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -749,6 +845,14 @@ "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", "dev": true }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "~1.0.0" + } + }, "commander": { "version": "2.15.1", "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", @@ -882,7 +986,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -955,6 +1058,11 @@ } } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", @@ -1440,12 +1548,30 @@ "locate-path": "^2.0.0" } }, + "follow-redirects": { + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.7.tgz", + "integrity": "sha512-NONJVIFiX7Z8k2WxfqBjtwqMifx7X42ORLFrOZ2LTKGj71G3C0kfdyTqGqr8fx5zSX6Foo/D95dgGWbPUiwnew==", + "requires": { + "debug": "^3.1.0" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -2254,8 +2380,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-builtin-module": { "version": "1.0.0", @@ -2561,6935 +2686,235 @@ "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } - }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-error": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz", - "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==", - "dev": true - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", - "dev": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "ms-rest-js": { - "version": "file:../ms-rest-js", - "requires": { - "@types/express": "^4.11.1", - "@types/form-data": "^2.2.1", - "@types/node": "^9.4.6", - "@types/uuid": "^3.4.3", - "axios": "^0.18.0", - "form-data": "^2.3.2", - "tough-cookie": "^2.4.3", - "tslib": "^1.9.2", - "uuid": "^3.2.1", - "xml2js": "^0.4.19" - }, - "dependencies": { - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "bundled": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.0", - "bundled": true - }, - "@samverschueren/stream-to-observable": { - "version": "0.3.0", - "bundled": true, - "requires": { - "any-observable": "^0.3.0" - } - }, - "@sindresorhus/is": { - "version": "0.7.0", - "bundled": true - }, - "@types/body-parser": { - "version": "1.17.0", - "bundled": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.32", - "bundled": true, - "requires": { - "@types/node": "*" - } - }, - "@types/core-js": { - "version": "0.9.46", - "bundled": true - }, - "@types/events": { - "version": "1.2.0", - "bundled": true - }, - "@types/express": { - "version": "4.16.0", - "bundled": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.16.0", - "bundled": true, - "requires": { - "@types/events": "*", - "@types/node": "*", - "@types/range-parser": "*" - } - }, - "@types/form-data": { - "version": "2.2.1", - "bundled": true, - "requires": { - "@types/node": "*" - } - }, - "@types/glob": { - "version": "5.0.35", - "bundled": true, - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/loglevel": { - "version": "1.5.3", - "bundled": true - }, - "@types/memory-fs": { - "version": "0.3.1", - "bundled": true, - "requires": { - "@types/node": "*" - } - }, - "@types/mime": { - "version": "2.0.0", - "bundled": true - }, - "@types/minimatch": { - "version": "3.0.3", - "bundled": true - }, - "@types/mkdirp": { - "version": "0.3.29", - "bundled": true - }, - "@types/mocha": { - "version": "5.2.4", - "bundled": true - }, - "@types/node": { - "version": "9.6.23", - "bundled": true - }, - "@types/range-parser": { - "version": "1.2.2", - "bundled": true - }, - "@types/rimraf": { - "version": "0.0.28", - "bundled": true - }, - "@types/serve-static": { - "version": "1.13.2", - "bundled": true, - "requires": { - "@types/express-serve-static-core": "*", - "@types/mime": "*" - } - }, - "@types/should": { - "version": "8.3.0", - "bundled": true - }, - "@types/tapable": { - "version": "1.0.4", - "bundled": true - }, - "@types/tough-cookie": { - "version": "2.3.3", - "bundled": true - }, - "@types/uglify-js": { - "version": "3.0.3", - "bundled": true, - "requires": { - "source-map": "^0.6.1" - } - }, - "@types/uuid": { - "version": "3.4.3", - "bundled": true, - "requires": { - "@types/node": "*" - } - }, - "@types/webpack": { - "version": "4.4.6", - "bundled": true, - "requires": { - "@types/node": "*", - "@types/tapable": "*", - "@types/uglify-js": "*", - "source-map": "^0.6.0" - } - }, - "@types/webpack-dev-middleware": { - "version": "2.0.2", - "bundled": true, - "requires": { - "@types/connect": "*", - "@types/loglevel": "*", - "@types/memory-fs": "*", - "@types/webpack": "*" - } - }, - "@types/xml2js": { - "version": "0.4.3", - "bundled": true, - "requires": { - "@types/events": "*", - "@types/node": "*" - } - }, - "@webassemblyjs/ast": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/wast-parser": "1.5.13", - "debug": "^3.1.0", - "mamacro": "^0.0.3" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.5.13", - "bundled": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.5.13", - "bundled": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.5.13", - "bundled": true, - "requires": { - "debug": "^3.1.0" - } - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/wast-printer": "1.5.13" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.5.13", - "bundled": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.5.13", - "bundled": true, - "requires": { - "debug": "^3.1.0", - "mamacro": "^0.0.3" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.5.13", - "bundled": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-buffer": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/wasm-gen": "1.5.13", - "debug": "^3.1.0" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.5.13", - "bundled": true, - "requires": { - "ieee754": "^1.1.11" - } - }, - "@webassemblyjs/leb128": { - "version": "1.5.13", - "bundled": true, - "requires": { - "long": "4.0.0" - }, - "dependencies": { - "long": { - "version": "4.0.0", - "bundled": true - } - } - }, - "@webassemblyjs/utf8": { - "version": "1.5.13", - "bundled": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-buffer": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/helper-wasm-section": "1.5.13", - "@webassemblyjs/wasm-gen": "1.5.13", - "@webassemblyjs/wasm-opt": "1.5.13", - "@webassemblyjs/wasm-parser": "1.5.13", - "@webassemblyjs/wast-printer": "1.5.13", - "debug": "^3.1.0" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/ieee754": "1.5.13", - "@webassemblyjs/leb128": "1.5.13", - "@webassemblyjs/utf8": "1.5.13" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-buffer": "1.5.13", - "@webassemblyjs/wasm-gen": "1.5.13", - "@webassemblyjs/wasm-parser": "1.5.13", - "debug": "^3.1.0" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-api-error": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/ieee754": "1.5.13", - "@webassemblyjs/leb128": "1.5.13", - "@webassemblyjs/utf8": "1.5.13" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/floating-point-hex-parser": "1.5.13", - "@webassemblyjs/helper-api-error": "1.5.13", - "@webassemblyjs/helper-code-frame": "1.5.13", - "@webassemblyjs/helper-fsm": "1.5.13", - "long": "^3.2.0", - "mamacro": "^0.0.3" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.5.13", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/wast-parser": "1.5.13", - "long": "^3.2.0" - } - }, - "abortcontroller-polyfill": { - "version": "1.1.9", - "bundled": true - }, - "accepts": { - "version": "1.3.5", - "bundled": true, - "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" - } - }, - "acorn": { - "version": "5.7.1", - "bundled": true - }, - "acorn-dynamic-import": { - "version": "3.0.0", - "bundled": true, - "requires": { - "acorn": "^5.0.0" - } - }, - "ajv": { - "version": "6.5.2", - "bundled": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.1" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "bundled": true - }, - "ansi-escapes": { - "version": "3.1.0", - "bundled": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "ansi-styles": { - "version": "2.2.1", - "bundled": true - }, - "any-observable": { - "version": "0.3.0", - "bundled": true - }, - "anymatch": { - "version": "2.0.0", - "bundled": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "aproba": { - "version": "1.2.0", - "bundled": true - }, - "argparse": { - "version": "1.0.10", - "bundled": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "bundled": true - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true - }, - "arr-union": { - "version": "3.1.0", - "bundled": true - }, - "array-differ": { - "version": "1.0.0", - "bundled": true - }, - "array-filter": { - "version": "0.0.1", - "bundled": true - }, - "array-find-index": { - "version": "1.0.2", - "bundled": true - }, - "array-flatten": { - "version": "1.1.1", - "bundled": true - }, - "array-map": { - "version": "0.0.0", - "bundled": true - }, - "array-reduce": { - "version": "0.0.0", - "bundled": true - }, - "array-union": { - "version": "1.0.2", - "bundled": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "bundled": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true - }, - "asn1.js": { - "version": "4.10.1", - "bundled": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "bundled": true, - "requires": { - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "bundled": true - }, - "util": { - "version": "0.10.3", - "bundled": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assign-symbols": { - "version": "1.0.0", - "bundled": true - }, - "ast-types": { - "version": "0.11.5", - "bundled": true - }, - "async": { - "version": "1.5.2", - "bundled": true - }, - "async-each": { - "version": "1.0.1", - "bundled": true - }, - "async-limiter": { - "version": "1.0.0", - "bundled": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true - }, - "atob": { - "version": "2.1.1", - "bundled": true - }, - "axios": { - "version": "0.18.0", - "bundled": true, - "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "bundled": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "babel-core": { - "version": "6.26.3", - "bundled": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "source-map": { - "version": "0.5.7", - "bundled": true - } - } - }, - "babel-generator": { - "version": "6.26.1", - "bundled": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "bundled": true - }, - "source-map": { - "version": "0.5.7", - "bundled": true - } - } - }, - "babel-helper-bindify-decorators": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-define-map": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-explode-class": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-bindify-decorators": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-regex": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-async-generators": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-class-constructor-call": { - "version": "6.18.0", - "bundled": true - }, - "babel-plugin-syntax-class-properties": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-decorators": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-dynamic-import": { - "version": "6.18.0", - "bundled": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-export-extensions": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-flow": { - "version": "6.18.0", - "bundled": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "bundled": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "bundled": true - }, - "babel-plugin-transform-async-generator-functions": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-generators": "^6.5.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-class-constructor-call": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-syntax-class-constructor-call": "^6.18.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-class-properties": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-plugin-syntax-class-properties": "^6.8.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-decorators": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-explode-class": "^6.24.1", - "babel-plugin-syntax-decorators": "^6.13.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-define-map": "^6.24.1", - "babel-helper-function-name": "^6.24.1", - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-helper-replace-supers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "bundled": true, - "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-replace-supers": "^6.24.1", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-export-extensions": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-plugin-syntax-export-extensions": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-flow-strip-types": { - "version": "6.22.0", - "bundled": true, - "requires": { - "babel-plugin-syntax-flow": "^6.18.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.8.0", - "babel-runtime": "^6.26.0" - } - }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "bundled": true, - "requires": { - "regenerator-transform": "^0.10.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-polyfill": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "regenerator-runtime": "^0.10.5" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.10.5", - "bundled": true - } - } - }, - "babel-preset-env": { - "version": "1.7.0", - "bundled": true, - "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-to-generator": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.23.0", - "babel-plugin-transform-es2015-classes": "^6.23.0", - "babel-plugin-transform-es2015-computed-properties": "^6.22.0", - "babel-plugin-transform-es2015-destructuring": "^6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", - "babel-plugin-transform-es2015-for-of": "^6.23.0", - "babel-plugin-transform-es2015-function-name": "^6.22.0", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.22.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-umd": "^6.23.0", - "babel-plugin-transform-es2015-object-super": "^6.22.0", - "babel-plugin-transform-es2015-parameters": "^6.23.0", - "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", - "babel-plugin-transform-exponentiation-operator": "^6.22.0", - "babel-plugin-transform-regenerator": "^6.22.0", - "browserslist": "^3.2.6", - "invariant": "^2.2.2", - "semver": "^5.3.0" - } - }, - "babel-preset-es2015": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.24.1", - "babel-plugin-transform-es2015-classes": "^6.24.1", - "babel-plugin-transform-es2015-computed-properties": "^6.24.1", - "babel-plugin-transform-es2015-destructuring": "^6.22.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", - "babel-plugin-transform-es2015-for-of": "^6.22.0", - "babel-plugin-transform-es2015-function-name": "^6.24.1", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-umd": "^6.24.1", - "babel-plugin-transform-es2015-object-super": "^6.24.1", - "babel-plugin-transform-es2015-parameters": "^6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", - "babel-plugin-transform-regenerator": "^6.24.1" - } - }, - "babel-preset-stage-1": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-transform-class-constructor-call": "^6.24.1", - "babel-plugin-transform-export-extensions": "^6.22.0", - "babel-preset-stage-2": "^6.24.1" - } - }, - "babel-preset-stage-2": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-syntax-dynamic-import": "^6.18.0", - "babel-plugin-transform-class-properties": "^6.24.1", - "babel-plugin-transform-decorators": "^6.24.1", - "babel-preset-stage-3": "^6.24.1" - } - }, - "babel-preset-stage-3": { - "version": "6.24.1", - "bundled": true, - "requires": { - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-generator-functions": "^6.24.1", - "babel-plugin-transform-async-to-generator": "^6.24.1", - "babel-plugin-transform-exponentiation-operator": "^6.24.1", - "babel-plugin-transform-object-rest-spread": "^6.22.0" - } - }, - "babel-register": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - } - }, - "babel-runtime": { - "version": "6.26.0", - "bundled": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "babel-types": { - "version": "6.26.0", - "bundled": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "bundled": true - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "base": { - "version": "0.11.2", - "bundled": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.3.0", - "bundled": true - }, - "big.js": { - "version": "3.2.0", - "bundled": true - }, - "binary-extensions": { - "version": "1.11.0", - "bundled": true - }, - "binaryextensions": { - "version": "2.1.1", - "bundled": true - }, - "bluebird": { - "version": "3.5.1", - "bundled": true - }, - "bn.js": { - "version": "4.11.8", - "bundled": true - }, - "body-parser": { - "version": "1.18.2", - "bundled": true, - "requires": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.1", - "http-errors": "~1.6.2", - "iconv-lite": "0.4.19", - "on-finished": "~2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "~1.6.15" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "bundled": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "bundled": true - }, - "browser-stdout": { - "version": "1.3.1", - "bundled": true - }, - "browserify-aes": { - "version": "1.2.0", - "bundled": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "bundled": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "bundled": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "bundled": true - } - } - }, - "browserify-rsa": { - "version": "4.0.1", - "bundled": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "bundled": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "bundled": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "3.2.8", - "bundled": true, - "requires": { - "caniuse-lite": "^1.0.30000844", - "electron-to-chromium": "^1.3.47" - } - }, - "buffer": { - "version": "4.9.1", - "bundled": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.0", - "bundled": true - }, - "buffer-xor": { - "version": "1.0.3", - "bundled": true - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "bundled": true - }, - "bytes": { - "version": "3.0.0", - "bundled": true - }, - "cacache": { - "version": "10.0.4", - "bundled": true, - "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" - } - }, - "cache-base": { - "version": "1.0.1", - "bundled": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cacheable-request": { - "version": "2.1.4", - "bundled": true, - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.0", - "bundled": true - } - } - }, - "call-me-maybe": { - "version": "1.0.1", - "bundled": true - }, - "camelcase": { - "version": "4.1.0", - "bundled": true - }, - "camelcase-keys": { - "version": "4.2.0", - "bundled": true, - "requires": { - "camelcase": "^4.1.0", - "map-obj": "^2.0.0", - "quick-lru": "^1.0.0" - } - }, - "caniuse-lite": { - "version": "1.0.30000865", - "bundled": true - }, - "chalk": { - "version": "2.4.1", - "bundled": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "bundled": true, - "requires": { - "color-convert": "^1.9.0" - } - } - } - }, - "chardet": { - "version": "0.4.2", - "bundled": true - }, - "chokidar": { - "version": "2.0.4", - "bundled": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true - }, - "chrome-launcher": { - "version": "0.10.2", - "bundled": true, - "requires": { - "@types/core-js": "^0.9.41", - "@types/mkdirp": "^0.3.29", - "@types/node": "^9.3.0", - "@types/rimraf": "^0.0.28", - "is-wsl": "^1.1.0", - "lighthouse-logger": "^1.0.0", - "mkdirp": "0.5.1", - "rimraf": "^2.6.1" - } - }, - "chrome-remote-interface": { - "version": "0.25.7", - "bundled": true, - "requires": { - "commander": "2.11.x", - "ws": "3.3.x" - }, - "dependencies": { - "commander": { - "version": "2.11.0", - "bundled": true - } - } - }, - "chrome-trace-event": { - "version": "1.0.0", - "bundled": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "chrome-unmirror": { - "version": "0.1.0", - "bundled": true - }, - "cipher-base": { - "version": "1.0.4", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "bundled": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cli-cursor": { - "version": "2.1.0", - "bundled": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-spinners": { - "version": "0.1.2", - "bundled": true - }, - "cli-table": { - "version": "0.3.1", - "bundled": true, - "requires": { - "colors": "1.0.3" - }, - "dependencies": { - "colors": { - "version": "1.0.3", - "bundled": true - } - } - }, - "cli-truncate": { - "version": "0.2.1", - "bundled": true, - "requires": { - "slice-ansi": "0.0.4", - "string-width": "^1.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "cli-width": { - "version": "2.2.0", - "bundled": true - }, - "cliui": { - "version": "4.1.0", - "bundled": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "clone": { - "version": "1.0.4", - "bundled": true - }, - "clone-buffer": { - "version": "1.0.0", - "bundled": true - }, - "clone-response": { - "version": "1.0.2", - "bundled": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "clone-stats": { - "version": "0.0.1", - "bundled": true - }, - "cloneable-readable": { - "version": "1.1.2", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "collection-visit": { - "version": "1.0.0", - "bundled": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.2", - "bundled": true, - "requires": { - "color-name": "1.1.1" - } - }, - "color-name": { - "version": "1.1.1", - "bundled": true - }, - "colors": { - "version": "1.3.0", - "bundled": true - }, - "combined-stream": { - "version": "1.0.6", - "bundled": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.15.1", - "bundled": true - }, - "commondir": { - "version": "1.0.1", - "bundled": true - }, - "component-emitter": { - "version": "1.2.1", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "concat-stream": { - "version": "1.6.2", - "bundled": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "console-browserify": { - "version": "1.1.0", - "bundled": true, - "requires": { - "date-now": "^0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "bundled": true - }, - "content-disposition": { - "version": "0.5.2", - "bundled": true - }, - "content-type": { - "version": "1.0.4", - "bundled": true - }, - "convert-source-map": { - "version": "1.5.1", - "bundled": true - }, - "cookie": { - "version": "0.3.1", - "bundled": true - }, - "cookie-signature": { - "version": "1.0.6", - "bundled": true - }, - "copy-concurrently": { - "version": "1.0.5", - "bundled": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "bundled": true - }, - "core-js": { - "version": "2.5.7", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "create-ecdh": { - "version": "4.0.3", - "bundled": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "bundled": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "bundled": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "bundled": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "bundled": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "currently-unhandled": { - "version": "0.4.1", - "bundled": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "cyclist": { - "version": "0.2.2", - "bundled": true - }, - "d": { - "version": "1.0.0", - "bundled": true, - "requires": { - "es5-ext": "^0.10.9" - } - }, - "dargs": { - "version": "5.1.0", - "bundled": true - }, - "date-fns": { - "version": "1.29.0", - "bundled": true - }, - "date-now": { - "version": "0.1.4", - "bundled": true - }, - "dateformat": { - "version": "3.0.3", - "bundled": true - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "bundled": true - }, - "decamelize-keys": { - "version": "1.1.0", - "bundled": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "bundled": true - } - } - }, - "decode-uri-component": { - "version": "0.2.0", - "bundled": true - }, - "decompress-response": { - "version": "3.3.0", - "bundled": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-assign": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true - }, - "define-properties": { - "version": "1.1.2", - "bundled": true, - "requires": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" - } - }, - "define-property": { - "version": "2.0.2", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true - }, - "depd": { - "version": "1.1.2", - "bundled": true - }, - "des.js": { - "version": "1.0.0", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "bundled": true - }, - "detect-conflict": { - "version": "1.0.1", - "bundled": true - }, - "detect-indent": { - "version": "4.0.0", - "bundled": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "diff": { - "version": "3.5.0", - "bundled": true - }, - "diffie-hellman": { - "version": "5.0.3", - "bundled": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "dir-glob": { - "version": "2.0.0", - "bundled": true, - "requires": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" - } - }, - "domain-browser": { - "version": "1.2.0", - "bundled": true - }, - "duplexer": { - "version": "0.1.1", - "bundled": true - }, - "duplexer3": { - "version": "0.1.4", - "bundled": true - }, - "duplexify": { - "version": "3.6.0", - "bundled": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "editions": { - "version": "1.3.4", - "bundled": true - }, - "ee-first": { - "version": "1.1.1", - "bundled": true - }, - "ejs": { - "version": "2.6.1", - "bundled": true - }, - "electron-to-chromium": { - "version": "1.3.52", - "bundled": true - }, - "elegant-spinner": { - "version": "1.0.1", - "bundled": true - }, - "elliptic": { - "version": "6.4.0", - "bundled": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "emojis-list": { - "version": "2.1.0", - "bundled": true - }, - "encodeurl": { - "version": "1.0.2", - "bundled": true - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.1.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" - } - }, - "envinfo": { - "version": "5.10.0", - "bundled": true - }, - "errno": { - "version": "0.1.7", - "bundled": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error": { - "version": "7.0.2", - "bundled": true, - "requires": { - "string-template": "~0.2.1", - "xtend": "~4.0.0" - } - }, - "error-ex": { - "version": "1.3.2", - "bundled": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.12.0", - "bundled": true, - "requires": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" - } - }, - "es-to-primitive": { - "version": "1.1.1", - "bundled": true, - "requires": { - "is-callable": "^1.1.1", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.1" - } - }, - "es5-ext": { - "version": "0.10.45", - "bundled": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" - } - }, - "es6-iterator": { - "version": "2.0.3", - "bundled": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-object-assign": { - "version": "1.1.0", - "bundled": true - }, - "es6-symbol": { - "version": "3.1.1", - "bundled": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "escape-html": { - "version": "1.0.3", - "bundled": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true - }, - "eslint-scope": { - "version": "4.0.0", - "bundled": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "bundled": true - }, - "esrecurse": { - "version": "4.2.1", - "bundled": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.2.0", - "bundled": true - }, - "esutils": { - "version": "2.0.2", - "bundled": true - }, - "etag": { - "version": "1.8.1", - "bundled": true - }, - "event-stream": { - "version": "3.3.4", - "bundled": true, - "requires": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", - "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" - } - }, - "events": { - "version": "1.1.1", - "bundled": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "bundled": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "0.7.0", - "bundled": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "exit-hook": { - "version": "1.1.1", - "bundled": true - }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-range": { - "version": "1.8.2", - "bundled": true, - "requires": { - "fill-range": "^2.1.0" - }, - "dependencies": { - "fill-range": { - "version": "2.2.4", - "bundled": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "is-number": { - "version": "2.1.0", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isobject": { - "version": "2.1.0", - "bundled": true, - "requires": { - "isarray": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "bundled": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "express": { - "version": "4.16.3", - "bundled": true, - "requires": { - "accepts": "~1.3.5", - "array-flatten": "1.1.1", - "body-parser": "1.18.2", - "content-disposition": "0.5.2", - "content-type": "~1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.3", - "qs": "6.5.1", - "range-parser": "~1.2.0", - "safe-buffer": "5.1.1", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "bundled": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "external-editor": { - "version": "2.2.0", - "bundled": true, - "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "bundled": true - }, - "fast-glob": { - "version": "2.2.2", - "bundled": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.0.1", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.1", - "micromatch": "^3.1.10" - } - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "bundled": true - }, - "figures": { - "version": "2.0.0", - "bundled": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "filename-regex": { - "version": "2.0.1", - "bundled": true - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "finalhandler": { - "version": "1.1.1", - "bundled": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "find-cache-dir": { - "version": "1.0.0", - "bundled": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "first-chunk-stream": { - "version": "2.0.0", - "bundled": true, - "requires": { - "readable-stream": "^2.0.2" - } - }, - "flow-parser": { - "version": "0.76.0", - "bundled": true - }, - "flush-write-stream": { - "version": "1.0.3", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" - } - }, - "follow-redirects": { - "version": "1.5.1", - "bundled": true, - "requires": { - "debug": "^3.1.0" - } - }, - "for-in": { - "version": "1.0.2", - "bundled": true - }, - "for-own": { - "version": "0.1.5", - "bundled": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "foreach": { - "version": "2.0.5", - "bundled": true - }, - "form-data": { - "version": "2.3.2", - "bundled": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "bundled": true - }, - "fragment-cache": { - "version": "0.2.1", - "bundled": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "bundled": true - }, - "from": { - "version": "0.1.7", - "bundled": true - }, - "from2": { - "version": "2.3.0", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "function-bind": { - "version": "1.1.1", - "bundled": true - }, - "get-caller-file": { - "version": "1.0.3", - "bundled": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true - }, - "get-value": { - "version": "2.0.6", - "bundled": true - }, - "gh-got": { - "version": "6.0.0", - "bundled": true, - "requires": { - "got": "^7.0.0", - "is-plain-obj": "^1.1.0" - }, - "dependencies": { - "got": { - "version": "7.1.0", - "bundled": true, - "requires": { - "decompress-response": "^3.2.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-plain-obj": "^1.1.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^1.1.1", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "url-parse-lax": "^1.0.0", - "url-to-options": "^1.0.1" - } - }, - "p-cancelable": { - "version": "0.3.0", - "bundled": true - }, - "p-timeout": { - "version": "1.2.1", - "bundled": true, - "requires": { - "p-finally": "^1.0.0" - } - }, - "prepend-http": { - "version": "1.0.4", - "bundled": true - }, - "url-parse-lax": { - "version": "1.0.0", - "bundled": true, - "requires": { - "prepend-http": "^1.0.1" - } - } - } - }, - "github-username": { - "version": "4.1.0", - "bundled": true, - "requires": { - "gh-got": "^6.0.0" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-all": { - "version": "3.1.0", - "bundled": true, - "requires": { - "glob": "^7.0.5", - "yargs": "~1.2.6" - }, - "dependencies": { - "minimist": { - "version": "0.1.0", - "bundled": true - }, - "yargs": { - "version": "1.2.6", - "bundled": true, - "requires": { - "minimist": "^0.1.0" - } - } - } - }, - "glob-base": { - "version": "0.3.0", - "bundled": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "bundled": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "bundled": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "bundled": true - }, - "global-modules": { - "version": "1.0.0", - "bundled": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "bundled": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "globals": { - "version": "9.18.0", - "bundled": true - }, - "globby": { - "version": "8.0.1", - "bundled": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - }, - "got": { - "version": "8.3.2", - "bundled": true, - "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "grouped-queue": { - "version": "0.3.3", - "bundled": true, - "requires": { - "lodash": "^4.17.2" - } - }, - "growl": { - "version": "1.10.5", - "bundled": true - }, - "has": { - "version": "1.0.3", - "bundled": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-color": { - "version": "0.1.7", - "bundled": true - }, - "has-flag": { - "version": "3.0.0", - "bundled": true - }, - "has-symbol-support-x": { - "version": "1.4.2", - "bundled": true - }, - "has-symbols": { - "version": "1.0.0", - "bundled": true - }, - "has-to-string-tag-x": { - "version": "1.4.1", - "bundled": true, - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, - "has-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash.js": { - "version": "1.1.5", - "bundled": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.1.1", - "bundled": true - }, - "hmac-drbg": { - "version": "1.0.1", - "bundled": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "home-or-tmp": { - "version": "2.0.0", - "bundled": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "homedir-polyfill": { - "version": "1.0.1", - "bundled": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hosted-git-info": { - "version": "2.7.1", - "bundled": true - }, - "http-cache-semantics": { - "version": "3.8.1", - "bundled": true - }, - "http-errors": { - "version": "1.6.3", - "bundled": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "https-browserify": { - "version": "1.0.0", - "bundled": true - }, - "iconv-lite": { - "version": "0.4.19", - "bundled": true - }, - "ieee754": { - "version": "1.1.12", - "bundled": true - }, - "iferr": { - "version": "0.1.5", - "bundled": true - }, - "ignore": { - "version": "3.3.10", - "bundled": true - }, - "import-local": { - "version": "1.0.0", - "bundled": true, - "requires": { - "pkg-dir": "^2.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true - }, - "indent-string": { - "version": "3.2.0", - "bundled": true - }, - "indexof": { - "version": "0.0.1", - "bundled": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true - }, - "inquirer": { - "version": "5.2.0", - "bundled": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.1.0", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^5.5.2", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "interpret": { - "version": "1.1.0", - "bundled": true - }, - "into-stream": { - "version": "3.1.0", - "bundled": true, - "requires": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" - } - }, - "invariant": { - "version": "2.2.4", - "bundled": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true - }, - "ipaddr.js": { - "version": "1.6.0", - "bundled": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true - }, - "is-binary-path": { - "version": "1.0.1", - "bundled": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-callable": { - "version": "1.1.4", - "bundled": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.1", - "bundled": true - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "bundled": true - } - } - }, - "is-dotfile": { - "version": "1.0.3", - "bundled": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "bundled": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true - }, - "is-extglob": { - "version": "2.1.1", - "bundled": true - }, - "is-finite": { - "version": "1.0.2", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true - }, - "is-glob": { - "version": "4.0.0", - "bundled": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-obj": { - "version": "1.0.1", - "bundled": true - }, - "is-object": { - "version": "1.0.1", - "bundled": true - }, - "is-observable": { - "version": "1.1.0", - "bundled": true, - "requires": { - "symbol-observable": "^1.1.0" - }, - "dependencies": { - "symbol-observable": { - "version": "1.2.0", - "bundled": true - } - } - }, - "is-plain-obj": { - "version": "1.1.0", - "bundled": true - }, - "is-plain-object": { - "version": "2.0.4", - "bundled": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "bundled": true - }, - "is-primitive": { - "version": "2.0.0", - "bundled": true - }, - "is-promise": { - "version": "2.1.0", - "bundled": true - }, - "is-regex": { - "version": "1.0.4", - "bundled": true, - "requires": { - "has": "^1.0.1" - } - }, - "is-retry-allowed": { - "version": "1.1.0", - "bundled": true - }, - "is-scoped": { - "version": "1.0.0", - "bundled": true, - "requires": { - "scoped-regex": "^1.0.0" - } - }, - "is-stream": { - "version": "1.1.0", - "bundled": true - }, - "is-symbol": { - "version": "1.0.1", - "bundled": true - }, - "is-utf8": { - "version": "0.2.1", - "bundled": true - }, - "is-windows": { - "version": "1.0.2", - "bundled": true - }, - "is-wsl": { - "version": "1.1.0", - "bundled": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isbinaryfile": { - "version": "3.0.2", - "bundled": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true - }, - "isobject": { - "version": "3.0.1", - "bundled": true - }, - "istextorbinary": { - "version": "2.2.1", - "bundled": true, - "requires": { - "binaryextensions": "2", - "editions": "^1.3.3", - "textextensions": "2" - } - }, - "isurl": { - "version": "1.0.0", - "bundled": true, - "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - } - }, - "js-tokens": { - "version": "3.0.2", - "bundled": true - }, - "js-yaml": { - "version": "3.12.0", - "bundled": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jscodeshift": { - "version": "0.5.1", - "bundled": true, - "requires": { - "babel-plugin-transform-flow-strip-types": "^6.8.0", - "babel-preset-es2015": "^6.9.0", - "babel-preset-stage-1": "^6.5.0", - "babel-register": "^6.9.0", - "babylon": "^7.0.0-beta.47", - "colors": "^1.1.2", - "flow-parser": "^0.*", - "lodash": "^4.13.1", - "micromatch": "^2.3.7", - "neo-async": "^2.5.0", - "node-dir": "0.1.8", - "nomnom": "^1.8.1", - "recast": "^0.15.0", - "temp": "^0.8.1", - "write-file-atomic": "^1.2.0" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "bundled": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "bundled": true - }, - "babylon": { - "version": "7.0.0-beta.47", - "bundled": true - }, - "braces": { - "version": "1.8.5", - "bundled": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "bundled": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "bundled": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - } - } - }, - "jsesc": { - "version": "0.5.0", - "bundled": true - }, - "json-buffer": { - "version": "3.0.0", - "bundled": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "bundled": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "bundled": true - }, - "json5": { - "version": "0.5.1", - "bundled": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true - }, - "keyv": { - "version": "3.0.0", - "bundled": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "lighthouse-logger": { - "version": "1.0.1", - "bundled": true, - "requires": { - "debug": "^2.6.8" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "listr": { - "version": "0.14.1", - "bundled": true, - "requires": { - "@samverschueren/stream-to-observable": "^0.3.0", - "cli-truncate": "^0.2.1", - "figures": "^1.7.0", - "indent-string": "^2.1.0", - "is-observable": "^1.1.0", - "is-promise": "^2.1.0", - "is-stream": "^1.1.0", - "listr-silent-renderer": "^1.1.1", - "listr-update-renderer": "^0.4.0", - "listr-verbose-renderer": "^0.4.0", - "log-symbols": "^1.0.2", - "log-update": "^1.0.2", - "ora": "^0.2.3", - "p-map": "^1.1.1", - "rxjs": "^6.1.0", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "figures": { - "version": "1.7.0", - "bundled": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "indent-string": { - "version": "2.1.0", - "bundled": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "log-symbols": { - "version": "1.0.2", - "bundled": true, - "requires": { - "chalk": "^1.0.0" - } - }, - "rxjs": { - "version": "6.2.2", - "bundled": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "listr-silent-renderer": { - "version": "1.1.1", - "bundled": true - }, - "listr-update-renderer": { - "version": "0.4.0", - "bundled": true, - "requires": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^1.0.2", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "figures": { - "version": "1.7.0", - "bundled": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "log-symbols": { - "version": "1.0.2", - "bundled": true, - "requires": { - "chalk": "^1.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "listr-verbose-renderer": { - "version": "0.4.1", - "bundled": true, - "requires": { - "chalk": "^1.1.3", - "cli-cursor": "^1.0.2", - "date-fns": "^1.27.2", - "figures": "^1.7.0" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cli-cursor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "restore-cursor": "^1.0.1" - } - }, - "figures": { - "version": "1.7.0", - "bundled": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "onetime": { - "version": "1.1.0", - "bundled": true - }, - "restore-cursor": { - "version": "1.0.1", - "bundled": true, - "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "load-json-file": { - "version": "4.0.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "loader-runner": { - "version": "2.3.0", - "bundled": true - }, - "loader-utils": { - "version": "1.1.0", - "bundled": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0" - } - }, - "locate-path": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.10", - "bundled": true - }, - "lodash.debounce": { - "version": "4.0.8", - "bundled": true - }, - "log-symbols": { - "version": "2.2.0", - "bundled": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "log-update": { - "version": "1.0.2", - "bundled": true, - "requires": { - "ansi-escapes": "^1.0.0", - "cli-cursor": "^1.0.2" - }, - "dependencies": { - "ansi-escapes": { - "version": "1.4.0", - "bundled": true - }, - "cli-cursor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "restore-cursor": "^1.0.1" - } - }, - "onetime": { - "version": "1.1.0", - "bundled": true - }, - "restore-cursor": { - "version": "1.0.1", - "bundled": true, - "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - } - } - } - }, - "loglevel": { - "version": "1.6.1", - "bundled": true - }, - "loglevelnext": { - "version": "1.0.5", - "bundled": true, - "requires": { - "es6-symbol": "^3.1.1", - "object.assign": "^4.1.0" - } - }, - "long": { - "version": "3.2.0", - "bundled": true - }, - "loose-envify": { - "version": "1.4.0", - "bundled": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "bundled": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "bundled": true - }, - "lru-cache": { - "version": "4.1.3", - "bundled": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-dir": { - "version": "1.3.0", - "bundled": true, - "requires": { - "pify": "^3.0.0" - } - }, - "make-error": { - "version": "1.3.4", - "bundled": true - }, - "mamacro": { - "version": "0.0.3", - "bundled": true - }, - "map-cache": { - "version": "0.2.2", - "bundled": true - }, - "map-obj": { - "version": "2.0.0", - "bundled": true - }, - "map-stream": { - "version": "0.1.0", - "bundled": true - }, - "map-visit": { - "version": "1.0.0", - "bundled": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "math-random": { - "version": "1.0.1", - "bundled": true - }, - "md5.js": { - "version": "1.3.4", - "bundled": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "media-typer": { - "version": "0.3.0", - "bundled": true - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "mem-fs": { - "version": "1.1.3", - "bundled": true, - "requires": { - "through2": "^2.0.0", - "vinyl": "^1.1.0", - "vinyl-file": "^2.0.0" - } - }, - "mem-fs-editor": { - "version": "4.0.3", - "bundled": true, - "requires": { - "commondir": "^1.0.1", - "deep-extend": "^0.6.0", - "ejs": "^2.5.9", - "glob": "^7.0.3", - "globby": "^7.1.1", - "isbinaryfile": "^3.0.2", - "mkdirp": "^0.5.0", - "multimatch": "^2.0.0", - "rimraf": "^2.2.8", - "through2": "^2.0.0", - "vinyl": "^2.0.1" - }, - "dependencies": { - "clone": { - "version": "2.1.1", - "bundled": true - }, - "clone-stats": { - "version": "1.0.0", - "bundled": true - }, - "globby": { - "version": "7.1.1", - "bundled": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - }, - "replace-ext": { - "version": "1.0.0", - "bundled": true - }, - "vinyl": { - "version": "2.2.0", - "bundled": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - } - } - }, - "memory-fs": { - "version": "0.4.1", - "bundled": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "memorystream": { - "version": "0.3.1", - "bundled": true - }, - "meow": { - "version": "4.0.1", - "bundled": true, - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist": "^1.1.3", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "bundled": true - }, - "merge2": { - "version": "1.2.2", - "bundled": true - }, - "methods": { - "version": "1.1.2", - "bundled": true - }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "bundled": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mime": { - "version": "1.4.1", - "bundled": true - }, - "mime-db": { - "version": "1.33.0", - "bundled": true - }, - "mime-types": { - "version": "2.1.18", - "bundled": true, - "requires": { - "mime-db": "~1.33.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "bundled": true - }, - "mimic-response": { - "version": "1.0.1", - "bundled": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "bundled": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "minimist-options": { - "version": "3.0.2", - "bundled": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0" - } - }, - "mississippi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^2.0.1", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.1", - "bundled": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "5.2.0", - "bundled": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - } - }, - "mocha-chrome": { - "version": "1.1.0", - "bundled": true, - "requires": { - "babel-plugin-transform-es2015-destructuring": "^6.23.0", - "babel-plugin-transform-es2015-parameters": "^6.24.1", - "babel-polyfill": "^6.26.0", - "babel-preset-env": "^1.6.1", - "babel-register": "^6.26.0", - "chalk": "^2.0.1", - "chrome-launcher": "^0.10.2", - "chrome-remote-interface": "^0.25.2", - "chrome-unmirror": "^0.1.0", - "debug": "^3.1.0", - "deep-assign": "^2.0.0", - "import-local": "^1.0.0", - "loglevel": "^1.4.1", - "meow": "^4.0.0", - "nanobus": "^4.2.0" - } - }, - "move-concurrently": { - "version": "1.0.1", - "bundled": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true - }, - "multimatch": { - "version": "2.1.0", - "bundled": true, - "requires": { - "array-differ": "^1.0.0", - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "minimatch": "^3.0.0" - } - }, - "mute-stream": { - "version": "0.0.7", - "bundled": true - }, - "nanoassert": { - "version": "1.1.0", - "bundled": true - }, - "nanobus": { - "version": "4.3.3", - "bundled": true, - "requires": { - "nanotiming": "^7.2.0", - "remove-array-items": "^1.0.0" - } - }, - "nanomatch": { - "version": "1.2.13", - "bundled": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "nanoscheduler": { - "version": "1.0.3", - "bundled": true, - "requires": { - "nanoassert": "^1.1.0" - } - }, - "nanotiming": { - "version": "7.3.1", - "bundled": true, - "requires": { - "nanoassert": "^1.1.0", - "nanoscheduler": "^1.0.2" - } - }, - "negotiator": { - "version": "0.6.1", - "bundled": true - }, - "neo-async": { - "version": "2.5.1", - "bundled": true - }, - "next-tick": { - "version": "1.0.0", - "bundled": true - }, - "nice-try": { - "version": "1.0.4", - "bundled": true - }, - "node-dir": { - "version": "0.1.8", - "bundled": true - }, - "node-libs-browser": { - "version": "2.1.0", - "bundled": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^1.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.10.3", - "vm-browserify": "0.0.4" - } - }, - "nomnom": { - "version": "1.8.1", - "bundled": true, - "requires": { - "chalk": "~0.4.0", - "underscore": "~1.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "bundled": true - }, - "chalk": { - "version": "0.4.0", - "bundled": true, - "requires": { - "ansi-styles": "~1.0.0", - "has-color": "~0.1.0", - "strip-ansi": "~0.1.0" - } - }, - "strip-ansi": { - "version": "0.1.1", - "bundled": true - } - } - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "bundled": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "normalize-url": { - "version": "2.0.1", - "bundled": true, - "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - } - }, - "npm-run-all": { - "version": "4.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^3.2.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.4", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "ps-tree": "^1.1.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "bundled": true, - "requires": { - "color-convert": "^1.9.0" - } - } - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "object-copy": { - "version": "0.1.0", - "bundled": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-keys": { - "version": "1.0.12", - "bundled": true - }, - "object-visit": { - "version": "1.0.1", - "bundled": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "bundled": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.omit": { - "version": "2.0.1", - "bundled": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, - "object.pick": { - "version": "1.3.0", - "bundled": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "on-finished": { - "version": "2.3.0", - "bundled": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "bundled": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "ora": { - "version": "0.2.3", - "bundled": true, - "requires": { - "chalk": "^1.1.1", - "cli-cursor": "^1.0.2", - "cli-spinners": "^0.1.2", - "object-assign": "^4.0.1" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "bundled": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cli-cursor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "restore-cursor": "^1.0.1" - } - }, - "onetime": { - "version": "1.1.0", - "bundled": true - }, - "restore-cursor": { - "version": "1.0.1", - "bundled": true, - "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true - } - } - }, - "os-browserify": { - "version": "0.3.0", - "bundled": true - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true - }, - "p-cancelable": { - "version": "0.4.1", - "bundled": true - }, - "p-each-series": { - "version": "1.0.0", - "bundled": true, - "requires": { - "p-reduce": "^1.0.0" - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true - }, - "p-is-promise": { - "version": "1.1.0", - "bundled": true - }, - "p-lazy": { - "version": "1.0.0", - "bundled": true - }, - "p-limit": { - "version": "1.3.0", - "bundled": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-map": { - "version": "1.2.0", - "bundled": true - }, - "p-reduce": { - "version": "1.0.0", - "bundled": true - }, - "p-timeout": { - "version": "2.0.1", - "bundled": true, - "requires": { - "p-finally": "^1.0.0" - } - }, - "p-try": { - "version": "1.0.0", - "bundled": true - }, - "pako": { - "version": "1.0.6", - "bundled": true - }, - "parallel-transform": { - "version": "1.1.0", - "bundled": true, - "requires": { - "cyclist": "~0.2.2", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "parse-asn1": { - "version": "5.1.1", - "bundled": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" - } - }, - "parse-glob": { - "version": "3.0.4", - "bundled": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, - "parse-json": { - "version": "4.0.0", - "bundled": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parse-passwd": { - "version": "1.0.0", - "bundled": true - }, - "parseurl": { - "version": "1.3.2", - "bundled": true - }, - "pascalcase": { - "version": "0.1.1", - "bundled": true - }, - "path-browserify": { - "version": "0.0.0", - "bundled": true - }, - "path-dirname": { - "version": "1.0.2", - "bundled": true - }, - "path-exists": { - "version": "3.0.0", - "bundled": true - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true - }, - "path-to-regexp": { - "version": "0.1.7", - "bundled": true - }, - "path-type": { - "version": "3.0.0", - "bundled": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pause-stream": { - "version": "0.0.11", - "bundled": true, - "requires": { - "through": "~2.3" - } - }, - "pbkdf2": { - "version": "3.0.16", - "bundled": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "pify": { - "version": "3.0.0", - "bundled": true - }, - "pinkie": { - "version": "2.0.4", - "bundled": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "2.0.0", - "bundled": true, - "requires": { - "find-up": "^2.1.0" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "bundled": true - }, - "prepend-http": { - "version": "2.0.0", - "bundled": true - }, - "preserve": { - "version": "0.2.0", - "bundled": true - }, - "prettier": { - "version": "1.13.7", - "bundled": true - }, - "pretty-bytes": { - "version": "4.0.2", - "bundled": true - }, - "private": { - "version": "0.1.8", - "bundled": true - }, - "process": { - "version": "0.11.10", - "bundled": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true - }, - "promise-inflight": { - "version": "1.0.1", - "bundled": true - }, - "proxy-addr": { - "version": "2.0.3", - "bundled": true, - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.6.0" - } - }, - "prr": { - "version": "1.0.1", - "bundled": true - }, - "ps-tree": { - "version": "1.1.0", - "bundled": true, - "requires": { - "event-stream": "~3.3.0" - } - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true - }, - "psl": { - "version": "1.1.28", - "bundled": true - }, - "public-encrypt": { - "version": "4.0.2", - "bundled": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "bundled": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "punycode": { - "version": "1.4.1", - "bundled": true - }, - "qs": { - "version": "6.5.1", - "bundled": true - }, - "query-string": { - "version": "5.1.1", - "bundled": true, - "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "querystring": { - "version": "0.2.0", - "bundled": true - }, - "querystring-es3": { - "version": "0.2.1", - "bundled": true - }, - "quick-lru": { - "version": "1.1.0", - "bundled": true - }, - "randomatic": { - "version": "3.0.0", - "bundled": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "bundled": true - } - } - }, - "randombytes": { - "version": "2.0.6", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "bundled": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.0", - "bundled": true - }, - "raw-body": { - "version": "2.3.2", - "bundled": true, - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "bundled": true - }, - "http-errors": { - "version": "1.6.2", - "bundled": true, - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" - } - }, - "setprototypeof": { - "version": "1.0.3", - "bundled": true - } - } - }, - "read-chunk": { - "version": "2.1.0", - "bundled": true, - "requires": { - "pify": "^3.0.0", - "safe-buffer": "^5.1.1" - } - }, - "read-pkg": { - "version": "3.0.0", - "bundled": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "3.0.0", - "bundled": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.1.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" - } - }, - "recast": { - "version": "0.15.2", - "bundled": true, - "requires": { - "ast-types": "0.11.5", - "esprima": "~4.0.0", - "private": "~0.1.5", - "source-map": "~0.6.1" - } - }, - "rechoir": { - "version": "0.6.2", - "bundled": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "redent": { - "version": "2.0.0", - "bundled": true, - "requires": { - "indent-string": "^3.0.0", - "strip-indent": "^2.0.0" - } - }, - "regenerate": { - "version": "1.4.0", - "bundled": true - }, - "regenerator-runtime": { - "version": "0.11.1", - "bundled": true - }, - "regenerator-transform": { - "version": "0.10.1", - "bundled": true, - "requires": { - "babel-runtime": "^6.18.0", - "babel-types": "^6.19.0", - "private": "^0.1.6" - } - }, - "regex-cache": { - "version": "0.4.4", - "bundled": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, - "regex-not": { - "version": "1.0.2", - "bundled": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpu-core": { - "version": "2.0.0", - "bundled": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "regjsgen": { - "version": "0.2.0", - "bundled": true - }, - "regjsparser": { - "version": "0.1.5", - "bundled": true, - "requires": { - "jsesc": "~0.5.0" - } - }, - "remove-array-items": { - "version": "1.0.0", - "bundled": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "bundled": true - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true - }, - "repeating": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "replace-ext": { - "version": "0.0.1", - "bundled": true - }, - "require-directory": { - "version": "2.1.1", - "bundled": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true - }, - "resolve": { - "version": "1.8.1", - "bundled": true, - "requires": { - "path-parse": "^1.0.5" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "bundled": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-dir": { - "version": "1.0.1", - "bundled": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "bundled": true - }, - "resolve-url": { - "version": "0.2.1", - "bundled": true - }, - "responselike": { - "version": "1.0.2", - "bundled": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "restore-cursor": { - "version": "2.0.0", - "bundled": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "bundled": true - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "requires": { - "glob": "^7.0.5" - } - }, - "ripemd160": { - "version": "2.0.2", - "bundled": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-async": { - "version": "2.3.0", - "bundled": true, - "requires": { - "is-promise": "^2.1.0" - } - }, - "run-queue": { - "version": "1.0.3", - "bundled": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "rxjs": { - "version": "5.5.11", - "bundled": true, - "requires": { - "symbol-observable": "1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true - }, - "safe-regex": { - "version": "1.1.0", - "bundled": true, - "requires": { - "ret": "~0.1.10" - } - }, - "sax": { - "version": "1.2.4", - "bundled": true - }, - "schema-utils": { - "version": "0.4.5", - "bundled": true, - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } - }, - "scoped-regex": { - "version": "1.0.0", - "bundled": true - }, - "semver": { - "version": "5.5.0", - "bundled": true - }, - "send": { - "version": "0.16.2", - "bundled": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "serialize-javascript": { - "version": "1.5.0", - "bundled": true - }, - "serve-static": { - "version": "1.13.2", - "bundled": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - } - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "bundled": true - }, - "set-value": { - "version": "2.0.0", - "bundled": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "bundled": true - }, - "setprototypeof": { - "version": "1.1.0", - "bundled": true - }, - "sha.js": { - "version": "2.4.11", - "bundled": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true - }, - "shell-quote": { - "version": "1.6.1", - "bundled": true, - "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" - } - }, - "shelljs": { - "version": "0.7.8", - "bundled": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "should": { - "version": "5.2.0", - "bundled": true, - "requires": { - "should-equal": "0.3.1", - "should-format": "0.0.7", - "should-type": "0.0.4" - } - }, - "should-equal": { - "version": "0.3.1", - "bundled": true, - "requires": { - "should-type": "0.0.4" - } - }, - "should-format": { - "version": "0.0.7", - "bundled": true, - "requires": { - "should-type": "0.0.4" - } - }, - "should-type": { - "version": "0.0.4", - "bundled": true - }, - "shx": { - "version": "0.2.2", - "bundled": true, - "requires": { - "es6-object-assign": "^1.0.3", - "minimist": "^1.2.0", - "shelljs": "^0.7.3" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true - } - } - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "slash": { - "version": "1.0.0", - "bundled": true - }, - "slice-ansi": { - "version": "0.0.4", - "bundled": true - }, - "slide": { - "version": "1.1.6", - "bundled": true - }, - "snapdragon": { - "version": "0.8.2", - "bundled": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "source-map": { - "version": "0.5.7", - "bundled": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "bundled": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "bundled": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "sort-keys": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "source-list-map": { - "version": "2.0.0", - "bundled": true - }, - "source-map": { - "version": "0.6.1", - "bundled": true - }, - "source-map-resolve": { - "version": "0.5.2", - "bundled": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.4.18", - "bundled": true, - "requires": { - "source-map": "^0.5.6" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "bundled": true - } - } - }, - "source-map-url": { - "version": "0.4.0", - "bundled": true - }, - "spdx-correct": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "bundled": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "bundled": true - }, - "split": { - "version": "0.3.3", - "bundled": true, - "requires": { - "through": "2" - } - }, - "split-string": { - "version": "3.1.0", - "bundled": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "bundled": true - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.1" - } - }, - "static-extend": { - "version": "0.1.2", - "bundled": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.4.0", - "bundled": true - }, - "stream-browserify": { - "version": "2.0.1", - "bundled": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-combiner": { - "version": "0.0.4", - "bundled": true, - "requires": { - "duplexer": "~0.1.1" - } - }, - "stream-each": { - "version": "1.2.2", - "bundled": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "bundled": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.0", - "bundled": true - }, - "strict-uri-encode": { - "version": "1.1.0", - "bundled": true - }, - "string-template": { - "version": "0.2.1", - "bundled": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string.prototype.padend": { - "version": "3.0.0", - "bundled": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.4.3", - "function-bind": "^1.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "bundled": true - }, - "strip-bom-stream": { - "version": "2.0.0", - "bundled": true, - "requires": { - "first-chunk-stream": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-utf8": "^0.2.0" - } - } - } - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true - }, - "strip-indent": { - "version": "2.0.0", - "bundled": true - }, - "supports-color": { - "version": "5.4.0", - "bundled": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "symbol-observable": { - "version": "1.0.1", - "bundled": true - }, - "tapable": { - "version": "1.0.0", - "bundled": true - }, - "temp": { - "version": "0.8.3", - "bundled": true, - "requires": { - "os-tmpdir": "^1.0.0", - "rimraf": "~2.2.6" - }, - "dependencies": { - "rimraf": { - "version": "2.2.8", - "bundled": true - } - } - }, - "text-table": { - "version": "0.2.0", - "bundled": true - }, - "textextensions": { - "version": "2.2.0", - "bundled": true - }, - "through": { - "version": "2.3.8", - "bundled": true - }, - "through2": { - "version": "2.0.3", - "bundled": true, - "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" - } - }, - "timed-out": { - "version": "4.0.1", - "bundled": true - }, - "timers-browserify": { - "version": "2.0.10", - "bundled": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "tmp": { - "version": "0.0.33", - "bundled": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "bundled": true - }, - "to-fast-properties": { - "version": "1.0.3", - "bundled": true - }, - "to-object-path": { - "version": "0.3.0", - "bundled": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "bundled": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "bundled": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "tough-cookie": { - "version": "2.4.3", - "bundled": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - }, - "trim-newlines": { - "version": "2.0.0", - "bundled": true - }, - "trim-right": { - "version": "1.0.1", - "bundled": true - }, - "ts-loader": { - "version": "4.4.2", - "bundled": true, - "requires": { - "chalk": "^2.3.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^3.1.4", - "semver": "^5.0.1" - } - }, - "ts-node": { - "version": "7.0.0", - "bundled": true, - "requires": { - "arrify": "^1.0.0", - "buffer-from": "^1.1.0", - "diff": "^3.1.0", - "make-error": "^1.1.1", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "source-map-support": "^0.5.6", - "yn": "^2.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "source-map-support": { - "version": "0.5.6", - "bundled": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - } - } - }, - "tslib": { - "version": "1.9.3", - "bundled": true - }, - "tslint": { - "version": "5.10.0", - "bundled": true, - "requires": { - "babel-code-frame": "^6.22.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^3.2.0", - "glob": "^7.1.1", - "js-yaml": "^3.7.0", - "minimatch": "^3.0.4", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.12.1" - } - }, - "tsutils": { - "version": "2.27.2", - "bundled": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "tty-browserify": { - "version": "0.0.0", - "bundled": true - }, - "type-is": { - "version": "1.6.16", - "bundled": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.18" - } - }, - "typedarray": { - "version": "0.0.6", - "bundled": true - }, - "typescript": { - "version": "3.0.1", - "bundled": true - }, - "uglify-es": { - "version": "3.3.9", - "bundled": true, - "requires": { - "commander": "~2.13.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.13.0", - "bundled": true - } - } - }, - "uglifyjs-webpack-plugin": { - "version": "1.2.7", - "bundled": true, - "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", - "schema-utils": "^0.4.5", - "serialize-javascript": "^1.4.0", - "source-map": "^0.6.1", - "uglify-es": "^3.3.4", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" - } - }, - "ultron": { - "version": "1.1.1", - "bundled": true - }, - "underscore": { - "version": "1.6.0", - "bundled": true - }, - "union-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "bundled": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unique-filename": { - "version": "1.1.0", - "bundled": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.0", - "bundled": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "unpipe": { - "version": "1.0.0", - "bundled": true - }, - "unset-value": { - "version": "1.0.0", - "bundled": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "bundled": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "bundled": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "bundled": true - } - } - }, - "untildify": { - "version": "3.0.3", - "bundled": true - }, - "upath": { - "version": "1.1.0", - "bundled": true - }, - "uri-js": { - "version": "4.2.2", - "bundled": true, - "requires": { - "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "bundled": true - } - } - }, - "urix": { - "version": "0.1.0", - "bundled": true - }, - "url": { - "version": "0.11.0", - "bundled": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "bundled": true - } - } - }, - "url-join": { - "version": "4.0.0", - "bundled": true - }, - "url-parse-lax": { - "version": "3.0.0", - "bundled": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, - "url-to-options": { - "version": "1.0.1", - "bundled": true - }, - "use": { - "version": "3.1.1", - "bundled": true - }, - "util": { - "version": "0.10.4", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "utils-merge": { - "version": "1.0.1", - "bundled": true - }, - "uuid": { - "version": "3.3.2", - "bundled": true - }, - "v8-compile-cache": { - "version": "2.0.0", - "bundled": true - }, - "validate-npm-package-license": { - "version": "3.0.3", - "bundled": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vary": { - "version": "1.1.2", - "bundled": true - }, - "vinyl": { - "version": "1.2.0", - "bundled": true, - "requires": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" - } - }, - "vinyl-file": { - "version": "2.0.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.3.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0", - "strip-bom-stream": "^2.0.0", - "vinyl": "^1.1.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "bundled": true - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-utf8": "^0.2.0" - } - } - } - }, - "vm-browserify": { - "version": "0.0.4", - "bundled": true, - "requires": { - "indexof": "0.0.1" - } - }, - "watchpack": { - "version": "1.6.0", - "bundled": true, - "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - } - }, - "webpack": { - "version": "4.16.1", - "bundled": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-module-context": "1.5.13", - "@webassemblyjs/wasm-edit": "1.5.13", - "@webassemblyjs/wasm-opt": "1.5.13", - "@webassemblyjs/wasm-parser": "1.5.13", - "acorn": "^5.6.2", - "acorn-dynamic-import": "^3.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.4", - "tapable": "^1.0.0", - "uglifyjs-webpack-plugin": "^1.2.4", - "watchpack": "^1.5.0", - "webpack-sources": "^1.0.1" - } - }, - "webpack-addons": { - "version": "1.1.5", - "bundled": true, - "requires": { - "jscodeshift": "^0.4.0" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "bundled": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "bundled": true - }, - "ast-types": { - "version": "0.10.1", - "bundled": true - }, - "braces": { - "version": "1.8.5", - "bundled": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "bundled": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "bundled": true - }, - "is-glob": { - "version": "2.0.1", - "bundled": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "jscodeshift": { - "version": "0.4.1", - "bundled": true, - "requires": { - "async": "^1.5.0", - "babel-plugin-transform-flow-strip-types": "^6.8.0", - "babel-preset-es2015": "^6.9.0", - "babel-preset-stage-1": "^6.5.0", - "babel-register": "^6.9.0", - "babylon": "^6.17.3", - "colors": "^1.1.2", - "flow-parser": "^0.*", - "lodash": "^4.13.1", - "micromatch": "^2.3.7", - "node-dir": "0.1.8", - "nomnom": "^1.8.1", - "recast": "^0.12.5", - "temp": "^0.8.1", - "write-file-atomic": "^1.2.0" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "bundled": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "recast": { - "version": "0.12.9", - "bundled": true, - "requires": { - "ast-types": "0.10.1", - "core-js": "^2.4.1", - "esprima": "~4.0.0", - "private": "~0.1.5", - "source-map": "~0.6.1" - } - } - } - }, - "webpack-cli": { - "version": "2.1.5", - "bundled": true, - "requires": { - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "diff": "^3.5.0", - "enhanced-resolve": "^4.0.0", - "envinfo": "^5.7.0", - "glob-all": "^3.1.0", - "global-modules": "^1.0.0", - "got": "^8.3.1", - "import-local": "^1.0.0", - "inquirer": "^5.2.0", - "interpret": "^1.1.0", - "jscodeshift": "^0.5.0", - "listr": "^0.14.1", - "loader-utils": "^1.1.0", - "lodash": "^4.17.10", - "log-symbols": "^2.2.0", - "mkdirp": "^0.5.1", - "p-each-series": "^1.0.0", - "p-lazy": "^1.0.0", - "prettier": "^1.12.1", - "supports-color": "^5.4.0", - "v8-compile-cache": "^2.0.0", - "webpack-addons": "^1.1.5", - "yargs": "^11.1.0", - "yeoman-environment": "^2.1.1", - "yeoman-generator": "^2.0.5" - } - }, - "webpack-dev-middleware": { - "version": "3.1.3", - "bundled": true, - "requires": { - "loud-rejection": "^1.6.0", - "memory-fs": "~0.4.1", - "mime": "^2.1.0", - "path-is-absolute": "^1.0.0", - "range-parser": "^1.0.3", - "url-join": "^4.0.0", - "webpack-log": "^1.0.1" - }, - "dependencies": { - "mime": { - "version": "2.3.1", - "bundled": true - } - } - }, - "webpack-log": { - "version": "1.2.0", - "bundled": true, - "requires": { - "chalk": "^2.1.0", - "log-symbols": "^2.1.0", - "loglevelnext": "^1.0.1", - "uuid": "^3.1.0" - } - }, - "webpack-sources": { - "version": "1.1.0", - "bundled": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "which": { - "version": "1.3.1", - "bundled": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true - }, - "worker-farm": { - "version": "1.6.0", - "bundled": true, - "requires": { - "errno": "~0.1.7" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "write-file-atomic": { - "version": "1.3.4", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - }, - "ws": { - "version": "3.3.3", - "bundled": true, - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } - }, - "xml2js": { - "version": "0.4.19", - "bundled": true, - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" - } - }, - "xmlbuilder": { - "version": "9.0.7", - "bundled": true - }, - "xtend": { - "version": "4.0.1", - "bundled": true - }, - "y18n": { - "version": "4.0.0", - "bundled": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true - }, - "yargs": { - "version": "11.1.0", - "bundled": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - }, - "dependencies": { - "y18n": { - "version": "3.2.1", - "bundled": true - } - } - }, - "yargs-parser": { - "version": "9.0.2", - "bundled": true, - "requires": { - "camelcase": "^4.1.0" - } - }, - "yarn": { - "version": "1.7.0", - "bundled": true - }, - "yeoman-environment": { - "version": "2.3.0", - "bundled": true, - "requires": { - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^3.1.0", - "diff": "^3.3.1", - "escape-string-regexp": "^1.0.2", - "globby": "^8.0.1", - "grouped-queue": "^0.3.3", - "inquirer": "^5.2.0", - "is-scoped": "^1.0.0", - "lodash": "^4.17.10", - "log-symbols": "^2.1.0", - "mem-fs": "^1.1.0", - "strip-ansi": "^4.0.0", - "text-table": "^0.2.0", - "untildify": "^3.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "yeoman-generator": { - "version": "2.0.5", - "bundled": true, + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-error": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz", + "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==", + "dev": true + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime-db": { + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", + "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" + }, + "mime-types": { + "version": "2.1.19", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", + "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", + "requires": { + "mime-db": "~1.35.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, "requires": { - "async": "^2.6.0", - "chalk": "^2.3.0", - "cli-table": "^0.3.1", - "cross-spawn": "^6.0.5", - "dargs": "^5.1.0", - "dateformat": "^3.0.3", - "debug": "^3.1.0", - "detect-conflict": "^1.0.0", - "error": "^7.0.2", - "find-up": "^2.1.0", - "github-username": "^4.0.0", - "istextorbinary": "^2.2.1", - "lodash": "^4.17.10", - "make-dir": "^1.1.0", - "mem-fs-editor": "^4.0.0", - "minimist": "^1.2.0", - "pretty-bytes": "^4.0.2", - "read-chunk": "^2.1.0", - "read-pkg-up": "^3.0.0", - "rimraf": "^2.6.2", - "run-async": "^2.0.0", - "shelljs": "^0.8.0", - "text-table": "^0.2.0", - "through2": "^2.0.0", - "yeoman-environment": "^2.0.5" - }, - "dependencies": { - "async": { - "version": "2.6.1", - "bundled": true, - "requires": { - "lodash": "^4.17.10" - } - }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "shelljs": { - "version": "0.8.2", - "bundled": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - } + "is-plain-object": "^2.0.4" } - }, - "yn": { - "version": "2.0.0", - "bundled": true } } }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "ms-rest-js": { + "version": "0.20.403", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.20.403.tgz", + "integrity": "sha512-SbIV88b55JLuMY6rhOXHISxFfegewvfK1MnSlKmJ8tLZIsMDnOdKF6+SqCc0//YTBeGFI91Mv5VjKTyRAHuOSA==", + "requires": { + "@types/express": "^4.11.1", + "@types/form-data": "^2.2.1", + "@types/node": "^9.4.6", + "@types/uuid": "^3.4.3", + "axios": "^0.18.0", + "form-data": "^2.3.2", + "tough-cookie": "^2.4.3", + "tslib": "^1.9.2", + "uuid": "^3.2.1", + "xml2js": "^0.4.19" + } + }, "nan": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", @@ -9571,14 +2996,6 @@ "url": "^0.11.0", "util": "^0.10.3", "vm-browserify": "0.0.4" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } } }, "normalize-package-data": { @@ -11942,6 +5359,11 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" + }, "public-encrypt": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", @@ -11956,10 +5378,9 @@ } }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, "querystring": { "version": "0.2.0", @@ -12193,6 +5614,11 @@ "ret": "~0.1.10" } }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "semver": { "version": "5.5.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", @@ -12764,6 +6190,15 @@ "repeat-string": "^1.6.1" } }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -13007,6 +6442,14 @@ "dev": true, "requires": { "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } } }, "urix": { @@ -13054,6 +6497,11 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -13205,6 +6653,20 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", diff --git a/package.json b/package.json index fd8c06083f1c..8c517cadbcdf 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.14.0", + "version": "0.15.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -25,12 +25,12 @@ "autorest", "clientruntime" ], - "main": "./lib/msRestAzure.ts", + "main": "./dist/lib/msRestAzure.js", "browser": "./es/lib/msRestAzure.js", "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "file:C:/Users/daschult/Sources/ms-rest-js", + "ms-rest-js": "~0.20.403", "tslib": "^1.9.2" }, "devDependencies": { From c0fa880e542e0044b3fa465d88671d0e05fe4377 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Fri, 24 Aug 2018 15:52:22 -0700 Subject: [PATCH 095/289] Simplify logic for getting 200 operationResponse --- lib/lroPollStrategy.ts | 8 +------- package-lock.json | 2 +- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts index 47d0a5ca6f7d..268fc922f06f 100644 --- a/lib/lroPollStrategy.ts +++ b/lib/lroPollStrategy.ts @@ -163,13 +163,7 @@ function getOperationResponse(operationSpec: OperationSpec, response: HttpOperat let result: OperationResponse | undefined = operationResponses[statusCode]; if (!result) { if (statusCode === 200) { - for (const expectedStatusCode of [201, 202]) { - const operationResponse: OperationResponse | undefined = operationResponses[expectedStatusCode]; - if (operationResponse) { - result = operationResponse; - break; - } - } + result = operationResponses[201] || operationResponses[202]; } else if (201 <= statusCode && statusCode <= 299) { result = {}; } diff --git a/package-lock.json b/package-lock.json index cedbc70c0a24..b7a1acb53e55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ms-rest-azure-js", - "version": "0.14.0", + "version": "0.15.0", "lockfileVersion": 1, "requires": true, "dependencies": { From cea8981d98e4817f094dfe6a0cf5b4cc7647b168 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Wed, 22 Aug 2018 16:45:08 -0700 Subject: [PATCH 096/289] Grab credentials.environment.baseUri if present --- lib/azureServiceClient.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index 6ccec2f652dc..d4a4fb914560 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -41,6 +41,13 @@ export class AzureServiceClient extends ServiceClient { constructor(credentials: ServiceClientCredentials, options?: AzureServiceClientOptions) { super(credentials, options = updateOptionsWithDefaultValues(options)); + // For convenience, if the credentials have an associated AzureEnvironment, + // automatically use the baseUri from that environment. + const env = (credentials as any).environment; + if (env && !this.baseUri) { + this.baseUri = env.resourceManagerEndpointUrl; + } + if (options.acceptLanguage != undefined) { this.acceptLanguage = options.acceptLanguage; } From cefed74fbc0b182b107bb55add641bf7137ced6a Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Mon, 27 Aug 2018 10:10:01 -0700 Subject: [PATCH 097/289] Add resourceManagerEndpointUri test --- test/azureServiceClientTests.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/azureServiceClientTests.ts b/test/azureServiceClientTests.ts index eebdce528a92..b66034a0730e 100644 --- a/test/azureServiceClientTests.ts +++ b/test/azureServiceClientTests.ts @@ -30,6 +30,16 @@ describe("AzureServiceClient", () => { assert.strictEqual(client.longRunningOperationRetryTimeout, 2); assert.deepStrictEqual(client.userAgentInfo, { value: ["ms-rest-js/0.1.0", "ms-rest-azure/0.1.0"] }); }); + + it("should apply the resourceManagerEndpointUrl from credentials", async function() { + const creds = { + signRequest: (request: WebResource) => Promise.resolve(request), + environment: { resourceManagerEndpointUrl: "foo" } + }; + const client = new AzureServiceClient(creds); + // accessing protected property by casting + assert.strictEqual((client as any).baseUri, "foo"); + }); }); describe("sendLRORequest()", () => { From 023b1cce3a127571954a8967d6f8a96f3c583cb9 Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Wed, 29 Aug 2018 10:59:22 -0700 Subject: [PATCH 098/289] Updates for RestResponse compatibility (#58) * Updates for RestResponse compatibility * Temporarily depend on github version of ms-rest-js * Fixes from feedback * Update ms-rest-js and bump to 0.16 * Update package-lock.json --- lib/azureServiceClient.ts | 16 +++------------- lib/lroPoller.ts | 18 ++++++++++++------ package-lock.json | 28 ++++++++++++++-------------- package.json | 7 +++---- 4 files changed, 32 insertions(+), 37 deletions(-) diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index d4a4fb914560..71f710c8acd0 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -69,7 +69,7 @@ export class AzureServiceClient extends ServiceClient { */ sendLRORequest(operationArguments: OperationArguments, operationSpec: OperationSpec, options?: RequestOptionsBase): Promise { return this.sendOperationRequest(operationArguments, operationSpec) - .then((initialResponse: HttpOperationResponse) => createLROPollerFromInitialResponse(this, initialResponse, options)); + .then(initialResponse => createLROPollerFromInitialResponse(this, initialResponse._response, options)); } /** @@ -80,7 +80,8 @@ export class AzureServiceClient extends ServiceClient { */ sendLongRunningRequest(request: RequestPrepareOptions | WebResource, options?: RequestOptionsBase): Promise { return this.beginLongRunningRequest(request, options) - .then((lroResponse: LROPoller) => lroResponse.pollUntilFinished()); + .then((lroResponse: LROPoller) => lroResponse.pollUntilFinished()) + .then(res => res._response); } /** @@ -97,17 +98,6 @@ export class AzureServiceClient extends ServiceClient { .then((initialResponse: HttpOperationResponse) => createLROPollerFromInitialResponse(this, initialResponse, options)); } - /** - * Poll Azure long running PUT, PATCH, POST or DELETE operations. - * @param {HttpOperationResponse} initialResponse - response of the initial request which is a part of the asynchronous polling operation. - * @param {AzureRequestOptionsBase} [options] - custom request options. - * @returns {Promise} The final response after polling is complete. - */ - getLongRunningOperationResult(initialResponse: HttpOperationResponse, options?: RequestOptionsBase): Promise { - const lroResponse: LROPoller = createLROPollerFromInitialResponse(this, initialResponse, options); - return lroResponse.pollUntilFinished(); - } - /** * Restore an LROPoller from the provided LROPollState. This method can be used to recreate an * LROPoller on a different process or machine. diff --git a/lib/lroPoller.ts b/lib/lroPoller.ts index ab302c985f6b..89525c26d953 100644 --- a/lib/lroPoller.ts +++ b/lib/lroPoller.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { HttpOperationResponse, RequestOptionsBase } from "ms-rest-js"; +import { HttpOperationResponse, RequestOptionsBase, RestResponse, flattenResponse } from "ms-rest-js"; import { AzureServiceClient } from "./azureServiceClient"; import { createLROPollStrategyFromInitialResponse, createLROPollStrategyFromPollState, LROPollState, LROPollStrategy } from "./lroPollStrategy"; import { LongRunningOperationStates } from "./util/constants"; @@ -105,15 +105,16 @@ export class LROPoller { /** * Send poll requests that check the LRO's status until it is determined that the LRO is finished. */ - public async pollUntilFinished(): Promise { - let result: Promise; + public async pollUntilFinished(): Promise { + let result: Promise; const lroPollStrategy: LROPollStrategy | undefined = this._lroPollStrategy; + if (!lroPollStrategy) { - result = Promise.resolve(this._initialResponse); + result = Promise.resolve(flattenAzureResponse(this._initialResponse)); } else { result = lroPollStrategy.pollUntilFinished().then((succeeded: boolean) => { if (succeeded) { - return lroPollStrategy.getOperationResponse(); + return lroPollStrategy.getOperationResponse().then(flattenAzureResponse); } else { throw lroPollStrategy.getRestError(); } @@ -141,4 +142,9 @@ export function createLROPollerFromInitialResponse(azureServiceClient: AzureServ export function createLROPollerFromPollState(azureServiceClient: AzureServiceClient, lroMemento: LROPollState): LROPoller { const lroPollStrategy: LROPollStrategy | undefined = createLROPollStrategyFromPollState(azureServiceClient, lroMemento); return new LROPoller(lroPollStrategy, lroMemento.initialResponse); -} \ No newline at end of file +} + +function flattenAzureResponse(response: HttpOperationResponse): RestResponse { + const { operationResponseGetter, operationSpec } = response.request; + return flattenResponse(response, operationResponseGetter && operationSpec && operationResponseGetter(operationSpec, response)); +} diff --git a/package-lock.json b/package-lock.json index b7a1acb53e55..358c3e44cfcd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ms-rest-azure-js", - "version": "0.15.0", + "version": "0.16.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -175,9 +175,9 @@ "dev": true }, "@types/node": { - "version": "9.6.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.29.tgz", - "integrity": "sha512-KtYsg4/OzMV8CIgwT0kGwHn2J5DNd3w7hY6/AYwIfxRhrN0isNFlT5nN+pgvcMUkiba2+A3D6Ig0onBGgSj18A==" + "version": "9.6.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.30.tgz", + "integrity": "sha512-mFkVM9yFexPPKm0sidVyEzM8F0O06W3vZ8QnjHYa3AB1uvtPOayGKLrXlXIKOdJ7LOE+zilhxYbGPy/34QTgrw==" }, "@types/range-parser": { "version": "1.2.2", @@ -2799,16 +2799,16 @@ } }, "mime-db": { - "version": "1.35.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", - "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", + "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==" }, "mime-types": { - "version": "2.1.19", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", - "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", + "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", "requires": { - "mime-db": "~1.35.0" + "mime-db": "~1.36.0" } }, "mimic-fn": { @@ -2899,9 +2899,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.20.403", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.20.403.tgz", - "integrity": "sha512-SbIV88b55JLuMY6rhOXHISxFfegewvfK1MnSlKmJ8tLZIsMDnOdKF6+SqCc0//YTBeGFI91Mv5VjKTyRAHuOSA==", + "version": "0.21.404", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.21.404.tgz", + "integrity": "sha512-1k13dpN52ESyTvLRZ8uvTAnV6m8VORlJ1SFVLetJvndp8j6kI3xgvp+SQnCtFcYwTvNZpTVTl19/1jhxK5Vg+A==", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", diff --git a/package.json b/package.json index 8c517cadbcdf..92a45b35ec8f 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.15.0", + "version": "0.16.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -30,7 +30,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.20.403", + "ms-rest-js": "~0.21.404", "tslib": "^1.9.2" }, "devDependencies": { @@ -47,8 +47,7 @@ "typescript": "^2.5.2", "uglify-es": "^3.1.0", "webpack": "^3.6.0", - "yarn": "^1.6.0", - "ms-rest-js": "~0.19.380" + "yarn": "^1.6.0" }, "homepage": "https://github.com/Azure/ms-rest-azure-js", "repository": { From 54d428d4ee7a7673f24a1947182d04042469ea49 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Wed, 5 Sep 2018 12:25:15 -0700 Subject: [PATCH 099/289] Add innererror property to CloudError (#59) * Add innererror property to CloudError * Remove should library --- lib/cloudError.ts | 11 +++++ package-lock.json | 100 ++++++++++++++++++++++++---------------- package.json | 4 +- test/cloudErrorTests.ts | 89 +++++++++++++++++++++++++++++++++++ 4 files changed, 161 insertions(+), 43 deletions(-) create mode 100644 test/cloudErrorTests.ts diff --git a/lib/cloudError.ts b/lib/cloudError.ts index 0edd3b69c659..a732acbf63c3 100644 --- a/lib/cloudError.ts +++ b/lib/cloudError.ts @@ -24,6 +24,10 @@ export interface CloudError extends Error { * @property {Array} [details] An array of CloudError objects specifying the details. */ details?: Array; + /** + * @property {any} [innerError] The inner error parsed from the body of the http error response + */ + innerError?: any; } export const CloudErrorMapper: CompositeMapper = { @@ -64,6 +68,13 @@ export const CloudErrorMapper: CompositeMapper = { } } } + }, + innerError: { + required: false, + serializedName: "innererror", + type: { + name: "Object" + } } } } diff --git a/package-lock.json b/package-lock.json index 358c3e44cfcd..e753475ac1bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -122,6 +122,12 @@ "@types/node": "*" } }, + "@types/chai": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.4.tgz", + "integrity": "sha512-h6+VEw2Vr3ORiFCyyJmcho2zALnUq9cvdB/IO8Xs9itrJVCenC7o26A6+m7D0ihTTr65eS259H5/Ghl/VjYs6g==", + "dev": true + }, "@types/connect": { "version": "3.4.32", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", @@ -193,12 +199,6 @@ "@types/mime": "*" } }, - "@types/should": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@types/should/-/should-8.3.0.tgz", - "integrity": "sha1-4rRgJDaF2+N3GC857zjTf00Veto=", - "dev": true - }, "@types/uuid": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.3.tgz", @@ -378,6 +378,12 @@ } } }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", @@ -738,6 +744,20 @@ "lazy-cache": "^1.0.3" } }, + "chai": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", + "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", + "dev": true, + "requires": { + "assertion-error": "^1.0.1", + "check-error": "^1.0.1", + "deep-eql": "^3.0.0", + "get-func-name": "^2.0.0", + "pathval": "^1.0.0", + "type-detect": "^4.0.0" + } + }, "chalk": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", @@ -749,6 +769,12 @@ "supports-color": "^5.3.0" } }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, "chokidar": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", @@ -1002,6 +1028,15 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -2134,6 +2169,12 @@ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", @@ -5292,6 +5333,12 @@ "pify": "^3.0.0" } }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, "pause-stream": { "version": "0.0.11", "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", @@ -5714,41 +5761,6 @@ "rechoir": "^0.6.2" } }, - "should": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/should/-/should-5.2.0.tgz", - "integrity": "sha1-mkUZtEe4te7c6e7ZavNCDUUaVAs=", - "dev": true, - "requires": { - "should-equal": "0.3.1", - "should-format": "0.0.7", - "should-type": "0.0.4" - } - }, - "should-equal": { - "version": "0.3.1", - "resolved": "http://registry.npmjs.org/should-equal/-/should-equal-0.3.1.tgz", - "integrity": "sha1-vY6pemdI45+tR2o75v1y68LnK/A=", - "dev": true, - "requires": { - "should-type": "0.0.4" - } - }, - "should-format": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/should-format/-/should-format-0.0.7.tgz", - "integrity": "sha1-Hi74a9kdqcLgQSM1tWq6vZov3hI=", - "dev": true, - "requires": { - "should-type": "0.0.4" - } - }, - "should-type": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/should-type/-/should-type-0.0.4.tgz", - "integrity": "sha1-ATKgVBemEmhmQmrPEW8e1WI6XNA=", - "dev": true - }, "shx": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/shx/-/shx-0.2.2.tgz", @@ -6281,6 +6293,12 @@ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "dev": true }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, "typescript": { "version": "2.9.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", diff --git a/package.json b/package.json index 92a45b35ec8f..07b17d8ae118 100644 --- a/package.json +++ b/package.json @@ -34,12 +34,12 @@ "tslib": "^1.9.2" }, "devDependencies": { + "@types/chai": "^4.1.4", "@types/mocha": "^5.2.1", - "@types/should": "^8.1.30", + "chai": "^4.1.2", "mocha": "^5.2.0", "npm-run-all": "^4.1.2", "nyc": "^12.0.2", - "should": "5.2.0", "shx": "^0.2.2", "ts-loader": "^2.3.7", "ts-node": "^5.0.1", diff --git a/test/cloudErrorTests.ts b/test/cloudErrorTests.ts new file mode 100644 index 000000000000..ccd183294e0f --- /dev/null +++ b/test/cloudErrorTests.ts @@ -0,0 +1,89 @@ +import { Serializer } from "ms-rest-js"; +import { CloudErrorMapper, CloudError } from "../lib/cloudError"; +import { expect } from "chai"; + + +describe("CloudError", () => { + const serializer = new Serializer({"CloudError": CloudErrorMapper}); + + describe("serialization", () => { + it("serializes properly required properties", () => { + const cloudError: CloudError = { + name: "my error", + code: "401", + message: "test message" + }; + + const serializedCloudError = serializer.serialize(CloudErrorMapper, cloudError); + + expect(serializedCloudError.name).to.not.exist; + expect(serializedCloudError.code).to.be.equal(cloudError.code); + expect(serializedCloudError.message).to.be.equal(cloudError.message); + expect(serializedCloudError.target).to.not.exist; + expect(serializedCloudError.details).to.not.exist; + expect(serializedCloudError.innerError).to.not.exist; + }); + + it("serializes properly optional properties", () => { + const cloudError: CloudError = { + name: "my error", + code: "200", + message: "test message", + target: "my target", + details: [ { name: "error", code: "404", message: "not found" }, { name: "error", code: "500", message: "Internal error" } ], + innerError: new Error("Resource not found"), + stack: "call stack" + }; + + const serializedCloudError = serializer.serialize(CloudErrorMapper, cloudError); + + expect(serializedCloudError.target).to.be.equal(cloudError.target); + expect(serializedCloudError.details[0].code).to.be.equal(cloudError.details![0].code); + expect(serializedCloudError.details[0].message).to.be.equal(cloudError.details![0].message); + expect(serializedCloudError.details[0].name).to.not.exist; + expect(serializedCloudError.details[1].code).to.be.equal(cloudError.details![1].code); + expect(serializedCloudError.details[1].message).to.be.equal(cloudError.details![1].message); + expect(serializedCloudError.details[1].name).to.not.exist; + expect(serializedCloudError.innererror).to.be.equal(cloudError.innerError); + expect(serializedCloudError.stack).to.not.exist; + }); + }); + + describe("deserialization", () => { + it("serializes properly required properties", () => { + const cloudError = { + name: "my error", + code: "401", + message: "test message" + }; + + const deserializedCloudError: CloudError = serializer.deserialize(CloudErrorMapper, cloudError, "deserializedCloudError"); + + expect(deserializedCloudError.name).to.not.exist; + expect(deserializedCloudError.code).to.be.equal(cloudError.code); + expect(deserializedCloudError.message).to.be.equal(cloudError.message); + expect(deserializedCloudError.target).to.not.exist; + expect(deserializedCloudError.details).to.not.exist; + expect(deserializedCloudError.innerError).to.not.exist; + }); + + it("serializes properly optional properties", () => { + const cloudError = { + name: "my error", + code: "200", + message: "test message", + target: "my target", + details: [ { code: "404", message: "not found" }, { code: "500", message: "Internal error" } ], + innererror: new Error("Resource not found"), + stack: "call stack" + }; + + const deserializedCloudError: CloudError = serializer.deserialize(CloudErrorMapper, cloudError, "deserializedCloudError"); + + expect(deserializedCloudError.target).to.be.equal(cloudError.target); + expect(deserializedCloudError.details).to.be.deep.equal(cloudError.details); + expect(deserializedCloudError.innerError).to.be.equal(cloudError.innererror); + expect(deserializedCloudError.stack).to.not.exist; + }); + }); +}); From b9ef48378ddb92bab65019ba15a9726f054c253c Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Wed, 5 Sep 2018 13:43:25 -0700 Subject: [PATCH 100/289] Enable strict on scripts, fix problems --- .scripts/dependencies.ts | 6 +++--- .scripts/tsconfig.json | 11 +++++++++++ package.json | 3 ++- 3 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 .scripts/tsconfig.json diff --git a/.scripts/dependencies.ts b/.scripts/dependencies.ts index ca27e9b142dc..e0406b80c3b6 100644 --- a/.scripts/dependencies.ts +++ b/.scripts/dependencies.ts @@ -266,7 +266,7 @@ function writePackageJson(packageJson: any, packageJsonFilePath: string): void { fs.writeFileSync(packageJsonFilePath, JSON.stringify(packageJson, undefined, " ") + "\n"); } -export function updateLocalDependencies(packageFolders: PackageFolder[], localDependencyNPMScript: string, getNewDependencyVersion: (dependencyName: string) => string): void { +export function updateLocalDependencies(packageFolders: PackageFolder[], localDependencyNPMScript: string, getNewDependencyVersion: (dependencyName: string) => (string | undefined)): void { const forceRefresh: boolean = shouldForceRefresh(process.argv); for (const packageFolder of packageFolders) { @@ -309,8 +309,8 @@ export function updateLocalDependencies(packageFolders: PackageFolder[], localDe } } -function updateLocalDependency(packageFolder: PackageFolder, dependencyName: string, getNewDependencyVersion: (dependencyName: string) => string): boolean { - const newDependencyVersion: string = getNewDependencyVersion(dependencyName); +function updateLocalDependency(packageFolder: PackageFolder, dependencyName: string, getNewDependencyVersion: (dependencyName: string) => (string | undefined)): boolean { + const newDependencyVersion: string = getNewDependencyVersion(dependencyName) || ""; const packageFolderPath: string = packageFolder.folderPath; diff --git a/.scripts/tsconfig.json b/.scripts/tsconfig.json new file mode 100644 index 000000000000..d354dde0fddd --- /dev/null +++ b/.scripts/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "noEmit": true, + "strict": true + }, + "include": [ + "*.ts", + "*.js" + ] +} diff --git a/package.json b/package.json index 07b17d8ae118..ff48e67bb1b5 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,8 @@ "all": true }, "scripts": { - "build": "run-p build:node build:es build:browser", + "build": "run-p build:scripts build:node build:es build:browser", + "build:scripts": "tsc -p ./.scripts/", "build:node": "tsc", "build:es": "tsc -p tsconfig.es.json", "build:browser": "webpack && node node_modules/uglify-es/bin/uglifyjs --source-map -c -m -o msRestAzureBundle.min.js msRestAzureBundle.js", From e13dc6be540a82ead1386ccf42ca0554b19b5805 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Wed, 5 Sep 2018 14:12:49 -0700 Subject: [PATCH 101/289] Update dependency versions --- package-lock.json | 115 +++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 59 insertions(+), 58 deletions(-) diff --git a/package-lock.json b/package-lock.json index e753475ac1bf..e86380ea55c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -181,9 +181,9 @@ "dev": true }, "@types/node": { - "version": "9.6.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.30.tgz", - "integrity": "sha512-mFkVM9yFexPPKm0sidVyEzM8F0O06W3vZ8QnjHYa3AB1uvtPOayGKLrXlXIKOdJ7LOE+zilhxYbGPy/34QTgrw==" + "version": "9.6.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.31.tgz", + "integrity": "sha512-kIVlvUBizL51ALNMPbmcZoM7quHyB7J6fLRwQe22JsMp39nrVSHdBeVVS3fnQCK1orxI3O8LScmb8cuiihkAfA==" }, "@types/range-parser": { "version": "1.2.2", @@ -200,9 +200,9 @@ } }, "@types/uuid": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.3.tgz", - "integrity": "sha512-5fRLCYhLtDb3hMWqQyH10qtF+Ud2JnNCXTCZ+9ktNdCcgslcuXkDTkFcJNk++MT29yDntDnlF1+jD+uVGumsbw==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.4.tgz", + "integrity": "sha512-tPIgT0GUmdJQNSHxp0X2jnpQfBSTfGxUMc/2CXBU2mnyTFVYVa2ojpoQ74w0U2yn2vw3jnC640+77lkFFpdVDw==", "requires": { "@types/node": "*" } @@ -418,7 +418,7 @@ }, "axios": { "version": "0.18.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "resolved": "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz", "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", "requires": { "follow-redirects": "^1.3.0", @@ -444,7 +444,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -678,7 +678,7 @@ }, "buffer": { "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { @@ -857,18 +857,18 @@ } }, "color-convert": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", - "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "color-name": "1.1.1" + "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "combined-stream": { @@ -1345,18 +1345,18 @@ } }, "event-stream": { - "version": "3.3.4", - "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", - "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.5.tgz", + "integrity": "sha512-vyibDcu5JL20Me1fP734QBH/kenBGLZap2n0+XXM7mvuUPzJ20Ydqj1aKcIeMdri1p+PU+4yAKugjN8KCVst+g==", "dev": true, "requires": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", - "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" + "duplexer": "^0.1.1", + "from": "^0.1.7", + "map-stream": "0.0.7", + "pause-stream": "^0.0.11", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through": "^2.3.8" } }, "events": { @@ -2739,9 +2739,9 @@ } }, "make-error": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz", - "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", "dev": true }, "map-cache": { @@ -2751,9 +2751,9 @@ "dev": true }, "map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", "dev": true }, "map-visit": { @@ -2881,7 +2881,7 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, @@ -2908,7 +2908,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { @@ -2940,9 +2940,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.21.404", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.21.404.tgz", - "integrity": "sha512-1k13dpN52ESyTvLRZ8uvTAnV6m8VORlJ1SFVLetJvndp8j6kI3xgvp+SQnCtFcYwTvNZpTVTl19/1jhxK5Vg+A==", + "version": "0.22.416", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.22.416.tgz", + "integrity": "sha512-6GidWNA/Wi5VClXxNfDbelf90DMBDFWHgZl/c8xRZM1wR3an+1M3gI53nLKPt8eZFAVOhv0tJAZGEzIpHx0iDw==", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", @@ -2957,9 +2957,9 @@ } }, "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz", + "integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==", "dev": true, "optional": true }, @@ -3003,9 +3003,9 @@ "dev": true }, "nice-try": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", - "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, "node-libs-browser": { @@ -5774,7 +5774,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true } @@ -5979,9 +5979,9 @@ "dev": true }, "split": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, "requires": { "through": "2" @@ -6034,12 +6034,13 @@ } }, "stream-combiner": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", "dev": true, "requires": { - "duplexer": "~0.1.1" + "duplexer": "~0.1.1", + "through": "~2.3.4" } }, "stream-http": { @@ -6247,7 +6248,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true } @@ -6360,7 +6361,7 @@ }, "yargs": { "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "requires": { @@ -6598,9 +6599,9 @@ } }, "webpack-sources": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", - "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.2.0.tgz", + "integrity": "sha512-9BZwxR85dNsjWz3blyxdOhTgtnQvv3OEs5xofI0wPYTwu5kaWxS08UuD1oI7WLBLpRO+ylf0ofnXLXWmGb2WMw==", "dev": true, "requires": { "source-list-map": "^2.0.0", @@ -6644,7 +6645,7 @@ }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { diff --git a/package.json b/package.json index ff48e67bb1b5..88b5990f5595 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.21.404", + "ms-rest-js": "~0.22.416", "tslib": "^1.9.2" }, "devDependencies": { From 5079e57dd7b9429c216f288c46f97834d723d523 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Wed, 5 Sep 2018 14:16:00 -0700 Subject: [PATCH 102/289] Update version to 0.17.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index e86380ea55c2..4cd93313cc1f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ms-rest-azure-js", - "version": "0.16.0", + "version": "0.17.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 88b5990f5595..d7dcde3525a1 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.16.0", + "version": "0.17.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", From 80871b2fe3b70a3819d067b08cb72a9d80ca3b4e Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 13 Sep 2018 15:16:37 -0700 Subject: [PATCH 103/289] Fix build in Windows environment --- package-lock.json | 111 ++++++++++++++++++++++++---------------------- package.json | 5 ++- 2 files changed, 62 insertions(+), 54 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4cd93313cc1f..73c2452ee6e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -181,9 +181,9 @@ "dev": true }, "@types/node": { - "version": "9.6.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.31.tgz", - "integrity": "sha512-kIVlvUBizL51ALNMPbmcZoM7quHyB7J6fLRwQe22JsMp39nrVSHdBeVVS3fnQCK1orxI3O8LScmb8cuiihkAfA==" + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.9.4.tgz", + "integrity": "sha512-fCHV45gS+m3hH17zgkgADUSi2RR1Vht6wOZ0jyHP8rjiQra9f+mIcgwPQHllmDocYOstIEbKlxbFDYlgrTPYqw==" }, "@types/range-parser": { "version": "1.2.2", @@ -208,9 +208,9 @@ } }, "acorn": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.2.tgz", - "integrity": "sha512-cJrKCNcr2kv8dlDnbw+JPUGjHZzo4myaxOLmpOX8a+rgX94YeTcTMv/LFJUSByRpc+i4GgVnnhLxvMu/2Y+rqw==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", "dev": true }, "acorn-dynamic-import": { @@ -607,7 +607,7 @@ }, "browserify-aes": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { @@ -644,7 +644,7 @@ }, "browserify-rsa": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { @@ -881,7 +881,7 @@ }, "commander": { "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "resolved": "http://registry.npmjs.org/commander/-/commander-2.15.1.tgz", "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true }, @@ -936,7 +936,7 @@ }, "create-hash": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { @@ -949,7 +949,7 @@ }, "create-hmac": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { @@ -1116,7 +1116,7 @@ }, "diffie-hellman": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { @@ -1133,7 +1133,7 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, @@ -1345,12 +1345,13 @@ } }, "event-stream": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.5.tgz", - "integrity": "sha512-vyibDcu5JL20Me1fP734QBH/kenBGLZap2n0+XXM7mvuUPzJ20Ydqj1aKcIeMdri1p+PU+4yAKugjN8KCVst+g==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.6.tgz", + "integrity": "sha512-dGXNg4F/FgVzlApjzItL+7naHutA3fDqbV/zAZqDDlXTjiMnQmZKu+prImWKszeBM5UQeGvAl3u1wBiKeDh61g==", "dev": true, "requires": { "duplexer": "^0.1.1", + "flatmap-stream": "^0.1.0", "from": "^0.1.7", "map-stream": "0.0.7", "pause-stream": "^0.0.11", @@ -1583,12 +1584,18 @@ "locate-path": "^2.0.0" } }, + "flatmap-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/flatmap-stream/-/flatmap-stream-0.1.0.tgz", + "integrity": "sha512-Nlic4ZRYxikqnK5rj3YoxDVKGGtUjcNDUtvQ7XsdGLZmMwdUYnXf10o1zcXtzEZTBgc6GxeRpQxV/Wu3WPIIHA==", + "dev": true + }, "follow-redirects": { - "version": "1.5.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.7.tgz", - "integrity": "sha512-NONJVIFiX7Z8k2WxfqBjtwqMifx7X42ORLFrOZ2LTKGj71G3C0kfdyTqGqr8fx5zSX6Foo/D95dgGWbPUiwnew==", + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.8.tgz", + "integrity": "sha512-sy1mXPmv7kLAMKW/8XofG7o9T+6gAjzdZK4AJF6ryqQYUa/hnzgiypoeUecZ53x7XiqKNEpNqLtS97MshW2nxg==", "requires": { - "debug": "^3.1.0" + "debug": "=3.1.0" } }, "for-in": { @@ -2702,9 +2709,9 @@ } }, "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, "lodash.debounce": { @@ -2940,9 +2947,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.22.416", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.22.416.tgz", - "integrity": "sha512-6GidWNA/Wi5VClXxNfDbelf90DMBDFWHgZl/c8xRZM1wR3an+1M3gI53nLKPt8eZFAVOhv0tJAZGEzIpHx0iDw==", + "version": "0.22.422", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.22.422.tgz", + "integrity": "sha512-jcRRhz6u4WJpdOGfv4Be/oC0bGkB77Dgpbab4JkhWgZYwd+pm880lWZ5rmbZ+sTYxD64tx6rUGr8nYd19mhnRA==", "requires": { "@types/express": "^4.11.1", "@types/form-data": "^2.2.1", @@ -2954,6 +2961,13 @@ "tslib": "^1.9.2", "uuid": "^3.2.1", "xml2js": "^0.4.19" + }, + "dependencies": { + "@types/node": { + "version": "9.6.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.31.tgz", + "integrity": "sha512-kIVlvUBizL51ALNMPbmcZoM7quHyB7J6fLRwQe22JsMp39nrVSHdBeVVS3fnQCK1orxI3O8LScmb8cuiihkAfA==" + } } }, "nan": { @@ -5261,7 +5275,7 @@ }, "parse-asn1": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", "dev": true, "requires": { @@ -5341,7 +5355,7 @@ }, "pause-stream": { "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "resolved": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "dev": true, "requires": { @@ -5413,7 +5427,7 @@ }, "public-encrypt": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", + "resolved": "http://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", "dev": true, "requires": { @@ -5532,7 +5546,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -5546,15 +5560,14 @@ } }, "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" } }, "rechoir": { @@ -5678,12 +5691,6 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, "set-value": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", @@ -5715,7 +5722,7 @@ }, "sha.js": { "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "requires": { @@ -5973,9 +5980,9 @@ } }, "spdx-license-ids": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", + "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==", "dev": true }, "split": { @@ -6035,7 +6042,7 @@ }, "stream-combiner": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", "dev": true, "requires": { @@ -6147,7 +6154,7 @@ }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -6301,9 +6308,9 @@ "dev": true }, "typescript": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", - "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.3.tgz", + "integrity": "sha512-kk80vLW9iGtjMnIv11qyxLqZm20UklzuR2tL0QAnDIygIUIemcZMxlMWudl9OOt76H3ntVzcTiddQ1/pAAJMYg==", "dev": true }, "uglify-es": { diff --git a/package.json b/package.json index d7dcde3525a1..e13eb86825fb 100644 --- a/package.json +++ b/package.json @@ -30,12 +30,13 @@ "types": "./typings/lib/msRestAzure.d.ts", "license": "MIT", "dependencies": { - "ms-rest-js": "~0.22.416", + "ms-rest-js": "~0.22.422", "tslib": "^1.9.2" }, "devDependencies": { "@types/chai": "^4.1.4", "@types/mocha": "^5.2.1", + "@types/node": "^10.9.4", "chai": "^4.1.2", "mocha": "^5.2.0", "npm-run-all": "^4.1.2", @@ -44,7 +45,7 @@ "ts-loader": "^2.3.7", "ts-node": "^5.0.1", "tslint": "^5.7.0", - "typescript": "^2.5.2", + "typescript": "^3.0.3", "uglify-es": "^3.1.0", "webpack": "^3.6.0", "yarn": "^1.6.0" From 059b6740689fab80d9d0c7c51010887320598544 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Wed, 19 Sep 2018 18:46:22 -0700 Subject: [PATCH 104/289] Add additionalInfo to CloudError (#63) * Add additionalInfo to CloudError * Change mapper from Object to Composite * Add additional info interface --- lib/cloudError.ts | 46 ++++++++++++++++++++++++++++++++++++++++- test/cloudErrorTests.ts | 36 +++++++++++++++++++++++++++++--- 2 files changed, 78 insertions(+), 4 deletions(-) diff --git a/lib/cloudError.ts b/lib/cloudError.ts index a732acbf63c3..7e6c18a47d43 100644 --- a/lib/cloudError.ts +++ b/lib/cloudError.ts @@ -28,6 +28,26 @@ export interface CloudError extends Error { * @property {any} [innerError] The inner error parsed from the body of the http error response */ innerError?: any; + /** + * @property {AdditionalInfoElement} [innerError] The additional error information + */ + additionalInfo?: AdditionalInfoElement; +} + +/** + * @interface + * Additional data for an instance of CloudError. + */ +export interface AdditionalInfoElement { + /** + * @property {string} [type] Type of the data. + */ + type?: string; + + /** + * @property {string} [info] Additional info. + */ + info?: string; } export const CloudErrorMapper: CompositeMapper = { @@ -75,7 +95,31 @@ export const CloudErrorMapper: CompositeMapper = { type: { name: "Object" } + }, + additionalInfo: { + required: false, + serializedName: "additionalInfo", + type: { + name: "Composite", + className: "AdditionalInfoElement", + modelProperties: { + type: { + required: true, + serializedName: "type", + type: { + name: "String" + } + }, + info: { + required: false, + serializedName: "info", + type: { + name: "Object" + } + } + } + } } } } -}; \ No newline at end of file +}; diff --git a/test/cloudErrorTests.ts b/test/cloudErrorTests.ts index ccd183294e0f..b1beaf0bfed1 100644 --- a/test/cloudErrorTests.ts +++ b/test/cloudErrorTests.ts @@ -4,7 +4,7 @@ import { expect } from "chai"; describe("CloudError", () => { - const serializer = new Serializer({"CloudError": CloudErrorMapper}); + const serializer = new Serializer({ "CloudError": CloudErrorMapper }); describe("serialization", () => { it("serializes properly required properties", () => { @@ -30,7 +30,7 @@ describe("CloudError", () => { code: "200", message: "test message", target: "my target", - details: [ { name: "error", code: "404", message: "not found" }, { name: "error", code: "500", message: "Internal error" } ], + details: [{ name: "error", code: "404", message: "not found" }, { name: "error", code: "500", message: "Internal error" }], innerError: new Error("Resource not found"), stack: "call stack" }; @@ -73,7 +73,7 @@ describe("CloudError", () => { code: "200", message: "test message", target: "my target", - details: [ { code: "404", message: "not found" }, { code: "500", message: "Internal error" } ], + details: [{ code: "404", message: "not found" }, { code: "500", message: "Internal error" }], innererror: new Error("Resource not found"), stack: "call stack" }; @@ -85,5 +85,35 @@ describe("CloudError", () => { expect(deserializedCloudError.innerError).to.be.equal(cloudError.innererror); expect(deserializedCloudError.stack).to.not.exist; }); + + it("should correctly deserialize additionalInfo", function (done) { + const errorBody = { + "code": "BadArgument", + "message": "The provided database ‘foo’ has an invalid username.", + "target": "query", + "details": [{ + "code": "301", + "target": "$search", + "message": "$search query option not supported", + "additionalInfo": { + "type": "SomeErrorType", + "info": { + "someProperty": "SomeValue" + } + } + }] + }; + + const deserializedError = serializer.deserialize(CloudErrorMapper, errorBody, "deserializedCloudError"); + + expect(deserializedError.code).to.equal("BadArgument"); + expect(deserializedError.message).to.equal("The provided database ‘foo’ has an invalid username."); + expect(deserializedError.target).to.equal("query"); + expect(deserializedError.details.length).to.equal(1); + expect(deserializedError.details![0].code).to.equal("301"); + expect(deserializedError.details![0].additionalInfo.type).to.equal("SomeErrorType"); + expect(deserializedError.details![0].additionalInfo.info.someProperty).to.equal("SomeValue"); + done(); + }); }); }); From 2fb7c939fe35f5b529f249f7277a37e17a49c16c Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Thu, 4 Oct 2018 14:50:00 -0700 Subject: [PATCH 105/289] Rollup (#65) * Use esModuleInterop, etc * Add rollup config * Depend on uglify-js * Bump to v1.0.0 * Update to v1.0.0 * Update changelog * Replace npmignore with pkg.files * Update lockfile and typescript version * Update ts-node * Fix 'main' field --- .gitignore | 6 +- .npmignore | 19 - Changelog.md | 9 + package-lock.json | 3365 +---------------- package.json | 40 +- rollup.config.js | 31 + test/azureServiceClientTests.ts | 2 +- .../cognitiveServicesCredentialsTests.ts | 2 +- test/lroPollStrategyTests.ts | 2 +- test/msAssert.ts | 2 +- tsconfig.json | 4 +- webpack.config.js | 45 - 12 files changed, 182 insertions(+), 3345 deletions(-) delete mode 100644 .npmignore create mode 100644 rollup.config.js delete mode 100644 webpack.config.js diff --git a/.gitignore b/.gitignore index 602b6d960b3d..8363c79d8472 100644 --- a/.gitignore +++ b/.gitignore @@ -87,7 +87,11 @@ output/* .nyc_output/ coverage/ dist/ -typings/ +*.d.ts +*.d.ts.map *.js *.js.map +# Rollup +!rollup.config.js +*-stats.html diff --git a/.npmignore b/.npmignore deleted file mode 100644 index bfa3e84811a6..000000000000 --- a/.npmignore +++ /dev/null @@ -1,19 +0,0 @@ -!dist/lib/**/*.js -!es/lib/**/*.js -!typings/lib/**/*.d.ts -.vscode/ -.idea/ -.nyc_output/ -coverage/ -samples/ -lib/ -test/ -.travis.yml -.gitignore -gulpfile.js -.git -.DS_Store -tsconfig.json -tslint.json -webpack.config.ts -*.js.map diff --git a/Changelog.md b/Changelog.md index 5b944581eaa0..ff8d31c0cd2c 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,14 +1,23 @@ +### 1.0.0 - 2018/10/04 + +- Moved to rollup for bundling +- Moved browser bundle from ./msRestAzureBundle.js to ./dist/msRestAzure.js (same bundle for nodejs and browser) + ### 0.2.8 - 2017/04/02 + - Updated ms-rest-js to 0.2.8 - Added CognitiveServicesCredentials ### 0.2.1 - 2017/10/25 + - Updating the minimum version of dependency "ms-rest-js": "^0.2.3". This brings in the change (removal of "bodyAsStream" property) done to HttpOperationResponse class ### 0.2.0 - 2017/10/11 + - Updating the minimum version of dependency "ms-rest-js": "^0.2.1". This also gets a strict dependency to "moment" version 2.18.1 as 2.19.0 has bugs. ### 0.1.0 - 2017/09/16 + - Initial version of the isomorphic azure runtime along with type definitions that works in the browser as well as the node.js environment - Supports polling for long running operations - Provides definition of CloudError \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 73c2452ee6e8..1228e9a02f3e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ms-rest-azure-js", - "version": "0.17.0", + "version": "1.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -113,66 +113,17 @@ "to-fast-properties": "^2.0.0" } }, - "@types/body-parser": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz", - "integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==", - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, "@types/chai": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.4.tgz", "integrity": "sha512-h6+VEw2Vr3ORiFCyyJmcho2zALnUq9cvdB/IO8Xs9itrJVCenC7o26A6+m7D0ihTTr65eS259H5/Ghl/VjYs6g==", "dev": true }, - "@types/connect": { - "version": "3.4.32", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", - "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==", - "requires": { - "@types/node": "*" - } - }, - "@types/events": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", - "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==" - }, - "@types/express": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.0.tgz", - "integrity": "sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.0.tgz", - "integrity": "sha512-lTeoCu5NxJU4OD9moCgm0ESZzweAx0YqsAcab6OB0EB3+As1OaHtKnaGJvcngQxYsi9UNv0abn4/DRavrRxt4w==", - "requires": { - "@types/events": "*", - "@types/node": "*", - "@types/range-parser": "*" - } - }, - "@types/form-data": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", - "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/mime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz", - "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==" + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true }, "@types/mocha": { "version": "5.2.5", @@ -183,82 +134,9 @@ "@types/node": { "version": "10.9.4", "resolved": "https://registry.npmjs.org/@types/node/-/node-10.9.4.tgz", - "integrity": "sha512-fCHV45gS+m3hH17zgkgADUSi2RR1Vht6wOZ0jyHP8rjiQra9f+mIcgwPQHllmDocYOstIEbKlxbFDYlgrTPYqw==" - }, - "@types/range-parser": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.2.tgz", - "integrity": "sha512-HtKGu+qG1NPvYe1z7ezLsyIaXYyi8SoAVqWDZgDQ8dLrsZvSzUNCwZyfX33uhWxL/SU0ZDQZ3nwZ0nimt507Kw==" - }, - "@types/serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==", - "requires": { - "@types/express-serve-static-core": "*", - "@types/mime": "*" - } - }, - "@types/uuid": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.4.tgz", - "integrity": "sha512-tPIgT0GUmdJQNSHxp0X2jnpQfBSTfGxUMc/2CXBU2mnyTFVYVa2ojpoQ74w0U2yn2vw3jnC640+77lkFFpdVDw==", - "requires": { - "@types/node": "*" - } - }, - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", - "dev": true - }, - "acorn-dynamic-import": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", - "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", - "dev": true, - "requires": { - "acorn": "^4.0.3" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true - } - } - }, - "ajv": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", - "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "integrity": "sha512-fCHV45gS+m3hH17zgkgADUSi2RR1Vht6wOZ0jyHP8rjiQra9f+mIcgwPQHllmDocYOstIEbKlxbFDYlgrTPYqw==", "dev": true }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - } - }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -274,16 +152,6 @@ "color-convert": "^1.9.0" } }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -293,24 +161,6 @@ "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, "array-filter": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", @@ -329,93 +179,23 @@ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", "dev": true }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true, - "requires": { - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "dev": true, - "requires": { - "lodash": "^4.17.10" - } - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, "axios": { "version": "0.18.0", "resolved": "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz", @@ -469,91 +249,12 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", - "dev": true - }, "big.js": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", "dev": true }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -564,186 +265,24 @@ "concat-map": "0.0.1" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "buffer": { - "version": "4.9.1", - "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, "chai": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", @@ -775,87 +314,6 @@ "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", "dev": true }, - "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -873,7 +331,7 @@ }, "combined-stream": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { "delayed-stream": "~1.0.0" @@ -885,86 +343,22 @@ "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { "nice-try": "^1.0.4", @@ -974,40 +368,6 @@ "which": "^1.2.9" } }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "requires": { - "es5-ext": "^0.10.9" - } - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -1016,18 +376,6 @@ "ms": "2.0.0" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, "deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", @@ -1046,112 +394,23 @@ "object-keys": "^1.0.12" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, "duplexer": { "version": "0.1.1", "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, - "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, "emojis-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", @@ -1212,138 +471,30 @@ "is-symbol": "^1.0.1" } }, - "es5-ext": { - "version": "0.10.46", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", - "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" - } - }, "es6-object-assign": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=", "dev": true }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.14", - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true, - "requires": { - "es6-map": "^0.1.3", - "es6-weak-map": "^2.0.1", - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, "event-stream": { "version": "3.3.6", "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.6.tgz", @@ -1360,230 +511,6 @@ "through": "^2.3.8" } }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, "flatmap-stream": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/flatmap-stream/-/flatmap-stream-0.1.0.tgz", @@ -1598,12 +525,6 @@ "debug": "=3.1.0" } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, "form-data": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", @@ -1614,15 +535,6 @@ "mime-types": "^2.1.12" } }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, "from": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", @@ -1635,565 +547,18 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": "^2.1.0" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true, - "dev": true - } - } - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, "get-func-name": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", @@ -2208,27 +573,6 @@ "path-is-absolute": "^1.0.0" } }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, "globals": { "version": "11.7.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", @@ -2250,120 +594,39 @@ "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "function-bind": "^1.1.1" } }, - "hash.js": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", - "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "ansi-regex": "^2.0.0" } }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, "he": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", "dev": true }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, "hosted-git-info": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", "dev": true }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -2395,36 +658,12 @@ "loose-envify": "^1.0.0" } }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", @@ -2445,87 +684,17 @@ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", "dev": true }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", "dev": true }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { + "is-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true }, "is-regex": { "version": "1.0.4", @@ -2536,22 +705,16 @@ "has": "^1.0.1" } }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, "is-symbol": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", "dev": true }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true }, "isarray": { @@ -2566,12 +729,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, "istanbul-lib-coverage": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", @@ -2615,24 +772,12 @@ "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", "dev": true }, - "json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", - "dev": true - }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", @@ -2645,30 +790,6 @@ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -2681,12 +802,6 @@ "strip-bom": "^3.0.0" } }, - "loader-runner": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", - "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", - "dev": true - }, "loader-utils": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", @@ -2698,34 +813,12 @@ "json5": "^0.5.0" } }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -2735,62 +828,18 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "make-error": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", "dev": true }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, "map-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", "dev": true }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -2807,45 +856,6 @@ "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", "dev": true }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, "mime-db": { "version": "1.36.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", @@ -2859,24 +869,6 @@ "mime-db": "~1.36.0" } }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -2892,27 +884,6 @@ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "mkdirp": { "version": "0.5.1", "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -2947,112 +918,24 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "0.22.422", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-0.22.422.tgz", - "integrity": "sha512-jcRRhz6u4WJpdOGfv4Be/oC0bGkB77Dgpbab4JkhWgZYwd+pm880lWZ5rmbZ+sTYxD64tx6rUGr8nYd19mhnRA==", + "version": "1.0.439", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-1.0.439.tgz", + "integrity": "sha512-5VbMxwlIynJbQFI2L8Y6pg8886ucuLSrFBoxI4IauQvp6hEXddt0/NJxs152GXeKPExZdl6HX0S00KIaO0uVGw==", "requires": { - "@types/express": "^4.11.1", - "@types/form-data": "^2.2.1", - "@types/node": "^9.4.6", - "@types/uuid": "^3.4.3", "axios": "^0.18.0", "form-data": "^2.3.2", "tough-cookie": "^2.4.3", "tslib": "^1.9.2", "uuid": "^3.2.1", "xml2js": "^0.4.19" - }, - "dependencies": { - "@types/node": { - "version": "9.6.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.31.tgz", - "integrity": "sha512-kIVlvUBizL51ALNMPbmcZoM7quHyB7J6fLRwQe22JsMp39nrVSHdBeVVS3fnQCK1orxI3O8LScmb8cuiihkAfA==" - } } }, - "nan": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz", - "integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "neo-async": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.2.tgz", - "integrity": "sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw==", - "dev": true - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "node-libs-browser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", - "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^1.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.10.3", - "vm-browserify": "0.0.4" - } - }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -3065,15 +948,6 @@ "validate-npm-package-license": "^3.0.1" } }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, "npm-run-all": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.3.tgz", @@ -3091,21 +965,6 @@ "string.prototype.padend": "^3.0.0" } }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, "nyc": { "version": "12.0.2", "resolved": "https://registry.npmjs.org/nyc/-/nyc-12.0.2.tgz", @@ -5165,52 +3024,12 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "object-keys": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", "dev": true }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -5220,70 +3039,13 @@ "wrappy": "1" } }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "pako": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", - "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", - "dev": true - }, - "parse-asn1": { - "version": "5.1.1", - "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", - "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "opn": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", + "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", "dev": true, "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" + "is-wsl": "^1.1.0" } }, "parse-json": { @@ -5296,30 +3058,6 @@ "json-parse-better-errors": "^1.0.1" } }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -5362,37 +3100,12 @@ "through": "~2.3" } }, - "pbkdf2": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", - "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", @@ -5414,66 +3127,16 @@ "event-stream": "~3.3.0" } }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, "psl": { "version": "1.1.29", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" }, - "public-encrypt": { - "version": "4.0.2", - "resolved": "http://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", - "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1" - } - }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, "read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -5485,65 +3148,6 @@ "path-type": "^3.0.0" } }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - }, - "dependencies": { - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - } - } - } - }, "readable-stream": { "version": "2.3.6", "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", @@ -5559,17 +3163,6 @@ "util-deprecate": "~1.0.1" } }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -5579,46 +3172,6 @@ "resolve": "^1.1.6" } }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, "resolve": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", @@ -5628,35 +3181,53 @@ "path-parse": "^1.0.5" } }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true + "rollup": { + "version": "0.66.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.66.4.tgz", + "integrity": "sha512-oV6dzR2zDYVOMUmrM1XMTW0NlZqKeZANAWH+A7BwCfE+mAfJ6xRkYbrM3qAossgyMxPN9aFBu8kRXf5HYB5gvw==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "@types/node": "*" + } }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "rollup-plugin-node-resolve": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.4.0.tgz", + "integrity": "sha512-PJcd85dxfSBWih84ozRtBkB731OjXk0KnzN0oGp7WOWcarAFkVa71cV5hTJg2qpVsV2U8EUwrzHP3tvy9vS3qg==", "dev": true, "requires": { - "align-text": "^0.1.1" + "builtin-modules": "^2.0.0", + "is-module": "^1.0.0", + "resolve": "^1.1.6" + }, + "dependencies": { + "builtin-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-2.0.0.tgz", + "integrity": "sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==", + "dev": true + } } }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "rollup-plugin-visualizer": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-0.9.2.tgz", + "integrity": "sha512-EHXHLp9Q8v5QdRTSjgio4Alr2MKxCJroLhJunmcH+pWAM5869nI5mdWjk2jp64rjxzEahrMYmfF/G5sbTHIhKw==", "dev": true, "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "mkdirp": "^0.5.1", + "opn": "^5.3.0", + "source-map": "^0.7.3", + "typeface-oswald": "0.0.54" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } } }, "safe-buffer": { @@ -5665,15 +3236,6 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -5685,51 +3247,6 @@ "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", "dev": true }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -5787,148 +3304,12 @@ } } }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - } - }, - "source-list-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", - "dev": true - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "source-map-support": { "version": "0.5.9", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", @@ -5947,12 +3328,6 @@ } } }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, "spdx-correct": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", @@ -5994,51 +3369,11 @@ "through": "2" } }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } + "dev": true }, "stream-combiner": { "version": "0.2.2", @@ -6050,52 +3385,6 @@ "through": "~2.3.4" } }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, "string.prototype.padend": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", @@ -6131,12 +3420,6 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, "supports-color": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", @@ -6158,58 +3441,12 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, - "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", @@ -6238,18 +3475,18 @@ } }, "ts-node": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-5.0.1.tgz", - "integrity": "sha512-XK7QmDcNHVmZkVtkiwNDWiERRHPyU8nBqZB1+iv2UhOG0q3RQ9HsZ2CMqISlFbxjrYFGfG2mX7bW4dAyxBVzUw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", "dev": true, "requires": { "arrify": "^1.0.0", - "chalk": "^2.3.0", + "buffer-from": "^1.1.0", "diff": "^3.1.0", "make-error": "^1.1.1", "minimist": "^1.2.0", "mkdirp": "^0.5.1", - "source-map-support": "^0.5.3", + "source-map-support": "^0.5.6", "yn": "^2.0.0" }, "dependencies": { @@ -6295,38 +3532,38 @@ "tslib": "^1.8.1" } }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, + "typeface-oswald": { + "version": "0.0.54", + "resolved": "https://registry.npmjs.org/typeface-oswald/-/typeface-oswald-0.0.54.tgz", + "integrity": "sha512-U1WMNp4qfy4/3khIfHMVAIKnNu941MXUfs3+H9R8PFgnoz42Hh9pboSFztWr86zut0eXC8byalmVhfkiKON/8Q==", + "dev": true + }, "typescript": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.3.tgz", - "integrity": "sha512-kk80vLW9iGtjMnIv11qyxLqZm20UklzuR2tL0QAnDIygIUIemcZMxlMWudl9OOt76H3ntVzcTiddQ1/pAAJMYg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.1.tgz", + "integrity": "sha512-Veu0w4dTc/9wlWNf2jeRInNodKlcdLgemvPsrNpfu5Pq39sgfFjvIIgTsvUHCoLBnMhPoUA+tFxsXjU6VexVRQ==", "dev": true }, - "uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "uglify-js": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", + "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", "dev": true, "requires": { - "commander": "~2.13.0", + "commander": "~2.17.1", "source-map": "~0.6.1" }, "dependencies": { "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", "dev": true }, "source-map": { @@ -6337,186 +3574,6 @@ } } }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, - "optional": true - }, - "uglifyjs-webpack-plugin": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", - "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", - "dev": true, - "requires": { - "source-map": "^0.5.6", - "uglify-js": "^2.8.29", - "webpack-sources": "^1.0.1" - }, - "dependencies": { - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - } - }, - "yargs": { - "version": "3.10.0", - "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", - "dev": true - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - } - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -6538,91 +3595,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } - }, - "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", - "dev": true, - "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - } - }, - "webpack": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz", - "integrity": "sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ==", - "dev": true, - "requires": { - "acorn": "^5.0.0", - "acorn-dynamic-import": "^2.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "async": "^2.1.2", - "enhanced-resolve": "^3.4.0", - "escope": "^3.6.0", - "interpret": "^1.0.0", - "json-loader": "^0.5.4", - "json5": "^0.5.1", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "mkdirp": "~0.5.0", - "node-libs-browser": "^2.0.0", - "source-map": "^0.5.3", - "supports-color": "^4.2.1", - "tapable": "^0.2.7", - "uglifyjs-webpack-plugin": "^0.4.6", - "watchpack": "^1.4.0", - "webpack-sources": "^1.0.1", - "yargs": "^8.0.2" - }, - "dependencies": { - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "^2.0.0" - } - } - } - }, - "webpack-sources": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.2.0.tgz", - "integrity": "sha512-9BZwxR85dNsjWz3blyxdOhTgtnQvv3OEs5xofI0wPYTwu5kaWxS08UuD1oI7WLBLpRO+ylf0ofnXLXWmGb2WMw==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -6632,47 +3604,6 @@ "isexe": "^2.0.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -6693,94 +3624,6 @@ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "yargs": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", - "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", - "dev": true, - "requires": { - "camelcase": "^4.1.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "read-pkg-up": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^7.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - } - } - }, - "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - } - } - }, "yarn": { "version": "1.9.4", "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.9.4.tgz", diff --git a/package.json b/package.json index e13eb86825fb..8ed59f5ed989 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "0.17.0", + "version": "1.0.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -25,12 +25,23 @@ "autorest", "clientruntime" ], - "main": "./dist/lib/msRestAzure.js", + "main": "./dist/msRestAzure.js", "browser": "./es/lib/msRestAzure.js", - "types": "./typings/lib/msRestAzure.d.ts", + "types": "./es/lib/msRestAzure.d.ts", + "files": [ + "dist/**/*.js", + "dist/**/*.js.map", + "es/lib/**/*.js", + "es/lib/**/*.js.map", + "es/lib/**/*.d.ts", + "es/lib/**/*.d.ts.map", + "lib/**/*.ts", + "LICENSE", + "README.md" + ], "license": "MIT", "dependencies": { - "ms-rest-js": "~0.22.422", + "ms-rest-js": "^1.0.439", "tslib": "^1.9.2" }, "devDependencies": { @@ -41,13 +52,15 @@ "mocha": "^5.2.0", "npm-run-all": "^4.1.2", "nyc": "^12.0.2", + "rollup": "^0.66.4", + "rollup-plugin-node-resolve": "^3.4.0", + "rollup-plugin-visualizer": "^0.9.2", "shx": "^0.2.2", "ts-loader": "^2.3.7", - "ts-node": "^5.0.1", + "ts-node": "^7.0.1", "tslint": "^5.7.0", - "typescript": "^3.0.3", - "uglify-es": "^3.1.0", - "webpack": "^3.6.0", + "typescript": "^3.1.1", + "uglify-js": "^3.4.9", "yarn": "^1.6.0" }, "homepage": "https://github.com/Azure/ms-rest-azure-js", @@ -75,13 +88,12 @@ "all": true }, "scripts": { - "build": "run-p build:scripts build:node build:es build:browser", + "build": "run-p build:scripts build:lib", "build:scripts": "tsc -p ./.scripts/", - "build:node": "tsc", - "build:es": "tsc -p tsconfig.es.json", - "build:browser": "webpack && node node_modules/uglify-es/bin/uglifyjs --source-map -c -m -o msRestAzureBundle.min.js msRestAzureBundle.js", - "watch:node": "tsc -w", - "watch:browser": "webpack -w", + "build:lib": "run-s build:tsc build:rollup build:minify", + "build:tsc": "tsc -p tsconfig.es.json", + "build:rollup": "rollup -c rollup.config.js", + "build:minify": "uglifyjs -c -m --comments --source-map \"content='./dist/msRestAzure.js.map'\" -o ./dist/msRestAzure.min.js ./dist/msRestAzure.js", "test": "run-p test:tslint test:unit", "test:unit": "nyc mocha", "test:tslint": "tslint -p . -c tslint.json --exclude test/**/*.ts", diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 000000000000..c0615890da5c --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,31 @@ +import nodeResolve from "rollup-plugin-node-resolve"; +import visualizer from "rollup-plugin-visualizer"; + +const banner = `/** @license ms-rest-azure-js + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + */`; + +/** + * @type {import('rollup').RollupFileOptions} + */ +const config = { + input: './es/lib/msRestAzure.js', + external: ["ms-rest-js"], + output: { + file: "./dist/msRestAzure.js", + format: "umd", + name: "msRestAzure", + sourcemap: true, + globals: { + "ms-rest-js": "msRest" + }, + banner + }, + plugins: [ + nodeResolve({ module: true }), + visualizer({ filename: "dist/node-stats.html", sourcemap: true }) + ] +} + +export default config; diff --git a/test/azureServiceClientTests.ts b/test/azureServiceClientTests.ts index b66034a0730e..01ddc141593f 100644 --- a/test/azureServiceClientTests.ts +++ b/test/azureServiceClientTests.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import * as assert from "assert"; +import assert from "assert"; import { HttpHeaders, HttpOperationResponse, RequestOptionsBase, RestError, TokenCredentials, WebResource, OperationArguments, OperationSpec, Serializer } from "ms-rest-js"; import { AzureServiceClient, AzureServiceClientOptions, updateOptionsWithDefaultValues } from "../lib/azureServiceClient"; import * as msAssert from "./msAssert"; diff --git a/test/credentials/cognitiveServicesCredentialsTests.ts b/test/credentials/cognitiveServicesCredentialsTests.ts index 12bf4ce29275..904a517d08ed 100644 --- a/test/credentials/cognitiveServicesCredentialsTests.ts +++ b/test/credentials/cognitiveServicesCredentialsTests.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import * as assert from "assert"; +import assert from "assert"; import { WebResource } from "ms-rest-js"; import { CognitiveServicesCredentials } from "../../lib/credentials/cognitiveServicesCredentials"; import * as msAssert from "../msAssert"; diff --git a/test/lroPollStrategyTests.ts b/test/lroPollStrategyTests.ts index 59ba2f01988d..0863bc16e4bb 100644 --- a/test/lroPollStrategyTests.ts +++ b/test/lroPollStrategyTests.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import * as assert from "assert"; +import assert from "assert"; import { HttpHeaders, HttpOperationResponse, TokenCredentials, WebResource } from "ms-rest-js"; import { AzureServiceClient } from "../lib/azureServiceClient"; import { getDelayInSeconds } from "../lib/lroPollStrategy"; diff --git a/test/msAssert.ts b/test/msAssert.ts index 660b805ffbcc..c673311dd53c 100644 --- a/test/msAssert.ts +++ b/test/msAssert.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import * as assert from "assert"; +import assert from "assert"; /** * Assert that the provided syncFunction throws an Error. If the expectedError is undefined, then diff --git a/tsconfig.json b/tsconfig.json index 4214fc147139..2f191dc15858 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,8 +12,10 @@ "outDir": "dist", "strict": true, "declaration": true, - "declarationDir": "./typings", + "declarationMap": true, "importHelpers": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, "lib": [ "dom", "dom.iterable", diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index fc622b31daea..000000000000 --- a/webpack.config.js +++ /dev/null @@ -1,45 +0,0 @@ -const webpack = require('webpack'); -const path = require('path'); - -module.exports = { - entry: './lib/msRestAzure.ts', - devtool: 'source-map', - output: { - filename: 'msRestAzureBundle.js', - path: __dirname, - libraryTarget: 'var', - library: 'msRestAzure' - }, - plugins: [ - new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/) - ], - module: { - rules: [ - { - test: /\.tsx?$/, - loader: 'ts-loader', - exclude: /(node_modules|test)/, - options: { configFile: path.join(__dirname, './tsconfig.es.json') } - } - ] - }, - // ms-rest-js is a dependency of this project. Customer is expected to manually import/include - // this for browser javascript in a script tag. More info over here - // https://webpack.js.org/configuration/externals/ and https://webpack.js.org/guides/author-libraries/#add-externals. - externals: { - "ms-rest-js": "msRest" - }, - resolve: { - extensions: [".tsx", ".ts", ".js"] - }, - node: { - fs: false, - net: false, - path: false, - dns: false, - tls: false, - tty: false, - v8: false, - Buffer: false - } -}; \ No newline at end of file From 793840b476725784b7300f2204cc3e8f06a9d6fe Mon Sep 17 00:00:00 2001 From: Rikki Gibson Date: Fri, 5 Oct 2018 14:37:46 -0700 Subject: [PATCH 106/289] Change browser to module in package.json (#66) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8ed59f5ed989..1d0f7b9a00ec 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "clientruntime" ], "main": "./dist/msRestAzure.js", - "browser": "./es/lib/msRestAzure.js", + "module": "./es/lib/msRestAzure.js", "types": "./es/lib/msRestAzure.d.ts", "files": [ "dist/**/*.js", From 9f8fca3e4d0ead7040bf30a1dfd5fd665cd63c20 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Fri, 12 Oct 2018 12:22:50 -0700 Subject: [PATCH 107/289] Remove step from scripts that changed package.json main property --- .scripts/dependencies.ts | 20 -------------------- .scripts/latest.ts | 1 - .scripts/local.ts | 1 - .scripts/preview.ts | 1 - 4 files changed, 23 deletions(-) diff --git a/.scripts/dependencies.ts b/.scripts/dependencies.ts index e0406b80c3b6..4d676e4025dd 100644 --- a/.scripts/dependencies.ts +++ b/.scripts/dependencies.ts @@ -180,26 +180,6 @@ export function getNpmPackageVersion(packageName: string, tag: string): string | return npmViewResult["dist-tags"][tag]; } -/** - * Update the package.json property values for "main". - * @param {string} mainValue The value that will be used for "main". - * @returns {void} - */ -export function updatePackageJsonMain(packageFolderPath: string, mainValue: string): void { - const packageJsonFilePath: string = getPackageJsonFilePath(packageFolderPath); - - const packageJson: any = getPackageJson(packageJsonFilePath); - - if (packageJson.main === mainValue) { - log(packageJsonFilePath, `"main" is already set to "${mainValue}".`); - } else { - log(packageJsonFilePath, `Changing "main" to "${mainValue}".`); - packageJson.main = mainValue; - - writePackageJson(packageJson, packageJsonFilePath); - } -} - /** * Update the dependency versions in the files at the provided codeFilePaths. * @param {string[]} codeFilePath The paths to the code files that should be updated. diff --git a/.scripts/latest.ts b/.scripts/latest.ts index c4a078fddc60..0d12e57708e7 100644 --- a/.scripts/latest.ts +++ b/.scripts/latest.ts @@ -1,5 +1,4 @@ import * as dependencies from "./dependencies"; import * as repository from "./repository"; -dependencies.updatePackageJsonMain(dependencies.getThisRepositoryFolderPath(), "./dist/lib/msRestAzure.js"); dependencies.updateLocalDependencies(repository.packageFolders, "latest", dependencies.getLatestDependencyVersion); \ No newline at end of file diff --git a/.scripts/local.ts b/.scripts/local.ts index 89920adf88fe..92d6c0eab634 100644 --- a/.scripts/local.ts +++ b/.scripts/local.ts @@ -1,5 +1,4 @@ import * as dependencies from "./dependencies"; import * as repository from "./repository"; -dependencies.updatePackageJsonMain(dependencies.getThisRepositoryFolderPath(), "./lib/msRestAzure.ts"); dependencies.updateLocalDependencies(repository.packageFolders, "local", dependencies.getLocalDependencyVersion); \ No newline at end of file diff --git a/.scripts/preview.ts b/.scripts/preview.ts index 5cf4bfe8cd89..1d5ff95677e1 100644 --- a/.scripts/preview.ts +++ b/.scripts/preview.ts @@ -1,5 +1,4 @@ import * as dependencies from "./dependencies"; import * as repository from "./repository"; -dependencies.updatePackageJsonMain(dependencies.getThisRepositoryFolderPath(), "./dist/lib/msRestAzure.js"); dependencies.updateLocalDependencies(repository.packageFolders, "preview", dependencies.getPreviewDependencyVersion); \ No newline at end of file From 37e226a802e2439b2e34758fe13ec919c339740c Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Fri, 12 Oct 2018 12:28:59 -0700 Subject: [PATCH 108/289] Remove writePackageJson() --- .scripts/dependencies.ts | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/.scripts/dependencies.ts b/.scripts/dependencies.ts index 4d676e4025dd..cf4417f67e41 100644 --- a/.scripts/dependencies.ts +++ b/.scripts/dependencies.ts @@ -236,16 +236,6 @@ function regularExpressionReplace(filePath: string, fileContents: string, depend return newFileContents; } -/** - * Write the provided packageJSON object to the file at the provided packageJsonFilePath. - * @param {any} packageJson The package json object to write. - * @param {string} packageJsonFilePath The path to the package.json file. - * @returns {void} - */ -function writePackageJson(packageJson: any, packageJsonFilePath: string): void { - fs.writeFileSync(packageJsonFilePath, JSON.stringify(packageJson, undefined, " ") + "\n"); -} - export function updateLocalDependencies(packageFolders: PackageFolder[], localDependencyNPMScript: string, getNewDependencyVersion: (dependencyName: string) => (string | undefined)): void { const forceRefresh: boolean = shouldForceRefresh(process.argv); From 345aac9101f01fa6e004f1fc48dd62caa19fcbcd Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Fri, 12 Oct 2018 15:03:03 -0700 Subject: [PATCH 109/289] Change tilde to caret --- .scripts/dependencies.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.scripts/dependencies.ts b/.scripts/dependencies.ts index cf4417f67e41..e29e3e68a3f0 100644 --- a/.scripts/dependencies.ts +++ b/.scripts/dependencies.ts @@ -311,7 +311,7 @@ export function getLocalDependencyVersion(dependencyName: string): string { } export function getPreviewDependencyVersion(dependencyName: string): string | undefined { - let version: string | undefined = addTildePrefix(getNpmPackageVersion(dependencyName, "preview")); + let version: string | undefined = addCaretPrefix(getNpmPackageVersion(dependencyName, "preview")); if (!version) { version = getLatestDependencyVersion(dependencyName); } @@ -319,9 +319,9 @@ export function getPreviewDependencyVersion(dependencyName: string): string | un } export function getLatestDependencyVersion(dependencyName: string): string | undefined { - return addTildePrefix(getNpmPackageVersion(dependencyName, "latest")); + return addCaretPrefix(getNpmPackageVersion(dependencyName, "latest")); } -function addTildePrefix(version: string | undefined): string | undefined { - return version ? `~${version}` : version; +function addCaretPrefix(version: string | undefined): string | undefined { + return version ? `^${version}` : version; } \ No newline at end of file From 7eebf5d5ed329f29f121ea93df20d1411f056e57 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Fri, 12 Oct 2018 15:59:10 -0700 Subject: [PATCH 110/289] Update script regular expressions to be non-greedy --- .scripts/dependencies.ts | 4 +- package-lock.json | 123 +++++++++++++++++++++------------------ package.json | 2 +- 3 files changed, 69 insertions(+), 60 deletions(-) diff --git a/.scripts/dependencies.ts b/.scripts/dependencies.ts index e29e3e68a3f0..e62bb993303b 100644 --- a/.scripts/dependencies.ts +++ b/.scripts/dependencies.ts @@ -202,7 +202,7 @@ function updateGeneratedPackageDependencyVersion(codeFilePath: string, dependenc codeFilePath, codeFileContents, dependencyName, - new RegExp(`\\\\"${dependencyName}\\\\": \\\\"(.*)\\\\"`), + new RegExp(`\\\\"${dependencyName}\\\\": \\\\"(.*?)\\\\"`), `\\"${dependencyName}\\": \\"${newDependencyVersion}\\"`, newDependencyVersion); @@ -210,7 +210,7 @@ function updateGeneratedPackageDependencyVersion(codeFilePath: string, dependenc codeFilePath, codeFileContents, dependencyName, - new RegExp(`"${dependencyName}": "(.*)"`), + new RegExp(`"${dependencyName}": "(.*?)"`), `"${dependencyName}": "${newDependencyVersion}"`, newDependencyVersion); diff --git a/package-lock.json b/package-lock.json index 1228e9a02f3e..b39634950fad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -114,9 +114,9 @@ } }, "@types/chai": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.4.tgz", - "integrity": "sha512-h6+VEw2Vr3ORiFCyyJmcho2zALnUq9cvdB/IO8Xs9itrJVCenC7o26A6+m7D0ihTTr65eS259H5/Ghl/VjYs6g==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.6.tgz", + "integrity": "sha512-CBk7KTZt3FhPsEkYioG6kuCIpWISw+YI8o+3op4+NXwTpvAPxE1ES8+PY8zfaK2L98b1z5oq03UHa4VYpeUxnw==", "dev": true }, "@types/estree": { @@ -132,9 +132,9 @@ "dev": true }, "@types/node": { - "version": "10.9.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.9.4.tgz", - "integrity": "sha512-fCHV45gS+m3hH17zgkgADUSi2RR1Vht6wOZ0jyHP8rjiQra9f+mIcgwPQHllmDocYOstIEbKlxbFDYlgrTPYqw==", + "version": "10.11.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.11.7.tgz", + "integrity": "sha512-yOxFfkN9xUFLyvWaeYj90mlqTJ41CsQzWKS3gXdOMOyPVacUsymejKxJ4/pMW7exouubuEeZLJawGgcNGYlTeg==", "dev": true }, "ansi-regex": { @@ -284,17 +284,17 @@ "dev": true }, "chai": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", - "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", "dev": true, "requires": { - "assertion-error": "^1.0.1", - "check-error": "^1.0.1", - "deep-eql": "^3.0.0", + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", "get-func-name": "^2.0.0", - "pathval": "^1.0.0", - "type-detect": "^4.0.0" + "pathval": "^1.1.0", + "type-detect": "^4.0.5" } }, "chalk": { @@ -461,14 +461,14 @@ } }, "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", "dev": true, "requires": { - "is-callable": "^1.1.1", + "is-callable": "^1.1.4", "is-date-object": "^1.0.1", - "is-symbol": "^1.0.1" + "is-symbol": "^1.0.2" } }, "es6-object-assign": { @@ -512,15 +512,15 @@ } }, "flatmap-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/flatmap-stream/-/flatmap-stream-0.1.0.tgz", - "integrity": "sha512-Nlic4ZRYxikqnK5rj3YoxDVKGGtUjcNDUtvQ7XsdGLZmMwdUYnXf10o1zcXtzEZTBgc6GxeRpQxV/Wu3WPIIHA==", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/flatmap-stream/-/flatmap-stream-0.1.1.tgz", + "integrity": "sha512-lAq4tLbm3sidmdCN8G3ExaxH7cUCtP5mgDvrYowsx84dcYkJJ4I28N7gkxA6+YlSXzaGLJYIDEi9WGfXzMiXdw==", "dev": true }, "follow-redirects": { - "version": "1.5.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.8.tgz", - "integrity": "sha512-sy1mXPmv7kLAMKW/8XofG7o9T+6gAjzdZK4AJF6ryqQYUa/hnzgiypoeUecZ53x7XiqKNEpNqLtS97MshW2nxg==", + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.9.tgz", + "integrity": "sha512-Bh65EZI/RU8nx0wbYF9shkFZlqLP+6WT/5FnA3cE/djNSuKNHJEinGGZgu/cQEkeeb2GdFOgenAmn8qaqYke2w==", "requires": { "debug": "=3.1.0" } @@ -574,9 +574,9 @@ } }, "globals": { - "version": "11.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", - "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz", + "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==", "dev": true }, "graceful-fs": { @@ -615,6 +615,12 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, "he": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", @@ -671,7 +677,7 @@ }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { @@ -706,10 +712,13 @@ } }, "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } }, "is-wsl": { "version": "1.1.0", @@ -780,7 +789,7 @@ }, "json5": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, @@ -918,9 +927,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "ms-rest-js": { - "version": "1.0.439", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-1.0.439.tgz", - "integrity": "sha512-5VbMxwlIynJbQFI2L8Y6pg8886ucuLSrFBoxI4IauQvp6hEXddt0/NJxs152GXeKPExZdl6HX0S00KIaO0uVGw==", + "version": "1.0.443", + "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-1.0.443.tgz", + "integrity": "sha512-NDv70a802WkENs/qCmM0fUQNhUcm++TYgXIRvkEy9Aq8fCzobrJiHwCbfhl4/GHMvN12OI0zM1L6G/xakGnYjQ==", "requires": { "axios": "^0.18.0", "form-data": "^2.3.2", @@ -3182,9 +3191,9 @@ } }, "rollup": { - "version": "0.66.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.66.4.tgz", - "integrity": "sha512-oV6dzR2zDYVOMUmrM1XMTW0NlZqKeZANAWH+A7BwCfE+mAfJ6xRkYbrM3qAossgyMxPN9aFBu8kRXf5HYB5gvw==", + "version": "0.66.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.66.6.tgz", + "integrity": "sha512-J7/SWanrcb83vfIHqa8+aVVGzy457GcjA6GVZEnD0x2u4OnOd0Q1pCrEoNe8yLwM6z6LZP02zBT2uW0yh5TqOw==", "dev": true, "requires": { "@types/estree": "0.0.39", @@ -3242,9 +3251,9 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "semver": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", - "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", "dev": true }, "shebang-command": { @@ -3329,9 +3338,9 @@ } }, "spdx-correct": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", + "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -3339,9 +3348,9 @@ } }, "spdx-exceptions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", "dev": true }, "spdx-expression-parse": { @@ -3407,7 +3416,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -3545,9 +3554,9 @@ "dev": true }, "typescript": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.1.tgz", - "integrity": "sha512-Veu0w4dTc/9wlWNf2jeRInNodKlcdLgemvPsrNpfu5Pq39sgfFjvIIgTsvUHCoLBnMhPoUA+tFxsXjU6VexVRQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.3.tgz", + "integrity": "sha512-+81MUSyX+BaSo+u2RbozuQk/UWx6hfG0a5gHu4ANEM4sU96XbuIyAB+rWBW1u70c6a5QuZfuYICn3s2UjuHUpA==", "dev": true }, "uglify-js": { @@ -3621,13 +3630,13 @@ }, "xmlbuilder": { "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" }, "yarn": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.9.4.tgz", - "integrity": "sha1-O4LYRGtlJ3VyOQC0cNlmhhl2kks=", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.10.1.tgz", + "integrity": "sha512-EH0H1fyfFxkE4UpG4b+VCaVY4I488I2EyQNmGjGGKmvsSIb0G3b+1IcfGYPI2gqa1du43g4ZA3jH8fXlq6oVxg==", "dev": true }, "yn": { diff --git a/package.json b/package.json index 1d0f7b9a00ec..a4a56991a6a7 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ ], "license": "MIT", "dependencies": { - "ms-rest-js": "^1.0.439", + "ms-rest-js": "^1.0.443", "tslib": "^1.9.2" }, "devDependencies": { From 1d6e97e74f2428bc9e40a3e4468b843820fd6469 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Mon, 15 Oct 2018 11:54:27 -0700 Subject: [PATCH 111/289] Remove package-lock.json from repository --- .gitignore | 1 + package-lock.json | 3649 --------------------------------------------- 2 files changed, 1 insertion(+), 3649 deletions(-) delete mode 100644 package-lock.json diff --git a/.gitignore b/.gitignore index 8363c79d8472..a7523ee2898f 100644 --- a/.gitignore +++ b/.gitignore @@ -82,6 +82,7 @@ node_modules SdkCodeGen output/* +package-lock.json # Typescript output .nyc_output/ diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index b39634950fad..000000000000 --- a/package-lock.json +++ /dev/null @@ -1,3649 +0,0 @@ -{ - "name": "ms-rest-azure-js", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz", - "integrity": "sha1-vXHZsZKvl435FYKdOdQJRFZDmgw=", - "dev": true, - "requires": { - "@babel/highlight": "7.0.0-beta.51" - } - }, - "@babel/generator": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.51.tgz", - "integrity": "sha1-bHV1/952HQdIXgS67cA5LG2eMPY=", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.51", - "jsesc": "^2.5.1", - "lodash": "^4.17.5", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - } - }, - "@babel/helper-function-name": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz", - "integrity": "sha1-IbSHSiJ8+Z7K/MMKkDAtpaJkBWE=", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.51", - "@babel/template": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz", - "integrity": "sha1-MoGy0EWvlcFyzpGyCCXYXqRnZBE=", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.51" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz", - "integrity": "sha1-imw/ZsTSZTUvwHdIT59ugKUauXg=", - "dev": true, - "requires": { - "@babel/types": "7.0.0-beta.51" - } - }, - "@babel/highlight": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz", - "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" - } - }, - "@babel/parser": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz", - "integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=", - "dev": true - }, - "@babel/template": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.51.tgz", - "integrity": "sha1-lgKkCuvPNXrpZ34lMu9fyBD1+/8=", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.51", - "@babel/parser": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51", - "lodash": "^4.17.5" - } - }, - "@babel/traverse": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.51.tgz", - "integrity": "sha1-mB2vLOw0emIx06odnhgDsDqqpKg=", - "dev": true, - "requires": { - "@babel/code-frame": "7.0.0-beta.51", - "@babel/generator": "7.0.0-beta.51", - "@babel/helper-function-name": "7.0.0-beta.51", - "@babel/helper-split-export-declaration": "7.0.0-beta.51", - "@babel/parser": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51", - "debug": "^3.1.0", - "globals": "^11.1.0", - "invariant": "^2.2.0", - "lodash": "^4.17.5" - } - }, - "@babel/types": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.51.tgz", - "integrity": "sha1-2AK3tUO1g2x3iqaReXq/APPZfqk=", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.5", - "to-fast-properties": "^2.0.0" - } - }, - "@types/chai": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.6.tgz", - "integrity": "sha512-CBk7KTZt3FhPsEkYioG6kuCIpWISw+YI8o+3op4+NXwTpvAPxE1ES8+PY8zfaK2L98b1z5oq03UHa4VYpeUxnw==", - "dev": true - }, - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "@types/mocha": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.5.tgz", - "integrity": "sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww==", - "dev": true - }, - "@types/node": { - "version": "10.11.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.11.7.tgz", - "integrity": "sha512-yOxFfkN9xUFLyvWaeYj90mlqTJ41CsQzWKS3gXdOMOyPVacUsymejKxJ4/pMW7exouubuEeZLJawGgcNGYlTeg==", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "axios": { - "version": "0.18.0", - "resolved": "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz", - "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", - "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.0", - "type-detect": "^4.0.5" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "combined-stream": { - "version": "1.0.6", - "resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.15.1", - "resolved": "http://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "duplexer": { - "version": "0.1.1", - "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "enhanced-resolve": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", - "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "object-assign": "^4.0.1", - "tapable": "^0.2.7" - } - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", - "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", - "dev": true, - "requires": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es6-object-assign": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "event-stream": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.6.tgz", - "integrity": "sha512-dGXNg4F/FgVzlApjzItL+7naHutA3fDqbV/zAZqDDlXTjiMnQmZKu+prImWKszeBM5UQeGvAl3u1wBiKeDh61g==", - "dev": true, - "requires": { - "duplexer": "^0.1.1", - "flatmap-stream": "^0.1.0", - "from": "^0.1.7", - "map-stream": "0.0.7", - "pause-stream": "^0.0.11", - "split": "^1.0.1", - "stream-combiner": "^0.2.2", - "through": "^2.3.8" - } - }, - "flatmap-stream": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/flatmap-stream/-/flatmap-stream-0.1.1.tgz", - "integrity": "sha512-lAq4tLbm3sidmdCN8G3ExaxH7cUCtP5mgDvrYowsx84dcYkJJ4I28N7gkxA6+YlSXzaGLJYIDEi9WGfXzMiXdw==", - "dev": true - }, - "follow-redirects": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.9.tgz", - "integrity": "sha512-Bh65EZI/RU8nx0wbYF9shkFZlqLP+6WT/5FnA3cE/djNSuKNHJEinGGZgu/cQEkeeb2GdFOgenAmn8qaqYke2w==", - "requires": { - "debug": "=3.1.0" - } - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - } - }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "globals": { - "version": "11.8.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz", - "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==", - "dev": true - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.0" - } - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", - "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.2.tgz", - "integrity": "sha512-l7TD/VnBsIB2OJvSyxaLW/ab1+92dxZNH9wLH7uHPPioy3JZ8tnx2UXUdKmdkgmP2EFPzg64CToUP6dAS3U32Q==", - "dev": true, - "requires": { - "@babel/generator": "7.0.0-beta.51", - "@babel/parser": "7.0.0-beta.51", - "@babel/template": "7.0.0-beta.51", - "@babel/traverse": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51", - "istanbul-lib-coverage": "^2.0.1", - "semver": "^5.5.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", - "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "make-error": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", - "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", - "dev": true - }, - "map-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", - "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", - "dev": true - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "dev": true - }, - "mime-db": { - "version": "1.36.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", - "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==" - }, - "mime-types": { - "version": "2.1.20", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", - "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", - "requires": { - "mime-db": "~1.36.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", - "dev": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "ms-rest-js": { - "version": "1.0.443", - "resolved": "https://registry.npmjs.org/ms-rest-js/-/ms-rest-js-1.0.443.tgz", - "integrity": "sha512-NDv70a802WkENs/qCmM0fUQNhUcm++TYgXIRvkEy9Aq8fCzobrJiHwCbfhl4/GHMvN12OI0zM1L6G/xakGnYjQ==", - "requires": { - "axios": "^0.18.0", - "form-data": "^2.3.2", - "tough-cookie": "^2.4.3", - "tslib": "^1.9.2", - "uuid": "^3.2.1", - "xml2js": "^0.4.19" - } - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "npm-run-all": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.3.tgz", - "integrity": "sha512-aOG0N3Eo/WW+q6sUIdzcV2COS8VnTZCmdji0VQIAZF3b+a3YWb0AD0vFIyjKec18A7beLGbaQ5jFTNI2bPt9Cg==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.4", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "ps-tree": "^1.1.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - } - }, - "nyc": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-12.0.2.tgz", - "integrity": "sha1-ikpO1pCWbBHsWH/4fuoMEsl0upk=", - "dev": true, - "requires": { - "archy": "^1.0.0", - "arrify": "^1.0.1", - "caching-transform": "^1.0.0", - "convert-source-map": "^1.5.1", - "debug-log": "^1.0.1", - "default-require-extensions": "^1.0.0", - "find-cache-dir": "^0.1.1", - "find-up": "^2.1.0", - "foreground-child": "^1.5.3", - "glob": "^7.0.6", - "istanbul-lib-coverage": "^1.2.0", - "istanbul-lib-hook": "^1.1.0", - "istanbul-lib-instrument": "^2.1.0", - "istanbul-lib-report": "^1.1.3", - "istanbul-lib-source-maps": "^1.2.5", - "istanbul-reports": "^1.4.1", - "md5-hex": "^1.2.0", - "merge-source-map": "^1.1.0", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.0", - "resolve-from": "^2.0.0", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.1", - "spawn-wrap": "^1.4.2", - "test-exclude": "^4.2.0", - "yargs": "11.1.0", - "yargs-parser": "^8.0.0" - }, - "dependencies": { - "align-text": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - } - }, - "amdefine": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "append-transform": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "requires": { - "default-require-extensions": "^1.0.0" - } - }, - "archy": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "bundled": true, - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, - "arrify": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "async": { - "version": "1.5.2", - "bundled": true, - "dev": true - }, - "atob": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "base": { - "version": "0.11.2", - "bundled": true, - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "caching-transform": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" - } - }, - "camelcase": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true - }, - "center-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "class-utils": { - "version": "0.3.6", - "bundled": true, - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cliui": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "commondir": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "convert-source-map": { - "version": "1.5.1", - "bundled": true, - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "cross-spawn": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "debug": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "debug-log": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "decamelize": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "default-require-extensions": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "strip-bom": "^2.0.0" - } - }, - "define-property": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "error-ex": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "execa": { - "version": "0.7.0", - "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-cache-dir": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "for-in": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "foreground-child": { - "version": "1.5.6", - "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" - } - }, - "fragment-cache": { - "version": "0.2.1", - "bundled": true, - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "get-caller-file": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "get-value": { - "version": "2.0.6", - "bundled": true, - "dev": true - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "handlebars": { - "version": "4.0.11", - "bundled": true, - "dev": true, - "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "bundled": true, - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "has-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hosted-git-info": { - "version": "2.6.0", - "bundled": true, - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "bundled": true, - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "bundled": true, - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "is-number": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-odd": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "bundled": true, - "dev": true - } - } - }, - "is-plain-object": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "istanbul-lib-coverage": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "istanbul-lib-hook": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "append-transform": "^0.4.0" - } - }, - "istanbul-lib-report": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "istanbul-lib-coverage": "^1.1.2", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.2.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - } - }, - "istanbul-reports": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "requires": { - "handlebars": "^4.0.3" - } - }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "lcid": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "bundled": true, - "dev": true - } - } - }, - "longest": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "lru-cache": { - "version": "4.1.3", - "bundled": true, - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "map-cache": { - "version": "0.2.2", - "bundled": true, - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5-hex": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "md5-o-matic": "^0.1.1" - } - }, - "md5-o-matic": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "mem": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "merge-source-map": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true, - "dev": true - } - } - }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "mimic-fn": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mixin-deep": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "nanomatch": { - "version": "1.2.9", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "normalize-package-data": { - "version": "2.4.0", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "object-visit": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optimist": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "p-limit": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "pascalcase": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "path-type": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "bundled": true, - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "find-up": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } - } - }, - "regex-not": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "repeat-element": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "bundled": true, - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "resolve-from": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "ret": { - "version": "0.1.15", - "bundled": true, - "dev": true - }, - "right-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-regex": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "set-value": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "slide": { - "version": "1.1.6", - "bundled": true, - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.2.0" - } - }, - "source-map": { - "version": "0.5.7", - "bundled": true, - "dev": true - }, - "source-map-resolve": { - "version": "0.5.2", - "bundled": true, - "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "bundled": true, - "dev": true - }, - "spawn-wrap": { - "version": "1.4.2", - "bundled": true, - "dev": true, - "requires": { - "foreground-child": "^1.5.6", - "mkdirp": "^0.5.0", - "os-homedir": "^1.0.1", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.2", - "which": "^1.3.0" - } - }, - "spdx-correct": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "bundled": true, - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "split-string": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "static-extend": { - "version": "0.1.2", - "bundled": true, - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "test-exclude": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "requires": { - "arrify": "^1.0.1", - "micromatch": "^3.1.8", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" - } - }, - "to-object-path": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "to-regex": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "uglify-js": { - "version": "2.8.29", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "yargs": { - "version": "3.10.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "union-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unset-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "bundled": true, - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "bundled": true, - "dev": true - } - } - }, - "urix": { - "version": "0.1.0", - "bundled": true, - "dev": true - }, - "use": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "validate-npm-package-license": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "window-size": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.3", - "bundled": true, - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "write-file-atomic": { - "version": "1.3.4", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - }, - "y18n": { - "version": "3.2.1", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true, - "dev": true - }, - "yargs": { - "version": "11.1.0", - "bundled": true, - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "cliui": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "yargs-parser": { - "version": "9.0.2", - "bundled": true, - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - }, - "yargs-parser": { - "version": "8.1.0", - "bundled": true, - "dev": true, - "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true, - "dev": true - } - } - } - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "opn": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", - "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", - "dev": true - }, - "pause-stream": { - "version": "0.0.11", - "resolved": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "dev": true, - "requires": { - "through": "~2.3" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "ps-tree": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", - "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", - "dev": true, - "requires": { - "event-stream": "~3.3.0" - } - }, - "psl": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", - "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "resolve": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", - "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", - "dev": true, - "requires": { - "path-parse": "^1.0.5" - } - }, - "rollup": { - "version": "0.66.6", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.66.6.tgz", - "integrity": "sha512-J7/SWanrcb83vfIHqa8+aVVGzy457GcjA6GVZEnD0x2u4OnOd0Q1pCrEoNe8yLwM6z6LZP02zBT2uW0yh5TqOw==", - "dev": true, - "requires": { - "@types/estree": "0.0.39", - "@types/node": "*" - } - }, - "rollup-plugin-node-resolve": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.4.0.tgz", - "integrity": "sha512-PJcd85dxfSBWih84ozRtBkB731OjXk0KnzN0oGp7WOWcarAFkVa71cV5hTJg2qpVsV2U8EUwrzHP3tvy9vS3qg==", - "dev": true, - "requires": { - "builtin-modules": "^2.0.0", - "is-module": "^1.0.0", - "resolve": "^1.1.6" - }, - "dependencies": { - "builtin-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-2.0.0.tgz", - "integrity": "sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==", - "dev": true - } - } - }, - "rollup-plugin-visualizer": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-0.9.2.tgz", - "integrity": "sha512-EHXHLp9Q8v5QdRTSjgio4Alr2MKxCJroLhJunmcH+pWAM5869nI5mdWjk2jp64rjxzEahrMYmfF/G5sbTHIhKw==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1", - "opn": "^5.3.0", - "source-map": "^0.7.3", - "typeface-oswald": "0.0.54" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true, - "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" - } - }, - "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "shx": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/shx/-/shx-0.2.2.tgz", - "integrity": "sha1-CjBNAgsO3xMGrYFXDoDwNG31ijk=", - "dev": true, - "requires": { - "es6-object-assign": "^1.0.3", - "minimist": "^1.2.0", - "shelljs": "^0.7.3" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-support": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", - "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "spdx-correct": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", - "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", - "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==", - "dev": true - }, - "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dev": true, - "requires": { - "through": "2" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "stream-combiner": { - "version": "0.2.2", - "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", - "dev": true, - "requires": { - "duplexer": "~0.1.1", - "through": "~2.3.4" - } - }, - "string.prototype.padend": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", - "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.4.3", - "function-bind": "^1.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "tapable": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", - "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "ts-loader": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-2.3.7.tgz", - "integrity": "sha512-8t3bu2FcEkXb+D4L+Cn8qiK2E2C6Ms4/GQChvz6IMbVurcFHLXrhW4EMtfaol1a1ASQACZGDUGit4NHnX9g7hQ==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "enhanced-resolve": "^3.0.0", - "loader-utils": "^1.0.2", - "semver": "^5.0.1" - } - }, - "ts-node": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", - "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", - "dev": true, - "requires": { - "arrify": "^1.0.0", - "buffer-from": "^1.1.0", - "diff": "^3.1.0", - "make-error": "^1.1.1", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "source-map-support": "^0.5.6", - "yn": "^2.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" - }, - "tslint": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz", - "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=", - "dev": true, - "requires": { - "babel-code-frame": "^6.22.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^3.2.0", - "glob": "^7.1.1", - "js-yaml": "^3.7.0", - "minimatch": "^3.0.4", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.27.2" - } - }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "typeface-oswald": { - "version": "0.0.54", - "resolved": "https://registry.npmjs.org/typeface-oswald/-/typeface-oswald-0.0.54.tgz", - "integrity": "sha512-U1WMNp4qfy4/3khIfHMVAIKnNu941MXUfs3+H9R8PFgnoz42Hh9pboSFztWr86zut0eXC8byalmVhfkiKON/8Q==", - "dev": true - }, - "typescript": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.3.tgz", - "integrity": "sha512-+81MUSyX+BaSo+u2RbozuQk/UWx6hfG0a5gHu4ANEM4sU96XbuIyAB+rWBW1u70c6a5QuZfuYICn3s2UjuHUpA==", - "dev": true - }, - "uglify-js": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", - "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", - "dev": true, - "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" - } - }, - "xmlbuilder": { - "version": "9.0.7", - "resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" - }, - "yarn": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/yarn/-/yarn-1.10.1.tgz", - "integrity": "sha512-EH0H1fyfFxkE4UpG4b+VCaVY4I488I2EyQNmGjGGKmvsSIb0G3b+1IcfGYPI2gqa1du43g4ZA3jH8fXlq6oVxg==", - "dev": true - }, - "yn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", - "dev": true - } - } -} From b04a31a4982d05bf3b47a26cbd27d51dc20a1751 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Fri, 26 Oct 2018 10:24:29 -0700 Subject: [PATCH 112/289] LRO status comparisons should be case insensitive --- lib/lroPollStrategy.ts | 23 +++++++++--- package.json | 2 +- test/lroPollStrategyTests.ts | 71 ++++++++++++++++++++++++++++++++---- 3 files changed, 82 insertions(+), 14 deletions(-) diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts index 268fc922f06f..e13841576eb2 100644 --- a/lib/lroPollStrategy.ts +++ b/lib/lroPollStrategy.ts @@ -261,8 +261,21 @@ const terminalStates: LongRunningOperationStates[] = ["Succeeded", "Failed", "Ca * @param status The current status of a long-running operation. * @returns Whether or not a long-running operation with the provided status is finished. */ -function isFinished(status: LongRunningOperationStates): boolean { - return terminalStates.indexOf(status) !== -1; +export function isFinished(status: LongRunningOperationStates): boolean { + let result = false; + for (const terminalState of terminalStates) { + if (longRunningOperationStatesEqual(status, terminalState)) { + result = true; + break; + } + } + return result; +} + +export function longRunningOperationStatesEqual(lhs: LongRunningOperationStates, rhs: LongRunningOperationStates): boolean { + const lhsLowerCased: string = lhs && lhs.toLowerCase(); + const rhsLowerCased: string = rhs && rhs.toLowerCase(); + return lhsLowerCased === rhsLowerCased; } /** @@ -395,7 +408,7 @@ class LocationLROPollStrategy extends LROPollStrategy { const lroPollState: LROPollState = this._pollState; const initialResponse: HttpOperationResponse = lroPollState.initialResponse; const initialResponseStatusCode: number = initialResponse.status; - return lroPollState.state === "Succeeded" || + return longRunningOperationStatesEqual(lroPollState.state, "Succeeded") || (initialResponse.request.method === "POST" && lroPollState.mostRecentResponse.status === 404 && (initialResponseStatusCode === 200 || initialResponseStatusCode === 201 || @@ -525,7 +538,7 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { const lroPollState: LROPollState = this._pollState; const initialResponse: HttpOperationResponse = lroPollState.initialResponse; const initialResponseStatusCode: number = initialResponse.status; - return lroPollState.state === "Succeeded" || + return longRunningOperationStatesEqual(lroPollState.state, "Succeeded") || (initialResponse.request.method === "POST" && (initialResponseStatusCode === 200 || initialResponseStatusCode === 201)); } } @@ -560,7 +573,7 @@ class GetResourceLROPollStrategy extends LROPollStrategy { } public isFinalStatusAcceptable(): boolean { - return this._pollState.state === "Succeeded"; + return longRunningOperationStatesEqual(this._pollState.state, "Succeeded"); } protected doFinalGetResourceRequest(): Promise { diff --git a/package.json b/package.json index a4a56991a6a7..3a69b0538b01 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ ], "license": "MIT", "dependencies": { - "ms-rest-js": "^1.0.443", + "ms-rest-js": "^1.0.455", "tslib": "^1.9.2" }, "devDependencies": { diff --git a/test/lroPollStrategyTests.ts b/test/lroPollStrategyTests.ts index 0863bc16e4bb..e454412a4202 100644 --- a/test/lroPollStrategyTests.ts +++ b/test/lroPollStrategyTests.ts @@ -4,11 +4,11 @@ import assert from "assert"; import { HttpHeaders, HttpOperationResponse, TokenCredentials, WebResource } from "ms-rest-js"; import { AzureServiceClient } from "../lib/azureServiceClient"; -import { getDelayInSeconds } from "../lib/lroPollStrategy"; +import { getDelayInSeconds, isFinished } from "../lib/lroPollStrategy"; -describe("LROPollStrategy", () => { - describe("getDelayInMilliseconds()", () => { - it("with no AzureServiceClient.longRunningOperationRetryTimeout value and no retry-after header", () => { +describe("LROPollStrategy", function () { + describe("getDelayInMilliseconds()", function () { + it("with no AzureServiceClient.longRunningOperationRetryTimeout value and no retry-after header", function () { const azureServiceClient = new AzureServiceClient(new TokenCredentials("my-fake-token")); const previousResponse: HttpOperationResponse = { request: new WebResource(), @@ -18,7 +18,7 @@ describe("LROPollStrategy", () => { assert.strictEqual(getDelayInSeconds(azureServiceClient, previousResponse), 30); }); - it("with 11 AzureServiceClient.longRunningOperationRetryTimeout and no retry-after header", () => { + it("with 11 AzureServiceClient.longRunningOperationRetryTimeout and no retry-after header", function () { const azureServiceClient = new AzureServiceClient(new TokenCredentials("my-fake-token"), { longRunningOperationRetryTimeout: 11 }); const previousResponse: HttpOperationResponse = { request: new WebResource(), @@ -28,7 +28,7 @@ describe("LROPollStrategy", () => { assert.strictEqual(getDelayInSeconds(azureServiceClient, previousResponse), 11); }); - it("with no AzureServiceClient.longRunningOperationRetryTimeout value and 12 retry-after header", () => { + it("with no AzureServiceClient.longRunningOperationRetryTimeout value and 12 retry-after header", function () { const azureServiceClient = new AzureServiceClient(new TokenCredentials("my-fake-token")); const previousResponse: HttpOperationResponse = { request: new WebResource(), @@ -38,7 +38,7 @@ describe("LROPollStrategy", () => { assert.strictEqual(getDelayInSeconds(azureServiceClient, previousResponse), 12); }); - it("with no AzureServiceClient.longRunningOperationRetryTimeout value and spam retry-after header", () => { + it("with no AzureServiceClient.longRunningOperationRetryTimeout value and spam retry-after header", function () { const azureServiceClient = new AzureServiceClient(new TokenCredentials("my-fake-token")); const previousResponse: HttpOperationResponse = { request: new WebResource(), @@ -48,7 +48,7 @@ describe("LROPollStrategy", () => { assert.strictEqual(getDelayInSeconds(azureServiceClient, previousResponse), 30); }); - it("with 11 AzureServiceClient.longRunningOperationRetryTimeout and 12 retry-after header", () => { + it("with 11 AzureServiceClient.longRunningOperationRetryTimeout and 12 retry-after header", function () { const azureServiceClient = new AzureServiceClient(new TokenCredentials("my-fake-token"), { longRunningOperationRetryTimeout: 11 }); const previousResponse: HttpOperationResponse = { request: new WebResource(), @@ -58,4 +58,59 @@ describe("LROPollStrategy", () => { assert.strictEqual(getDelayInSeconds(azureServiceClient, previousResponse), 11); }); }); + + describe("isFinished(LongRunningOperationStates)", function () { + it(`with undefined`, function () { + assert(!isFinished(undefined as any)); + }); + + it(`with null`, function () { + // tslint:disable-next-line:no-null-keyword + assert(!isFinished(null as any)); + }); + + it(`with ""`, function () { + assert(!isFinished("" as any)); + }); + + it(`with "spam"`, function () { + assert(!isFinished("spam" as any)); + }); + + it(`with "InProgress"`, function () { + assert(!isFinished("InProgress")); + }); + + it(`with "succeeded"`, function () { + assert(isFinished("succeeded" as any)); + }); + + it(`with "Succeeded"`, function () { + assert(isFinished("Succeeded")); + }); + + it(`with "failed"`, function () { + assert(isFinished("failed" as any)); + }); + + it(`with "Failed"`, function () { + assert(isFinished("Failed")); + }); + + it(`with "cancelled"`, function () { + assert(!isFinished("cancelled" as any)); + }); + + it(`with "Cancelled"`, function () { + assert(!isFinished("Cancelled" as any)); + }); + + it(`with "canceled"`, function () { + assert(isFinished("canceled" as any)); + }); + + it(`with "Canceled"`, function () { + assert(isFinished("Canceled")); + }); + }); }); \ No newline at end of file From bc064af1b3533fed442725e17e01833799a04ee0 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Fri, 26 Oct 2018 10:26:06 -0700 Subject: [PATCH 113/289] Add Cancelled as a possible LRO state --- lib/lroPollStrategy.ts | 2 +- lib/util/constants.ts | 2 +- test/lroPollStrategyTests.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts index e13841576eb2..f11c009f3142 100644 --- a/lib/lroPollStrategy.ts +++ b/lib/lroPollStrategy.ts @@ -254,7 +254,7 @@ function getStatusFromResponse(response: HttpOperationResponse, responseBody?: a return result; } -const terminalStates: LongRunningOperationStates[] = ["Succeeded", "Failed", "Canceled"]; +const terminalStates: LongRunningOperationStates[] = ["Succeeded", "Failed", "Canceled", "Cancelled"]; /** * Get whether or not a long-running operation with the provided status is finished. diff --git a/lib/util/constants.ts b/lib/util/constants.ts index dfb1d0693017..1a31451cab40 100644 --- a/lib/util/constants.ts +++ b/lib/util/constants.ts @@ -8,7 +8,7 @@ * @const * @type {string} */ -export type LongRunningOperationStates = "InProgress" | "Succeeded" | "Failed" | "Canceled"; +export type LongRunningOperationStates = "InProgress" | "Succeeded" | "Failed" | "Canceled" | "Cancelled"; /** * The default language in the request header. diff --git a/test/lroPollStrategyTests.ts b/test/lroPollStrategyTests.ts index e454412a4202..0426423df09c 100644 --- a/test/lroPollStrategyTests.ts +++ b/test/lroPollStrategyTests.ts @@ -98,11 +98,11 @@ describe("LROPollStrategy", function () { }); it(`with "cancelled"`, function () { - assert(!isFinished("cancelled" as any)); + assert(isFinished("cancelled" as any)); }); it(`with "Cancelled"`, function () { - assert(!isFinished("Cancelled" as any)); + assert(isFinished("Cancelled")); }); it(`with "canceled"`, function () { From 5dba586a29d57ce71db954818d043d6a6c4bf576 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Thu, 1 Nov 2018 09:44:12 -0700 Subject: [PATCH 114/289] Fix ms-rest-azure-js user agent telemetry (#74) * Fix adding runtime information to the telemetry * Fix tests * Export getDefaultUserAgentValue * Reset package.json * Update ms-rest-js reference --- lib/azureServiceClient.ts | 15 ++++++++--- package.json | 2 +- test/azureServiceClientTests.ts | 48 ++++++++++++++++++++++++++------- 3 files changed, 51 insertions(+), 14 deletions(-) diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index 71f710c8acd0..200bc7d73000 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { HttpOperationResponse, OperationArguments, OperationSpec, RequestOptionsBase, RequestPrepareOptions, ServiceClient, ServiceClientCredentials, ServiceClientOptions, WebResource } from "ms-rest-js"; +import { HttpOperationResponse, OperationArguments, OperationSpec, RequestOptionsBase, RequestPrepareOptions, ServiceClient, ServiceClientCredentials, ServiceClientOptions, WebResource, getDefaultUserAgentValue as getDefaultUserAgentValueFromMsRest } from "ms-rest-js"; import { createLROPollerFromInitialResponse, createLROPollerFromPollState, LROPoller } from "./lroPoller"; import { LROPollState } from "./lroPollStrategy"; import * as Constants from "./util/constants"; @@ -55,8 +55,6 @@ export class AzureServiceClient extends ServiceClient { if (options.longRunningOperationRetryTimeout != undefined) { this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout; } - - this.addUserAgentInfo(`ms-rest-azure/${Constants.msRestAzureVersion}`); } /** @@ -107,12 +105,23 @@ export class AzureServiceClient extends ServiceClient { } } +export function getDefaultUserAgentValue(): string { + const defaultUserAgent = getDefaultUserAgentValueFromMsRest(); + return `ms-rest-azure-js/${Constants.msRestAzureVersion} ${defaultUserAgent}`; +} + export function updateOptionsWithDefaultValues(options?: AzureServiceClientOptions): AzureServiceClientOptions { if (!options) { options = {}; } + if (options.generateClientRequestIdHeader == undefined) { options.generateClientRequestIdHeader = true; } + + if (!options.userAgent) { + options.userAgent = getDefaultUserAgentValue(); + } + return options; } \ No newline at end of file diff --git a/package.json b/package.json index 3a69b0538b01..7070397e3435 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ ], "license": "MIT", "dependencies": { - "ms-rest-js": "^1.0.455", + "ms-rest-js": "^1.0.457", "tslib": "^1.9.2" }, "devDependencies": { diff --git a/test/azureServiceClientTests.ts b/test/azureServiceClientTests.ts index 01ddc141593f..59a2b93d0c0d 100644 --- a/test/azureServiceClientTests.ts +++ b/test/azureServiceClientTests.ts @@ -14,21 +14,18 @@ describe("AzureServiceClient", () => { const client = new AzureServiceClient(new TokenCredentials("my-fake-token")); assert.strictEqual(client.acceptLanguage, "en-us"); assert.strictEqual(client.longRunningOperationRetryTimeout, undefined); - assert.deepStrictEqual(client.userAgentInfo, { value: ["ms-rest-js/0.1.0", "ms-rest-azure/0.1.0"] }); }); it("with acceptLanguage provided", () => { const client = new AzureServiceClient(new TokenCredentials("my-fake-token"), { acceptLanguage: "my-fake-language" }); assert.strictEqual(client.acceptLanguage, "my-fake-language"); assert.strictEqual(client.longRunningOperationRetryTimeout, undefined); - assert.deepStrictEqual(client.userAgentInfo, { value: ["ms-rest-js/0.1.0", "ms-rest-azure/0.1.0"] }); }); it("with longRunningOperationRetryTimeout provided", () => { const client = new AzureServiceClient(new TokenCredentials("my-fake-token"), { longRunningOperationRetryTimeout: 2 }); assert.strictEqual(client.acceptLanguage, "en-us"); assert.strictEqual(client.longRunningOperationRetryTimeout, 2); - assert.deepStrictEqual(client.userAgentInfo, { value: ["ms-rest-js/0.1.0", "ms-rest-azure/0.1.0"] }); }); it("should apply the resourceManagerEndpointUrl from credentials", async function() { @@ -2521,29 +2518,60 @@ describe("AzureServiceClient", () => { }); describe("updateOptionsWithDefaultValues()", () => { + function assertOptionEqual(actual: AzureServiceClientOptions, expected: AzureServiceClientOptions) { + const actualUserAgent = actual.userAgent; + delete actual.userAgent; + delete expected.userAgent; + + assert.deepEqual(actual, expected); + assert(actualUserAgent!.match(/ms-rest-azure-js\/[\d\.]+ ms-rest-js\/[\d\.]+ .+/)); + } + it("with undefined", () => { - assert.deepStrictEqual(updateOptionsWithDefaultValues(undefined), { generateClientRequestIdHeader: true }); + assertOptionEqual(updateOptionsWithDefaultValues(undefined), { generateClientRequestIdHeader: true }); }); it("with {}", () => { const options: AzureServiceClientOptions = {}; const newOptions: AzureServiceClientOptions = updateOptionsWithDefaultValues(options); - assert.deepStrictEqual(newOptions, { generateClientRequestIdHeader: true }); - assert.strictEqual(newOptions, options); + assertOptionEqual(newOptions, { generateClientRequestIdHeader: true }); }); it("with { generateClientRequestIdHeader: false }", () => { const options: AzureServiceClientOptions = { generateClientRequestIdHeader: false }; const newOptions: AzureServiceClientOptions = updateOptionsWithDefaultValues(options); - assert.deepStrictEqual(newOptions, { generateClientRequestIdHeader: false }); - assert.strictEqual(newOptions, options); + assertOptionEqual(newOptions, { generateClientRequestIdHeader: false }); }); it("with { generateClientRequestIdHeader: true }", () => { const options: AzureServiceClientOptions = { generateClientRequestIdHeader: true }; const newOptions: AzureServiceClientOptions = updateOptionsWithDefaultValues(options); - assert.deepStrictEqual(newOptions, { generateClientRequestIdHeader: true }); - assert.strictEqual(newOptions, options); + assertOptionEqual(newOptions, { generateClientRequestIdHeader: true }); + }); + }); + + describe("sendRequest", () => { + it ("adds custom user agent if specified", async () => { + const client = new AzureServiceClient(new TokenCredentials("fake-token"), { userAgent: "custom-ua" }); + const request = new WebResource("https://example.com"); + await client.sendRequest(request); + + const telemetry = request.headers.get("user-agent")!; + assert.equal(telemetry, "custom-ua"); + }); + + it ("adds user agent header that looks similar to \"ms-rest-azure-js/0.1.0 ms-rest-js/0.1.0 Node/v10.11.0 OS/(x64-Windows_NT-10.0.18267)\"", async () => { + const client = new AzureServiceClient(new TokenCredentials("my-fake-token")); + const request = new WebResource("https://example.com"); + await client.sendRequest(request); + + const telemetry = request.headers.get("user-agent")!; + const parts = telemetry.split(" "); + + assert(parts[0].includes("ms-rest-azure-js/")); + assert(parts[1].includes("ms-rest-js/")); + assert(parts[2].includes("Node/")); + assert(parts[3].includes("OS/")); }); }); }); From ab09348000e39307eb0a05d7616e95f716ba88ff Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Thu, 1 Nov 2018 10:25:35 -0700 Subject: [PATCH 115/289] Add missing user-agent export (#75) --- lib/msRestAzure.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/msRestAzure.ts b/lib/msRestAzure.ts index 2cfff9cf8fdd..93f3295c2be2 100644 --- a/lib/msRestAzure.ts +++ b/lib/msRestAzure.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -export { AzureServiceClient, AzureServiceClientOptions } from "./azureServiceClient"; +export { AzureServiceClient, AzureServiceClientOptions, getDefaultUserAgentValue } from "./azureServiceClient"; export { BaseResource, BaseResourceMapper } from "./baseResource"; export { CloudError, CloudErrorMapper } from "./cloudError"; export { CognitiveServicesCredentials } from "./credentials/cognitiveServicesCredentials"; From 71b0b77ab7c3b9ecb731baab61d207eaa8bb2e97 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Fri, 9 Nov 2018 20:02:28 -0800 Subject: [PATCH 116/289] Rename NPM package to @azure/ms-rest-azure-js (#77) --- Changelog.md | 16 +++++++++++----- lib/azureServiceClient.ts | 2 +- lib/baseResource.ts | 2 +- lib/cloudError.ts | 2 +- lib/credentials/cognitiveServicesCredentials.ts | 2 +- lib/lroPollStrategy.ts | 2 +- lib/lroPoller.ts | 2 +- package.json | 6 +++--- rollup.config.js | 4 ++-- samples/node-sample.ts | 2 +- test/azureServiceClientTests.ts | 2 +- test/cloudErrorTests.ts | 2 +- .../cognitiveServicesCredentialsTests.ts | 2 +- test/lroPollStrategyTests.ts | 2 +- 14 files changed, 27 insertions(+), 21 deletions(-) diff --git a/Changelog.md b/Changelog.md index ff8d31c0cd2c..ac326aa17377 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,22 +1,28 @@ -### 1.0.0 - 2018/10/04 +# Changelog + +## 1.1.0 - 2018/11/09 + +- Renamed NPM package to @azure/ms-rest-azure-js and updated renamed dependencies + +## 1.0.0 - 2018/10/04 - Moved to rollup for bundling - Moved browser bundle from ./msRestAzureBundle.js to ./dist/msRestAzure.js (same bundle for nodejs and browser) -### 0.2.8 - 2017/04/02 +## 0.2.8 - 2017/04/02 - Updated ms-rest-js to 0.2.8 - Added CognitiveServicesCredentials -### 0.2.1 - 2017/10/25 +## 0.2.1 - 2017/10/25 - Updating the minimum version of dependency "ms-rest-js": "^0.2.3". This brings in the change (removal of "bodyAsStream" property) done to HttpOperationResponse class -### 0.2.0 - 2017/10/11 +## 0.2.0 - 2017/10/11 - Updating the minimum version of dependency "ms-rest-js": "^0.2.1". This also gets a strict dependency to "moment" version 2.18.1 as 2.19.0 has bugs. -### 0.1.0 - 2017/09/16 +## 0.1.0 - 2017/09/16 - Initial version of the isomorphic azure runtime along with type definitions that works in the browser as well as the node.js environment - Supports polling for long running operations diff --git a/lib/azureServiceClient.ts b/lib/azureServiceClient.ts index 200bc7d73000..d63927ed2cbe 100644 --- a/lib/azureServiceClient.ts +++ b/lib/azureServiceClient.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { HttpOperationResponse, OperationArguments, OperationSpec, RequestOptionsBase, RequestPrepareOptions, ServiceClient, ServiceClientCredentials, ServiceClientOptions, WebResource, getDefaultUserAgentValue as getDefaultUserAgentValueFromMsRest } from "ms-rest-js"; +import { HttpOperationResponse, OperationArguments, OperationSpec, RequestOptionsBase, RequestPrepareOptions, ServiceClient, ServiceClientCredentials, ServiceClientOptions, WebResource, getDefaultUserAgentValue as getDefaultUserAgentValueFromMsRest } from "@azure/ms-rest-js"; import { createLROPollerFromInitialResponse, createLROPollerFromPollState, LROPoller } from "./lroPoller"; import { LROPollState } from "./lroPollStrategy"; import * as Constants from "./util/constants"; diff --git a/lib/baseResource.ts b/lib/baseResource.ts index 26b04f459908..86ba57396dd7 100644 --- a/lib/baseResource.ts +++ b/lib/baseResource.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { CompositeMapper } from "ms-rest-js"; +import { CompositeMapper } from "@azure/ms-rest-js"; /** * @class diff --git a/lib/cloudError.ts b/lib/cloudError.ts index 7e6c18a47d43..c36897fb9422 100644 --- a/lib/cloudError.ts +++ b/lib/cloudError.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { CompositeMapper } from "ms-rest-js"; +import { CompositeMapper } from "@azure/ms-rest-js"; /** * @class diff --git a/lib/credentials/cognitiveServicesCredentials.ts b/lib/credentials/cognitiveServicesCredentials.ts index 0c3600fa4645..a904e1a1133f 100644 --- a/lib/credentials/cognitiveServicesCredentials.ts +++ b/lib/credentials/cognitiveServicesCredentials.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { ApiKeyCredentials } from "ms-rest-js"; +import { ApiKeyCredentials } from "@azure/ms-rest-js"; /** * Creates a new CognitiveServicesCredentials object. diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts index f11c009f3142..07a2ee738803 100644 --- a/lib/lroPollStrategy.ts +++ b/lib/lroPollStrategy.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { delay, HttpMethods, HttpOperationResponse, RequestOptionsBase, RestError, stripRequest, WebResource, OperationResponse, OperationSpec } from "ms-rest-js"; +import { delay, HttpMethods, HttpOperationResponse, RequestOptionsBase, RestError, stripRequest, WebResource, OperationResponse, OperationSpec } from "@azure/ms-rest-js"; import { AzureServiceClient } from "./azureServiceClient"; import { LongRunningOperationStates } from "./util/constants"; diff --git a/lib/lroPoller.ts b/lib/lroPoller.ts index 89525c26d953..84bf2983b2ce 100644 --- a/lib/lroPoller.ts +++ b/lib/lroPoller.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { HttpOperationResponse, RequestOptionsBase, RestResponse, flattenResponse } from "ms-rest-js"; +import { HttpOperationResponse, RequestOptionsBase, RestResponse, flattenResponse } from "@azure/ms-rest-js"; import { AzureServiceClient } from "./azureServiceClient"; import { createLROPollStrategyFromInitialResponse, createLROPollStrategyFromPollState, LROPollState, LROPollStrategy } from "./lroPollStrategy"; import { LongRunningOperationStates } from "./util/constants"; diff --git a/package.json b/package.json index 7070397e3435..8aa309fb6e2b 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { - "name": "ms-rest-azure-js", + "name": "@azure/ms-rest-azure-js", "author": { "name": "Microsoft Corporation", "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "1.0.0", + "version": "1.1.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -41,7 +41,7 @@ ], "license": "MIT", "dependencies": { - "ms-rest-js": "^1.0.457", + "@azure/ms-rest-js": "^1.0.457", "tslib": "^1.9.2" }, "devDependencies": { diff --git a/rollup.config.js b/rollup.config.js index c0615890da5c..c8eee9567b76 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -11,14 +11,14 @@ const banner = `/** @license ms-rest-azure-js */ const config = { input: './es/lib/msRestAzure.js', - external: ["ms-rest-js"], + external: ["@azure/ms-rest-js"], output: { file: "./dist/msRestAzure.js", format: "umd", name: "msRestAzure", sourcemap: true, globals: { - "ms-rest-js": "msRest" + "@azure/ms-rest-js": "msRest" }, banner }, diff --git a/samples/node-sample.ts b/samples/node-sample.ts index 1f7b420d8536..1fe9bdd50937 100644 --- a/samples/node-sample.ts +++ b/samples/node-sample.ts @@ -1,6 +1,6 @@ "use strict"; -import * as msRest from "ms-rest-js"; +import * as msRest from "@azure/ms-rest-js"; import * as msRestAzure from "../lib/msRestAzure"; const clientOptions: msRestAzure.AzureServiceClientOptions = { filters: [new msRest.LogFilter()] diff --git a/test/azureServiceClientTests.ts b/test/azureServiceClientTests.ts index 59a2b93d0c0d..9a9854ff64de 100644 --- a/test/azureServiceClientTests.ts +++ b/test/azureServiceClientTests.ts @@ -2,7 +2,7 @@ // Licensed under the MIT License. See License.txt in the project root for license information. import assert from "assert"; -import { HttpHeaders, HttpOperationResponse, RequestOptionsBase, RestError, TokenCredentials, WebResource, OperationArguments, OperationSpec, Serializer } from "ms-rest-js"; +import { HttpHeaders, HttpOperationResponse, RequestOptionsBase, RestError, TokenCredentials, WebResource, OperationArguments, OperationSpec, Serializer } from "@azure/ms-rest-js"; import { AzureServiceClient, AzureServiceClientOptions, updateOptionsWithDefaultValues } from "../lib/azureServiceClient"; import * as msAssert from "./msAssert"; import { LROPoller } from "../lib/lroPoller"; diff --git a/test/cloudErrorTests.ts b/test/cloudErrorTests.ts index b1beaf0bfed1..522bffeb837f 100644 --- a/test/cloudErrorTests.ts +++ b/test/cloudErrorTests.ts @@ -1,4 +1,4 @@ -import { Serializer } from "ms-rest-js"; +import { Serializer } from "@azure/ms-rest-js"; import { CloudErrorMapper, CloudError } from "../lib/cloudError"; import { expect } from "chai"; diff --git a/test/credentials/cognitiveServicesCredentialsTests.ts b/test/credentials/cognitiveServicesCredentialsTests.ts index 904a517d08ed..24b1f02ec396 100644 --- a/test/credentials/cognitiveServicesCredentialsTests.ts +++ b/test/credentials/cognitiveServicesCredentialsTests.ts @@ -2,7 +2,7 @@ // Licensed under the MIT License. See License.txt in the project root for license information. import assert from "assert"; -import { WebResource } from "ms-rest-js"; +import { WebResource } from "@azure/ms-rest-js"; import { CognitiveServicesCredentials } from "../../lib/credentials/cognitiveServicesCredentials"; import * as msAssert from "../msAssert"; diff --git a/test/lroPollStrategyTests.ts b/test/lroPollStrategyTests.ts index 0426423df09c..6d3ada376942 100644 --- a/test/lroPollStrategyTests.ts +++ b/test/lroPollStrategyTests.ts @@ -2,7 +2,7 @@ // Licensed under the MIT License. See License.txt in the project root for license information. import assert from "assert"; -import { HttpHeaders, HttpOperationResponse, TokenCredentials, WebResource } from "ms-rest-js"; +import { HttpHeaders, HttpOperationResponse, TokenCredentials, WebResource } from "@azure/ms-rest-js"; import { AzureServiceClient } from "../lib/azureServiceClient"; import { getDelayInSeconds, isFinished } from "../lib/lroPollStrategy"; From 6a07b5f161376cfcd17c89a6dbcb4b8208bb89f6 Mon Sep 17 00:00:00 2001 From: Amar Zavery Date: Sat, 10 Nov 2018 09:23:17 -0800 Subject: [PATCH 117/289] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 27 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 17 ++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 000000000000..23512e00e4c9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,27 @@ +--- +name: Bug report +about: Create a report to help us improve + +--- + +**Package Version**: _______ +- [ ] **nodejs** + - **nodejs version**: ______ + - **os name/version**: _____ +- [ ] **browser** + - **name/version**: ____ +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 000000000000..066b2d920a28 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,17 @@ +--- +name: Feature request +about: Suggest an idea for this project + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. From 93586283f4f966d531e6b075254ab22f20168860 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Mon, 12 Nov 2018 09:05:38 -0800 Subject: [PATCH 118/289] Fix npm run local to support projects with different NPM name than its directory (#78) --- .scripts/dependencies.ts | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/.scripts/dependencies.ts b/.scripts/dependencies.ts index e62bb993303b..15555548ffd6 100644 --- a/.scripts/dependencies.ts +++ b/.scripts/dependencies.ts @@ -35,7 +35,11 @@ export function resolvePath(...paths: string[]): string { return path.resolve(...paths).split("\\").join("/"); } -function exists(path: string): boolean { +function exists(path: string | undefined): boolean { + if (!path) { + return false; + } + return fs.existsSync(path); } @@ -109,13 +113,33 @@ function getPackageJsonFilePath(packageFolder: string): string { return resolvePath(packageFolder, "package.json"); } +function getPackageNameFromPackageJson(packageJsonFilePath: string): string { + const packageJson: { name: string } = getPackageJson(packageJsonFilePath); + return packageJson.name; +} + /** * Get the absolute path to the local clone of the repository with the provided name. * @param {string} repoName The name of the repository. * @returns {string} The absolute path to the local clone of the repository. */ -export function getLocalRepositoryPath(repoName: string): string { - return resolvePath(getThisRepositoryFolderPath(), "..", repoName); +export function getLocalRepositoryPath(repoName: string): string | undefined { + const repositoriesRoot: string = resolvePath(getThisRepositoryFolderPath(), ".."); + const repositoryPaths: string[] = fs.readdirSync(repositoriesRoot).map(childDir => resolvePath(repositoriesRoot, childDir)); + + for (const repositoryPath of repositoryPaths) { + const packageJsonPath = getPackageJsonFilePath(repositoryPath); + if (!fs.existsSync(packageJsonPath)) { + continue; + } + + const packageName = getPackageNameFromPackageJson(packageJsonPath); + if (packageName === repoName) { + return repositoryPath; + } + } + + return undefined; } /** @@ -158,7 +182,11 @@ function getClonedRepositories(dependencies?: { [packageName: string]: string }) * @returns {void} */ export function runLocalRepositoryNPMScript(repoName: string, scriptName: string): void { - const repoFolderPath: string = getLocalRepositoryPath(repoName); + const repoFolderPath: string | undefined = getLocalRepositoryPath(repoName); + if (!repoFolderPath) { + return; + } + const packageJsonFilePath: string = getPackageJsonFilePath(repoFolderPath); const packageJson: any = getPackageJson(packageJsonFilePath); const repoScripts: any = packageJson.scripts; From 09611b6d54e8a1e3bcf37903e6d14dd620f21a05 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Mon, 12 Nov 2018 14:20:17 -0800 Subject: [PATCH 119/289] Add Azure Pipelines configuration (#80) * Remove Trafis configuration * Add Azure Pipelines configuration * Update ms-rest-js dependency --- .travis.yml | 5 ---- azure-pipelines.yml | 56 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 3 files changed, 57 insertions(+), 6 deletions(-) delete mode 100644 .travis.yml create mode 100644 azure-pipelines.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 13ae1c310784..000000000000 --- a/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -sudo: false -node_js: - - "6" - - "8" \ No newline at end of file diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 000000000000..924408cdbf50 --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,56 @@ +trigger: +- master + +jobs: +- job: Test + pool: + vmImage: 'Ubuntu 16.04' + strategy: + matrix: + Node6: + node.version: 6.x + Node8: + node.version: 8.x + Node10: + node.version: 10.x + Node11: + node.version: 11.x + steps: + - task: NodeTool@0 + displayName: 'Install Node' + inputs: + versionSpec: $(node.version) + - script: npm install + - task: Npm@1 + displayName: 'npm test' + inputs: + command: custom + verbose: false + customCommand: test + - task: PublishTestResults@2 + inputs: + testResultsFiles: '**/test-results.xml' + testRunTitle: 'Test results for JavaScript' + - task: PublishCodeCoverageResults@1 + inputs: + codeCoverageTool: Cobertura + summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/*coverage.xml' + reportDirectory: '$(System.DefaultWorkingDirectory)/**/coverage' +- job: Build + pool: + vmImage: 'Ubuntu 16.04' + steps: + - task: Npm@1 + displayName: 'npm pack' + inputs: + command: custom + verbose: false + customCommand: pack + - task: CopyFiles@2 + displayName: 'Copy Files to: drop' + inputs: + Contents: '*.tgz' + TargetFolder: drop + - task: PublishBuildArtifacts@1 + inputs: + pathtoPublish: $(Build.SourcesDirectory)/drop diff --git a/package.json b/package.json index 8aa309fb6e2b..79dc6f113dee 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ ], "license": "MIT", "dependencies": { - "@azure/ms-rest-js": "^1.0.457", + "@azure/ms-rest-js": "^1.1.0", "tslib": "^1.9.2" }, "devDependencies": { From bed3fe8e7c16da981248bfbd796b5c81b43f0191 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Mon, 12 Nov 2018 14:26:49 -0800 Subject: [PATCH 120/289] Add prepack script (#82) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 79dc6f113dee..8011c3850715 100644 --- a/package.json +++ b/package.json @@ -97,7 +97,7 @@ "test": "run-p test:tslint test:unit", "test:unit": "nyc mocha", "test:tslint": "tslint -p . -c tslint.json --exclude test/**/*.ts", - "prepare": "npm run build", + "prepack": "npm install && npm run build", "publish-preview": "npm test && shx rm -rf dist/test && node ./.scripts/publish", "local": "ts-node ./.scripts/local.ts", "preview": "ts-node ./.scripts/preview.ts", From 8f4ffbaf74cfd697ca3f06be177414b4c1e18c51 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Tue, 13 Nov 2018 10:25:02 -0800 Subject: [PATCH 121/289] Update README.md to include build badge (#84) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 928f43aa691e..27d4b42f7d0f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ms-rest-azure-js +# ms-rest-azure-js [![Build Status](https://dev.azure.com/azure-public/adx/_apis/build/status/public.Azure.ms-rest-azure-js)](https://dev.azure.com/azure-public/adx/_build/latest?definitionId=10) Azure Runtime for isomorphic javascript libraries (that work in the browser and node.js environemnt) generated via [Autorest](https://github.com/Azure/Autorest). From 18082ea33102d0d0ff8f23843f2b070f07c02ef7 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Tue, 13 Nov 2018 10:30:42 -0800 Subject: [PATCH 122/289] Add code owners (#83) --- .github/CODEOWNERS | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 000000000000..4860da6cb307 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,2 @@ +# Default owners +* @amarzavery @daschult @kpajdzik @sergey-shandar From 47b233115b402bbbb63b3a10c15d62e55fcc70c5 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Tue, 13 Nov 2018 16:41:32 -0800 Subject: [PATCH 123/289] Add better sourcemap support for debugging --- package.json | 1 + rollup.config.js | 2 ++ 2 files changed, 3 insertions(+) diff --git a/package.json b/package.json index 8011c3850715..4437dee09510 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,7 @@ "nyc": "^12.0.2", "rollup": "^0.66.4", "rollup-plugin-node-resolve": "^3.4.0", + "rollup-plugin-sourcemaps": "^0.4.2", "rollup-plugin-visualizer": "^0.9.2", "shx": "^0.2.2", "ts-loader": "^2.3.7", diff --git a/rollup.config.js b/rollup.config.js index c8eee9567b76..b320a8aaa4f7 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,5 +1,6 @@ import nodeResolve from "rollup-plugin-node-resolve"; import visualizer from "rollup-plugin-visualizer"; +import sourcemaps from "rollup-plugin-sourcemaps"; const banner = `/** @license ms-rest-azure-js * Copyright (c) Microsoft Corporation. All rights reserved. @@ -24,6 +25,7 @@ const config = { }, plugins: [ nodeResolve({ module: true }), + sourcemaps(), visualizer({ filename: "dist/node-stats.html", sourcemap: true }) ] } From 2dcb9ba8c96b2fbe8b56d3d777af89f18c440c43 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Tue, 13 Nov 2018 16:50:13 -0800 Subject: [PATCH 124/289] Bump patch version number and update changelog --- Changelog.md | 4 ++++ package.json | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Changelog.md b/Changelog.md index ac326aa17377..4119ac8fc510 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,9 @@ # Changelog +## 1.1.1 - 2018-11-13 + +- Improve debugging by adding rollup-plugin-sourcemaps + ## 1.1.0 - 2018/11/09 - Renamed NPM package to @azure/ms-rest-azure-js and updated renamed dependencies diff --git a/package.json b/package.json index 4437dee09510..18dd9875ee65 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "1.1.0", + "version": "1.1.1", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -41,7 +41,7 @@ ], "license": "MIT", "dependencies": { - "@azure/ms-rest-js": "^1.1.0", + "@azure/ms-rest-js": "^1.1.1", "tslib": "^1.9.2" }, "devDependencies": { From 8c0914de2ffa591046c92c7172586714020a2df4 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Tue, 27 Nov 2018 15:18:09 -0800 Subject: [PATCH 125/289] Upgrade all dependencies (#88) --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 18dd9875ee65..efdaea03abe6 100644 --- a/package.json +++ b/package.json @@ -51,13 +51,13 @@ "chai": "^4.1.2", "mocha": "^5.2.0", "npm-run-all": "^4.1.2", - "nyc": "^12.0.2", - "rollup": "^0.66.4", + "nyc": "^13.1.0", + "rollup": "^0.67.3", "rollup-plugin-node-resolve": "^3.4.0", "rollup-plugin-sourcemaps": "^0.4.2", "rollup-plugin-visualizer": "^0.9.2", - "shx": "^0.2.2", - "ts-loader": "^2.3.7", + "shx": "^0.3.2", + "ts-loader": "^5.3.1", "ts-node": "^7.0.1", "tslint": "^5.7.0", "typescript": "^3.1.1", From fd2bac374916cf3876ec723eb3e2bc94dd3098f1 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Wed, 28 Nov 2018 10:28:35 -0800 Subject: [PATCH 126/289] Update npm-run-all (#89) * Update npm-run-all * Switch example.com to microsoft.com --- package.json | 4 ++-- test/azureServiceClientTests.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index efdaea03abe6..fe400baa0ba1 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "1.1.1", + "version": "1.1.2", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -50,7 +50,7 @@ "@types/node": "^10.9.4", "chai": "^4.1.2", "mocha": "^5.2.0", - "npm-run-all": "^4.1.2", + "npm-run-all": "^4.1.5", "nyc": "^13.1.0", "rollup": "^0.67.3", "rollup-plugin-node-resolve": "^3.4.0", diff --git a/test/azureServiceClientTests.ts b/test/azureServiceClientTests.ts index 9a9854ff64de..b6c173cf3d69 100644 --- a/test/azureServiceClientTests.ts +++ b/test/azureServiceClientTests.ts @@ -2553,7 +2553,7 @@ describe("AzureServiceClient", () => { describe("sendRequest", () => { it ("adds custom user agent if specified", async () => { const client = new AzureServiceClient(new TokenCredentials("fake-token"), { userAgent: "custom-ua" }); - const request = new WebResource("https://example.com"); + const request = new WebResource("https://microsoft.com"); await client.sendRequest(request); const telemetry = request.headers.get("user-agent")!; @@ -2562,7 +2562,7 @@ describe("AzureServiceClient", () => { it ("adds user agent header that looks similar to \"ms-rest-azure-js/0.1.0 ms-rest-js/0.1.0 Node/v10.11.0 OS/(x64-Windows_NT-10.0.18267)\"", async () => { const client = new AzureServiceClient(new TokenCredentials("my-fake-token")); - const request = new WebResource("https://example.com"); + const request = new WebResource("https://microsoft.com"); await client.sendRequest(request); const telemetry = request.headers.get("user-agent")!; From c14db65ad91f59f882f4086bee806546d607e4da Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik Date: Thu, 29 Nov 2018 12:34:24 -0800 Subject: [PATCH 127/289] Add no-return-await TSLint rule --- tslint.json | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tslint.json b/tslint.json index 5e31e56d91e5..79c5e454eba6 100644 --- a/tslint.json +++ b/tslint.json @@ -44,12 +44,13 @@ } ], "no-internal-module": true, - "no-trailing-whitespace": true, + "jsdoc-format": true, "no-inferrable-types": [true], "no-null-keyword": true, - "prefer-const": true, + "no-return-await": true, "no-switch-case-fall-through": true, - "triple-equals": [true, "allow-undefined-check"], - "jsdoc-format": true + "no-trailing-whitespace": true, + "prefer-const": true, + "triple-equals": [true, "allow-undefined-check"] } } From 2380e81ecb6bdaec78372d51332cf284ae40c40c Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 29 Nov 2018 15:36:47 -0800 Subject: [PATCH 128/289] Add isLernaPackage changes from autorest.typescript --- .scripts/dependencies.ts | 42 ++++++++++++++++++---------------------- .scripts/preview.ts | 4 ---- package.json | 3 +-- 3 files changed, 20 insertions(+), 29 deletions(-) delete mode 100644 .scripts/preview.ts diff --git a/.scripts/dependencies.ts b/.scripts/dependencies.ts index 15555548ffd6..499456c9e0d3 100644 --- a/.scripts/dependencies.ts +++ b/.scripts/dependencies.ts @@ -5,6 +5,7 @@ import { execSync } from "child_process"; export interface PackageFolder { folderPath: string; extraFilePaths?: string[]; + isLernaPackage?: boolean; } function log(filePath: string, message: string): void { @@ -270,8 +271,6 @@ export function updateLocalDependencies(packageFolders: PackageFolder[], localDe for (const packageFolder of packageFolders) { const packageFolderPath: string = packageFolder.folderPath; - let refreshPackageFolder: boolean = forceRefresh; - const packageJson: any = getPackageJson(resolvePath(packageFolderPath, "package.json")); const localDependencies: string[] = getClonedRepositories(packageJson.dependencies); @@ -283,26 +282,31 @@ export function updateLocalDependencies(packageFolders: PackageFolder[], localDe runLocalRepositoryNPMScript(localDependency, localDependencyNPMScript); } + const dependenciesToRefresh: string[] = []; for (const localDependency of allLocalDependencies) { if (updateLocalDependency(packageFolder, localDependency, getNewDependencyVersion)) { - refreshPackageFolder = true; + dependenciesToRefresh.push(localDependency); } } - if (refreshPackageFolder) { - const packageLockFilePath = resolvePath(packageFolderPath, "package-lock.json"); - if (exists(packageLockFilePath)) { - log(packageLockFilePath, `Deleting...`); - deleteFile(packageLockFilePath); - } + if (forceRefresh || dependenciesToRefresh.length > 0) { + if (packageFolder.isLernaPackage) { + log(packageFolderPath, `Not refreshing dependencies since this is a lerna package.`); + } else { + const packageLockFilePath = resolvePath(packageFolderPath, "package-lock.json"); + if (exists(packageLockFilePath)) { + log(packageLockFilePath, `Deleting...`); + deleteFile(packageLockFilePath); + } - const nodeModulesFolderPath = resolvePath(packageFolderPath, "node_modules"); - if (exists(nodeModulesFolderPath)) { - log(nodeModulesFolderPath, `Deleting...`); - deleteFolder(nodeModulesFolderPath); - } + const nodeModulesFolderPath = resolvePath(packageFolderPath, "node_modules"); + if (exists(nodeModulesFolderPath)) { + log(nodeModulesFolderPath, `Deleting...`); + deleteFolder(nodeModulesFolderPath); + } - execute("npm install", packageFolderPath); + execute("npm install", packageFolderPath); + } } } } @@ -338,14 +342,6 @@ export function getLocalDependencyVersion(dependencyName: string): string { return `file:${getLocalRepositoryPath(dependencyName)}`; } -export function getPreviewDependencyVersion(dependencyName: string): string | undefined { - let version: string | undefined = addCaretPrefix(getNpmPackageVersion(dependencyName, "preview")); - if (!version) { - version = getLatestDependencyVersion(dependencyName); - } - return version; -} - export function getLatestDependencyVersion(dependencyName: string): string | undefined { return addCaretPrefix(getNpmPackageVersion(dependencyName, "latest")); } diff --git a/.scripts/preview.ts b/.scripts/preview.ts deleted file mode 100644 index 1d5ff95677e1..000000000000 --- a/.scripts/preview.ts +++ /dev/null @@ -1,4 +0,0 @@ -import * as dependencies from "./dependencies"; -import * as repository from "./repository"; - -dependencies.updateLocalDependencies(repository.packageFolders, "preview", dependencies.getPreviewDependencyVersion); \ No newline at end of file diff --git a/package.json b/package.json index fe400baa0ba1..18db4480c523 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ ], "license": "MIT", "dependencies": { - "@azure/ms-rest-js": "^1.1.1", + "@azure/ms-rest-js": "^1.1.2", "tslib": "^1.9.2" }, "devDependencies": { @@ -101,7 +101,6 @@ "prepack": "npm install && npm run build", "publish-preview": "npm test && shx rm -rf dist/test && node ./.scripts/publish", "local": "ts-node ./.scripts/local.ts", - "preview": "ts-node ./.scripts/preview.ts", "latest": "ts-node ./.scripts/latest.ts" }, "sideEffects": false From c97433e9cb931048d7cc9b820b77427a68560181 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Tue, 4 Dec 2018 08:53:03 -0800 Subject: [PATCH 129/289] Update ms-rest-js (#94) * Update ms-rest-js * Fix tests to include additional properties --- package.json | 4 ++-- test/cloudErrorTests.ts | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index fe400baa0ba1..12e66142d5e0 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "1.1.2", + "version": "1.2.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -41,7 +41,7 @@ ], "license": "MIT", "dependencies": { - "@azure/ms-rest-js": "^1.1.1", + "@azure/ms-rest-js": "^1.2.0", "tslib": "^1.9.2" }, "devDependencies": { diff --git a/test/cloudErrorTests.ts b/test/cloudErrorTests.ts index 522bffeb837f..1bf6f580603a 100644 --- a/test/cloudErrorTests.ts +++ b/test/cloudErrorTests.ts @@ -59,7 +59,7 @@ describe("CloudError", () => { const deserializedCloudError: CloudError = serializer.deserialize(CloudErrorMapper, cloudError, "deserializedCloudError"); - expect(deserializedCloudError.name).to.not.exist; + expect(deserializedCloudError.name).to.equal(cloudError.name); expect(deserializedCloudError.code).to.be.equal(cloudError.code); expect(deserializedCloudError.message).to.be.equal(cloudError.message); expect(deserializedCloudError.target).to.not.exist; @@ -80,10 +80,10 @@ describe("CloudError", () => { const deserializedCloudError: CloudError = serializer.deserialize(CloudErrorMapper, cloudError, "deserializedCloudError"); - expect(deserializedCloudError.target).to.be.equal(cloudError.target); - expect(deserializedCloudError.details).to.be.deep.equal(cloudError.details); - expect(deserializedCloudError.innerError).to.be.equal(cloudError.innererror); - expect(deserializedCloudError.stack).to.not.exist; + expect(deserializedCloudError.target).to.equal(cloudError.target); + expect(deserializedCloudError.details).to.deep.equal(cloudError.details); + expect(deserializedCloudError.innerError).to.equal(cloudError.innererror); + expect(deserializedCloudError.stack).to.equal(cloudError.stack); }); it("should correctly deserialize additionalInfo", function (done) { From af2890edddf10ca883a169a4bbd1f8a28a39dee1 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Tue, 4 Dec 2018 12:35:33 -0800 Subject: [PATCH 130/289] Revert back to refreshPackageFolder --- .scripts/dependencies.ts | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/.scripts/dependencies.ts b/.scripts/dependencies.ts index 499456c9e0d3..7d0f052b2fe1 100644 --- a/.scripts/dependencies.ts +++ b/.scripts/dependencies.ts @@ -271,6 +271,8 @@ export function updateLocalDependencies(packageFolders: PackageFolder[], localDe for (const packageFolder of packageFolders) { const packageFolderPath: string = packageFolder.folderPath; + let refreshPackageFolder: boolean = forceRefresh; + const packageJson: any = getPackageJson(resolvePath(packageFolderPath, "package.json")); const localDependencies: string[] = getClonedRepositories(packageJson.dependencies); @@ -282,31 +284,26 @@ export function updateLocalDependencies(packageFolders: PackageFolder[], localDe runLocalRepositoryNPMScript(localDependency, localDependencyNPMScript); } - const dependenciesToRefresh: string[] = []; for (const localDependency of allLocalDependencies) { if (updateLocalDependency(packageFolder, localDependency, getNewDependencyVersion)) { - dependenciesToRefresh.push(localDependency); + refreshPackageFolder = true; } } - if (forceRefresh || dependenciesToRefresh.length > 0) { - if (packageFolder.isLernaPackage) { - log(packageFolderPath, `Not refreshing dependencies since this is a lerna package.`); - } else { - const packageLockFilePath = resolvePath(packageFolderPath, "package-lock.json"); - if (exists(packageLockFilePath)) { - log(packageLockFilePath, `Deleting...`); - deleteFile(packageLockFilePath); - } - - const nodeModulesFolderPath = resolvePath(packageFolderPath, "node_modules"); - if (exists(nodeModulesFolderPath)) { - log(nodeModulesFolderPath, `Deleting...`); - deleteFolder(nodeModulesFolderPath); - } + if (refreshPackageFolder) { + const packageLockFilePath = resolvePath(packageFolderPath, "package-lock.json"); + if (exists(packageLockFilePath)) { + log(packageLockFilePath, `Deleting...`); + deleteFile(packageLockFilePath); + } - execute("npm install", packageFolderPath); + const nodeModulesFolderPath = resolvePath(packageFolderPath, "node_modules"); + if (exists(nodeModulesFolderPath)) { + log(nodeModulesFolderPath, `Deleting...`); + deleteFolder(nodeModulesFolderPath); } + + execute("npm install", packageFolderPath); } } } From 6b0cdbbf66d9697a28e82dd14d9a1a938a82f42e Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Wed, 5 Dec 2018 16:22:29 -0800 Subject: [PATCH 131/289] Extract dependencies-related scripts to an external package (#96) * Add azure-js-dev-tools package * Add local script * Update dev tools to 0.1.2. * Update dev tools to 0.1.3 * Add scripts * Remove duplicated scripts * Remove building TS files in .scripts --- .scripts/dependencies.ts | 348 --------------------------------------- .scripts/latest.ts | 4 - .scripts/local.ts | 4 - .scripts/repository.ts | 7 - .scripts/tsconfig.json | 11 -- package.json | 8 +- 6 files changed, 4 insertions(+), 378 deletions(-) delete mode 100644 .scripts/dependencies.ts delete mode 100644 .scripts/latest.ts delete mode 100644 .scripts/local.ts delete mode 100644 .scripts/repository.ts delete mode 100644 .scripts/tsconfig.json diff --git a/.scripts/dependencies.ts b/.scripts/dependencies.ts deleted file mode 100644 index 7d0f052b2fe1..000000000000 --- a/.scripts/dependencies.ts +++ /dev/null @@ -1,348 +0,0 @@ -import * as fs from "fs"; -import * as path from "path"; -import { execSync } from "child_process"; - -export interface PackageFolder { - folderPath: string; - extraFilePaths?: string[]; - isLernaPackage?: boolean; -} - -function log(filePath: string, message: string): void { - console.log(`[${filePath}] - ${message}`); -} - -/** - * Get whether or not the node_modules folder should be refreshed based on the command line - * arguments. - * @param argv The command line arguments that were provided. - * @returns Whether or not the node_modules folder should be refreshed. - */ -export function shouldForceRefresh(argv: string[]): boolean { - let result = false; - if (argv) { - for (const arg of argv) { - const argLower: string = arg && arg.toLocaleLowerCase(); - if (argLower === "-f" || argLower === "-force" || argLower === "--force") { - result = true; - break; - } - } - } - return result; -} - -export function resolvePath(...paths: string[]): string { - return path.resolve(...paths).split("\\").join("/"); -} - -function exists(path: string | undefined): boolean { - if (!path) { - return false; - } - - return fs.existsSync(path); -} - -/** - * Delete the file at the provided file path. - * @param {string} filePath The path to the file to delete. - */ -function deleteFile(filePath: string): void { - fs.unlinkSync(filePath); -} - -/** - * Delete the folder at the provided folder path. - * @param {string} folderPath The path to the folder to delete. - */ -function deleteFolder(folderPath: string): void { - try { - fs.rmdirSync(folderPath); - } catch (error) { - if (error.code === "ENOTEMPTY") { - const folderEntryPaths: string[] = fs.readdirSync(folderPath); - for (const entryName of folderEntryPaths) { - const entryPath: string = resolvePath(folderPath, entryName); - const entryStats: fs.Stats = fs.lstatSync(entryPath); - if (entryStats.isDirectory()) { - deleteFolder(entryPath); - } else { - deleteFile(entryPath); - } - } - fs.rmdirSync(folderPath); - } else { - throw error; - } - } -} - -/** - * Read the contents of text file at the provided filePath. - * @param {string} filePath The path to the text file to read. - * @returns {string} The text contents of the text file at the provided filePath. - */ -function readTextFileContents(filePath: string): string { - return fs.readFileSync(filePath, { encoding: "utf8" }); -} - -/** - * Execute the provided command on the shell synchronously. - * @param {string} command The command to execute. - * @param {string} workingDirectory The working directory to execute the command in. - * @returns {void} - */ -function execute(command: string, workingDirectory: string): void { - log(workingDirectory, `Running "${command}"...`); - execSync(command, { cwd: workingDirectory, stdio: [0, 1, 2] }); -} - -/** - * Get the absolute path to this repository's folder path. - * @returns {string} The absolute path to this repository's folder path. - */ -export function getThisRepositoryFolderPath(): string { - return resolvePath(__dirname, ".."); -} - -/** - * Get the absolute path to the package.json in this repository. - * @returns {string} The absolute path to the package.json. - */ -function getPackageJsonFilePath(packageFolder: string): string { - return resolvePath(packageFolder, "package.json"); -} - -function getPackageNameFromPackageJson(packageJsonFilePath: string): string { - const packageJson: { name: string } = getPackageJson(packageJsonFilePath); - return packageJson.name; -} - -/** - * Get the absolute path to the local clone of the repository with the provided name. - * @param {string} repoName The name of the repository. - * @returns {string} The absolute path to the local clone of the repository. - */ -export function getLocalRepositoryPath(repoName: string): string | undefined { - const repositoriesRoot: string = resolvePath(getThisRepositoryFolderPath(), ".."); - const repositoryPaths: string[] = fs.readdirSync(repositoriesRoot).map(childDir => resolvePath(repositoriesRoot, childDir)); - - for (const repositoryPath of repositoryPaths) { - const packageJsonPath = getPackageJsonFilePath(repositoryPath); - if (!fs.existsSync(packageJsonPath)) { - continue; - } - - const packageName = getPackageNameFromPackageJson(packageJsonPath); - if (packageName === repoName) { - return repositoryPath; - } - } - - return undefined; -} - -/** - * Get the package.json file contents parsed as a JSON object. - * @param {string=} packageJsonFilePath The path to the package.json file to read. If this is not - * provided, then the package.json file at the root of this repository will be used. - * @returns {{}} The parsed package.json file contents. - */ -function getPackageJson(packageJsonFilePath: string): any { - return JSON.parse(readTextFileContents(packageJsonFilePath)); -} - -/** - * Get the dependencies from the provided dependencies dictionary that have local clones. - * @param {{ [packageName: string]: string }} dependencies A dictionary of package names to package - * versions. - * @param {string[]} clonedRepositoryNames The array to put the names of the local cloned - * repositories into. - * @returns {void} - */ -function getClonedRepositories(dependencies?: { [packageName: string]: string }): string[] { - const clonedRepositoryNames: string[] = []; - if (dependencies) { - for (const dependencyName in dependencies) { - if (clonedRepositoryNames.indexOf(dependencyName) === -1) { - const repoFolderPath = getLocalRepositoryPath(dependencyName); - if (exists(repoFolderPath)) { - clonedRepositoryNames.push(dependencyName); - } - } - } - } - return clonedRepositoryNames; -} - -/** - * Run a script with the provided name in the local clone of the repository with the provided name. - * @param {string} repoName The name of the repository to run the script in. - * @param {string} scriptName The name of the script to run in the local repository. - * @returns {void} - */ -export function runLocalRepositoryNPMScript(repoName: string, scriptName: string): void { - const repoFolderPath: string | undefined = getLocalRepositoryPath(repoName); - if (!repoFolderPath) { - return; - } - - const packageJsonFilePath: string = getPackageJsonFilePath(repoFolderPath); - const packageJson: any = getPackageJson(packageJsonFilePath); - const repoScripts: any = packageJson.scripts; - if (repoScripts && repoScripts[scriptName]) { - execute(`npm run ${scriptName}`, repoFolderPath); - } else { - log(packageJsonFilePath, `No script named "${scriptName}" is defined.`); - } -} - -/** - * Get the npm package version of the package with the provided name at the provided tag. - * @param {string} packageName The name of the package. - * @param {string} tag The tag of the version to retrieve. - * @returns {string?} The version of the provided package at the provided tag. - */ -export function getNpmPackageVersion(packageName: string, tag: string): string | undefined { - const npmViewResult: any = JSON.parse(execSync(`npm view ${packageName} --json`, { stdio: ["pipe", "pipe", "ignore"] }).toString()); - return npmViewResult["dist-tags"][tag]; -} - -/** - * Update the dependency versions in the files at the provided codeFilePaths. - * @param {string[]} codeFilePath The paths to the code files that should be updated. - * @param {string} dependencyName The name of the dependency to update. - * @param {RegExp} regularExpression The regular expression to use to find the dependency name and - * version in the code file's contents. - * @param {string} newValue The replacement string that will replace the text that matches the - * provided regularExpression. - * @param {string} newDependencyVersion The version of the dependency to set in the provided code - * files. - */ -function updateGeneratedPackageDependencyVersion(codeFilePath: string, dependencyName: string, newDependencyVersion: string): boolean { - let fileChanged = false; - codeFilePath = resolvePath(codeFilePath); - if (exists(codeFilePath)) { - const originalCodeFileContents: string = readTextFileContents(codeFilePath); - let codeFileContents: string = originalCodeFileContents; - - codeFileContents = regularExpressionReplace( - codeFilePath, - codeFileContents, - dependencyName, - new RegExp(`\\\\"${dependencyName}\\\\": \\\\"(.*?)\\\\"`), - `\\"${dependencyName}\\": \\"${newDependencyVersion}\\"`, - newDependencyVersion); - - codeFileContents = regularExpressionReplace( - codeFilePath, - codeFileContents, - dependencyName, - new RegExp(`"${dependencyName}": "(.*?)"`), - `"${dependencyName}": "${newDependencyVersion}"`, - newDependencyVersion); - - if (codeFileContents !== originalCodeFileContents) { - fileChanged = true; - fs.writeFileSync(codeFilePath, codeFileContents); - } - } - return fileChanged; -} - -function regularExpressionReplace(filePath: string, fileContents: string, dependencyName: string, regularExpression: RegExp, newValue: string, newDependencyVersion: string): string { - let newFileContents: string = fileContents; - const match: RegExpMatchArray | null = fileContents.match(regularExpression); - if (match) { - if (match[1] === newDependencyVersion) { - log(filePath, `"${dependencyName}" is already set to "${newDependencyVersion}".`); - } else { - log(filePath, `Changing "${dependencyName}" version from "${match[1]}" to "${newDependencyVersion}".`); - newFileContents = fileContents.replace(regularExpression, newValue); - } - } - return newFileContents; -} - -export function updateLocalDependencies(packageFolders: PackageFolder[], localDependencyNPMScript: string, getNewDependencyVersion: (dependencyName: string) => (string | undefined)): void { - const forceRefresh: boolean = shouldForceRefresh(process.argv); - - for (const packageFolder of packageFolders) { - const packageFolderPath: string = packageFolder.folderPath; - - let refreshPackageFolder: boolean = forceRefresh; - - const packageJson: any = getPackageJson(resolvePath(packageFolderPath, "package.json")); - - const localDependencies: string[] = getClonedRepositories(packageJson.dependencies); - const localDevDependencies: string[] = getClonedRepositories(packageJson.devDependencies); - - const allLocalDependencies: string[] = localDependencies.concat(localDevDependencies); - - for (const localDependency of allLocalDependencies) { - runLocalRepositoryNPMScript(localDependency, localDependencyNPMScript); - } - - for (const localDependency of allLocalDependencies) { - if (updateLocalDependency(packageFolder, localDependency, getNewDependencyVersion)) { - refreshPackageFolder = true; - } - } - - if (refreshPackageFolder) { - const packageLockFilePath = resolvePath(packageFolderPath, "package-lock.json"); - if (exists(packageLockFilePath)) { - log(packageLockFilePath, `Deleting...`); - deleteFile(packageLockFilePath); - } - - const nodeModulesFolderPath = resolvePath(packageFolderPath, "node_modules"); - if (exists(nodeModulesFolderPath)) { - log(nodeModulesFolderPath, `Deleting...`); - deleteFolder(nodeModulesFolderPath); - } - - execute("npm install", packageFolderPath); - } - } -} - -function updateLocalDependency(packageFolder: PackageFolder, dependencyName: string, getNewDependencyVersion: (dependencyName: string) => (string | undefined)): boolean { - const newDependencyVersion: string = getNewDependencyVersion(dependencyName) || ""; - - const packageFolderPath: string = packageFolder.folderPath; - - const localDependencyUpdated = updateGeneratedPackageDependencyVersion( - resolvePath(packageFolderPath, "package.json"), - dependencyName, - newDependencyVersion); - - updateGeneratedPackageDependencyVersion( - resolvePath(packageFolderPath, "README.md"), - dependencyName, - newDependencyVersion); - - if (packageFolder.extraFilePaths) { - for (const extraFilePath of packageFolder.extraFilePaths) { - updateGeneratedPackageDependencyVersion( - resolvePath(packageFolderPath, extraFilePath), - dependencyName, - newDependencyVersion); - } - } - - return localDependencyUpdated; -} - -export function getLocalDependencyVersion(dependencyName: string): string { - return `file:${getLocalRepositoryPath(dependencyName)}`; -} - -export function getLatestDependencyVersion(dependencyName: string): string | undefined { - return addCaretPrefix(getNpmPackageVersion(dependencyName, "latest")); -} - -function addCaretPrefix(version: string | undefined): string | undefined { - return version ? `^${version}` : version; -} \ No newline at end of file diff --git a/.scripts/latest.ts b/.scripts/latest.ts deleted file mode 100644 index 0d12e57708e7..000000000000 --- a/.scripts/latest.ts +++ /dev/null @@ -1,4 +0,0 @@ -import * as dependencies from "./dependencies"; -import * as repository from "./repository"; - -dependencies.updateLocalDependencies(repository.packageFolders, "latest", dependencies.getLatestDependencyVersion); \ No newline at end of file diff --git a/.scripts/local.ts b/.scripts/local.ts deleted file mode 100644 index 92d6c0eab634..000000000000 --- a/.scripts/local.ts +++ /dev/null @@ -1,4 +0,0 @@ -import * as dependencies from "./dependencies"; -import * as repository from "./repository"; - -dependencies.updateLocalDependencies(repository.packageFolders, "local", dependencies.getLocalDependencyVersion); \ No newline at end of file diff --git a/.scripts/repository.ts b/.scripts/repository.ts deleted file mode 100644 index efafd13eb767..000000000000 --- a/.scripts/repository.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as dependencies from "./dependencies"; - -export const packageFolders: dependencies.PackageFolder[] = [ - { - folderPath: dependencies.getThisRepositoryFolderPath() - } -]; \ No newline at end of file diff --git a/.scripts/tsconfig.json b/.scripts/tsconfig.json deleted file mode 100644 index d354dde0fddd..000000000000 --- a/.scripts/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "noEmit": true, - "strict": true - }, - "include": [ - "*.ts", - "*.js" - ] -} diff --git a/package.json b/package.json index d522e6ee169f..257db62a38ac 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "tslib": "^1.9.2" }, "devDependencies": { + "@ts-common/azure-js-dev-tools": "^0.1.3", "@types/chai": "^4.1.4", "@types/mocha": "^5.2.1", "@types/node": "^10.9.4", @@ -89,8 +90,7 @@ "all": true }, "scripts": { - "build": "run-p build:scripts build:lib", - "build:scripts": "tsc -p ./.scripts/", + "build": "run-p build:lib", "build:lib": "run-s build:tsc build:rollup build:minify", "build:tsc": "tsc -p tsconfig.es.json", "build:rollup": "rollup -c rollup.config.js", @@ -100,8 +100,8 @@ "test:tslint": "tslint -p . -c tslint.json --exclude test/**/*.ts", "prepack": "npm install && npm run build", "publish-preview": "npm test && shx rm -rf dist/test && node ./.scripts/publish", - "local": "ts-node ./.scripts/local.ts", - "latest": "ts-node ./.scripts/latest.ts" + "local": "npm explore @ts-common/azure-js-dev-tools -- npm run local", + "latest": "npm explore @ts-common/azure-js-dev-tools -- npm run latest" }, "sideEffects": false } From 55e00bc56e89d9cc8281a855af77a97343f5f500 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Fri, 14 Dec 2018 11:48:16 -0800 Subject: [PATCH 132/289] Enable coverage in ci --- .gitignore | 1 + azure-pipelines.yml | 6 +++--- mocha.config.json | 3 +++ package.json | 14 +++++++++----- test/mocha.opts | 3 ++- 5 files changed, 18 insertions(+), 9 deletions(-) create mode 100644 mocha.config.json diff --git a/.gitignore b/.gitignore index a7523ee2898f..8aa7a2cf6175 100644 --- a/.gitignore +++ b/.gitignore @@ -92,6 +92,7 @@ dist/ *.d.ts.map *.js *.js.map +test-results.xml # Rollup !rollup.config.js diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 924408cdbf50..7a5c30b85196 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -29,13 +29,13 @@ jobs: customCommand: test - task: PublishTestResults@2 inputs: - testResultsFiles: '**/test-results.xml' + testResultsFiles: '$(System.DefaultWorkingDirectory)/test-results.xml' testRunTitle: 'Test results for JavaScript' - task: PublishCodeCoverageResults@1 inputs: codeCoverageTool: Cobertura - summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/*coverage.xml' - reportDirectory: '$(System.DefaultWorkingDirectory)/**/coverage' + summaryFileLocation: '$(System.DefaultWorkingDirectory)/coverage/cobertura-coverage.xml' + reportDirectory: '$(System.DefaultWorkingDirectory)/coverage/' - job: Build pool: vmImage: 'Ubuntu 16.04' diff --git a/mocha.config.json b/mocha.config.json new file mode 100644 index 000000000000..9e5174866f14 --- /dev/null +++ b/mocha.config.json @@ -0,0 +1,3 @@ +{ + "reporterEnabled": "list, mocha-junit-reporter" +} \ No newline at end of file diff --git a/package.json b/package.json index 257db62a38ac..490464785301 100644 --- a/package.json +++ b/package.json @@ -51,8 +51,11 @@ "@types/node": "^10.9.4", "chai": "^4.1.2", "mocha": "^5.2.0", + "mocha-junit-reporter": "^1.18.0", + "mocha-multi-reporters": "^1.1.7", "npm-run-all": "^4.1.5", "nyc": "^13.1.0", + "opn-cli": "^4.0.0", "rollup": "^0.67.3", "rollup-plugin-node-resolve": "^3.4.0", "rollup-plugin-sourcemaps": "^0.4.2", @@ -78,14 +81,14 @@ ".ts" ], "exclude": [ - "**/*.d.ts" - ], - "include": [ - "lib/**/*.ts" + "coverage/**/*", + "**/*.d.ts", + "**/*.js" ], "reporter": [ "text", - "html" + "html", + "cobertura" ], "all": true }, @@ -98,6 +101,7 @@ "test": "run-p test:tslint test:unit", "test:unit": "nyc mocha", "test:tslint": "tslint -p . -c tslint.json --exclude test/**/*.ts", + "test:coverage": "npm run test && opn coverage/index.html", "prepack": "npm install && npm run build", "publish-preview": "npm test && shx rm -rf dist/test && node ./.scripts/publish", "local": "npm explore @ts-common/azure-js-dev-tools -- npm run local", diff --git a/test/mocha.opts b/test/mocha.opts index 01f156a1c8b5..294e333278ee 100644 --- a/test/mocha.opts +++ b/test/mocha.opts @@ -1,5 +1,6 @@ --require ts-node/register --timeout 50000 ---reporter list +--reporter mocha-multi-reporters +--reporter-options configFile=mocha.config.json --colors test/**/*.ts \ No newline at end of file From c0cc7a933a3e01cae528df6a8dde9c223e8838ea Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Mon, 17 Dec 2018 13:14:40 -0800 Subject: [PATCH 133/289] Add package.json version check --- .scripts/checkPackageJsonVersion.ts | 3 +++ azure-pipelines.yml | 16 ++++++++++++++++ package.json | 5 +++-- 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 .scripts/checkPackageJsonVersion.ts diff --git a/.scripts/checkPackageJsonVersion.ts b/.scripts/checkPackageJsonVersion.ts new file mode 100644 index 000000000000..5432d9c2cbc3 --- /dev/null +++ b/.scripts/checkPackageJsonVersion.ts @@ -0,0 +1,3 @@ +import { checkPackageJsonVersion } from "@ts-common/azure-js-dev-tools"; + +process.exitCode = checkPackageJsonVersion(__dirname); \ No newline at end of file diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 7a5c30b85196..e994986a24c2 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -54,3 +54,19 @@ jobs: - task: PublishBuildArtifacts@1 inputs: pathtoPublish: $(Build.SourcesDirectory)/drop +- job: Check_PackageJson_Version_Number + pool: + vmImage: 'Ubuntu 16.04' + steps: + - task: Npm@1 + displayName: 'npm install' + inputs: + command: custom + verbose: false + customCommand: install + - task: Npm@1 + displayName: 'npm run check:packagejsonversion -- --azure-devops' + inputs: + command: custom + verbose: false + customCommand: run check:packagejsonversion -- --azure-devops \ No newline at end of file diff --git a/package.json b/package.json index 490464785301..9837b35ceeaf 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "tslib": "^1.9.2" }, "devDependencies": { - "@ts-common/azure-js-dev-tools": "^0.1.3", + "@ts-common/azure-js-dev-tools": "^0.4.9", "@types/chai": "^4.1.4", "@types/mocha": "^5.2.1", "@types/node": "^10.9.4", @@ -105,7 +105,8 @@ "prepack": "npm install && npm run build", "publish-preview": "npm test && shx rm -rf dist/test && node ./.scripts/publish", "local": "npm explore @ts-common/azure-js-dev-tools -- npm run local", - "latest": "npm explore @ts-common/azure-js-dev-tools -- npm run latest" + "latest": "npm explore @ts-common/azure-js-dev-tools -- npm run latest", + "check:packagejsonversion": "ts-node ./.scripts/checkPackageJsonVersion.ts" }, "sideEffects": false } From f3a53fee8c4ad2a64467970328364992c5032dfb Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Mon, 17 Dec 2018 13:16:43 -0800 Subject: [PATCH 134/289] Update version to 1.2.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9837b35ceeaf..c784b3ece34a 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "1.2.0", + "version": "1.2.1", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", From 066761e615b944b44ee0246de2d4c1d788220b71 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Tue, 18 Dec 2018 14:20:51 -0800 Subject: [PATCH 135/289] Initial work to add support back for local and latest scripts --- .scripts/latest.ts | 3 +++ .scripts/local.ts | 3 +++ package.json | 8 ++++---- 3 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 .scripts/latest.ts create mode 100644 .scripts/local.ts diff --git a/.scripts/latest.ts b/.scripts/latest.ts new file mode 100644 index 000000000000..bc71731346c1 --- /dev/null +++ b/.scripts/latest.ts @@ -0,0 +1,3 @@ +import { changeClonedDependenciesTo } from "@ts-common/azure-js-dev-tools"; + +changeClonedDependenciesTo(__dirname, "latest"); \ No newline at end of file diff --git a/.scripts/local.ts b/.scripts/local.ts new file mode 100644 index 000000000000..e3d8f5d46123 --- /dev/null +++ b/.scripts/local.ts @@ -0,0 +1,3 @@ +import { changeClonedDependenciesTo } from "@ts-common/azure-js-dev-tools"; + +changeClonedDependenciesTo(__dirname, "local"); \ No newline at end of file diff --git a/package.json b/package.json index c784b3ece34a..a467c86604f4 100644 --- a/package.json +++ b/package.json @@ -41,11 +41,11 @@ ], "license": "MIT", "dependencies": { - "@azure/ms-rest-js": "^1.2.0", + "@azure/ms-rest-js": "^1.2.3", "tslib": "^1.9.2" }, "devDependencies": { - "@ts-common/azure-js-dev-tools": "^0.4.9", + "@ts-common/azure-js-dev-tools": "file:C:/Users/daschult/Sources/azure-js-dev-tools", "@types/chai": "^4.1.4", "@types/mocha": "^5.2.1", "@types/node": "^10.9.4", @@ -104,8 +104,8 @@ "test:coverage": "npm run test && opn coverage/index.html", "prepack": "npm install && npm run build", "publish-preview": "npm test && shx rm -rf dist/test && node ./.scripts/publish", - "local": "npm explore @ts-common/azure-js-dev-tools -- npm run local", - "latest": "npm explore @ts-common/azure-js-dev-tools -- npm run latest", + "local": "ts-node ./.scripts/local.ts", + "latest": "ts-node ./.scripts/latest.ts", "check:packagejsonversion": "ts-node ./.scripts/checkPackageJsonVersion.ts" }, "sideEffects": false From 0f441c33e3b02938d083b247fe96c1ef4052f8ff Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Wed, 19 Dec 2018 09:52:59 -0800 Subject: [PATCH 136/289] Update cloned dependencies --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index a467c86604f4..de8f1b5bd398 100644 --- a/package.json +++ b/package.json @@ -41,11 +41,11 @@ ], "license": "MIT", "dependencies": { - "@azure/ms-rest-js": "^1.2.3", + "@azure/ms-rest-js": "^1.2.4", "tslib": "^1.9.2" }, "devDependencies": { - "@ts-common/azure-js-dev-tools": "file:C:/Users/daschult/Sources/azure-js-dev-tools", + "@ts-common/azure-js-dev-tools": "^0.5.1", "@types/chai": "^4.1.4", "@types/mocha": "^5.2.1", "@types/node": "^10.9.4", From bc3849b6e646ea61dd79bd4c0d6a182a89e08127 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Wed, 19 Dec 2018 10:02:35 -0800 Subject: [PATCH 137/289] Update version to 1.2.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index de8f1b5bd398..32b4030fd0ec 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "1.2.1", + "version": "1.2.2", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", From 0fcc86d02c9572ad2204bba4723ec943a76f996f Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 20 Dec 2018 11:16:40 -0800 Subject: [PATCH 138/289] Add only() check --- .scripts/checkTestsForOnly.ts | 3 +++ azure-pipelines.yml | 16 ++++++++++++++++ package.json | 7 ++++--- 3 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 .scripts/checkTestsForOnly.ts diff --git a/.scripts/checkTestsForOnly.ts b/.scripts/checkTestsForOnly.ts new file mode 100644 index 000000000000..0797d2d21820 --- /dev/null +++ b/.scripts/checkTestsForOnly.ts @@ -0,0 +1,3 @@ +import { checkTestsForOnly, resolvePath } from "@ts-common/azure-js-dev-tools"; + +checkTestsForOnly(resolvePath(__dirname, "..", "test")); \ No newline at end of file diff --git a/azure-pipelines.yml b/azure-pipelines.yml index e994986a24c2..6d7cd72359fe 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -54,6 +54,22 @@ jobs: - task: PublishBuildArtifacts@1 inputs: pathtoPublish: $(Build.SourcesDirectory)/drop +- job: Check_Tests_For_Only + pool: + vmImage: 'Ubuntu 16.04' + steps: + - task: Npm@1 + displayName: 'npm install' + inputs: + command: custom + verbose: false + customCommand: install + - task: Npm@1 + displayName: 'npm run check:testsforonly -- --azure-devops' + inputs: + command: custom + verbose: false + customCommand: run check:testsforonly -- --azure-devops - job: Check_PackageJson_Version_Number pool: vmImage: 'Ubuntu 16.04' diff --git a/package.json b/package.json index 32b4030fd0ec..0913e03b174b 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "1.2.2", + "version": "1.2.3", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -45,7 +45,7 @@ "tslib": "^1.9.2" }, "devDependencies": { - "@ts-common/azure-js-dev-tools": "^0.5.1", + "@ts-common/azure-js-dev-tools": "^0.5.5", "@types/chai": "^4.1.4", "@types/mocha": "^5.2.1", "@types/node": "^10.9.4", @@ -106,7 +106,8 @@ "publish-preview": "npm test && shx rm -rf dist/test && node ./.scripts/publish", "local": "ts-node ./.scripts/local.ts", "latest": "ts-node ./.scripts/latest.ts", - "check:packagejsonversion": "ts-node ./.scripts/checkPackageJsonVersion.ts" + "check:packagejsonversion": "ts-node ./.scripts/checkPackageJsonVersion.ts", + "check:testsforonly": "ts-node ./.scripts/checkTestsForOnly.ts" }, "sideEffects": false } From a97f42f4dcb18a60b1b6829e92c7a81ad7ba0816 Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 20 Dec 2018 13:11:04 -0800 Subject: [PATCH 139/289] Add checkEverything.ts --- .scripts/checkEverything.ts | 3 ++ .scripts/checkForOnlyCalls.ts | 3 ++ .scripts/checkPackageJsonVersion.ts | 2 +- .scripts/checkTestsForOnly.ts | 3 -- azure-pipelines.yml | 50 ++++++++++------------------- package.json | 9 +++--- 6 files changed, 29 insertions(+), 41 deletions(-) create mode 100644 .scripts/checkEverything.ts create mode 100644 .scripts/checkForOnlyCalls.ts delete mode 100644 .scripts/checkTestsForOnly.ts diff --git a/.scripts/checkEverything.ts b/.scripts/checkEverything.ts new file mode 100644 index 000000000000..4d91adb32de3 --- /dev/null +++ b/.scripts/checkEverything.ts @@ -0,0 +1,3 @@ +import { checkEverything } from "@ts-common/azure-js-dev-tools"; + +checkEverything(); \ No newline at end of file diff --git a/.scripts/checkForOnlyCalls.ts b/.scripts/checkForOnlyCalls.ts new file mode 100644 index 000000000000..c57486085000 --- /dev/null +++ b/.scripts/checkForOnlyCalls.ts @@ -0,0 +1,3 @@ +import { checkForOnlyCalls } from "@ts-common/azure-js-dev-tools"; + +checkForOnlyCalls(); \ No newline at end of file diff --git a/.scripts/checkPackageJsonVersion.ts b/.scripts/checkPackageJsonVersion.ts index 5432d9c2cbc3..845b8a052937 100644 --- a/.scripts/checkPackageJsonVersion.ts +++ b/.scripts/checkPackageJsonVersion.ts @@ -1,3 +1,3 @@ import { checkPackageJsonVersion } from "@ts-common/azure-js-dev-tools"; -process.exitCode = checkPackageJsonVersion(__dirname); \ No newline at end of file +checkPackageJsonVersion(); \ No newline at end of file diff --git a/.scripts/checkTestsForOnly.ts b/.scripts/checkTestsForOnly.ts deleted file mode 100644 index 0797d2d21820..000000000000 --- a/.scripts/checkTestsForOnly.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { checkTestsForOnly, resolvePath } from "@ts-common/azure-js-dev-tools"; - -checkTestsForOnly(resolvePath(__dirname, "..", "test")); \ No newline at end of file diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 6d7cd72359fe..6d0366c3ec12 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -2,6 +2,22 @@ trigger: - master jobs: +- job: Check_Everything + pool: + vmImage: 'Ubuntu 16.04' + steps: + - task: Npm@1 + displayName: 'npm install' + inputs: + command: custom + verbose: false + customCommand: install + - task: Npm@1 + displayName: 'npm run check:everything -- --azure-devops' + inputs: + command: custom + verbose: false + customCommand: run check:everything -- --azure-devops - job: Test pool: vmImage: 'Ubuntu 16.04' @@ -53,36 +69,4 @@ jobs: TargetFolder: drop - task: PublishBuildArtifacts@1 inputs: - pathtoPublish: $(Build.SourcesDirectory)/drop -- job: Check_Tests_For_Only - pool: - vmImage: 'Ubuntu 16.04' - steps: - - task: Npm@1 - displayName: 'npm install' - inputs: - command: custom - verbose: false - customCommand: install - - task: Npm@1 - displayName: 'npm run check:testsforonly -- --azure-devops' - inputs: - command: custom - verbose: false - customCommand: run check:testsforonly -- --azure-devops -- job: Check_PackageJson_Version_Number - pool: - vmImage: 'Ubuntu 16.04' - steps: - - task: Npm@1 - displayName: 'npm install' - inputs: - command: custom - verbose: false - customCommand: install - - task: Npm@1 - displayName: 'npm run check:packagejsonversion -- --azure-devops' - inputs: - command: custom - verbose: false - customCommand: run check:packagejsonversion -- --azure-devops \ No newline at end of file + pathtoPublish: $(Build.SourcesDirectory)/drop \ No newline at end of file diff --git a/package.json b/package.json index 0913e03b174b..09b1746e2f76 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "1.2.3", + "version": "1.2.4", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -41,11 +41,11 @@ ], "license": "MIT", "dependencies": { - "@azure/ms-rest-js": "^1.2.4", + "@azure/ms-rest-js": "^1.2.5", "tslib": "^1.9.2" }, "devDependencies": { - "@ts-common/azure-js-dev-tools": "^0.5.5", + "@ts-common/azure-js-dev-tools": "^0.6.0", "@types/chai": "^4.1.4", "@types/mocha": "^5.2.1", "@types/node": "^10.9.4", @@ -107,7 +107,8 @@ "local": "ts-node ./.scripts/local.ts", "latest": "ts-node ./.scripts/latest.ts", "check:packagejsonversion": "ts-node ./.scripts/checkPackageJsonVersion.ts", - "check:testsforonly": "ts-node ./.scripts/checkTestsForOnly.ts" + "check:foronlycalls": "ts-node ./.scripts/checkForOnlyCalls.ts", + "check:everything": "ts-node ./.scripts/checkEverything.ts" }, "sideEffects": false } From cee5adbef620e66c65b54880600b97cb90eba317 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Mon, 7 Jan 2019 12:32:00 -0800 Subject: [PATCH 140/289] Remove final GET on POST 202 long running operations (#103) * Remove final GET on POST 202 long running operations * Bump the version to 1.3.0 * Remove unnecessary request mock --- lib/lroPollStrategy.ts | 4 ++-- package.json | 2 +- test/azureServiceClientTests.ts | 14 ++++---------- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts index 07a2ee738803..a545855eb3f8 100644 --- a/lib/lroPollStrategy.ts +++ b/lib/lroPollStrategy.ts @@ -507,7 +507,7 @@ class AzureAsyncOperationLROPollStrategy extends LROPollStrategy { if (lroPollState.locationHeaderValue) { const initialResponseStatusCode: number = initialResponse.status; if (initialRequestMethod === "POST") { - result = initialResponseStatusCode === 200 || initialResponseStatusCode === 201 || initialResponseStatusCode === 202; + result = initialResponseStatusCode === 200 || initialResponseStatusCode === 201; } else if (initialRequestMethod === "DELETE") { result = initialResponseStatusCode === 200 || initialResponseStatusCode === 202; } @@ -579,4 +579,4 @@ class GetResourceLROPollStrategy extends LROPollStrategy { protected doFinalGetResourceRequest(): Promise { return this.sendPollRequest(); } -} \ No newline at end of file +} diff --git a/package.json b/package.json index 09b1746e2f76..8f1209a38efa 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "1.2.4", + "version": "1.3.0", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", diff --git a/test/azureServiceClientTests.ts b/test/azureServiceClientTests.ts index b6c173cf3d69..ee2ab0619438 100644 --- a/test/azureServiceClientTests.ts +++ b/test/azureServiceClientTests.ts @@ -2164,20 +2164,14 @@ describe("AzureServiceClient", () => { body: { status: "Succeeded" } - }, - { - status: 200, - body: { - a: "A" - } } ]); const httpRequest = new WebResource("https://fake.azure.com/longRunningOperation", "POST"); const httpResponse: HttpOperationResponse = await serviceClient.sendLongRunningRequest(httpRequest); assert.strictEqual(httpResponse.status, 200); - assert.strictEqual(httpResponse.bodyAsText, `{"a":"A"}`); - assert.deepEqual(httpResponse.parsedBody, { a: "A" }); - assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation3"); + assert.strictEqual(httpResponse.bodyAsText, `{"status":"Succeeded"}`); + assert.deepEqual(httpResponse.parsedBody, { status: "Succeeded" }); + assert.strictEqual(httpResponse.request.url, "https://fake.azure.com/longRunningOperation2"); }); describe("Headers: Location", () => { @@ -2601,4 +2595,4 @@ function createServiceClient(responses: HttpResponse[]): AzureServiceClient { }, longRunningOperationRetryTimeout: 0 }); -} \ No newline at end of file +} From 56432e04b9be0d883e6174f16b829a4072b01113 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Mon, 7 Jan 2019 12:56:21 -0800 Subject: [PATCH 141/289] Fix LRO RestErrors parsing (#104) * Fix LRO RestErrors parsing * Add JSON parsing error handling --- lib/lroPollStrategy.ts | 10 +++++++++- package.json | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts index a545855eb3f8..78a50d137fe1 100644 --- a/lib/lroPollStrategy.ts +++ b/lib/lroPollStrategy.ts @@ -397,7 +397,15 @@ class LocationLROPollStrategy extends LROPollStrategy { lroPollState.resource = getResponseBody(result); } else if (400 <= statusCode && statusCode <= 499) { const resultBody: string = result.bodyAsText!; - throw new RestError(resultBody, undefined, statusCode, stripRequest(result.request), result, resultBody); + let errorMessage: string = resultBody; + try { + const resultObject = JSON.parse(resultBody); + errorMessage = resultObject.message; + } catch (parseError) { + // Ignore the exception, use resultBody as the error message + } + + throw new RestError(errorMessage, undefined, statusCode, stripRequest(result.request), result, resultBody); } else { throw new Error(`The response with status code ${statusCode} from polling for long running operation url "${lroPollState.locationHeaderValue}" is not valid.`); } diff --git a/package.json b/package.json index 8f1209a38efa..d863af61fe4e 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "1.3.0", + "version": "1.3.1", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", From 2e2abb0db020906771413adfb805835c6c5a1a14 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Mon, 28 Jan 2019 08:41:15 -0800 Subject: [PATCH 142/289] Fix User-Agent tests (#105) * Fix User-Agent tests * Bump the version --- package.json | 2 +- test/azureServiceClientTests.ts | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index d863af61fe4e..473c599d059a 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "1.3.1", + "version": "1.3.2", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", diff --git a/test/azureServiceClientTests.ts b/test/azureServiceClientTests.ts index ee2ab0619438..a4049b594889 100644 --- a/test/azureServiceClientTests.ts +++ b/test/azureServiceClientTests.ts @@ -2513,7 +2513,12 @@ describe("AzureServiceClient", () => { describe("updateOptionsWithDefaultValues()", () => { function assertOptionEqual(actual: AzureServiceClientOptions, expected: AzureServiceClientOptions) { - const actualUserAgent = actual.userAgent; + let actualUserAgent: string | undefined; + if (typeof actual.userAgent === "string") { + actualUserAgent = actual.userAgent; + } else if (typeof actual.userAgent === "function") { + actualUserAgent = actual.userAgent(""); + } delete actual.userAgent; delete expected.userAgent; From f75b08dc860e480a3b4c986e78cd5738f9a706e3 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Fri, 5 Apr 2019 08:37:23 -0700 Subject: [PATCH 143/289] Update @azure/ms-rest-js (#106) * Update @azure/ms-rest-js * Bump the version --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 473c599d059a..fe9a6582e003 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "1.3.2", + "version": "1.3.3", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -41,7 +41,7 @@ ], "license": "MIT", "dependencies": { - "@azure/ms-rest-js": "^1.2.5", + "@azure/ms-rest-js": "^1.8.1", "tslib": "^1.9.2" }, "devDependencies": { From 3807aff6aff3aeb535fa25624111bfbec775d5a5 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Fri, 10 May 2019 09:39:56 -0700 Subject: [PATCH 144/289] Extract userAgent variable to fix tests in Azure DevOps CI/CD (#107) * Add cast to any * Extract userAgent * Reset package.json --- test/azureServiceClientTests.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/test/azureServiceClientTests.ts b/test/azureServiceClientTests.ts index a4049b594889..44758e4aa44f 100644 --- a/test/azureServiceClientTests.ts +++ b/test/azureServiceClientTests.ts @@ -2514,10 +2514,12 @@ describe("AzureServiceClient", () => { describe("updateOptionsWithDefaultValues()", () => { function assertOptionEqual(actual: AzureServiceClientOptions, expected: AzureServiceClientOptions) { let actualUserAgent: string | undefined; - if (typeof actual.userAgent === "string") { - actualUserAgent = actual.userAgent; + const userAgent: string | ((defaultUserAgent: string) => string) = actual.userAgent!; + + if (typeof userAgent === "string") { + actualUserAgent = userAgent; } else if (typeof actual.userAgent === "function") { - actualUserAgent = actual.userAgent(""); + actualUserAgent = userAgent(""); } delete actual.userAgent; delete expected.userAgent; From 17d5bba990e14846b8016859b5c509a4a552c5ac Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Fri, 10 May 2019 09:50:51 -0700 Subject: [PATCH 145/289] Add userAgent casting (#108) --- test/azureServiceClientTests.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/test/azureServiceClientTests.ts b/test/azureServiceClientTests.ts index 44758e4aa44f..7357583271b5 100644 --- a/test/azureServiceClientTests.ts +++ b/test/azureServiceClientTests.ts @@ -2514,12 +2514,11 @@ describe("AzureServiceClient", () => { describe("updateOptionsWithDefaultValues()", () => { function assertOptionEqual(actual: AzureServiceClientOptions, expected: AzureServiceClientOptions) { let actualUserAgent: string | undefined; - const userAgent: string | ((defaultUserAgent: string) => string) = actual.userAgent!; - if (typeof userAgent === "string") { - actualUserAgent = userAgent; + if (typeof actual.userAgent === "string") { + actualUserAgent = (actual.userAgent! as string); } else if (typeof actual.userAgent === "function") { - actualUserAgent = userAgent(""); + actualUserAgent = (actual.userAgent! as ((defaultUserAgent: string) => string))(""); } delete actual.userAgent; delete expected.userAgent; From 535ba9b242298dc5ff636c1a64a4a71b2cec4abc Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Fri, 10 May 2019 10:29:50 -0700 Subject: [PATCH 146/289] Add any casting to fix TypeScript bug (#109) * Add userAgent casting * Add any casting to fix TypeScript bug --- test/azureServiceClientTests.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/azureServiceClientTests.ts b/test/azureServiceClientTests.ts index 7357583271b5..b583dcdc0b6e 100644 --- a/test/azureServiceClientTests.ts +++ b/test/azureServiceClientTests.ts @@ -2516,9 +2516,9 @@ describe("AzureServiceClient", () => { let actualUserAgent: string | undefined; if (typeof actual.userAgent === "string") { - actualUserAgent = (actual.userAgent! as string); + actualUserAgent = actual.userAgent!; } else if (typeof actual.userAgent === "function") { - actualUserAgent = (actual.userAgent! as ((defaultUserAgent: string) => string))(""); + actualUserAgent = (actual.userAgent! as any)(""); } delete actual.userAgent; delete expected.userAgent; From 773f4d9141664fb94ebe4a0d99fb2d0e712f222e Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Fri, 10 May 2019 11:31:37 -0700 Subject: [PATCH 147/289] Revert changes to make test work in CI (#110) * Revert " Add any casting to fix TypeScript bug (#109)" This reverts commit 535ba9b242298dc5ff636c1a64a4a71b2cec4abc. * Revert "Add userAgent casting (#108)" This reverts commit 17d5bba990e14846b8016859b5c509a4a552c5ac. * Revert "Extract userAgent variable to fix tests in Azure DevOps CI/CD (#107)" This reverts commit 3807aff6aff3aeb535fa25624111bfbec775d5a5. --- test/azureServiceClientTests.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/test/azureServiceClientTests.ts b/test/azureServiceClientTests.ts index b583dcdc0b6e..a4049b594889 100644 --- a/test/azureServiceClientTests.ts +++ b/test/azureServiceClientTests.ts @@ -2514,11 +2514,10 @@ describe("AzureServiceClient", () => { describe("updateOptionsWithDefaultValues()", () => { function assertOptionEqual(actual: AzureServiceClientOptions, expected: AzureServiceClientOptions) { let actualUserAgent: string | undefined; - if (typeof actual.userAgent === "string") { - actualUserAgent = actual.userAgent!; + actualUserAgent = actual.userAgent; } else if (typeof actual.userAgent === "function") { - actualUserAgent = (actual.userAgent! as any)(""); + actualUserAgent = actual.userAgent(""); } delete actual.userAgent; delete expected.userAgent; From 22d18ed2cefec9c337e6debfed2fc3e7e64db473 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Fri, 10 May 2019 17:22:57 -0700 Subject: [PATCH 148/289] Set up CI with Azure Pipelines [skip ci] --- azure-pipelines.yml | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 6d0366c3ec12..a945d23e2586 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -2,7 +2,7 @@ trigger: - master jobs: -- job: Check_Everything +- job: npm_install pool: vmImage: 'Ubuntu 16.04' steps: @@ -12,12 +12,6 @@ jobs: command: custom verbose: false customCommand: install - - task: Npm@1 - displayName: 'npm run check:everything -- --azure-devops' - inputs: - command: custom - verbose: false - customCommand: run check:everything -- --azure-devops - job: Test pool: vmImage: 'Ubuntu 16.04' @@ -57,16 +51,8 @@ jobs: vmImage: 'Ubuntu 16.04' steps: - task: Npm@1 - displayName: 'npm pack' + displayName: 'npm build' inputs: command: custom verbose: false - customCommand: pack - - task: CopyFiles@2 - displayName: 'Copy Files to: drop' - inputs: - Contents: '*.tgz' - TargetFolder: drop - - task: PublishBuildArtifacts@1 - inputs: - pathtoPublish: $(Build.SourcesDirectory)/drop \ No newline at end of file + customCommand: build \ No newline at end of file From 30e07c2ff888819e7e887dc7d6996d10415a8de0 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Mon, 13 May 2019 09:56:34 -0700 Subject: [PATCH 149/289] Add seperate build definitions for CI and PR builds (#112) --- .../azure-pipelines-ci.yml | 0 .devops/azure-pipelines-pr.yml | 72 +++++++++++++++++++ 2 files changed, 72 insertions(+) rename azure-pipelines.yml => .devops/azure-pipelines-ci.yml (100%) create mode 100644 .devops/azure-pipelines-pr.yml diff --git a/azure-pipelines.yml b/.devops/azure-pipelines-ci.yml similarity index 100% rename from azure-pipelines.yml rename to .devops/azure-pipelines-ci.yml diff --git a/.devops/azure-pipelines-pr.yml b/.devops/azure-pipelines-pr.yml new file mode 100644 index 000000000000..6d0366c3ec12 --- /dev/null +++ b/.devops/azure-pipelines-pr.yml @@ -0,0 +1,72 @@ +trigger: +- master + +jobs: +- job: Check_Everything + pool: + vmImage: 'Ubuntu 16.04' + steps: + - task: Npm@1 + displayName: 'npm install' + inputs: + command: custom + verbose: false + customCommand: install + - task: Npm@1 + displayName: 'npm run check:everything -- --azure-devops' + inputs: + command: custom + verbose: false + customCommand: run check:everything -- --azure-devops +- job: Test + pool: + vmImage: 'Ubuntu 16.04' + strategy: + matrix: + Node6: + node.version: 6.x + Node8: + node.version: 8.x + Node10: + node.version: 10.x + Node11: + node.version: 11.x + steps: + - task: NodeTool@0 + displayName: 'Install Node' + inputs: + versionSpec: $(node.version) + - script: npm install + - task: Npm@1 + displayName: 'npm test' + inputs: + command: custom + verbose: false + customCommand: test + - task: PublishTestResults@2 + inputs: + testResultsFiles: '$(System.DefaultWorkingDirectory)/test-results.xml' + testRunTitle: 'Test results for JavaScript' + - task: PublishCodeCoverageResults@1 + inputs: + codeCoverageTool: Cobertura + summaryFileLocation: '$(System.DefaultWorkingDirectory)/coverage/cobertura-coverage.xml' + reportDirectory: '$(System.DefaultWorkingDirectory)/coverage/' +- job: Build + pool: + vmImage: 'Ubuntu 16.04' + steps: + - task: Npm@1 + displayName: 'npm pack' + inputs: + command: custom + verbose: false + customCommand: pack + - task: CopyFiles@2 + displayName: 'Copy Files to: drop' + inputs: + Contents: '*.tgz' + TargetFolder: drop + - task: PublishBuildArtifacts@1 + inputs: + pathtoPublish: $(Build.SourcesDirectory)/drop \ No newline at end of file From 9559246bcefa91613088cdf92c0bb0af6251ea4f Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Mon, 13 May 2019 10:04:09 -0700 Subject: [PATCH 150/289] Update build status badge in README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 27d4b42f7d0f..e6a673ffcbcc 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -# ms-rest-azure-js [![Build Status](https://dev.azure.com/azure-public/adx/_apis/build/status/public.Azure.ms-rest-azure-js)](https://dev.azure.com/azure-public/adx/_build/latest?definitionId=10) - +# ms-rest-azure-js [![Build Status](https://dev.azure.com/azure-public/azsdk/_apis/build/status/public.Azure.ms-rest-azure-js%20-%20CI?branchName=master)](https://dev.azure.com/azure-public/azsdk/_build/latest?definitionId=31&branchName=master) Azure Runtime for isomorphic javascript libraries (that work in the browser and node.js environemnt) generated via [Autorest](https://github.com/Azure/Autorest). ## Requirements From cc9c3f44aa0e7ae1e9e3367560e862499d04b8a0 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Mon, 13 May 2019 10:50:28 -0700 Subject: [PATCH 151/289] Move artifacts publishing to CI job (#113) * Move artifacts publishing to CI job * Update .devops/azure-pipelines-pr.yml Co-Authored-By: Dan Schulte * Update .devops/azure-pipelines-pr.yml Co-Authored-By: Dan Schulte * Add npm install step --- .devops/azure-pipelines-ci.yml | 14 +++++++++++--- .devops/azure-pipelines-pr.yml | 18 ++++++++---------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/.devops/azure-pipelines-ci.yml b/.devops/azure-pipelines-ci.yml index a945d23e2586..d0a0db205d5f 100644 --- a/.devops/azure-pipelines-ci.yml +++ b/.devops/azure-pipelines-ci.yml @@ -46,13 +46,21 @@ jobs: codeCoverageTool: Cobertura summaryFileLocation: '$(System.DefaultWorkingDirectory)/coverage/cobertura-coverage.xml' reportDirectory: '$(System.DefaultWorkingDirectory)/coverage/' -- job: Build +- job: Pack pool: vmImage: 'Ubuntu 16.04' steps: - task: Npm@1 - displayName: 'npm build' + displayName: 'npm pack' inputs: command: custom verbose: false - customCommand: build \ No newline at end of file + customCommand: pack + - task: CopyFiles@2 + displayName: 'Copy Files to: drop' + inputs: + Contents: '*.tgz' + TargetFolder: drop + - task: PublishBuildArtifacts@1 + inputs: + pathtoPublish: $(Build.SourcesDirectory)/drop diff --git a/.devops/azure-pipelines-pr.yml b/.devops/azure-pipelines-pr.yml index 6d0366c3ec12..2988e2f3137f 100644 --- a/.devops/azure-pipelines-pr.yml +++ b/.devops/azure-pipelines-pr.yml @@ -1,5 +1,5 @@ trigger: -- master +- '*' jobs: - job: Check_Everything @@ -57,16 +57,14 @@ jobs: vmImage: 'Ubuntu 16.04' steps: - task: Npm@1 - displayName: 'npm pack' + displayName: 'npm install' inputs: command: custom verbose: false - customCommand: pack - - task: CopyFiles@2 - displayName: 'Copy Files to: drop' - inputs: - Contents: '*.tgz' - TargetFolder: drop - - task: PublishBuildArtifacts@1 + customCommand: install + - task: Npm@1 + displayName: 'npm run build' inputs: - pathtoPublish: $(Build.SourcesDirectory)/drop \ No newline at end of file + command: custom + verbose: true + customCommand: run build From 625fb9d08e34df06ce7b63141d461a6f13532084 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Mon, 13 May 2019 13:10:33 -0700 Subject: [PATCH 152/289] Remove master from PR trigger (#114) --- .devops/azure-pipelines-pr.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.devops/azure-pipelines-pr.yml b/.devops/azure-pipelines-pr.yml index 2988e2f3137f..31e1ee73e7a0 100644 --- a/.devops/azure-pipelines-pr.yml +++ b/.devops/azure-pipelines-pr.yml @@ -1,5 +1,9 @@ trigger: -- '*' + branches: + include: + - '*' + exclude: + - master jobs: - job: Check_Everything From ca8d5e69c06c54758a101e0a77f36952bb5924e3 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Mon, 13 May 2019 13:29:32 -0700 Subject: [PATCH 153/289] Skip CI build on pull requests (#116) --- .devops/azure-pipelines-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.devops/azure-pipelines-ci.yml b/.devops/azure-pipelines-ci.yml index d0a0db205d5f..606f6d45510e 100644 --- a/.devops/azure-pipelines-ci.yml +++ b/.devops/azure-pipelines-ci.yml @@ -1,6 +1,8 @@ trigger: - master +pr: none + jobs: - job: npm_install pool: From e5602b0f68f40646604d56fc12e394d2688e45e3 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Mon, 13 May 2019 13:36:04 -0700 Subject: [PATCH 154/289] Remove explicit branch trigger on PR build (#117) --- .devops/azure-pipelines-pr.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.devops/azure-pipelines-pr.yml b/.devops/azure-pipelines-pr.yml index 31e1ee73e7a0..0b2ee222c8c4 100644 --- a/.devops/azure-pipelines-pr.yml +++ b/.devops/azure-pipelines-pr.yml @@ -1,10 +1,3 @@ -trigger: - branches: - include: - - '*' - exclude: - - master - jobs: - job: Check_Everything pool: From 4aae0b3f65745c77993e94c493b5732da5505b8d Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Mon, 13 May 2019 13:57:17 -0700 Subject: [PATCH 155/289] Update version (#115) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fe9a6582e003..fc4e1c1ebae8 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "1.3.3", + "version": "1.3.4", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", From 74c3955b0ad66b08a5b6d203a1f41bce817e6c0d Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Fri, 17 May 2019 18:58:35 -0700 Subject: [PATCH 156/289] Add missing exports (#118) --- lib/msRestAzure.ts | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/msRestAzure.ts b/lib/msRestAzure.ts index 93f3295c2be2..3a2da8f03c8a 100644 --- a/lib/msRestAzure.ts +++ b/lib/msRestAzure.ts @@ -5,5 +5,5 @@ export { AzureServiceClient, AzureServiceClientOptions, getDefaultUserAgentValue export { BaseResource, BaseResourceMapper } from "./baseResource"; export { CloudError, CloudErrorMapper } from "./cloudError"; export { CognitiveServicesCredentials } from "./credentials/cognitiveServicesCredentials"; -export { LROPoller } from "./lroPoller"; +export { createLROPollerFromInitialResponse, createLROPollerFromPollState, LROPoller } from "./lroPoller"; export { DEFAULT_LANGUAGE, LongRunningOperationStates, msRestAzureVersion } from "./util/constants"; diff --git a/package.json b/package.json index fc4e1c1ebae8..f8a75af781df 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "1.3.4", + "version": "1.3.5", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", From 8f1e9181701275814d70fe38ec04c6ebbae80c94 Mon Sep 17 00:00:00 2001 From: Amar Zavery Date: Sat, 1 Jun 2019 17:46:11 -0700 Subject: [PATCH 157/289] Handle 404 properly in the final GET of an LRO DELETE operation --- .gitignore | 1 + Changelog.md | 40 ++++++++++++++++++++++++++++++++++++++++ lib/lroPollStrategy.ts | 14 ++++++++------ package.json | 6 +++--- 4 files changed, 52 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 8aa7a2cf6175..7118966a4592 100644 --- a/.gitignore +++ b/.gitignore @@ -74,6 +74,7 @@ Temporary Items .apdisk node_modules +*.tgz #### JetBrains .idea diff --git a/Changelog.md b/Changelog.md index 4119ac8fc510..aa917037298b 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,4 +1,44 @@ # Changelog +## 1.3.6 - 2019-06-03 +- Fixed a bug where we were throwing an Error if the final GET on the resource while polling a long running DELETE operation would return a 404. [#azure-sdk-for-js/issues/2842](https://github.com/Azure/azure-sdk-for-js/issues/2842) +- Fixed vulnerabilities by updating package version of `nyc`. + +## 1.3.5 - 2019-05-17 +- Added missing exports to the package. + +## 1.3.4 - 2019-05-13 +- Updated version of the package to fix auto publishing script in CI. + +## 1.3.3 - 2019-04-05 +- Updated dependency `@azure/ms-rest-js`. + +## 1.3.2 - 2019-01-28 +- Fixed User-Agent tests + +## 1.3.1 - 2019-01-07 +- Fixed LRO RestErrors parsing +- Added JSON parsing error handling + +## 1.3.0 - 2019-01-07 +- Removed final GET on POST 202 long running operations + +## 1.2.4 - 2018-12-20 +- Updated checks in CI + +## 1.2.3 - 2018-12-20 +- Added checks to run before publishing + +## 1.2.2 - 2018-12-19 +- More test updates. + +## 1.2.1 - 2018-12-17 +- Enable test coverage in CI. + +## 1.2.0 - 2018-12-04 +- Update dependency `@azure/ms-rest-js`. + +## 1.1.2 - 2018-11-28 +- Fixed event-stream vulnerability ## 1.1.1 - 2018-11-13 diff --git a/lib/lroPollStrategy.ts b/lib/lroPollStrategy.ts index 78a50d137fe1..80e0818fb3b1 100644 --- a/lib/lroPollStrategy.ts +++ b/lib/lroPollStrategy.ts @@ -119,14 +119,16 @@ export abstract class LROPollStrategy { this._pollState.state = getProvisioningState(result.parsedBody) || "Succeeded"; this._pollState.mostRecentResponse = result; this._pollState.mostRecentRequest = result.request; - try { - this._pollState.resource = getResponseBody(result); - } catch (error) { - this._pollState.resource = undefined; - const resultStatus: number = result.status; - if (this._pollState.initialResponse.request.method !== "DELETE" || resultStatus < 400 || 499 < resultStatus) { + this._pollState.resource = getResponseBody(result); + }).catch((error) => { + let resultStatus: number | undefined; + if (error.response && error.response.status) { + resultStatus = error.response.status; + if (this._pollState.initialResponse.request.method !== "DELETE" || resultStatus! < 400 || 499 < resultStatus!) { throw error; } + } else { + throw error; } }); } diff --git a/package.json b/package.json index f8a75af781df..18f18135c860 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "1.3.5", + "version": "1.3.6", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -41,7 +41,7 @@ ], "license": "MIT", "dependencies": { - "@azure/ms-rest-js": "^1.8.1", + "@azure/ms-rest-js": "^1.8.7", "tslib": "^1.9.2" }, "devDependencies": { @@ -54,7 +54,7 @@ "mocha-junit-reporter": "^1.18.0", "mocha-multi-reporters": "^1.1.7", "npm-run-all": "^4.1.5", - "nyc": "^13.1.0", + "nyc": "^14.1.1", "opn-cli": "^4.0.0", "rollup": "^0.67.3", "rollup-plugin-node-resolve": "^3.4.0", From 06e0c03e99cb9af839e94b779d3850272743e886 Mon Sep 17 00:00:00 2001 From: Amar Zavery Date: Mon, 3 Jun 2019 16:08:48 -0700 Subject: [PATCH 158/289] update min version of ms-rest-js --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 18f18135c860..54328ae2fd40 100644 --- a/package.json +++ b/package.json @@ -41,8 +41,8 @@ ], "license": "MIT", "dependencies": { - "@azure/ms-rest-js": "^1.8.7", - "tslib": "^1.9.2" + "@azure/ms-rest-js": "^1.8.8", + "tslib": "^1.9.3" }, "devDependencies": { "@ts-common/azure-js-dev-tools": "^0.6.0", From c512fa1b5dac623006845da8fd3d28bd12644cb4 Mon Sep 17 00:00:00 2001 From: Amar Zavery Date: Tue, 4 Jun 2019 17:32:21 -0700 Subject: [PATCH 159/289] update min version of @azure/ms-rest-js to 1.8.10 --- Changelog.md | 3 +++ lib/util/constants.ts | 10 +++++++--- package.json | 4 ++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Changelog.md b/Changelog.md index aa917037298b..bb117fd1547c 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,4 +1,7 @@ # Changelog +## 1.3.7 - 2019-06-04 +- Updated `@azure/ms-rest-js` to `^1.8.10` + ## 1.3.6 - 2019-06-03 - Fixed a bug where we were throwing an Error if the final GET on the resource while polling a long running DELETE operation would return a 404. [#azure-sdk-for-js/issues/2842](https://github.com/Azure/azure-sdk-for-js/issues/2842) - Fixed vulnerabilities by updating package version of `nyc`. diff --git a/lib/util/constants.ts b/lib/util/constants.ts index 1a31451cab40..28f069e0ee8c 100644 --- a/lib/util/constants.ts +++ b/lib/util/constants.ts @@ -1,14 +1,18 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. - /** * Defines constants for long running operation states. * * @const * @type {string} */ -export type LongRunningOperationStates = "InProgress" | "Succeeded" | "Failed" | "Canceled" | "Cancelled"; +export type LongRunningOperationStates = + | "InProgress" + | "Succeeded" + | "Failed" + | "Canceled" + | "Cancelled"; /** * The default language in the request header. @@ -23,4 +27,4 @@ export const DEFAULT_LANGUAGE = "en-us"; * @const * @type {string} */ -export const msRestAzureVersion = "0.1.0"; \ No newline at end of file +export const msRestAzureVersion = "1.3.7"; diff --git a/package.json b/package.json index 54328ae2fd40..ea75896c6243 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "1.3.6", + "version": "1.3.7", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -41,7 +41,7 @@ ], "license": "MIT", "dependencies": { - "@azure/ms-rest-js": "^1.8.8", + "@azure/ms-rest-js": "^1.8.10", "tslib": "^1.9.3" }, "devDependencies": { From 4c97c47d63d697b3927b1ff1c46c1e652553e6cd Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Thu, 6 Jun 2019 10:19:37 -0700 Subject: [PATCH 160/289] Fix tests to pass when -preview suffix set in version (#121) --- package.json | 2 +- test/azureServiceClientTests.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index ea75896c6243..9b4cdb7dc62d 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/ms-rest-azure-js" }, - "version": "1.3.7", + "version": "1.3.8", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", diff --git a/test/azureServiceClientTests.ts b/test/azureServiceClientTests.ts index a4049b594889..cbe2762031f3 100644 --- a/test/azureServiceClientTests.ts +++ b/test/azureServiceClientTests.ts @@ -2523,7 +2523,7 @@ describe("AzureServiceClient", () => { delete expected.userAgent; assert.deepEqual(actual, expected); - assert(actualUserAgent!.match(/ms-rest-azure-js\/[\d\.]+ ms-rest-js\/[\d\.]+ .+/)); + assert(actualUserAgent!.match(/ms-rest-azure-js\/[\d\.]+ ms-rest-js\/[\d\w\.-]+ .+/)); } it("with undefined", () => { From 96b084757db550e0bbfd0643f88d3352a51f1e5b Mon Sep 17 00:00:00 2001 From: Dan Schulte Date: Thu, 20 Jun 2019 13:38:39 -0700 Subject: [PATCH 161/289] Update sdk automation configuration (#3970) --- swagger_to_sdk_config.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/swagger_to_sdk_config.json b/swagger_to_sdk_config.json index 6b9e32a883c6..f7398d714927 100644 --- a/swagger_to_sdk_config.json +++ b/swagger_to_sdk_config.json @@ -9,7 +9,8 @@ }, "advanced_options": { "clone_dir": "./azure-sdk-for-js", - "create_sdk_pull_requests": false + "create_sdk_pull_requests": false, + "sdk_generation_pull_request_base": "integration_branch" }, "version": "0.2.0" } From 6dc526cda5392af31e02293d6bb6fd076616c955 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez?= Date: Thu, 20 Jun 2019 19:07:31 -0400 Subject: [PATCH 162/289] [JS] [KeyVault] Copyright headers (#3911) * [JS] [KeyVault] Copyright headers Fixes #3783 Related to #3837 --- sdk/keyvault/keyvault-keys/src/index.ts | 4 ++-- sdk/keyvault/keyvault-keys/src/keysModels.ts | 3 +++ sdk/keyvault/keyvault-keys/tests/CRUD.test.ts | 3 +++ sdk/keyvault/keyvault-keys/tests/list.test.ts | 3 +++ .../keyvault-keys/tests/recoverBackupRestore.test.ts | 3 +++ sdk/keyvault/keyvault-keys/tests/utils/index.browser.ts | 3 +++ sdk/keyvault/keyvault-keys/tests/utils/recorder.ts | 3 +++ sdk/keyvault/keyvault-keys/tests/utils/utils.common.ts | 3 +++ sdk/keyvault/keyvault-secrets/src/index.ts | 4 ++-- sdk/keyvault/keyvault-secrets/src/secretsModels.ts | 3 +++ sdk/keyvault/keyvault-secrets/tests/CRUD.test.ts | 3 +++ sdk/keyvault/keyvault-secrets/tests/list.test.ts | 3 +++ .../keyvault-secrets/tests/recoverBackupRestore.test.ts | 8 +++++++- sdk/keyvault/keyvault-secrets/tests/utils/recorder.ts | 3 +++ sdk/keyvault/keyvault-secrets/tests/utils/utils.common.ts | 3 +++ 15 files changed, 47 insertions(+), 5 deletions(-) diff --git a/sdk/keyvault/keyvault-keys/src/index.ts b/sdk/keyvault/keyvault-keys/src/index.ts index 5f13aeea3d9f..48c0f44de5cc 100644 --- a/sdk/keyvault/keyvault-keys/src/index.ts +++ b/sdk/keyvault/keyvault-keys/src/index.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { ServiceClientCredentials, diff --git a/sdk/keyvault/keyvault-keys/src/keysModels.ts b/sdk/keyvault/keyvault-keys/src/keysModels.ts index da6eac2be97b..8b3d1bfc6d69 100644 --- a/sdk/keyvault/keyvault-keys/src/keysModels.ts +++ b/sdk/keyvault/keyvault-keys/src/keysModels.ts @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + import * as msRest from "@azure/core-http"; import { ParsedKeyVaultEntityIdentifier } from "./core/keyVaultBase"; import { JsonWebKey, JsonWebKeyOperation, JsonWebKeyCurveName } from "./core/models"; diff --git a/sdk/keyvault/keyvault-keys/tests/CRUD.test.ts b/sdk/keyvault/keyvault-keys/tests/CRUD.test.ts index 21cecb365050..53bc30122ce5 100644 --- a/sdk/keyvault/keyvault-keys/tests/CRUD.test.ts +++ b/sdk/keyvault/keyvault-keys/tests/CRUD.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + import * as assert from "assert"; import { getKeyvaultName } from "./utils/utils.common"; import { KeysClient, CreateEcKeyOptions, UpdateKeyOptions, GetKeyOptions } from "../src"; diff --git a/sdk/keyvault/keyvault-keys/tests/list.test.ts b/sdk/keyvault/keyvault-keys/tests/list.test.ts index 5053358bfaa8..63bc0e654587 100644 --- a/sdk/keyvault/keyvault-keys/tests/list.test.ts +++ b/sdk/keyvault/keyvault-keys/tests/list.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + import * as assert from "assert"; import { getKeyvaultName } from "./utils/utils.common"; import { KeysClient, CreateEcKeyOptions, UpdateKeyOptions, GetKeyOptions } from "../src"; diff --git a/sdk/keyvault/keyvault-keys/tests/recoverBackupRestore.test.ts b/sdk/keyvault/keyvault-keys/tests/recoverBackupRestore.test.ts index 5a942132bf35..2d43f919ffd6 100644 --- a/sdk/keyvault/keyvault-keys/tests/recoverBackupRestore.test.ts +++ b/sdk/keyvault/keyvault-keys/tests/recoverBackupRestore.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + import * as assert from "assert"; import { getKeyvaultName } from "./utils/utils.common"; import { KeysClient, CreateEcKeyOptions, UpdateKeyOptions, GetKeyOptions } from "../src"; diff --git a/sdk/keyvault/keyvault-keys/tests/utils/index.browser.ts b/sdk/keyvault/keyvault-keys/tests/utils/index.browser.ts index 4f9f293a8d7f..a9948afa1613 100644 --- a/sdk/keyvault/keyvault-keys/tests/utils/index.browser.ts +++ b/sdk/keyvault/keyvault-keys/tests/utils/index.browser.ts @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + export async function blobToString(blob: Blob): Promise { const fileReader = new FileReader(); return new Promise((resolve, reject) => { diff --git a/sdk/keyvault/keyvault-keys/tests/utils/recorder.ts b/sdk/keyvault/keyvault-keys/tests/utils/recorder.ts index 6b277392b186..adc338eb2bbc 100644 --- a/sdk/keyvault/keyvault-keys/tests/utils/recorder.ts +++ b/sdk/keyvault/keyvault-keys/tests/utils/recorder.ts @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + import fs from "fs-extra"; import queryString from "query-string"; import { blobToString } from "./index.browser"; diff --git a/sdk/keyvault/keyvault-keys/tests/utils/utils.common.ts b/sdk/keyvault/keyvault-keys/tests/utils/utils.common.ts index cfb16ae769f9..9fb15874252b 100644 --- a/sdk/keyvault/keyvault-keys/tests/utils/utils.common.ts +++ b/sdk/keyvault/keyvault-keys/tests/utils/utils.common.ts @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + import { env } from "./recorder"; // Async iterator's polyfill for Node 8 diff --git a/sdk/keyvault/keyvault-secrets/src/index.ts b/sdk/keyvault/keyvault-secrets/src/index.ts index a7dda45a64bd..cfd41163a20a 100644 --- a/sdk/keyvault/keyvault-secrets/src/index.ts +++ b/sdk/keyvault/keyvault-secrets/src/index.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { ServiceClientCredentials, diff --git a/sdk/keyvault/keyvault-secrets/src/secretsModels.ts b/sdk/keyvault/keyvault-secrets/src/secretsModels.ts index 7981ce0af640..c0887435306c 100644 --- a/sdk/keyvault/keyvault-secrets/src/secretsModels.ts +++ b/sdk/keyvault/keyvault-secrets/src/secretsModels.ts @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + import * as msRest from "@azure/core-http"; import { DeletionRecoveryLevel } from "./core/models"; import { ParsedKeyVaultEntityIdentifier } from "./core/keyVaultBase"; diff --git a/sdk/keyvault/keyvault-secrets/tests/CRUD.test.ts b/sdk/keyvault/keyvault-secrets/tests/CRUD.test.ts index 6252b264f4fe..840d4075c2a8 100644 --- a/sdk/keyvault/keyvault-secrets/tests/CRUD.test.ts +++ b/sdk/keyvault/keyvault-secrets/tests/CRUD.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + import * as assert from "assert"; import { SecretsClient } from "../src"; import { record, setReplaceableVariables, delay, setReplacements, env } from "./utils/recorder"; diff --git a/sdk/keyvault/keyvault-secrets/tests/list.test.ts b/sdk/keyvault/keyvault-secrets/tests/list.test.ts index 6981b5e2be1b..1d9d7db41df1 100644 --- a/sdk/keyvault/keyvault-secrets/tests/list.test.ts +++ b/sdk/keyvault/keyvault-secrets/tests/list.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + import * as assert from "assert"; import { expect } from "chai"; import { SecretsClient } from "../src"; diff --git a/sdk/keyvault/keyvault-secrets/tests/recoverBackupRestore.test.ts b/sdk/keyvault/keyvault-secrets/tests/recoverBackupRestore.test.ts index 5a5a42763617..02d3250a51b1 100644 --- a/sdk/keyvault/keyvault-secrets/tests/recoverBackupRestore.test.ts +++ b/sdk/keyvault/keyvault-secrets/tests/recoverBackupRestore.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + import * as assert from "assert"; import { SecretsClient } from "../src"; import { record, setReplaceableVariables, delay, setReplacements, env } from "./utils/recorder"; @@ -104,7 +107,10 @@ describe("Secret client - restore secrets and recover backups", () => { await client.setSecret(secretName, "RSA"); const result = await client.backupSecret(secretName); assert.equal(Buffer.isBuffer(result), true, "Unexpected return value from backupSecret()"); - assert.ok(result.length > 4500, `Unexpected length (${result.length}) of buffer from backupSecret()`); + assert.ok( + result.length > 4500, + `Unexpected length (${result.length}) of buffer from backupSecret()` + ); await flushSecret(); }); diff --git a/sdk/keyvault/keyvault-secrets/tests/utils/recorder.ts b/sdk/keyvault/keyvault-secrets/tests/utils/recorder.ts index 6b277392b186..adc338eb2bbc 100644 --- a/sdk/keyvault/keyvault-secrets/tests/utils/recorder.ts +++ b/sdk/keyvault/keyvault-secrets/tests/utils/recorder.ts @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + import fs from "fs-extra"; import queryString from "query-string"; import { blobToString } from "./index.browser"; diff --git a/sdk/keyvault/keyvault-secrets/tests/utils/utils.common.ts b/sdk/keyvault/keyvault-secrets/tests/utils/utils.common.ts index cfb16ae769f9..9fb15874252b 100644 --- a/sdk/keyvault/keyvault-secrets/tests/utils/utils.common.ts +++ b/sdk/keyvault/keyvault-secrets/tests/utils/utils.common.ts @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + import { env } from "./recorder"; // Async iterator's polyfill for Node 8 From 69ee7429fb55eb8282b34060e84b6d07cbbde216 Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Thu, 20 Jun 2019 17:39:50 -0700 Subject: [PATCH 163/289] [KeyVault] Use cross-env in package.json scripts (#3979) - "env" may be unavailable on Windows --- sdk/keyvault/keyvault-keys/package.json | 3 ++- sdk/keyvault/keyvault-secrets/package.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/sdk/keyvault/keyvault-keys/package.json b/sdk/keyvault/keyvault-keys/package.json index c85af5c17664..6edc96801a93 100644 --- a/sdk/keyvault/keyvault-keys/package.json +++ b/sdk/keyvault/keyvault-keys/package.json @@ -62,7 +62,7 @@ "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": "env TEST_MODE=playback npm run integration-test:node", + "unit-test:node": "cross-env TEST_MODE=playback npm run integration-test:node", "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "sideEffects": false, @@ -81,6 +81,7 @@ "@types/mocha": "^5.2.5", "@types/nock": "^10.0.1", "chai": "^4.2.0", + "cross-env": "^5.2.0", "dotenv": "^7.0.0", "fs-extra": "~8.0.1", "mocha": "^5.2.0", diff --git a/sdk/keyvault/keyvault-secrets/package.json b/sdk/keyvault/keyvault-secrets/package.json index 990a53f67ab2..c6013fb9867b 100644 --- a/sdk/keyvault/keyvault-secrets/package.json +++ b/sdk/keyvault/keyvault-secrets/package.json @@ -62,7 +62,7 @@ "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": "env TEST_MODE=playback npm run integration-test:node", + "unit-test:node": "cross-env TEST_MODE=playback npm run integration-test:node", "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "sideEffects": false, @@ -83,6 +83,7 @@ "@types/mocha": "^5.2.5", "@types/nock": "^10.0.1", "chai": "^4.2.0", + "cross-env": "^5.2.0", "dotenv": "^7.0.0", "fs-extra": "~8.0.1", "mocha": "^5.2.0", From 5bc173bf009167441debe22ff980fe50a01fb9a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez?= Date: Fri, 21 Jun 2019 12:36:21 -0400 Subject: [PATCH 164/289] [JS] [KeyVault] backupSecret signature fix (#3978) Addresses only the second point in #3030 --- .../keyvault-secrets/review/keyvault-secrets.api.md | 2 +- sdk/keyvault/keyvault-secrets/src/index.ts | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/sdk/keyvault/keyvault-secrets/review/keyvault-secrets.api.md b/sdk/keyvault/keyvault-secrets/review/keyvault-secrets.api.md index 4104e6e03420..d58074493e19 100644 --- a/sdk/keyvault/keyvault-secrets/review/keyvault-secrets.api.md +++ b/sdk/keyvault/keyvault-secrets/review/keyvault-secrets.api.md @@ -97,7 +97,7 @@ export interface SecretAttributes extends ParsedKeyVaultEntityIdentifier { // @public export class SecretsClient { constructor(url: string, credential: ServiceClientCredentials | TokenCredential, pipelineOrOptions?: ServiceClientOptions | NewPipelineOptions); - backupSecret(secretName: string, options?: RequestOptionsBase): Promise; + backupSecret(secretName: string, options?: RequestOptionsBase): Promise; protected readonly credential: ServiceClientCredentials | TokenCredential; deleteSecret(secretName: string, options?: RequestOptionsBase): Promise; static getDefaultPipeline(credential: ServiceClientCredentials | TokenCredential, pipelineOptions?: NewPipelineOptions): ServiceClientOptions; diff --git a/sdk/keyvault/keyvault-secrets/src/index.ts b/sdk/keyvault/keyvault-secrets/src/index.ts index cfd41163a20a..f4637ce11a26 100644 --- a/sdk/keyvault/keyvault-secrets/src/index.ts +++ b/sdk/keyvault/keyvault-secrets/src/index.ts @@ -351,11 +351,12 @@ export class SecretsClient { * @param [options] The optional parameters * @returns Promise */ - public async backupSecret( - secretName: string, - options?: RequestOptionsBase - ): Promise { - const response = await this.client.backupSecret(this.vaultBaseUrl, secretName, options); + public async backupSecret(secretName: string, options?: RequestOptionsBase): Promise { + const response: any = await this.client.backupSecret( + this.vaultBaseUrl, + secretName, + options + ); return response.value; } From 8d73e2b38f04bf09fcb6a62687e0ea366f9f6565 Mon Sep 17 00:00:00 2001 From: Harsha Nalluru Date: Fri, 21 Jun 2019 10:03:06 -0700 Subject: [PATCH 165/289] [Storage] update scripts - to run tests in playback mode (#3982) --- sdk/storage/storage-blob/package.json | 4 ++-- sdk/storage/storage-file/package.json | 4 ++-- sdk/storage/storage-queue/package.json | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sdk/storage/storage-blob/package.json b/sdk/storage/storage-blob/package.json index 2784abbcd6d1..c509064aa365 100644 --- a/sdk/storage/storage-blob/package.json +++ b/sdk/storage/storage-blob/package.json @@ -39,8 +39,8 @@ "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:browser": "cross-env TEST_MODE=playback npm run integration-test:browser", + "unit-test:node": "cross-env TEST_MODE=playback npm run integration-test:node", "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "files": [ diff --git a/sdk/storage/storage-file/package.json b/sdk/storage/storage-file/package.json index 8aaae7519a86..06e2af1bb0f7 100644 --- a/sdk/storage/storage-file/package.json +++ b/sdk/storage/storage-file/package.json @@ -39,8 +39,8 @@ "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:browser": "cross-env TEST_MODE=playback npm run integration-test:browser", + "unit-test:node": "cross-env TEST_MODE=playback npm run integration-test:node", "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "files": [ diff --git a/sdk/storage/storage-queue/package.json b/sdk/storage/storage-queue/package.json index da3a1217569a..fed665755a8d 100644 --- a/sdk/storage/storage-queue/package.json +++ b/sdk/storage/storage-queue/package.json @@ -38,8 +38,8 @@ "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:browser": "cross-env TEST_MODE=playback npm run integration-test:browser", + "unit-test:node": "cross-env TEST_MODE=playback npm run integration-test:node", "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "files": [ From d6259dd0f6e81a00036f5f67ee56ad42f869d13e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez?= Date: Fri, 21 Jun 2019 14:12:50 -0400 Subject: [PATCH 166/289] [JS] [KeyVault] ESLint on keyvault-keys and keyvault-secrets (#3975) ESLint is now running and passing in keyvault-keys and keyvault-secrets. Ignoring the core files in both. --- sdk/keyvault/keyvault-keys/.eslintignore | 3 + sdk/keyvault/keyvault-keys/.gitignore | 1 + sdk/keyvault/keyvault-keys/package.json | 13 +++- .../keyvault-keys/samples/helloWorld.ts | 2 +- sdk/keyvault/keyvault-keys/src/index.ts | 50 ++++++++-------- sdk/keyvault/keyvault-keys/tests/CRUD.test.ts | 34 +++++------ sdk/keyvault/keyvault-keys/tests/list.test.ts | 56 ++++++++++-------- .../tests/recoverBackupRestore.test.ts | 14 ++--- .../keyvault-keys/tests/utils/recorder.ts | 10 +--- .../keyvault-keys/tests/utils/utils.common.ts | 2 +- sdk/keyvault/keyvault-secrets/.eslintignore | 2 + sdk/keyvault/keyvault-secrets/package.json | 13 +++- .../samples/backupAndRestore.ts | 12 ++-- .../samples/deleteAndRecover.ts | 4 +- .../samples/listOperations.ts | 6 +- sdk/keyvault/keyvault-secrets/src/index.ts | 41 +++++++------ .../keyvault-secrets/tests/CRUD.test.ts | 8 +-- .../keyvault-secrets/tests/list.test.ts | 59 +++++++++++-------- .../tests/recoverBackupRestore.test.ts | 10 ++-- .../keyvault-secrets/tests/utils/recorder.ts | 10 +--- .../tests/utils/utils.common.ts | 2 +- 21 files changed, 195 insertions(+), 157 deletions(-) create mode 100644 sdk/keyvault/keyvault-keys/.eslintignore create mode 100644 sdk/keyvault/keyvault-secrets/.eslintignore diff --git a/sdk/keyvault/keyvault-keys/.eslintignore b/sdk/keyvault/keyvault-keys/.eslintignore new file mode 100644 index 000000000000..ab0cccfdf864 --- /dev/null +++ b/sdk/keyvault/keyvault-keys/.eslintignore @@ -0,0 +1,3 @@ +src/core +**/*.js +*lintReport.html diff --git a/sdk/keyvault/keyvault-keys/.gitignore b/sdk/keyvault/keyvault-keys/.gitignore index 24a5c125f08e..68fc6ac101a9 100644 --- a/sdk/keyvault/keyvault-keys/.gitignore +++ b/sdk/keyvault/keyvault-keys/.gitignore @@ -1,2 +1,3 @@ src/**/*.js samples/**/*.js +*lintReport.html diff --git a/sdk/keyvault/keyvault-keys/package.json b/sdk/keyvault/keyvault-keys/package.json index 6edc96801a93..6a1ea9b93fe8 100644 --- a/sdk/keyvault/keyvault-keys/package.json +++ b/sdk/keyvault/keyvault-keys/package.json @@ -54,8 +54,9 @@ "integration-test:browser": "echo skipped", "integration-test:node": "ts-mocha -p tests/tsconfig.test.json tests/*.ts --timeout 1200000 --reporter mocha-multi --reporter-options spec=-,mocha-junit-reporter=-", "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "lint:fix": "echo skipped", - "lint": "echo skipped", + "lint:fix": "eslint -c ../../.eslintrc.json src tests samples --ext .ts --fix --fix-type [problem,suggestion]", + "lint": "eslint -c ../../.eslintrc.json src tests samples --ext .ts -f node_modules/eslint-detailed-reporter/lib/detailed.js -o keyvault-keys-lintReport.html || exit 0", + "lint:terminal": "eslint -c ../../.eslintrc.json src tests samples --ext .ts", "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", @@ -80,9 +81,17 @@ "@types/fs-extra": "~7.0.0", "@types/mocha": "^5.2.5", "@types/nock": "^10.0.1", + "@typescript-eslint/eslint-plugin": "~1.9.0", + "@typescript-eslint/parser": "^1.7.0", "chai": "^4.2.0", "cross-env": "^5.2.0", "dotenv": "^7.0.0", + "eslint": "^5.16.0", + "eslint-config-prettier": "^4.2.0", + "eslint-detailed-reporter": "^0.8.0", + "eslint-plugin-no-null": "^1.0.2", + "eslint-plugin-no-only-tests": "^2.3.0", + "eslint-plugin-promise": "^4.1.1", "fs-extra": "~8.0.1", "mocha": "^5.2.0", "nock": "^10.0.6", diff --git a/sdk/keyvault/keyvault-keys/samples/helloWorld.ts b/sdk/keyvault/keyvault-keys/samples/helloWorld.ts index 710ccafa4078..ebde75fff8b7 100644 --- a/sdk/keyvault/keyvault-keys/samples/helloWorld.ts +++ b/sdk/keyvault/keyvault-keys/samples/helloWorld.ts @@ -31,7 +31,7 @@ async function main(): Promise { console.log("key: ", key); // Or list the keys we have - for await (let keyAttributes of client.listKeys()) { + for await (const keyAttributes of client.listKeys()) { const key = await client.getKey(keyAttributes.name); console.log("key: ", key); } diff --git a/sdk/keyvault/keyvault-keys/src/index.ts b/sdk/keyvault/keyvault-keys/src/index.ts index 48c0f44de5cc..18126b9d9831 100644 --- a/sdk/keyvault/keyvault-keys/src/index.ts +++ b/sdk/keyvault/keyvault-keys/src/index.ts @@ -1,5 +1,6 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +/* eslint @typescript-eslint/member-ordering: 0 */ import { ServiceClientCredentials, @@ -171,7 +172,7 @@ export class KeysClient { this.client = new KeyVaultClient(credential, "7.0", this.pipeline); } - private static getUserAgentString(telemetry?: TelemetryOptions) { + private static getUserAgentString(telemetry?: TelemetryOptions): string { const userAgentInfo: string[] = []; if (telemetry) { if (userAgentInfo.indexOf(telemetry.value) === -1) { @@ -207,12 +208,12 @@ export class KeysClient { options?: CreateKeyOptions ): Promise { if (options) { - let unflattenedAttributes = { + const unflattenedAttributes = { enabled: options.enabled, notBefore: options.notBefore, expires: options.expires }; - let unflattenedOptions = { + const unflattenedOptions = { ...options, ...(options.requestOptions ? options.requestOptions : {}), keyAttributes: unflattenedAttributes @@ -248,12 +249,12 @@ export class KeysClient { */ public async createEcKey(name: string, options?: CreateEcKeyOptions): Promise { if (options) { - let unflattenedAttributes = { + const unflattenedAttributes = { enabled: options.enabled, notBefore: options.notBefore, expires: options.expires }; - let unflattenedOptions = { + const unflattenedOptions = { ...options, ...(options.requestOptions ? options.requestOptions : {}), keyAttributes: unflattenedAttributes @@ -289,12 +290,12 @@ export class KeysClient { */ public async createRsaKey(name: string, options?: CreateRsaKeyOptions): Promise { if (options) { - let unflattenedAttributes = { + const unflattenedAttributes = { enabled: options.enabled, notBefore: options.notBefore, expires: options.expires }; - let unflattenedOptions = { + const unflattenedOptions = { ...options, ...(options.requestOptions ? options.requestOptions : {}), keyAttributes: unflattenedAttributes @@ -330,12 +331,12 @@ export class KeysClient { */ public async importKey(name: string, key: JsonWebKey, options?: ImportKeyOptions): Promise { if (options) { - let unflattenedAttributes = { + const unflattenedAttributes = { enabled: options.enabled, notBefore: options.notBefore, expires: options.expires }; - let unflattenedOptions = { + const unflattenedOptions = { ...options, ...(options.requestOptions ? options.requestOptions : {}), keyAttributes: unflattenedAttributes @@ -392,12 +393,12 @@ export class KeysClient { options?: UpdateKeyOptions ): Promise { if (options) { - let unflattenedAttributes = { + const unflattenedAttributes = { enabled: options.enabled, notBefore: options.notBefore, expires: options.expires }; - let unflattenedOptions = { + const unflattenedOptions = { ...options, ...(options.requestOptions ? options.requestOptions : {}), keyAttributes: unflattenedAttributes @@ -529,11 +530,11 @@ export class KeysClient { options?: ListKeysOptions ): AsyncIterableIterator { if (continuationState.continuationToken == null) { - let optionsComplete: KeyVaultClientGetKeysOptionalParams = { + const optionsComplete: KeyVaultClientGetKeysOptionalParams = { maxresults: continuationState.maxPageSize, ...(options && options.requestOptions ? options.requestOptions : {}) }; - let currentSetResponse = await this.client.getKeyVersions( + const currentSetResponse = await this.client.getKeyVersions( this.vaultBaseUrl, name, optionsComplete @@ -542,7 +543,7 @@ export class KeysClient { yield currentSetResponse.map(this.getKeyAttributesFromKeyItem); } while (continuationState.continuationToken) { - let currentSetResponse = await this.client.getKeyVersionsNext( + const currentSetResponse = await this.client.getKeyVersionsNext( continuationState.continuationToken, options ); @@ -555,7 +556,7 @@ export class KeysClient { name: string, options?: ListKeysOptions ): AsyncIterableIterator { - let f = {}; + const f = {}; for await (const page of this.listKeyVersionsPage(name, f, options)) { for (const item of page) { @@ -592,16 +593,16 @@ export class KeysClient { options?: ListKeysOptions ): AsyncIterableIterator { if (continuationState.continuationToken == null) { - let optionsComplete: KeyVaultClientGetKeysOptionalParams = { + const optionsComplete: KeyVaultClientGetKeysOptionalParams = { maxresults: continuationState.maxPageSize, ...(options && options.requestOptions ? options.requestOptions : {}) }; - let currentSetResponse = await this.client.getKeys(this.vaultBaseUrl, optionsComplete); + const currentSetResponse = await this.client.getKeys(this.vaultBaseUrl, optionsComplete); continuationState.continuationToken = currentSetResponse.nextLink; yield currentSetResponse.map(this.getKeyAttributesFromKeyItem); } while (continuationState.continuationToken) { - let currentSetResponse = await this.client.getKeysNext( + const currentSetResponse = await this.client.getKeysNext( continuationState.continuationToken, options ); @@ -611,7 +612,7 @@ export class KeysClient { } private async *listKeysAll(options?: ListKeysOptions): AsyncIterableIterator { - let f = {}; + const f = {}; for await (const page of this.listKeysPage(f, options)) { for (const item of page) { @@ -647,16 +648,19 @@ export class KeysClient { options?: ListKeysOptions ): AsyncIterableIterator { if (continuationState.continuationToken == null) { - let optionsComplete: KeyVaultClientGetKeysOptionalParams = { + const optionsComplete: KeyVaultClientGetKeysOptionalParams = { maxresults: continuationState.maxPageSize, ...(options && options.requestOptions ? options.requestOptions : {}) }; - let currentSetResponse = await this.client.getDeletedKeys(this.vaultBaseUrl, optionsComplete); + const currentSetResponse = await this.client.getDeletedKeys( + this.vaultBaseUrl, + optionsComplete + ); continuationState.continuationToken = currentSetResponse.nextLink; yield currentSetResponse.map(this.getKeyAttributesFromKeyItem); } while (continuationState.continuationToken) { - let currentSetResponse = await this.client.getDeletedKeysNext( + const currentSetResponse = await this.client.getDeletedKeysNext( continuationState.continuationToken, options ); @@ -668,7 +672,7 @@ export class KeysClient { private async *listDeletedKeysAll( options?: ListKeysOptions ): AsyncIterableIterator { - let f = {}; + const f = {}; for await (const page of this.listDeletedKeysPage(f, options)) { for (const item of page) { diff --git a/sdk/keyvault/keyvault-keys/tests/CRUD.test.ts b/sdk/keyvault/keyvault-keys/tests/CRUD.test.ts index 53bc30122ce5..4764adaa55ed 100644 --- a/sdk/keyvault/keyvault-keys/tests/CRUD.test.ts +++ b/sdk/keyvault/keyvault-keys/tests/CRUD.test.ts @@ -26,16 +26,16 @@ describe("Keys client - create, read, update and delete operations", () => { // - These functions are probably better moved to a common utility file. // However, to do that we'll have to create a class or closure to maintain // the instance of the KeyClient available. - async function purgeKey() { + async function purgeKey(): Promise { await client.purgeDeletedKey(keyName); await delay(30000); } - async function flushKey() { + async function flushKey(): Promise { await client.deleteKey(keyName); await delay(30000); await purgeKey(); } - async function maybeFlushKey() { + async function maybeFlushKey(): Promise { try { await client.deleteKey(keyName); await delay(30000); @@ -65,7 +65,7 @@ describe("Keys client - create, read, update and delete operations", () => { (recording) => recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`) ]); - recorder = record(this); + recorder = record(this); // eslint-disable-line no-invalid-this credential = await new EnvironmentCredential(); keyVaultName = getKeyvaultName(); keyVaultUrl = `https://${keyVaultName}.vault.azure.net`; @@ -77,7 +77,7 @@ describe("Keys client - create, read, update and delete operations", () => { }); beforeEach(async function() { - recorder = record(this); + recorder = record(this); // eslint-disable-line no-invalid-this }); afterEach(async () => { @@ -131,7 +131,7 @@ describe("Keys client - create, read, update and delete operations", () => { }); it("can create a RSA key with size", async () => { - let options = { + const options = { keySize: 2048 }; const result = await client.createRsaKey(keyName, options); @@ -146,7 +146,7 @@ describe("Keys client - create, read, update and delete operations", () => { }); it("can create an EC key with curve", async () => { - let options: CreateEcKeyOptions = { + const options: CreateEcKeyOptions = { curve: "P-256" }; const result = await client.createEcKey(keyName, options); @@ -155,7 +155,7 @@ describe("Keys client - create, read, update and delete operations", () => { }); it("can create a disabled key", async () => { - let options = { + const options = { enabled: false }; const result = await client.createRsaKey(keyName, options); @@ -165,11 +165,11 @@ describe("Keys client - create, read, update and delete operations", () => { }); it("can create a key with notBefore", async () => { - let date = new Date("2019-01-01"); - let notBefore = new Date(date.getTime() + 5000); // 5 seconds later + const date = new Date("2019-01-01"); + const notBefore = new Date(date.getTime() + 5000); // 5 seconds later notBefore.setMilliseconds(0); - let options = { notBefore }; + const options = { notBefore }; const result = await client.createRsaKey(keyName, options); assert.equal( @@ -182,11 +182,11 @@ describe("Keys client - create, read, update and delete operations", () => { }); it("can create a key with expires", async () => { - let date = new Date("2019-01-01"); - let expires = new Date(date.getTime() + 5000); // 5 seconds later + const date = new Date("2019-01-01"); + const expires = new Date(date.getTime() + 5000); // 5 seconds later expires.setMilliseconds(0); - let options = { expires }; + const options = { expires }; const result = await client.createRsaKey(keyName, options); assert.equal( @@ -200,7 +200,7 @@ describe("Keys client - create, read, update and delete operations", () => { it("can update key", async () => { const { version } = await client.createRsaKey(keyName); - let options: UpdateKeyOptions = { enabled: false }; + const options: UpdateKeyOptions = { enabled: false }; const result = await client.updateKey(keyName, version, options); assert.equal(result.enabled, false, "Unexpected enabled value from updateKey()."); await flushKey(); @@ -224,7 +224,7 @@ describe("Keys client - create, read, update and delete operations", () => { }); it("can delete a key", async () => { - const result = await client.createKey(keyName, "RSA"); + await client.createKey(keyName, "RSA"); await client.deleteKey(keyName); try { @@ -255,7 +255,7 @@ describe("Keys client - create, read, update and delete operations", () => { }); it("can get a key", async () => { - const result = await client.createKey(keyName, "RSA"); + await client.createKey(keyName, "RSA"); const getResult = await client.getKey(keyName); assert.equal(getResult.name, keyName, "Unexpected key name in result from getKey()."); await flushKey(); diff --git a/sdk/keyvault/keyvault-keys/tests/list.test.ts b/sdk/keyvault/keyvault-keys/tests/list.test.ts index 63bc0e654587..c971d438cb66 100644 --- a/sdk/keyvault/keyvault-keys/tests/list.test.ts +++ b/sdk/keyvault/keyvault-keys/tests/list.test.ts @@ -3,8 +3,8 @@ import * as assert from "assert"; import { getKeyvaultName } from "./utils/utils.common"; -import { KeysClient, CreateEcKeyOptions, UpdateKeyOptions, GetKeyOptions } from "../src"; -import { TokenCredential, RestError } from "@azure/core-http"; +import { KeysClient } from "../src"; +import { TokenCredential } from "@azure/core-http"; import { EnvironmentCredential } from "@azure/identity"; import { record, setReplaceableVariables, delay, setReplacements, env } from "./utils/recorder"; @@ -26,16 +26,16 @@ describe("Keys client - list keys in various ways", () => { // - These functions are probably better moved to a common utility file. // However, to do that we'll have to create a class or closure to maintain // the instance of the KeyClient available. - async function purgeKey() { + async function purgeKey(): Promise { await client.purgeDeletedKey(keyName); await delay(30000); } - async function flushKey() { + async function flushKey(): Promise { await client.deleteKey(keyName); await delay(30000); await purgeKey(); } - async function maybeFlushKey() { + async function maybeFlushKey(): Promise { try { await client.deleteKey(keyName); await delay(30000); @@ -65,7 +65,7 @@ describe("Keys client - list keys in various ways", () => { (recording) => recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`) ]); - recorder = record(this); + recorder = record(this); // eslint-disable-line no-invalid-this credential = await new EnvironmentCredential(); keyVaultName = getKeyvaultName(); keyVaultUrl = `https://${keyVaultName}.vault.azure.net`; @@ -77,7 +77,7 @@ describe("Keys client - list keys in various ways", () => { }); beforeEach(async function() { - recorder = record(this); + recorder = record(this); // eslint-disable-line no-invalid-this }); afterEach(async () => { @@ -89,7 +89,7 @@ describe("Keys client - list keys in various ways", () => { it("can get the versions of a key", async () => { await client.createKey(keyName, "RSA"); let totalVersions = 0; - for await (let version of client.listKeyVersions(keyName)) { + for await (const version of client.listKeyVersions(keyName)) { assert.equal(version.name, keyName, "Unexpected key name in result from listKeyVersions()."); totalVersions += 1; } @@ -101,8 +101,8 @@ describe("Keys client - list keys in various ways", () => { it("can get the versions of a key (paged)", async () => { await client.createKey(keyName, "RSA"); let totalVersions = 0; - for await (let page of client.listKeyVersions(keyName).byPage()) { - for (let version of page) { + for await (const page of client.listKeyVersions(keyName).byPage()) { + for (const version of page) { assert.equal( version.name, keyName, @@ -117,7 +117,8 @@ describe("Keys client - list keys in various ways", () => { it("list 0 versions of a non-existing key", async () => { let totalVersions = 0; - for await (let version of client.listKeyVersions(keyName)) { + for await (const version of client.listKeyVersions(keyName)) { + assert.equal(version.name, keyName, "Unexpected key name in result from listKeyVersions()."); totalVersions += 1; } assert.equal(totalVersions, 0, `Unexpected total versions for key ${keyName}`); @@ -125,8 +126,13 @@ describe("Keys client - list keys in various ways", () => { it("list 0 versions of a non-existing key (paged)", async () => { let totalVersions = 0; - for await (let page of client.listKeyVersions(keyName).byPage()) { - for (let version of page) { + for await (const page of client.listKeyVersions(keyName).byPage()) { + for (const version of page) { + assert.equal( + version.name, + keyName, + "Unexpected key name in result from listKeyVersions()." + ); totalVersions += 1; } } @@ -135,7 +141,7 @@ describe("Keys client - list keys in various ways", () => { it("can get several inserted keys", async () => { const keyNames = [`${keyName}-inserted-0`, `${keyName}-inserted-1`]; - for (let name of keyNames) { + for (const name of keyNames) { await client.createKey(name, "RSA"); } @@ -148,7 +154,7 @@ describe("Keys client - list keys in various ways", () => { assert.equal(found, 2, "Unexpected number of keys found by getKeys."); - for (let name of keyNames) { + for (const name of keyNames) { await client.deleteKey(name); await delay(30000); await client.purgeDeletedKey(name); @@ -157,13 +163,13 @@ describe("Keys client - list keys in various ways", () => { it("can get several inserted keys (paged)", async () => { const keyNames = [`${keyName}-inserted-paged-0`, `${keyName}-inserted-paged-1`]; - for (let name of keyNames) { + for (const name of keyNames) { await client.createKey(name, "RSA"); } let found = 0; for await (const page of client.listKeys().byPage()) { - for (let key of page) { + for (const key of page) { // The vault might contain more keys than the ones we inserted. if (!keyNames.includes(key.name)) continue; found += 1; @@ -172,7 +178,7 @@ describe("Keys client - list keys in various ways", () => { assert.equal(found, 2, "Unexpected number of keys found by getKeys."); - for (let name of keyNames) { + for (const name of keyNames) { await client.deleteKey(name); await delay(30000); await client.purgeDeletedKey(name); @@ -181,10 +187,10 @@ describe("Keys client - list keys in various ways", () => { it("list deleted keys", async () => { const keyNames = [`${keyName}-deleted-0`, `${keyName}-deleted-1`]; - for (let name of keyNames) { + for (const name of keyNames) { await client.createKey(name, "RSA"); } - for (let name of keyNames) { + for (const name of keyNames) { await client.deleteKey(name); } @@ -199,17 +205,17 @@ describe("Keys client - list keys in various ways", () => { assert.equal(found, 2, "Unexpected number of keys found by listDeletedKeys."); - for (let name of keyNames) { + for (const name of keyNames) { await client.purgeDeletedKey(name); } }); it("list deleted keys (paged)", async () => { const keyNames = [`${keyName}-deleted-paged-0`, `${keyName}-deleted-paged-1`]; - for (let name of keyNames) { + for (const name of keyNames) { await client.createKey(name, "RSA"); } - for (let name of keyNames) { + for (const name of keyNames) { await client.deleteKey(name); } @@ -217,7 +223,7 @@ describe("Keys client - list keys in various ways", () => { let found = 0; for await (const page of client.listDeletedKeys().byPage()) { - for (let key of page) { + for (const key of page) { // The vault might contain more keys than the ones we inserted. if (!keyNames.includes(key.name)) continue; found += 1; @@ -226,7 +232,7 @@ describe("Keys client - list keys in various ways", () => { assert.equal(found, 2, "Unexpected number of keys found by listDeletedKeys."); - for (let name of keyNames) { + for (const name of keyNames) { await client.purgeDeletedKey(name); } }); diff --git a/sdk/keyvault/keyvault-keys/tests/recoverBackupRestore.test.ts b/sdk/keyvault/keyvault-keys/tests/recoverBackupRestore.test.ts index 2d43f919ffd6..c5b9c0697f8e 100644 --- a/sdk/keyvault/keyvault-keys/tests/recoverBackupRestore.test.ts +++ b/sdk/keyvault/keyvault-keys/tests/recoverBackupRestore.test.ts @@ -3,8 +3,8 @@ import * as assert from "assert"; import { getKeyvaultName } from "./utils/utils.common"; -import { KeysClient, CreateEcKeyOptions, UpdateKeyOptions, GetKeyOptions } from "../src"; -import { TokenCredential, RestError } from "@azure/core-http"; +import { KeysClient } from "../src"; +import { TokenCredential } from "@azure/core-http"; import { EnvironmentCredential } from "@azure/identity"; import { record, setReplaceableVariables, delay, setReplacements, env } from "./utils/recorder"; @@ -26,16 +26,16 @@ describe("Keys client - restore keys and recover backups", () => { // - These functions are probably better moved to a common utility file. // However, to do that we'll have to create a class or closure to maintain // the instance of the KeyClient available. - async function purgeKey() { + async function purgeKey(): Promise { await client.purgeDeletedKey(keyName); await delay(30000); } - async function flushKey() { + async function flushKey(): Promise { await client.deleteKey(keyName); await delay(30000); await purgeKey(); } - async function maybeFlushKey() { + async function maybeFlushKey(): Promise { try { await client.deleteKey(keyName); await delay(30000); @@ -65,7 +65,7 @@ describe("Keys client - restore keys and recover backups", () => { (recording) => recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`) ]); - recorder = record(this); + recorder = record(this); // eslint-disable-line no-invalid-this credential = await new EnvironmentCredential(); keyVaultName = getKeyvaultName(); keyVaultUrl = `https://${keyVaultName}.vault.azure.net`; @@ -77,7 +77,7 @@ describe("Keys client - restore keys and recover backups", () => { }); beforeEach(async function() { - recorder = record(this); + recorder = record(this); // eslint-disable-line no-invalid-this }); afterEach(async () => { diff --git a/sdk/keyvault/keyvault-keys/tests/utils/recorder.ts b/sdk/keyvault/keyvault-keys/tests/utils/recorder.ts index adc338eb2bbc..30ffe5616d79 100644 --- a/sdk/keyvault/keyvault-keys/tests/utils/recorder.ts +++ b/sdk/keyvault/keyvault-keys/tests/utils/recorder.ts @@ -2,8 +2,6 @@ // Licensed under the MIT License. import fs from "fs-extra"; -import queryString from "query-string"; -import { blobToString } from "./index.browser"; import { delay as restDelay } from "@azure/ms-rest-js"; import * as dotenv from "dotenv"; dotenv.config({ path: "../../.env" }); @@ -13,7 +11,7 @@ export function isBrowser(): boolean { } export function escapeRegExp(str: string): string { - return encodeURIComponent(str).replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"); + return encodeURIComponent(str).replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); } let nock: any; @@ -77,9 +75,7 @@ abstract class Recorder { * */ protected filterSecrets(recording: string): string { let updatedRecording = recording; - let lastRecording = recording; - for (let k of Object.keys(replaceableVariables)) { - lastRecording = updatedRecording; + for (const k of Object.keys(replaceableVariables)) { const escaped = escapeRegExp(env[k]); updatedRecording = updatedRecording.replace( new RegExp(escaped, "g"), @@ -166,7 +162,7 @@ class NockRecorder extends Recorder { // Finally, the request is sent to the server // req.send(data); -export function record(testContext: any) { +export function record(testContext: any): any { let recorder: Recorder; let testHierarchy: string; let testTitle: string; diff --git a/sdk/keyvault/keyvault-keys/tests/utils/utils.common.ts b/sdk/keyvault/keyvault-keys/tests/utils/utils.common.ts index 9fb15874252b..98952bd5ae91 100644 --- a/sdk/keyvault/keyvault-keys/tests/utils/utils.common.ts +++ b/sdk/keyvault/keyvault-keys/tests/utils/utils.common.ts @@ -10,7 +10,7 @@ if (!Symbol || !Symbol.asyncIterator) { export function getKeyvaultName(): string { const keyVaultEnvVarName = "KEYVAULT_NAME"; - let keyVaultName: string | undefined = env[keyVaultEnvVarName]; + const keyVaultName: string | undefined = env[keyVaultEnvVarName]; if (!keyVaultName) { throw new Error(`${keyVaultEnvVarName} environment variable not specified.`); diff --git a/sdk/keyvault/keyvault-secrets/.eslintignore b/sdk/keyvault/keyvault-secrets/.eslintignore new file mode 100644 index 000000000000..ccf966f598d6 --- /dev/null +++ b/sdk/keyvault/keyvault-secrets/.eslintignore @@ -0,0 +1,2 @@ +src/core +**/*.js diff --git a/sdk/keyvault/keyvault-secrets/package.json b/sdk/keyvault/keyvault-secrets/package.json index c6013fb9867b..e8386564b237 100644 --- a/sdk/keyvault/keyvault-secrets/package.json +++ b/sdk/keyvault/keyvault-secrets/package.json @@ -54,8 +54,9 @@ "integration-test:browser": "echo skipped", "integration-test:node": "ts-mocha -p tests/tsconfig.test.json tests/*.ts --timeout 1200000 --reporter mocha-multi --reporter-options spec=-,mocha-junit-reporter=-", "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "lint:fix": "echo skipped", - "lint": "echo skipped", + "lint:fix": "eslint -c ../../.eslintrc.json src tests samples --ext .ts --fix --fix-type [problem,suggestion]", + "lint": "eslint -c ../../.eslintrc.json src tests samples --ext .ts -f node_modules/eslint-detailed-reporter/lib/detailed.js -o keyvault-secrets-lintReport.html || exit 0", + "lint:terminal": "eslint -c ../../.eslintrc.json src tests samples --ext .ts", "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", @@ -82,9 +83,17 @@ "@types/fs-extra": "~7.0.0", "@types/mocha": "^5.2.5", "@types/nock": "^10.0.1", + "@typescript-eslint/eslint-plugin": "~1.9.0", + "@typescript-eslint/parser": "^1.7.0", "chai": "^4.2.0", "cross-env": "^5.2.0", "dotenv": "^7.0.0", + "eslint": "^5.16.0", + "eslint-config-prettier": "^4.2.0", + "eslint-detailed-reporter": "^0.8.0", + "eslint-plugin-no-null": "^1.0.2", + "eslint-plugin-no-only-tests": "^2.3.0", + "eslint-plugin-promise": "^4.1.1", "fs-extra": "~8.0.1", "mocha": "^5.2.0", "nock": "^10.0.6", diff --git a/sdk/keyvault/keyvault-secrets/samples/backupAndRestore.ts b/sdk/keyvault/keyvault-secrets/samples/backupAndRestore.ts index 4c70bf1a3a1b..aa40256aeade 100644 --- a/sdk/keyvault/keyvault-secrets/samples/backupAndRestore.ts +++ b/sdk/keyvault/keyvault-secrets/samples/backupAndRestore.ts @@ -2,9 +2,9 @@ import { SecretsClient } from "../src"; import fs = require("fs"); import { EnvironmentCredential } from "@azure/identity"; -function writeFile(filename: string, text: Uint8Array) { +function writeFile(filename: string, text: Uint8Array): Promise { return new Promise((resolve, reject) => { - fs.writeFile(filename, text, err => { + fs.writeFile(filename, text, (err) => { if (err) reject(err); else resolve(); }); @@ -31,7 +31,7 @@ async function main(): Promise { // - AZURE_CLIENT_SECRET: The client secret for the registered application const credential = new EnvironmentCredential(); - const vaultName = process.env["KEYVAULT_NAME"] || "" + const vaultName = process.env["KEYVAULT_NAME"] || ""; const url = `https://${vaultName}.vault.azure.net`; const client = new SecretsClient(url, credential); @@ -41,7 +41,7 @@ async function main(): Promise { await client.setSecret(secretName, "XYZ789"); // Backup secret - let backupResult = await client.backupSecret(secretName); + const backupResult = await client.backupSecret(secretName); // Write the backup to a file await writeFile("secret_backup.dat", backupResult); @@ -58,10 +58,10 @@ async function main(): Promise { // Read our backup from a file console.log("about to restore secret"); - let backupContents = await readFile("secret_backup.dat"); + const backupContents = await readFile("secret_backup.dat"); // Restore the secret - let result = await client.restoreSecret(backupContents); + const result = await client.restoreSecret(backupContents); console.log("Restored secret: ", result); await client.deleteSecret(secretName); diff --git a/sdk/keyvault/keyvault-secrets/samples/deleteAndRecover.ts b/sdk/keyvault/keyvault-secrets/samples/deleteAndRecover.ts index 4ed103ca214b..97e42027dc9b 100644 --- a/sdk/keyvault/keyvault-secrets/samples/deleteAndRecover.ts +++ b/sdk/keyvault/keyvault-secrets/samples/deleteAndRecover.ts @@ -31,7 +31,7 @@ async function main(): Promise { await delay(30000); console.log("Showing deleted secrets"); - for await (let deletedSecret of client.listDeletedSecrets()) { + for await (const deletedSecret of client.listDeletedSecrets()) { console.log(deletedSecret); } @@ -53,7 +53,7 @@ async function main(): Promise { await client.purgeDeletedSecret(bankAccountSecretName); await delay(30000); - for await (let deletedSecret of client.listDeletedSecrets()) { + for await (const deletedSecret of client.listDeletedSecrets()) { console.log(deletedSecret); } diff --git a/sdk/keyvault/keyvault-secrets/samples/listOperations.ts b/sdk/keyvault/keyvault-secrets/samples/listOperations.ts index 3d6d5a6ba81d..7fd29e53c5ea 100644 --- a/sdk/keyvault/keyvault-secrets/samples/listOperations.ts +++ b/sdk/keyvault/keyvault-secrets/samples/listOperations.ts @@ -21,7 +21,7 @@ async function main(): Promise { // List the secrets we have, by page console.log("Listing secrets by page"); - for await (let page of client.listSecrets().byPage({ maxPageSize: 2 })) { + for await (const page of client.listSecrets().byPage({ maxPageSize: 2 })) { for (const secretAttr of page) { const secret = await client.getSecret(secretAttr.name); console.log("secret: ", secret); @@ -31,7 +31,7 @@ async function main(): Promise { // List the secrets we have, all at once console.log("Listing secrets all at once"); - for await (let secretAttr of client.listSecrets()) { + for await (const secretAttr of client.listSecrets()) { const secret = await client.getSecret(secretAttr.name); console.log("secret: ", secret); } @@ -39,7 +39,7 @@ async function main(): Promise { await client.setSecret(bankAccountSecretName, "ABC567"); // List the versions of BankAccountPassword - for await (let secretAttr of client.listSecretVersions(bankAccountSecretName)) { + for await (const secretAttr of client.listSecretVersions(bankAccountSecretName)) { const secret = await client.getSecret(secretAttr.name); console.log("secret version: ", secret); } diff --git a/sdk/keyvault/keyvault-secrets/src/index.ts b/sdk/keyvault/keyvault-secrets/src/index.ts index f4637ce11a26..ba6085d1838e 100644 --- a/sdk/keyvault/keyvault-secrets/src/index.ts +++ b/sdk/keyvault/keyvault-secrets/src/index.ts @@ -1,5 +1,6 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +/* eslint @typescript-eslint/member-ordering: 0 */ import { ServiceClientCredentials, @@ -154,7 +155,7 @@ export class SecretsClient { this.client = new KeyVaultClient(credential, "7.0", this.pipeline); } - private static getUserAgentString(telemetry?: TelemetryOptions) { + private static getUserAgentString(telemetry?: TelemetryOptions): string { const userAgentInfo: string[] = []; if (telemetry) { if (userAgentInfo.indexOf(telemetry.value) === -1) { @@ -184,14 +185,18 @@ export class SecretsClient { * @param [options] The optional parameters * @returns Promise */ - public async setSecret(secretName: string, value: string, options?: SetSecretOptions) { + public async setSecret( + secretName: string, + value: string, + options?: SetSecretOptions + ): Promise { if (options) { - let unflattenedAttributes = { + const unflattenedAttributes = { enabled: options.enabled, notBefore: options.notBefore, expires: options.expires }; - let unflattenedOptions = { + const unflattenedOptions = { ...options, ...(options.requestOptions ? options.requestOptions : {}), secretAttributes: unflattenedAttributes @@ -247,12 +252,12 @@ export class SecretsClient { options?: UpdateSecretOptions ): Promise { if (options) { - let unflattenedAttributes = { + const unflattenedAttributes = { enabled: options.enabled, notBefore: options.notBefore, expires: options.expires }; - let unflattenedOptions = { + const unflattenedOptions = { ...options, ...(options.requestOptions ? options.requestOptions : {}), secretAttributes: unflattenedAttributes @@ -386,11 +391,11 @@ export class SecretsClient { options?: ListSecretsOptions ): AsyncIterableIterator { if (continuationState.continuationToken == null) { - let optionsComplete: KeyVaultClientGetSecretsOptionalParams = { + const optionsComplete: KeyVaultClientGetSecretsOptionalParams = { maxresults: continuationState.maxPageSize, ...(options && options.requestOptions ? options.requestOptions : {}) }; - let currentSetResponse = await this.client.getSecretVersions( + const currentSetResponse = await this.client.getSecretVersions( this.vaultBaseUrl, secretName, optionsComplete @@ -399,7 +404,7 @@ export class SecretsClient { yield currentSetResponse.map(this.getSecretFromSecretBundle); } while (continuationState.continuationToken) { - let currentSetResponse = await this.client.getSecretVersionsNext( + const currentSetResponse = await this.client.getSecretVersionsNext( continuationState.continuationToken, options ); @@ -412,7 +417,7 @@ export class SecretsClient { secretName: string, options?: ListSecretsOptions ): AsyncIterableIterator { - let f = {}; + const f = {}; for await (const page of this.listSecretVersionsPage(secretName, f, options)) { for (const item of page) { @@ -450,16 +455,16 @@ export class SecretsClient { options?: ListSecretsOptions ): AsyncIterableIterator { if (continuationState.continuationToken == null) { - let optionsComplete: KeyVaultClientGetSecretsOptionalParams = { + const optionsComplete: KeyVaultClientGetSecretsOptionalParams = { maxresults: continuationState.maxPageSize, ...(options && options.requestOptions ? options.requestOptions : {}) }; - let currentSetResponse = await this.client.getSecrets(this.vaultBaseUrl, optionsComplete); + const currentSetResponse = await this.client.getSecrets(this.vaultBaseUrl, optionsComplete); continuationState.continuationToken = currentSetResponse.nextLink; yield currentSetResponse.map(this.getSecretFromSecretBundle); } while (continuationState.continuationToken) { - let currentSetResponse = await this.client.getSecretsNext( + const currentSetResponse = await this.client.getSecretsNext( continuationState.continuationToken, options ); @@ -471,7 +476,7 @@ export class SecretsClient { private async *listSecretsAll( options?: ListSecretsOptions ): AsyncIterableIterator { - let f = {}; + const f = {}; for await (const page of this.listSecretsPage(f, options)) { for (const item of page) { @@ -507,11 +512,11 @@ export class SecretsClient { options?: ListSecretsOptions ): AsyncIterableIterator { if (continuationState.continuationToken == null) { - let optionsComplete: KeyVaultClientGetSecretsOptionalParams = { + const optionsComplete: KeyVaultClientGetSecretsOptionalParams = { maxresults: continuationState.maxPageSize, ...(options && options.requestOptions ? options.requestOptions : {}) }; - let currentSetResponse = await this.client.getDeletedSecrets( + const currentSetResponse = await this.client.getDeletedSecrets( this.vaultBaseUrl, optionsComplete ); @@ -519,7 +524,7 @@ export class SecretsClient { yield currentSetResponse.map(this.getSecretFromSecretBundle); } while (continuationState.continuationToken) { - let currentSetResponse = await this.client.getDeletedSecretsNext( + const currentSetResponse = await this.client.getDeletedSecretsNext( continuationState.continuationToken, options ); @@ -531,7 +536,7 @@ export class SecretsClient { private async *listDeletedSecretsAll( options?: ListSecretsOptions ): AsyncIterableIterator { - let f = {}; + const f = {}; for await (const page of this.listDeletedSecretsPage(f, options)) { for (const item of page) { diff --git a/sdk/keyvault/keyvault-secrets/tests/CRUD.test.ts b/sdk/keyvault/keyvault-secrets/tests/CRUD.test.ts index 840d4075c2a8..88ceac94d2bd 100644 --- a/sdk/keyvault/keyvault-secrets/tests/CRUD.test.ts +++ b/sdk/keyvault/keyvault-secrets/tests/CRUD.test.ts @@ -23,16 +23,16 @@ describe("Secret client - create, read, update and delete operations", () => { // - These functions are probably better moved to a common utility file. // However, to do that we'll have to create a class or closure to maintain // the instance of the KeyClient available. - async function purgeSecret() { + async function purgeSecret(): Promise { await client.purgeDeletedSecret(secretName); await delay(30000); } - async function flushSecret() { + async function flushSecret(): Promise { await client.deleteSecret(secretName); await delay(30000); await purgeSecret(); } - async function maybeFlushSecret() { + async function maybeFlushSecret(): Promise { try { await client.deleteSecret(secretName); await delay(30000); @@ -59,7 +59,7 @@ describe("Secret client - create, read, update and delete operations", () => { (recording) => recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`) ]); - recorder = record(this); + recorder = record(this); // eslint-disable-line no-invalid-this const vaultName = env.KEYVAULT_NAME; const url = `https://${vaultName}.vault.azure.net`; diff --git a/sdk/keyvault/keyvault-secrets/tests/list.test.ts b/sdk/keyvault/keyvault-secrets/tests/list.test.ts index 1d9d7db41df1..333b12d43a82 100644 --- a/sdk/keyvault/keyvault-secrets/tests/list.test.ts +++ b/sdk/keyvault/keyvault-secrets/tests/list.test.ts @@ -10,7 +10,6 @@ import "./utils/utils.common"; // This loads the asyncIterator polyfill describe("Secret client - list secrets in various ways", () => { const secretValue = "SECRET_VALUE"; - const version = ""; let client: SecretsClient; let recorder: any; @@ -25,16 +24,16 @@ describe("Secret client - list secrets in various ways", () => { // - These functions are probably better moved to a common utility file. // However, to do that we'll have to create a class or closure to maintain // the instance of the KeyClient available. - async function purgeSecret() { + async function purgeSecret(): Promise { await client.purgeDeletedSecret(secretName); await delay(30000); } - async function flushSecret() { + async function flushSecret(): Promise { await client.deleteSecret(secretName); await delay(30000); await purgeSecret(); } - async function maybeFlushSecret() { + async function maybeFlushSecret(): Promise { try { await client.deleteSecret(secretName); await delay(30000); @@ -61,7 +60,7 @@ describe("Secret client - list secrets in various ways", () => { (recording) => recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`) ]); - recorder = record(this); + recorder = record(this); // eslint-disable-line no-invalid-this const vaultName = env.KEYVAULT_NAME; const url = `https://${vaultName}.vault.azure.net`; @@ -79,7 +78,7 @@ describe("Secret client - list secrets in various ways", () => { it("can list secrets", async () => { const secretNames = [`${secretName}0`, `${secretName}1`]; - for (let name of secretNames) { + for (const name of secretNames) { await client.setSecret(name, "RSA"); } @@ -92,7 +91,7 @@ describe("Secret client - list secrets in various ways", () => { assert.equal(found, 2, "Unexpected number of secrets found by getSecrets."); - for (let name of secretNames) { + for (const name of secretNames) { await client.deleteSecret(name); await delay(20000); await client.purgeDeletedSecret(name); @@ -102,10 +101,10 @@ describe("Secret client - list secrets in various ways", () => { it("can list deleted secrets", async () => { const secretNames = [`${secretName}0`, `${secretName}1`]; - for (let name of secretNames) { + for (const name of secretNames) { await client.setSecret(name, "RSA"); } - for (let name of secretNames) { + for (const name of secretNames) { await client.deleteSecret(name); } @@ -120,7 +119,7 @@ describe("Secret client - list secrets in various ways", () => { assert.equal(found, 2, "Unexpected number of secrets found by getDeletedSecrets."); - for (let name of secretNames) { + for (const name of secretNames) { await client.purgeDeletedSecret(name); } await delay(20000); @@ -128,24 +127,24 @@ describe("Secret client - list secrets in various ways", () => { it("can retrieve all versions of a secret", async () => { const secretValues = [`${secretValue}0`, `${secretValue}1`, `${secretValue}2`]; - interface versionValuePair { + interface VersionValuePair { version: string; value: string; } - let versions: versionValuePair[] = []; + const versions: VersionValuePair[] = []; for (const v of secretValues) { const response = await client.setSecret(secretName, v); versions.push({ version: response.version!, value: response.value! }); } - let results: versionValuePair[] = []; + const results: VersionValuePair[] = []; for await (const item of client.listSecretVersions(secretName)) { const version = item.version!; const secret = await client.getSecret(secretName, { version: version }); results.push({ version: item.version!, value: secret.value! }); } - const comp = (a: versionValuePair, b: versionValuePair) => + const comp = (a: VersionValuePair, b: VersionValuePair): number => (a.version + a.value).localeCompare(b.version + b.value); results.sort(comp); versions.sort(comp); @@ -156,7 +155,12 @@ describe("Secret client - list secrets in various ways", () => { it("can list secret versions (non existing)", async () => { let totalVersions = 0; - for await (let version of client.listSecretVersions(secretName)) { + for await (const version of client.listSecretVersions(secretName)) { + assert.equal( + version.name, + secretName, + "Unexpected key name in result from listKeyVersions()." + ); totalVersions += 1; } assert.equal(totalVersions, 0, `Unexpected total versions for secret ${secretName}`); @@ -164,7 +168,7 @@ describe("Secret client - list secrets in various ways", () => { it("can list secrets", async () => { const secretNames = [`${secretName}0`, `${secretName}1`]; - for (let name of secretNames) { + for (const name of secretNames) { await client.setSecret(name, "RSA"); } let found = 0; @@ -176,7 +180,7 @@ describe("Secret client - list secrets in various ways", () => { } } assert.equal(found, 2, "Unexpected number of secrets found by getSecrets."); - for (let name of secretNames) { + for (const name of secretNames) { await client.deleteSecret(name); await delay(20000); await client.purgeDeletedSecret(name); @@ -186,10 +190,10 @@ describe("Secret client - list secrets in various ways", () => { it("can list deleted secrets", async () => { const secretNames = [`${secretName}0`, `${secretName}1`]; - for (let name of secretNames) { + for (const name of secretNames) { await client.setSecret(name, "RSA"); } - for (let name of secretNames) { + for (const name of secretNames) { await client.deleteSecret(name); } await delay(20000); @@ -202,7 +206,7 @@ describe("Secret client - list secrets in various ways", () => { } } assert.equal(found, 2, "Unexpected number of secrets found by getDeletedSecrets."); - for (let name of secretNames) { + for (const name of secretNames) { await client.purgeDeletedSecret(name); } await delay(20000); @@ -210,17 +214,17 @@ describe("Secret client - list secrets in various ways", () => { it("can retrieve all versions of a secret", async () => { const secretValues = [`${secretValue}0`, `${secretValue}1`, `${secretValue}2`]; - interface versionValuePair { + interface VersionValuePair { version: string; value: string; } - let versions: versionValuePair[] = []; + const versions: VersionValuePair[] = []; for (const v of secretValues) { const response = await client.setSecret(secretName, v); versions.push({ version: response.version!, value: response.value! }); } - let results: versionValuePair[] = []; + const results: VersionValuePair[] = []; for await (const page of client.listSecretVersions(secretName).byPage()) { for (const item of page) { const version = item.version!; @@ -229,7 +233,7 @@ describe("Secret client - list secrets in various ways", () => { } } - const comp = (a: versionValuePair, b: versionValuePair) => + const comp = (a: VersionValuePair, b: VersionValuePair): number => (a.version + a.value).localeCompare(b.version + b.value); results.sort(comp); versions.sort(comp); @@ -241,7 +245,12 @@ describe("Secret client - list secrets in various ways", () => { it("can list secret versions (non existing)", async () => { let totalVersions = 0; for await (const page of client.listSecretVersions(secretName).byPage()) { - for (const secret of page) { + for (const version of page) { + assert.equal( + version.name, + secretName, + "Unexpected key name in result from listKeyVersions()." + ); totalVersions += 1; } } diff --git a/sdk/keyvault/keyvault-secrets/tests/recoverBackupRestore.test.ts b/sdk/keyvault/keyvault-secrets/tests/recoverBackupRestore.test.ts index 02d3250a51b1..4f66ba6a3e51 100644 --- a/sdk/keyvault/keyvault-secrets/tests/recoverBackupRestore.test.ts +++ b/sdk/keyvault/keyvault-secrets/tests/recoverBackupRestore.test.ts @@ -7,8 +7,6 @@ import { record, setReplaceableVariables, delay, setReplacements, env } from "./ import { EnvironmentCredential } from "@azure/identity"; describe("Secret client - restore secrets and recover backups", () => { - const secretValue = "SECRET_VALUE"; - const version = ""; let client: SecretsClient; let recorder: any; @@ -23,16 +21,16 @@ describe("Secret client - restore secrets and recover backups", () => { // - These functions are probably better moved to a common utility file. // However, to do that we'll have to create a class or closure to maintain // the instance of the KeyClient available. - async function purgeSecret() { + async function purgeSecret(): Promise { await client.purgeDeletedSecret(secretName); await delay(30000); } - async function flushSecret() { + async function flushSecret(): Promise { await client.deleteSecret(secretName); await delay(30000); await purgeSecret(); } - async function maybeFlushSecret() { + async function maybeFlushSecret(): Promise { try { await client.deleteSecret(secretName); await delay(30000); @@ -59,7 +57,7 @@ describe("Secret client - restore secrets and recover backups", () => { (recording) => recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`) ]); - recorder = record(this); + recorder = record(this); // eslint-disable-line no-invalid-this const vaultName = env.KEYVAULT_NAME; const url = `https://${vaultName}.vault.azure.net`; diff --git a/sdk/keyvault/keyvault-secrets/tests/utils/recorder.ts b/sdk/keyvault/keyvault-secrets/tests/utils/recorder.ts index adc338eb2bbc..30ffe5616d79 100644 --- a/sdk/keyvault/keyvault-secrets/tests/utils/recorder.ts +++ b/sdk/keyvault/keyvault-secrets/tests/utils/recorder.ts @@ -2,8 +2,6 @@ // Licensed under the MIT License. import fs from "fs-extra"; -import queryString from "query-string"; -import { blobToString } from "./index.browser"; import { delay as restDelay } from "@azure/ms-rest-js"; import * as dotenv from "dotenv"; dotenv.config({ path: "../../.env" }); @@ -13,7 +11,7 @@ export function isBrowser(): boolean { } export function escapeRegExp(str: string): string { - return encodeURIComponent(str).replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"); + return encodeURIComponent(str).replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); } let nock: any; @@ -77,9 +75,7 @@ abstract class Recorder { * */ protected filterSecrets(recording: string): string { let updatedRecording = recording; - let lastRecording = recording; - for (let k of Object.keys(replaceableVariables)) { - lastRecording = updatedRecording; + for (const k of Object.keys(replaceableVariables)) { const escaped = escapeRegExp(env[k]); updatedRecording = updatedRecording.replace( new RegExp(escaped, "g"), @@ -166,7 +162,7 @@ class NockRecorder extends Recorder { // Finally, the request is sent to the server // req.send(data); -export function record(testContext: any) { +export function record(testContext: any): any { let recorder: Recorder; let testHierarchy: string; let testTitle: string; diff --git a/sdk/keyvault/keyvault-secrets/tests/utils/utils.common.ts b/sdk/keyvault/keyvault-secrets/tests/utils/utils.common.ts index 9fb15874252b..98952bd5ae91 100644 --- a/sdk/keyvault/keyvault-secrets/tests/utils/utils.common.ts +++ b/sdk/keyvault/keyvault-secrets/tests/utils/utils.common.ts @@ -10,7 +10,7 @@ if (!Symbol || !Symbol.asyncIterator) { export function getKeyvaultName(): string { const keyVaultEnvVarName = "KEYVAULT_NAME"; - let keyVaultName: string | undefined = env[keyVaultEnvVarName]; + const keyVaultName: string | undefined = env[keyVaultEnvVarName]; if (!keyVaultName) { throw new Error(`${keyVaultEnvVarName} environment variable not specified.`); From 9ac420a6b7dea5643807fe65e337581f89e84ffc Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Fri, 21 Jun 2019 15:36:15 -0700 Subject: [PATCH 167/289] [KeyVault] Disable parallel test execution (#4009) --- sdk/keyvault/keyvault-keys/tests.yml | 2 ++ sdk/keyvault/keyvault-secrets/tests.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/sdk/keyvault/keyvault-keys/tests.yml b/sdk/keyvault/keyvault-keys/tests.yml index 162b4088bda7..f6d7020ee345 100644 --- a/sdk/keyvault/keyvault-keys/tests.yml +++ b/sdk/keyvault/keyvault-keys/tests.yml @@ -9,3 +9,5 @@ jobs: AZURE_TENANT_ID: $(aad-azure-sdk-test-tenant-id) AZURE_CLIENT_SECRET: $(aad-azure-sdk-test-client-secret) KEYVAULT_NAME: $(js-keyvault-keys-test-name) + # KeyVault tests do not support concurrent execution + MaxParallel: 1 diff --git a/sdk/keyvault/keyvault-secrets/tests.yml b/sdk/keyvault/keyvault-secrets/tests.yml index 89c063e1a8a8..cad0d2678900 100644 --- a/sdk/keyvault/keyvault-secrets/tests.yml +++ b/sdk/keyvault/keyvault-secrets/tests.yml @@ -9,3 +9,5 @@ jobs: AZURE_TENANT_ID: $(aad-azure-sdk-test-tenant-id) AZURE_CLIENT_SECRET: $(aad-azure-sdk-test-client-secret) KEYVAULT_NAME: $(js-keyvault-secrets-test-name) + # KeyVault tests do not support concurrent execution + MaxParallel: 1 From add32b92692e6b392bdfac6833aee4ead015b554 Mon Sep 17 00:00:00 2001 From: ramya0820 <45977823+ramya0820@users.noreply.github.com> Date: Fri, 21 Jun 2019 15:38:55 -0700 Subject: [PATCH 168/289] [Service Bus] Set isClosed flag at start of close() call (#3937) * Move setting of isClosed flag at start of close() call --- sdk/servicebus/service-bus/src/receiver.ts | 3 +-- sdk/servicebus/service-bus/src/sender.ts | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/sdk/servicebus/service-bus/src/receiver.ts b/sdk/servicebus/service-bus/src/receiver.ts index c94b6ecc93f1..8b339d6bea87 100644 --- a/sdk/servicebus/service-bus/src/receiver.ts +++ b/sdk/servicebus/service-bus/src/receiver.ts @@ -302,6 +302,7 @@ export class Receiver { */ async close(): Promise { try { + this._isClosed = true; if (this._context.namespace.connection && this._context.namespace.connection.isOpen()) { // Close the streaming receiver. if (this._context.streamingReceiver) { @@ -324,8 +325,6 @@ export class Receiver { err ); throw err; - } finally { - this._isClosed = true; } } diff --git a/sdk/servicebus/service-bus/src/sender.ts b/sdk/servicebus/service-bus/src/sender.ts index 60696d7fb02e..3d645a090a4e 100644 --- a/sdk/servicebus/service-bus/src/sender.ts +++ b/sdk/servicebus/service-bus/src/sender.ts @@ -237,6 +237,7 @@ export class Sender { */ async close(): Promise { try { + this._isClosed = true; if ( this._context.namespace.connection && this._context.namespace.connection.isOpen() && @@ -244,7 +245,6 @@ export class Sender { ) { await this._context.sender.close(); } - this._isClosed = true; } catch (err) { log.error( "[%s] An error occurred while closing the Sender for %s: %O", From 5a363fa639489d35e49a56b0a11cd84d4a56c7c4 Mon Sep 17 00:00:00 2001 From: Ramya Rao Date: Fri, 21 Jun 2019 15:56:29 -0700 Subject: [PATCH 169/289] [Event Hubs] Merge track2 feature branch (#3962) --- common/config/rush/pnpm-lock.yaml | 281 ++--- sdk/core/core-amqp/package.json | 1 + sdk/core/core-amqp/src/errors.ts | 9 +- sdk/core/core-amqp/src/index.ts | 2 +- sdk/core/core-amqp/src/requestResponseLink.ts | 87 +- sdk/core/core-amqp/src/retry.ts | 14 +- .../core-amqp/test/requestResponse.spec.ts | 154 ++- .../lib/credentials/tokenCredential.ts | 7 +- sdk/eventhub/event-hubs/README.md | 135 ++- sdk/eventhub/event-hubs/package.json | 7 +- .../event-hubs/review/event-hubs.api.md | 275 ++--- sdk/eventhub/event-hubs/samples/README.md | 2 + .../event-hubs/samples/getHubRuntimeInfo.ts | 29 - .../event-hubs/samples/interactiveLogin.ts | 32 - .../samples/loginWithAzureAccount.ts | 40 - .../event-hubs/samples/receiveEventsLoop.ts | 41 +- .../samples/receiveEventsStreaming.ts | 26 +- sdk/eventhub/event-hubs/samples/sendEvents.ts | 38 +- ...tGetHubRuntimeInfo.ts => useWithIotHub.ts} | 13 +- ...rvicePrincipalLogin.ts => usingAadAuth.ts} | 18 +- sdk/eventhub/event-hubs/samples/websockets.ts | 10 +- .../event-hubs/src/batchingReceiver.ts | 508 ++++++--- .../event-hubs/src/connectionContext.ts | 48 +- sdk/eventhub/event-hubs/src/eventData.ts | 290 +++-- sdk/eventhub/event-hubs/src/eventHubClient.ts | 529 +++++----- .../event-hubs/src/eventHubReceiver.ts | 251 +++-- sdk/eventhub/event-hubs/src/eventHubSender.ts | 228 ++-- sdk/eventhub/event-hubs/src/eventPosition.ts | 160 ++- sdk/eventhub/event-hubs/src/index.ts | 43 +- .../event-hubs/src/iothub/iothubClient.ts | 20 +- sdk/eventhub/event-hubs/src/linkEntity.ts | 87 +- .../event-hubs/src/managementClient.ts | 183 ++-- sdk/eventhub/event-hubs/src/receiver.ts | 336 ++++++ sdk/eventhub/event-hubs/src/sender.ts | 112 ++ .../event-hubs/src/streamingReceiver.ts | 144 ++- sdk/eventhub/event-hubs/src/util/constants.ts | 2 +- sdk/eventhub/event-hubs/src/util/error.ts | 38 + sdk/eventhub/event-hubs/test/client.spec.ts | 527 ++++++---- .../event-hubs/test/eventPosition.spec.ts | 33 +- .../event-hubs/test/eventdata.spec.ts | 88 +- .../event-hubs/test/hubruntime.spec.ts | 164 +-- sdk/eventhub/event-hubs/test/iothub.spec.ts | 13 +- sdk/eventhub/event-hubs/test/misc.spec.ts | 117 ++- sdk/eventhub/event-hubs/test/receiver.spec.ts | 991 ++++++++++++++---- sdk/eventhub/event-hubs/test/sender.spec.ts | 238 +++-- .../event-hubs/test/utils/testUtils.ts | 12 +- 46 files changed, 4005 insertions(+), 2378 deletions(-) delete mode 100644 sdk/eventhub/event-hubs/samples/getHubRuntimeInfo.ts delete mode 100644 sdk/eventhub/event-hubs/samples/interactiveLogin.ts delete mode 100644 sdk/eventhub/event-hubs/samples/loginWithAzureAccount.ts rename sdk/eventhub/event-hubs/samples/{iotGetHubRuntimeInfo.ts => useWithIotHub.ts} (55%) rename sdk/eventhub/event-hubs/samples/{servicePrincipalLogin.ts => usingAadAuth.ts} (71%) create mode 100644 sdk/eventhub/event-hubs/src/receiver.ts create mode 100644 sdk/eventhub/event-hubs/src/sender.ts create mode 100644 sdk/eventhub/event-hubs/src/util/error.ts diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 7d4d7c9171ac..6fa831417d94 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -93,7 +93,7 @@ dependencies: gulp: 4.0.2 gulp-zip: 4.2.0 https-proxy-agent: 2.2.1 - inherits: 2.0.3 + inherits: 2.0.4 is-buffer: 2.0.3 jssha: 2.3.1 jws: 3.2.2 @@ -134,9 +134,9 @@ dependencies: priorityqueuejs: 1.0.0 process: 0.11.10 promise: 8.0.3 - puppeteer: 1.17.0 + puppeteer: 1.18.0 qs: 6.7.0 - query-string: 6.7.0 + query-string: 6.8.1 requirejs: 2.3.6 resolve: 1.11.0 rhea: 1.0.7 @@ -169,7 +169,7 @@ dependencies: ts-mocha: 6.0.0 ts-node: 7.0.1 tslib: 1.10.0 - tslint: 5.17.0 + tslint: 5.18.0 tslint-config-prettier: 1.18.0 tslint-eslint-rules: 5.4.0 tunnel: 0.0.6 @@ -179,7 +179,7 @@ dependencies: url: 0.11.0 util: 0.11.1 uuid: 3.3.2 - webpack: 4.34.0 + webpack: 4.35.0 webpack-cli: 3.3.4 webpack-dev-middleware: 3.7.0 ws: 6.2.1 @@ -638,10 +638,10 @@ packages: dev: false resolution: integrity: sha512-OthuN+2FuzfZO3yONJ/QVjKmLEuRagS9TV9lEId+WHL9KhftYG+/2z+pxlr0UgVVXSpVD8woie/3fzQn8ft/Ow== - /@types/node/12.0.8: + /@types/node/12.0.10: dev: false resolution: - integrity: sha512-b8bbUOTwzIY3V5vDTY1fIJ+ePKDUBqt2hC2woVGotdQQhG/2Sh62HOKHrT7ab+VerXAcPyAiTEipPu/FsreUtg== + integrity: sha512-LcsGbPomWsad6wmMNv7nBLw7YYYyfdYcz6xryKYQhx89c3XXan+8Q6AJ43G5XDIaklaVkK3mE4fCb0SBvMiPSQ== /@types/node/8.10.49: dev: false resolution: @@ -1436,7 +1436,7 @@ packages: /asn1.js/4.10.1: dependencies: bn.js: 4.11.8 - inherits: 2.0.3 + inherits: 2.0.4 minimalistic-assert: 1.0.1 dev: false resolution: @@ -1486,7 +1486,7 @@ packages: dependencies: end-of-stream: 1.4.1 once: 1.4.0 - process-nextick-args: 2.0.0 + process-nextick-args: 2.0.1 stream-exhaust: 1.0.2 dev: false engines: @@ -2216,7 +2216,7 @@ packages: cipher-base: 1.0.4 create-hash: 1.2.0 evp_bytestokey: 1.0.3 - inherits: 2.0.3 + inherits: 2.0.4 safe-buffer: 5.1.2 dev: false resolution: @@ -2233,7 +2233,7 @@ packages: dependencies: cipher-base: 1.0.4 des.js: 1.0.0 - inherits: 2.0.3 + inherits: 2.0.4 safe-buffer: 5.1.2 dev: false resolution: @@ -2256,7 +2256,7 @@ packages: create-hash: 1.2.0 create-hmac: 1.1.7 elliptic: 6.4.1 - inherits: 2.0.3 + inherits: 2.0.4 parse-asn1: 5.1.4 dev: false resolution: @@ -2269,8 +2269,8 @@ packages: integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== /browserslist/3.2.8: dependencies: - caniuse-lite: 1.0.30000975 - electron-to-chromium: 1.3.165 + caniuse-lite: 1.0.30000976 + electron-to-chromium: 1.3.167 dev: false hasBin: true resolution: @@ -2458,10 +2458,10 @@ packages: node: '>=6' resolution: integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - /caniuse-lite/1.0.30000975: + /caniuse-lite/1.0.30000976: dev: false resolution: - integrity: sha512-ZsXA9YWQX6ATu5MNg+Vx/cMQ+hM6vBBSqDeJs8ruk9z0ky4yIHML15MoxcFt088ST2uyjgqyUGRJButkptWf0w== + integrity: sha512-tleNB1IwPRqZiod6nUNum63xQCMN96BUO2JTeiwuRM7p9d616EHsMBjBWJMudX39qCaPuWY8KEWzMZq7A9XQMQ== /caseless/0.12.0: dev: false resolution: @@ -2550,7 +2550,7 @@ packages: async-each: 1.0.3 braces: 2.3.2 glob-parent: 3.1.0 - inherits: 2.0.3 + inherits: 2.0.4 is-binary-path: 1.0.1 is-glob: 4.0.1 normalize-path: 3.0.0 @@ -2603,7 +2603,7 @@ packages: integrity: sha1-6a94ukf3/7kAYCk6cgoBzSbVC6s= /cipher-base/1.0.4: dependencies: - inherits: 2.0.3 + inherits: 2.0.4 safe-buffer: 5.1.2 dev: false resolution: @@ -2697,8 +2697,8 @@ packages: integrity: sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= /cloneable-readable/1.1.3: dependencies: - inherits: 2.0.3 - process-nextick-args: 2.0.0 + inherits: 2.0.4 + process-nextick-args: 2.0.1 readable-stream: 2.3.6 dev: false resolution: @@ -2824,7 +2824,7 @@ packages: /concat-stream/1.6.2: dependencies: buffer-from: 1.1.1 - inherits: 2.0.3 + inherits: 2.0.4 readable-stream: 2.3.6 typedarray: 0.0.6 dev: false @@ -2944,7 +2944,7 @@ packages: /create-hash/1.2.0: dependencies: cipher-base: 1.0.4 - inherits: 2.0.3 + inherits: 2.0.4 md5.js: 1.3.5 ripemd160: 2.0.2 sha.js: 2.4.11 @@ -2955,7 +2955,7 @@ packages: dependencies: cipher-base: 1.0.4 create-hash: 1.2.0 - inherits: 2.0.3 + inherits: 2.0.4 ripemd160: 2.0.2 safe-buffer: 5.1.2 sha.js: 2.4.11 @@ -3011,7 +3011,7 @@ packages: create-hash: 1.2.0 create-hmac: 1.1.7 diffie-hellman: 5.0.3 - inherits: 2.0.3 + inherits: 2.0.4 pbkdf2: 3.0.17 public-encrypt: 4.0.3 randombytes: 2.1.0 @@ -3243,7 +3243,7 @@ packages: integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= /des.js/1.0.0: dependencies: - inherits: 2.0.3 + inherits: 2.0.4 minimalistic-assert: 1.0.1 dev: false resolution: @@ -3334,7 +3334,7 @@ packages: /duplexify/3.7.1: dependencies: end-of-stream: 1.4.1 - inherits: 2.0.3 + inherits: 2.0.4 readable-stream: 2.3.6 stream-shift: 1.0.0 dev: false @@ -3368,17 +3368,17 @@ packages: dev: false resolution: integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - /electron-to-chromium/1.3.165: + /electron-to-chromium/1.3.167: dev: false resolution: - integrity: sha512-iIS8axR524EAnvUtWUNnREnYjQrS0zUvutIKYgTVuN3MzcjrV31EuJYKw7DGOtFO9DQw+JiXeaVDPQWMskG1wQ== + integrity: sha512-84IjpeRudjP43Q0+K7tlS7ESoHOl0W6CIdzs5reS9p+sAjCQEDiaAyiXN2v1qLUdL+Of6ZSaH4Cq6bl+sfzy8A== /elliptic/6.4.1: dependencies: bn.js: 4.11.8 brorand: 1.1.0 hash.js: 1.1.7 hmac-drbg: 1.0.1 - inherits: 2.0.3 + inherits: 2.0.4 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 dev: false @@ -3675,7 +3675,7 @@ packages: ignore: 4.0.6 import-fresh: 3.0.0 imurmurhash: 0.1.4 - inquirer: 6.3.1 + inquirer: 6.4.1 js-yaml: 3.13.1 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.3.0 @@ -4153,7 +4153,7 @@ packages: integrity: sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== /flush-write-stream/1.1.1: dependencies: - inherits: 2.0.3 + inherits: 2.0.4 readable-stream: 2.3.6 dev: false resolution: @@ -4241,7 +4241,7 @@ packages: integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= /from2/2.3.0: dependencies: - inherits: 2.0.3 + inherits: 2.0.4 readable-stream: 2.3.6 dev: false resolution: @@ -4421,7 +4421,7 @@ packages: integrity: sha1-0p4KBV3qUTj00H7UDomC6DwgZs0= /glob/3.2.11: dependencies: - inherits: 2.0.3 + inherits: 2.0.4 minimatch: 0.3.0 dev: false resolution: @@ -4429,7 +4429,7 @@ packages: /glob/5.0.15: dependencies: inflight: 1.0.6 - inherits: 2.0.3 + inherits: 2.0.4 minimatch: 3.0.4 once: 1.4.0 path-is-absolute: 1.0.1 @@ -4440,7 +4440,7 @@ packages: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 - inherits: 2.0.3 + inherits: 2.0.4 minimatch: 3.0.4 once: 1.4.0 path-is-absolute: 1.0.1 @@ -4451,7 +4451,7 @@ packages: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 - inherits: 2.0.3 + inherits: 2.0.4 minimatch: 3.0.4 once: 1.4.0 path-is-absolute: 1.0.1 @@ -4835,7 +4835,7 @@ packages: integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== /hash-base/3.0.4: dependencies: - inherits: 2.0.3 + inherits: 2.0.4 safe-buffer: 5.1.2 dev: false engines: @@ -4844,7 +4844,7 @@ packages: integrity: sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= /hash.js/1.1.7: dependencies: - inherits: 2.0.3 + inherits: 2.0.4 minimalistic-assert: 1.0.1 dev: false resolution: @@ -5041,11 +5041,15 @@ packages: dev: false resolution: integrity: sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + /inherits/2.0.4: + dev: false + resolution: + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== /ini/1.3.5: dev: false resolution: integrity: sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - /inquirer/6.3.1: + /inquirer/6.4.1: dependencies: ansi-escapes: 3.2.0 chalk: 2.4.2 @@ -5064,7 +5068,7 @@ packages: engines: node: '>=6.0.0' resolution: - integrity: sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA== + integrity: sha512-/Jw+qPZx4EDYsaT6uz7F4GJRNFMRdKNeUZw3ZnKV8lyuUgz/YWRCSUAJMZSVhSq4Ec0R2oYnyi6b3d4JXcL5Nw== /interpret/1.2.0: dev: false engines: @@ -5865,7 +5869,7 @@ packages: acorn-walk: 6.1.1 babel-core: 6.26.3 babel-preset-env: 1.7.0 - log4js: 4.3.1 + log4js: 4.3.2 magic-string: 0.25.2 dev: false resolution: @@ -5885,15 +5889,15 @@ packages: webpack: ^4.0.0 resolution: integrity: sha512-970/okAsdUOmiMOCY8sb17A2I8neS25Ad9uhyK3GHgmRSIFJbDcNEFE8dqqUhNe9OHiCC9k3DMrSmtd/0ymP1A== - /karma-webpack/4.0.2_webpack@4.34.0: + /karma-webpack/4.0.2_webpack@4.35.0: 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.34.0 - webpack-dev-middleware: 3.7.0_webpack@4.34.0 + webpack: 4.35.0 + webpack-dev-middleware: 3.7.0_webpack@4.35.0 dev: false engines: node: '>= 8.9.0' @@ -5918,7 +5922,7 @@ packages: http-proxy: 1.17.0 isbinaryfile: 3.0.3 lodash: 4.17.11 - log4js: 4.3.1 + log4js: 4.3.2 mime: 2.4.4 minimatch: 3.0.4 optimist: 0.6.1 @@ -6161,7 +6165,7 @@ packages: node: '>=6.0' resolution: integrity: sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ== - /log4js/4.3.1: + /log4js/4.3.2: dependencies: date-format: 2.0.0 debug: 4.1.1 @@ -6172,7 +6176,7 @@ packages: engines: node: '>=6.0' resolution: - integrity: sha512-nPGS7w7kBnzNm1j8JycFxwLCbIMae8tHCo0cCdx/khB20Tcod8SZThYEB9E0c27ObcTGA1mlPowaf3hantQ/FA== + integrity: sha512-72GjgSP+ifL156MD/bXEhE7UlFLKS2KkCXujodb1nl1z6PpKhCfS+41dyNQ7zKi4iM49TQl+aWLEISXGLcGCCQ== /loglevel/1.6.3: dev: false engines: @@ -6330,14 +6334,14 @@ packages: /md5.js/1.3.4: dependencies: hash-base: 3.0.4 - inherits: 2.0.3 + inherits: 2.0.4 dev: false resolution: integrity: sha1-6b296UogpawYsENA/Fdk1bCdkB0= /md5.js/1.3.5: dependencies: hash-base: 3.0.4 - inherits: 2.0.3 + inherits: 2.0.4 safe-buffer: 5.1.2 dev: false resolution: @@ -7311,7 +7315,7 @@ packages: /parallel-transform/1.1.0: dependencies: cyclist: 0.2.2 - inherits: 2.0.3 + inherits: 2.0.4 readable-stream: 2.3.6 dev: false resolution: @@ -7620,10 +7624,10 @@ packages: dev: false resolution: integrity: sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= - /process-nextick-args/2.0.0: + /process-nextick-args/2.0.1: dev: false resolution: - integrity: sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== /process/0.11.10: dev: false engines: @@ -7673,10 +7677,10 @@ packages: dev: false resolution: integrity: sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - /psl/1.1.32: + /psl/1.1.33: dev: false resolution: - integrity: sha512-MHACAkHpihU/REGGPLj4sEfc/XKW2bheigvHO1dUqjaKigMp1C8+WLQYRGgeKFMsw5PMfegZcaN8IDXK/cD0+g== + integrity: sha512-LTDP2uSrsc7XCb5lO7A8BI1qYxRe/8EqlRvMeEl6rsnYAqDOl8xHR+8lSAIVfrNaSAlTPTNOCgNjWcoUL3AZsw== /public-encrypt/4.0.3: dependencies: bn.js: 4.11.8 @@ -7705,7 +7709,7 @@ packages: /pumpify/1.5.1: dependencies: duplexify: 3.7.1 - inherits: 2.0.3 + inherits: 2.0.4 pump: 2.0.1 dev: false resolution: @@ -7724,7 +7728,7 @@ packages: node: '>=6' resolution: integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - /puppeteer/1.17.0: + /puppeteer/1.18.0: dependencies: debug: 4.1.1 extract-zip: 1.6.7 @@ -7739,7 +7743,7 @@ packages: node: '>=6.4.0' requiresBuild: true resolution: - integrity: sha512-3EXZSximCzxuVKpIHtyec8Wm2dWZn1fc5tQi34qWfiUgubEVYHjUvr0GOJojqf3mifI6oyKnCdrGxaOI+lWReA== + integrity: sha512-NCwSN4wEIj43k4jO8Asa5nzibrIDFHWykqkZFjkGr0/f6U73k1ysql0gadQmOGLtZewXvvWqlNo+4ZMgX+5vZA== /qjobs/1.2.0: dev: false engines: @@ -7758,7 +7762,7 @@ packages: node: '>=0.6' resolution: integrity: sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - /query-string/6.7.0: + /query-string/6.8.1: dependencies: decode-uri-component: 0.2.0 split-on-first: 1.1.0 @@ -7767,7 +7771,7 @@ packages: engines: node: '>=6' resolution: - integrity: sha512-oQ01H1jrgDRbPq5SjtJF470S418GOrKkds+fpvAt6DQatHXl7bmkaJulHbTIM+QNGtoPpa8f5k9W3Zk50zXRPQ== + integrity: sha512-g6y0Lbq10a5pPQpjlFuojfMfV1Pd2Jw9h75ypiYPPia3Gcq2rgkKiIwbkS6JxH7c5f5u/B/sB+d13PU+g1eu4Q== /querystring-es3/0.2.1: dev: false engines: @@ -7866,7 +7870,7 @@ packages: /readable-stream/2.0.6: dependencies: core-util-is: 1.0.2 - inherits: 2.0.3 + inherits: 2.0.4 isarray: 1.0.0 process-nextick-args: 1.0.7 string_decoder: 0.10.31 @@ -7877,9 +7881,9 @@ packages: /readable-stream/2.3.6: dependencies: core-util-is: 1.0.2 - inherits: 2.0.3 + inherits: 2.0.4 isarray: 1.0.0 - process-nextick-args: 2.0.0 + process-nextick-args: 2.0.1 safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 @@ -8222,7 +8226,7 @@ packages: /ripemd160/2.0.2: dependencies: hash-base: 3.0.4 - inherits: 2.0.3 + inherits: 2.0.4 dev: false resolution: integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== @@ -8419,7 +8423,7 @@ packages: /rollup/1.13.1: dependencies: '@types/estree': 0.0.39 - '@types/node': 12.0.8 + '@types/node': 12.0.10 acorn: 6.1.1 dev: false hasBin: true @@ -8581,7 +8585,7 @@ packages: integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== /sha.js/2.4.11: dependencies: - inherits: 2.0.3 + inherits: 2.0.4 safe-buffer: 5.1.2 dev: false hasBin: true @@ -8928,7 +8932,7 @@ packages: integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= /stream-browserify/2.0.2: dependencies: - inherits: 2.0.3 + inherits: 2.0.4 readable-stream: 2.3.6 dev: false resolution: @@ -8947,7 +8951,7 @@ packages: /stream-http/2.8.3: dependencies: builtin-status-codes: 3.0.0 - inherits: 2.0.3 + inherits: 2.0.4 readable-stream: 2.3.6 to-arraybuffer: 1.0.1 xtend: 4.0.1 @@ -9364,7 +9368,7 @@ packages: integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== /tough-cookie/2.4.3: dependencies: - psl: 1.1.32 + psl: 1.1.33 punycode: 1.4.1 dev: false engines: @@ -9373,7 +9377,7 @@ packages: integrity: sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== /tough-cookie/2.5.0: dependencies: - psl: 1.1.32 + psl: 1.1.33 punycode: 2.1.1 dev: false engines: @@ -9507,11 +9511,11 @@ packages: typescript: ^2.2.0 || ^3.0.0 resolution: integrity: sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w== - /tslint-eslint-rules/5.4.0_tslint@5.17.0+typescript@3.5.2: + /tslint-eslint-rules/5.4.0_tslint@5.18.0+typescript@3.5.2: dependencies: doctrine: 0.7.2 tslib: 1.9.0 - tslint: 5.17.0_typescript@3.5.2 + tslint: 5.18.0_typescript@3.5.2 tsutils: 3.14.0_typescript@3.5.2 typescript: 3.5.2 dev: false @@ -9520,7 +9524,7 @@ packages: typescript: ^2.2.0 || ^3.0.0 resolution: integrity: sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w== - /tslint/5.17.0: + /tslint/5.18.0: dependencies: '@babel/code-frame': 7.0.0 builtin-modules: 1.1.1 @@ -9540,10 +9544,10 @@ packages: node: '>=4.8.0' hasBin: true peerDependencies: - typescript: '>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev' + typescript: '>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev' resolution: - integrity: sha512-pflx87WfVoYepTet3xLfDOLDm9Jqi61UXIKePOuca0qoAZyrGWonDG9VTbji58Fy+8gciUn8Bt7y69+KEVjc/w== - /tslint/5.17.0_typescript@3.5.2: + integrity: sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w== + /tslint/5.18.0_typescript@3.5.2: dependencies: '@babel/code-frame': 7.0.0 builtin-modules: 1.1.1 @@ -9564,9 +9568,9 @@ packages: node: '>=4.8.0' hasBin: true peerDependencies: - typescript: '>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev' + typescript: '>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev' resolution: - integrity: sha512-pflx87WfVoYepTet3xLfDOLDm9Jqi61UXIKePOuca0qoAZyrGWonDG9VTbji58Fy+8gciUn8Bt7y69+KEVjc/w== + integrity: sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w== /tsutils/2.29.0: dependencies: tslib: 1.10.0 @@ -10045,7 +10049,7 @@ packages: requiresBuild: true resolution: integrity: sha512-ubJGQEKMtBSpT+LiL5hXvn2GIOWiRWItR1DGUqJRhwRBeGhpRXjvF5f0erqdRJLErkfqS5/Ldkkedh4AL5Q1ZQ== - /webpack-cli/3.3.4_webpack@4.34.0: + /webpack-cli/3.3.4_webpack@4.35.0: dependencies: chalk: 2.4.2 cross-spawn: 6.0.5 @@ -10058,7 +10062,7 @@ packages: prettier: 1.18.2 supports-color: 5.5.0 v8-compile-cache: 2.0.3 - webpack: 4.34.0 + webpack: 4.35.0 yargs: 12.0.5 dev: false engines: @@ -10082,12 +10086,12 @@ packages: webpack: ^4.0.0 resolution: integrity: sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA== - /webpack-dev-middleware/3.7.0_webpack@4.34.0: + /webpack-dev-middleware/3.7.0_webpack@4.35.0: dependencies: memory-fs: 0.4.1 mime: 2.4.4 range-parser: 1.2.1 - webpack: 4.34.0 + webpack: 4.35.0 webpack-log: 2.0.0 dev: false engines: @@ -10112,7 +10116,7 @@ packages: dev: false resolution: integrity: sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== - /webpack/4.34.0: + /webpack/4.35.0: dependencies: '@webassemblyjs/ast': 1.8.5 '@webassemblyjs/helper-module-context': 1.8.5 @@ -10143,7 +10147,7 @@ packages: node: '>=6.11.5' hasBin: true resolution: - integrity: sha512-ry2IQy1wJjOefLe1uJLzn5tG/DdIKzQqNlIAd2L84kcaADqNvQDTBlo8UcCNyDaT5FiaB+16jhAkb63YeG3H8Q== + integrity: sha512-M5hL3qpVvtr8d4YaJANbAQBc4uT01G33eDpl/psRTBCfjxFTihdhin1NtAKB1ruDwzeVdcsHHV3NX+QsAgOosw== /which-module/1.0.0: dev: false resolution: @@ -10511,7 +10515,7 @@ packages: dev: false name: '@rush-temp/abort-controller' resolution: - integrity: sha512-l6JEG/bg17C/lFU07jBfNRTbAOP6eqg5Ufrk/7Y+BS/3e1jiUuiakOhHJHEYUWr/DvEzOPxBBj1AQQaIGIxx/Q== + integrity: sha512-H8Cse6POgoCP4/zJkLoHvKbGzJy9Ac7cxUcrmGJqwVL1nSqB271EK93XNgJhaubSiY8akg5Y3KQjvjWfLhIiMg== tarball: 'file:projects/abort-controller.tgz' version: 0.0.0 'file:projects/core-amqp.tgz': @@ -10555,7 +10559,7 @@ packages: nyc: 14.1.1 prettier: 1.18.2 process: 0.11.10 - puppeteer: 1.17.0 + puppeteer: 1.18.0 rhea: 1.0.7 rhea-promise: 0.1.15 rimraf: 2.6.3 @@ -10574,7 +10578,7 @@ packages: stream-browserify: 2.0.2 ts-node: 7.0.1 tslib: 1.10.0 - tslint: 5.17.0_typescript@3.5.2 + tslint: 5.18.0_typescript@3.5.2 typescript: 3.5.2 url: 0.11.0 util: 0.11.1 @@ -10582,7 +10586,7 @@ packages: dev: false name: '@rush-temp/core-amqp' resolution: - integrity: sha512-f8B3dXjSZfHnofgu6xYSg8pEblPbSHB0MUM2ZhhOQXd6oDmaYxY7qm0Hb3abDIvzZ/if/9983vERMSDfCTIdig== + integrity: sha512-nJlAlDhj4cejGe4qJXRZJcXvqHXHuTtaDZwXZj9ZEauue5jl7aC6Z/D6R9/GOsUeTzU+aNaVOup1GV/TrUPnUQ== tarball: 'file:projects/core-amqp.tgz' version: 0.0.0 'file:projects/core-http.tgz': @@ -10617,7 +10621,7 @@ packages: karma-rollup-preprocessor: 7.0.0_rollup@1.13.1 karma-sourcemap-loader: 0.3.7 karma-typescript-es6-transform: 4.1.0 - karma-webpack: 4.0.2_webpack@4.34.0 + karma-webpack: 4.0.2_webpack@4.35.0 mocha: 5.2.0 mocha-chrome: 1.1.0 mocha-junit-reporter: 1.23.0_mocha@5.2.0 @@ -10625,7 +10629,7 @@ packages: npm-run-all: 4.1.5 nyc: 14.1.1 opn-cli: 4.1.0 - puppeteer: 1.17.0 + puppeteer: 1.18.0 rimraf: 2.6.3 rollup: 1.13.1 rollup-plugin-alias: 1.5.2 @@ -10643,22 +10647,22 @@ packages: ts-loader: 5.4.5_typescript@3.5.2 ts-node: 7.0.1 tslib: 1.10.0 - tslint: 5.17.0_typescript@3.5.2 - tslint-eslint-rules: 5.4.0_tslint@5.17.0+typescript@3.5.2 + tslint: 5.18.0_typescript@3.5.2 + tslint-eslint-rules: 5.4.0_tslint@5.18.0+typescript@3.5.2 tunnel: 0.0.6 typescript: 3.5.2 uglify-js: 3.6.0 uuid: 3.3.2 - webpack: 4.34.0 - webpack-cli: 3.3.4_webpack@4.34.0 - webpack-dev-middleware: 3.7.0_webpack@4.34.0 + webpack: 4.35.0 + webpack-cli: 3.3.4_webpack@4.35.0 + webpack-dev-middleware: 3.7.0_webpack@4.35.0 xhr-mock: 2.4.1 xml2js: 0.4.19 yarn: 1.16.0 dev: false name: '@rush-temp/core-http' resolution: - integrity: sha512-HbcNk9UkGfjw4naiZ0IgsvrULwH5KwvUgFy308nd4uoxyp/mX++2YAGNwa/6yQ6XOliMgawN5Cw9T5FANgLK/Q== + integrity: sha512-XJsitZXsH7cVKnhXhNnw8uqVzBQkVLs6PiVwpuJkjvU1IwcBgwa8+GenYkUe7trkoo9De/l/4zyjiJJT3ue0rQ== tarball: 'file:projects/core-http.tgz' version: 0.0.0 'file:projects/core-paging.tgz': @@ -10677,7 +10681,7 @@ packages: dev: false name: '@rush-temp/core-paging' resolution: - integrity: sha512-eLAR9AN8LadE5YVf0mWhR9fdw88LmL2w9QAp+Jn1A5OMy0dgjXFyXRO2UbozpWjw/PZRoMLyPCdyhUrWzyex/A== + integrity: sha512-x2h8RkvKkL0wEgA4+BQocp2jbHHQaIn0gDYpb7R3L+UN11b7paUoTP2hRdHUdkyxQxat6ZdQOaYrgSb/E7b9XA== tarball: 'file:projects/core-paging.tgz' version: 0.0.0 'file:projects/cosmos.tgz': @@ -10704,16 +10708,16 @@ packages: stream-http: 2.8.3 ts-node: 7.0.1 tslib: 1.10.0 - tslint: 5.17.0_typescript@3.5.2 + tslint: 5.18.0_typescript@3.5.2 tslint-config-prettier: 1.18.0 tunnel: 0.0.6 typescript: 3.5.2 - webpack: 4.34.0 - webpack-cli: 3.3.4_webpack@4.34.0 + webpack: 4.35.0 + webpack-cli: 3.3.4_webpack@4.35.0 dev: false name: '@rush-temp/cosmos' resolution: - integrity: sha512-TOCQxf0WCu5cMmRg0MctcaHctzwWutcqwTA3XgzcCtCCNwzBVphmtVm5zNNUqQcBzagPy9B2NOTdFAr0kHzs1g== + integrity: sha512-hDPu35nMHd5kOJ1usQVlocG4FLNMv6kB2iBAZmjBUdu4+3fPqZs/Ix05f7n6hrMD94QnPIgaxoDv27IEI/SiQg== tarball: 'file:projects/cosmos.tgz' version: 0.0.0 'file:projects/event-hubs.tgz': @@ -10767,7 +10771,7 @@ packages: mocha-multi: 1.1.0_mocha@5.2.0 nyc: 14.1.1 prettier: 1.18.2 - puppeteer: 1.17.0 + puppeteer: 1.18.0 rhea-promise: 0.1.15 rimraf: 2.6.3 rollup: 1.13.1 @@ -10782,14 +10786,14 @@ packages: rollup-plugin-uglify: 6.0.2_rollup@1.13.1 ts-node: 7.0.1 tslib: 1.10.0 - tslint: 5.17.0_typescript@3.5.2 + tslint: 5.18.0_typescript@3.5.2 typescript: 3.5.2 uuid: 3.3.2 ws: 6.2.1 dev: false name: '@rush-temp/event-hubs' resolution: - integrity: sha512-EdPbH1oAKcQF4RUuyZugLCsLr6M3+PTtuqATUydPRgWb/VVJt799brK7ewhXj2jSLv/hYIfzR3cZkAf3xwoSyA== + integrity: sha512-X7qgsfN6+iWW37n/cYAjmEHKpqFiMUDBoZnmMjoXdkkjltLhgK/UaCgKIdiEcx9dkz0elOw5uiD5PnTIBjVe9Q== tarball: 'file:projects/event-hubs.tgz' version: 0.0.0 'file:projects/event-processor-host.tgz': @@ -10839,13 +10843,13 @@ packages: rollup-plugin-uglify: 6.0.2_rollup@1.13.1 ts-node: 7.0.1 tslib: 1.10.0 - tslint: 5.17.0_typescript@3.5.2 + tslint: 5.18.0_typescript@3.5.2 typescript: 3.5.2 uuid: 3.3.2 dev: false name: '@rush-temp/event-processor-host' resolution: - integrity: sha512-9sbJ/u2YQVTsANNr6yhKfeCYC0GZbWMZImZJW8QrfsWMQ4k8OPmKy5INugZ/usCyBHmkacAZ3ldJLa0PradZaw== + integrity: sha512-dauAcYGuI48YlkBAqihRDDxTj7L3eDvQYfdtmXA8lX3LygOqvga8J0ZLnpQO8Ky17MEez/ASLz+i6eYvHKekLA== tarball: 'file:projects/event-processor-host.tgz' version: 0.0.0 'file:projects/identity.tgz': @@ -10861,7 +10865,7 @@ packages: cross-env: 5.2.0 eslint: 5.16.0 events: 3.0.0 - inherits: 2.0.3 + inherits: 2.0.4 jws: 3.2.2 mocha: 5.2.0 mocha-junit-reporter: 1.23.0_mocha@5.2.0 @@ -10885,7 +10889,7 @@ packages: dev: false name: '@rush-temp/identity' resolution: - integrity: sha512-1sYHcU2pE+7+9IRqVMHdZ8eTwoqLL7x4G1igBwzsTe11JdyASIuD079DoSlp+3B2s9wcC6dADDGz48K+q9swmA== + integrity: sha512-bvnHY0lfDMLcLhTtjYI5RepuaULz/oR+Y5stUz3bzTduBLc5SOE7U7WGRjrdjY2vtRgJGU7ttY8G+2oi7QNcWg== tarball: 'file:projects/identity.tgz' version: 0.0.0 'file:projects/keyvault-certificates.tgz': @@ -10905,7 +10909,7 @@ packages: dev: false name: '@rush-temp/keyvault-certificates' resolution: - integrity: sha512-CbBoSMACt2Iv4WzEAIwVR0BD2KWRN6N/uYlmFQWsQGZ2tUJf5yJIBbWKCkjWlqjbo8WHkN0i+HGv77kFIiFC5g== + integrity: sha512-HZXJoGgYoJGpA3IUPN+pd3dnBoscJ0lcWyz2WeVMJxza8Px7xhCd+jjYVtYplnFHlB7JZYG74N6tI5FmXzEr7g== tarball: 'file:projects/keyvault-certificates.tgz' version: 0.0.0 'file:projects/keyvault-keys.tgz': @@ -10916,13 +10920,22 @@ packages: '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 '@types/nock': 10.0.3 + '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/parser': 1.10.2_eslint@5.16.0+typescript@3.5.2 chai: 4.2.0 + cross-env: 5.2.0 dotenv: 7.0.0 + eslint: 5.16.0 + eslint-config-prettier: 4.3.0_eslint@5.16.0 + eslint-detailed-reporter: 0.8.0_eslint@5.16.0 + eslint-plugin-no-null: 1.0.2_eslint@5.16.0 + eslint-plugin-no-only-tests: 2.3.1 + eslint-plugin-promise: 4.1.1 fs-extra: 8.0.1 mocha: 5.2.0 nock: 10.0.6 prettier: 1.18.2 - query-string: 6.7.0 + query-string: 6.8.1 rimraf: 2.6.3 rollup: 1.13.1 rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 @@ -10935,7 +10948,7 @@ packages: dev: false name: '@rush-temp/keyvault-keys' resolution: - integrity: sha512-K6c3KsPD2e9c2hXDDiXlE6RDQmwgjDfS9Xw9T6eZqcn5/1iQhzcv7KuqAX3xCRHExkHs1M8z2Ok60yv6TPNW5Q== + integrity: sha512-Oo6mjfT3g77xzxM3gFxP/aVfsP0UECJwtQApW0G3HhCWtaqTZKotGNXmTyXEIm2eTnmlSgCJt8Wk+WDyXJYaaw== tarball: 'file:projects/keyvault-keys.tgz' version: 0.0.0 'file:projects/keyvault-secrets.tgz': @@ -10948,8 +10961,17 @@ packages: '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 '@types/nock': 10.0.3 + '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/parser': 1.10.2_eslint@5.16.0+typescript@3.5.2 chai: 4.2.0 + cross-env: 5.2.0 dotenv: 7.0.0 + eslint: 5.16.0 + eslint-config-prettier: 4.3.0_eslint@5.16.0 + eslint-detailed-reporter: 0.8.0_eslint@5.16.0 + eslint-plugin-no-null: 1.0.2_eslint@5.16.0 + eslint-plugin-no-only-tests: 2.3.1 + eslint-plugin-promise: 4.1.1 fs-extra: 8.0.1 mocha: 5.2.0 nock: 10.0.6 @@ -10966,7 +10988,7 @@ packages: dev: false name: '@rush-temp/keyvault-secrets' resolution: - integrity: sha512-H4UES51GjlOFEUkUn2EBlDqZl0Rrri6FyLAuj2xSXCoaymc/XYHx5KI/aoLn1uBdGxtKd2dbkRb7GIDvd+3pMQ== + integrity: sha512-TBirMh7GCiAiHWWrm5ahXbql4CtJr8uJB4oZO3aNxhJNw9PKRFY985jG+yV5mQGG6NQB4ZLS7v9IWzsiPhXcGA== tarball: 'file:projects/keyvault-secrets.tgz' version: 0.0.0 'file:projects/service-bus.tgz': @@ -11023,7 +11045,7 @@ packages: prettier: 1.18.2 process: 0.11.10 promise: 8.0.3 - puppeteer: 1.17.0 + puppeteer: 1.18.0 rhea: 1.0.7 rhea-promise: 0.1.15 rimraf: 2.6.3 @@ -11044,7 +11066,7 @@ packages: dev: false name: '@rush-temp/service-bus' resolution: - integrity: sha512-K1pA/zwSt0rbFFefjO4SZOl+Y9kHyqKV8ZnlmMXPAfzHZ05qAHM7Uadjo6CROCHokOZtEwqPBqjpDr8rA1A/+A== + integrity: sha512-4XUjuozVLDCw66qUewvs40VBuBN5FFtJVgNi/XHdeCo5lKDL+N6MhPkzKlhe+LrMIdWaNlSxj/EnVnP1/aqgFg== tarball: 'file:projects/service-bus.tgz' version: 0.0.0 'file:projects/storage-blob.tgz': @@ -11073,7 +11095,7 @@ packages: fs-extra: 8.0.1 gulp: 4.0.2 gulp-zip: 4.2.0 - inherits: 2.0.3 + inherits: 2.0.4 karma: 4.1.0 karma-chrome-launcher: 2.2.0 karma-coverage: 1.1.2 @@ -11094,8 +11116,8 @@ packages: nock: 10.0.6 nyc: 14.1.1 prettier: 1.18.2 - puppeteer: 1.17.0 - query-string: 6.7.0 + puppeteer: 1.18.0 + query-string: 6.8.1 rimraf: 2.6.3 rollup: 1.13.1 rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 @@ -11114,7 +11136,7 @@ packages: dev: false name: '@rush-temp/storage-blob' resolution: - integrity: sha512-WJdFCSQL+1tIPJnfmMLYBeFwavPo2h0FFLippjNnrUfa8Fto2EUNjdhHEdZCcvv06rhrqIpZdeHS/oU+JEx2Zw== + integrity: sha512-VMNSQO7EgUxKgFYMuBcJdNnmqhFFHLp4E0iVn8VS7OKnKZCwFcm9LkhVyMQ/jVy8THybMC1UFiZtn62nCqwh3A== tarball: 'file:projects/storage-blob.tgz' version: 0.0.0 'file:projects/storage-datalake.tgz': @@ -11139,7 +11161,7 @@ packages: dev: false name: '@rush-temp/storage-datalake' resolution: - integrity: sha512-sTDsKpyR8yBNUZsiI4qyvBrvY3FPtonrzQQg4mI5K8b6Qs+ij4+NZvN50IZJArXJKy9dRVjhySSSYMuKI2j59A== + integrity: sha512-hIuJN5ntLPQutEA8Dh2stmWs2WHtANAnc1GmkaXpUKlyGDEx5y/qnIvQfaaHP19kxxqDLUZSHF0Jf6af+TrQtw== tarball: 'file:projects/storage-datalake.tgz' version: 0.0.0 'file:projects/storage-file.tgz': @@ -11168,7 +11190,7 @@ packages: fs-extra: 8.0.1 gulp: 4.0.2 gulp-zip: 4.2.0 - inherits: 2.0.3 + inherits: 2.0.4 karma: 4.1.0 karma-chrome-launcher: 2.2.0 karma-coverage: 1.1.2 @@ -11189,8 +11211,8 @@ packages: nock: 10.0.6 nyc: 14.1.1 prettier: 1.18.2 - puppeteer: 1.17.0 - query-string: 6.7.0 + puppeteer: 1.18.0 + query-string: 6.8.1 rimraf: 2.6.3 rollup: 1.13.1 rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 @@ -11209,7 +11231,7 @@ packages: dev: false name: '@rush-temp/storage-file' resolution: - integrity: sha512-INgQrtnGxnwj3+CZgCMZys3Hi44dK5xFD9N9ccwRh6LgqNyA1ySNOB/7W9lFXSVsWijaEh7wVOk1Y7hArxa0uQ== + integrity: sha512-tp1TYru1KEXFa3QzUmsDUbWG6sjKG6vJdkEVV1L9qJglFnFEHntwvt48A6I8Mf1oDv/V4m1M8uQC6PghW02Euw== tarball: 'file:projects/storage-file.tgz' version: 0.0.0 'file:projects/storage-queue.tgz': @@ -11237,7 +11259,7 @@ packages: fs-extra: 8.0.1 gulp: 4.0.2 gulp-zip: 4.2.0 - inherits: 2.0.3 + inherits: 2.0.4 karma: 4.1.0 karma-chrome-launcher: 2.2.0 karma-coverage: 1.1.2 @@ -11258,8 +11280,8 @@ packages: nock: 10.0.6 nyc: 14.1.1 prettier: 1.18.2 - puppeteer: 1.17.0 - query-string: 6.7.0 + puppeteer: 1.18.0 + query-string: 6.8.1 rimraf: 2.6.3 rollup: 1.13.1 rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 @@ -11278,7 +11300,7 @@ packages: dev: false name: '@rush-temp/storage-queue' resolution: - integrity: sha512-P86uXTAbBWsPEzKYjBKhNZzP2+3Uiv2yjyolqK3ti+qcZm66FhjfbxqGQLNPcyXZr5I5WqBQK5syKVxJL1PGxQ== + integrity: sha512-hI7nRSTbI1CHZrhKz6p5XYcP30bXHn9+SBqdEBXFuvrEydK4EsqJzVQjOtsKnnWnHJZCu019OF8WCTosB6bHmw== tarball: 'file:projects/storage-queue.tgz' version: 0.0.0 'file:projects/template.tgz': @@ -11298,7 +11320,7 @@ packages: eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.1.1 events: 3.0.0 - inherits: 2.0.3 + inherits: 2.0.4 mocha: 5.2.0 mocha-junit-reporter: 1.23.0_mocha@5.2.0 mocha-multi: 1.1.0_mocha@5.2.0 @@ -11319,7 +11341,7 @@ packages: dev: false name: '@rush-temp/template' resolution: - integrity: sha512-rd4CW97netBkelzHHnFQzl82qWKMFgXBX2mKgn2QDSkf5ut+lFIWwefPVApinb6gHv2ruwyOnFSIDvxYC0hLdg== + integrity: sha512-PEgIhAcw+YW01MIVExCC20nDvqSQ0LXmkM3330crTS7Q51dzXi2Zd9F03bys1oRQ4DFZss9vD4lwyv/5PZCaZw== tarball: 'file:projects/template.tgz' version: 0.0.0 'file:projects/testhub.tgz': @@ -11344,9 +11366,10 @@ packages: dev: false name: '@rush-temp/testhub' resolution: - integrity: sha512-c3cFI0Our99carkgcyOFLmX5QRh5fIqyVv9S75VRX7woNtBGXPvWRE8VOxEN9o8N8FjSEQzc6PPEO6YRz7ok8Q== + integrity: sha512-+7/S5QILzUUjTQx8iAqLnUHRABhgKs/lVmB5/+F0s9n2n+MZZ7hHhzW3B/efbVCXv6xt+7eFwVT4g0mmX5lGyw== tarball: 'file:projects/testhub.tgz' version: 0.0.0 +registry: '' specifiers: '@azure/amqp-common': ^1.0.0-preview.5 '@azure/arm-servicebus': ^0.1.0 diff --git a/sdk/core/core-amqp/package.json b/sdk/core/core-amqp/package.json index fb8360434e9d..e042beaf0900 100644 --- a/sdk/core/core-amqp/package.json +++ b/sdk/core/core-amqp/package.json @@ -51,6 +51,7 @@ "url": "http://github.com/Azure/azure-sdk-for-js/issues" }, "dependencies": { + "@azure/abort-controller": "1.0.0-preview.1", "@azure/ms-rest-nodeauth": "^0.9.2", "@types/async-lock": "^1.1.0", "@types/is-buffer": "^2.0.0", diff --git a/sdk/core/core-amqp/src/errors.ts b/sdk/core/core-amqp/src/errors.ts index 67648b1289e6..d01444cc9c15 100644 --- a/sdk/core/core-amqp/src/errors.ts +++ b/sdk/core/core-amqp/src/errors.ts @@ -562,7 +562,14 @@ export function translate(err: AmqpError | Error): MessagingError { // Built-in errors like TypeError and RangeError should not be retryable as these indicate issues // with user input and not an issue with the Messaging process. - if (err instanceof TypeError || err instanceof RangeError) { + if ( + err instanceof TypeError || + err instanceof RangeError || + // instanceof checks on custom Errors doesn't work without manually setting the prototype within the error. + // Must do a name check until AbortError is updated, and that doesn't break compatibility + // https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work + (err as Error).name === "AbortError" + ) { error.retryable = false; return error; } diff --git a/sdk/core/core-amqp/src/index.ts b/sdk/core/core-amqp/src/index.ts index 55b9d25af870..3c71643e771e 100644 --- a/sdk/core/core-amqp/src/index.ts +++ b/sdk/core/core-amqp/src/index.ts @@ -7,7 +7,7 @@ export { RequestResponseLink, SendRequestOptions } from "./requestResponseLink"; export { retry, RetryConfig, RetryOperationType } from "./retry"; export { DataTransformer, DefaultDataTransformer } from "./dataTransformer"; export { TokenType } from "./auth/token"; -export { AccessToken, TokenCredential } from "@azure/core-http"; +export { AccessToken, TokenCredential, isTokenCredential } from "@azure/core-http"; export { SharedKeyCredential } from "./auth/sas"; export { IotSharedKeyCredential } from "./auth/iotSas"; diff --git a/sdk/core/core-amqp/src/requestResponseLink.ts b/sdk/core/core-amqp/src/requestResponseLink.ts index 20af5279edc7..12e5d3d21389 100644 --- a/sdk/core/core-amqp/src/requestResponseLink.ts +++ b/sdk/core/core-amqp/src/requestResponseLink.ts @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. +import { AbortSignalLike, AbortError } from "@azure/abort-controller"; import * as Constants from "./util/constants"; import { retry, RetryConfig, RetryOperationType } from "./retry"; import { @@ -25,6 +26,10 @@ import * as log from "./log"; * @interface SendRequestOptions */ export interface SendRequestOptions { + /** + * @property {AbortSignalLike} [abortSignal] Cancels the operation. + */ + abortSignal?: AbortSignalLike; /** * @property {number} [timeoutInSeconds] Max time to wait for the operation to complete. * Default: `10 seconds`. @@ -40,6 +45,10 @@ export interface SendRequestOptions { * next attempt. Default: 15. */ delayInSeconds?: number; + /** + * @property {string} [requestName] Name of the request being performed. + */ + requestName?: string; } /** @@ -53,11 +62,7 @@ export class RequestResponseLink implements ReqResLink { * @param {Sender} sender The amqp sender link. * @param {Receiver} receiver The amqp receiver link. */ - constructor( - public session: Session, - public sender: Sender, - public receiver: Receiver - ) { + constructor(public session: Session, public sender: Sender, public receiver: Receiver) { this.session = session; this.sender = sender; this.receiver = receiver; @@ -76,9 +81,7 @@ export class RequestResponseLink implements ReqResLink { * @returns {boolean} boolean - `true` - `open`, `false` - `closed`. */ isOpen(): boolean { - return ( - this.session.isOpen() && this.sender.isOpen() && this.receiver.isOpen() - ); + return this.session.isOpen() && this.sender.isOpen() && this.receiver.isOpen(); } /** @@ -91,10 +94,7 @@ export class RequestResponseLink implements ReqResLink { * @param {SendRequestOptions} [options] Options that can be provided while sending a request. * @returns {Promise} Promise The AMQP (response) message. */ - sendRequest( - request: AmqpMessage, - options?: SendRequestOptions - ): Promise { + sendRequest(request: AmqpMessage, options?: SendRequestOptions): Promise { if (!options) options = {}; if (!options.timeoutInSeconds) { @@ -102,6 +102,7 @@ export class RequestResponseLink implements ReqResLink { } let count: number = 0; + const aborter: AbortSignalLike | undefined = options && options.abortSignal; const sendRequestPromise = () => new Promise((resolve: any, reject: any) => { @@ -122,25 +123,59 @@ export class RequestResponseLink implements ReqResLink { request.message_id = generate_uuid(); } + const rejectOnAbort = () => { + const address = this.receiver.address || "address"; + const requestName = options!.requestName; + const desc: string = + `[${this.connection.id}] The request "${requestName}" ` + + `to "${address}" has been cancelled by the user.`; + log.error(desc); + const error = new AbortError( + `The ${requestName ? requestName + " " : ""}operation has been cancelled by the user.` + ); + + reject(error); + }; + + const onAbort = () => { + // remove the event listener as this will be registered next time someone makes a request. + this.receiver.removeListener(ReceiverEvents.message, messageCallback); + // safe to clear the timeout if it hasn't already occurred. + if (!timeOver) { + clearTimeout(waitTimer); + } + aborter!.removeEventListener("abort", onAbort); + + rejectOnAbort(); + }; + + if (aborter) { + // the aborter may have been triggered between request attempts + // so check if it was triggered and reject if needed. + if (aborter.aborted) { + return rejectOnAbort(); + } + aborter.addEventListener("abort", onAbort); + } + // Handle different variations of property names in responses emitted by EventHubs and ServiceBus. const getCodeDescriptionAndError = (props: any): NormalizedInfo => { if (!props) props = {}; return { - statusCode: (props[Constants.statusCode] || - props.statusCode) as number, + statusCode: (props[Constants.statusCode] || props.statusCode) as number, statusDescription: (props[Constants.statusDescription] || props.statusDescription) as string, - errorCondition: (props[Constants.errorCondition] || - props.errorCondition) as string + errorCondition: (props[Constants.errorCondition] || props.errorCondition) as string }; }; const messageCallback = (context: EventContext) => { - // remove the event listener as this will be registered next time when someone makes a request. + // remove the event listeners as they will be registered next time when someone makes a request. this.receiver.removeListener(ReceiverEvents.message, messageCallback); - const info = getCodeDescriptionAndError( - context.message!.application_properties - ); + if (aborter) { + aborter.removeEventListener("abort", onAbort); + } + const info = getCodeDescriptionAndError(context.message!.application_properties); const responseCorrelationId = context.message!.correlation_id; log.reqres( "[%s] %s response: ", @@ -190,11 +225,12 @@ export class RequestResponseLink implements ReqResLink { const actionAfterTimeout = () => { timeOver = true; this.receiver.removeListener(ReceiverEvents.message, messageCallback); + if (aborter) { + aborter.removeEventListener("abort", onAbort); + } const address = this.receiver.address || "address"; const desc: string = - `The request with message_id "${ - request.message_id - }" to "${address}" ` + + `The request with message_id "${request.message_id}" to "${address}" ` + `endpoint timed out. Please try again later.`; const e: AmqpError = { condition: ConditionStatusMapper[408], @@ -204,10 +240,7 @@ export class RequestResponseLink implements ReqResLink { }; this.receiver.on(ReceiverEvents.message, messageCallback); - waitTimer = setTimeout( - actionAfterTimeout, - options!.timeoutInSeconds! * 1000 - ); + waitTimer = setTimeout(actionAfterTimeout, options!.timeoutInSeconds! * 1000); log.reqres( "[%s] %s request sent: %O", this.connection.id, diff --git a/sdk/core/core-amqp/src/retry.ts b/sdk/core/core-amqp/src/retry.ts index 2ac13593d283..c4e95ab1bbec 100644 --- a/sdk/core/core-amqp/src/retry.ts +++ b/sdk/core/core-amqp/src/retry.ts @@ -4,10 +4,7 @@ import { translate, MessagingError } from "./errors"; import { delay, isNode } from "./util/utils"; import * as log from "./log"; -import { - defaultRetryAttempts, - defaultDelayBetweenRetriesInSeconds -} from "./util/constants"; +import { defaultRetryAttempts, defaultDelayBetweenRetriesInSeconds } from "./util/constants"; import { resolve } from "dns"; /** @@ -39,6 +36,7 @@ export enum RetryOperationType { receiverLink = "receiverLink", senderLink = "senderLink", sendMessage = "sendMessage", + receiveMessage = "receiveMessage", session = "session" } @@ -98,7 +96,7 @@ function validateRetryConfig(config: RetryConfig): void { async function checkNetworkConnection(host: string): Promise { if (isNode) { - return new Promise(res => { + return new Promise((res) => { resolve(host, function(err: any): void { if (err && err.code === "ECONNREFUSED") { res(false); @@ -160,11 +158,7 @@ export async function retry(config: RetryConfig): Promise { err = translate(err); } - if ( - !err.retryable && - err.name === "ServiceCommunicationError" && - config.connectionHost - ) { + if (!err.retryable && err.name === "ServiceCommunicationError" && config.connectionHost) { const isConnected = await checkNetworkConnection(config.connectionHost); if (!isConnected) { err.name = "ConnectionLostError"; diff --git a/sdk/core/core-amqp/test/requestResponse.spec.ts b/sdk/core/core-amqp/test/requestResponse.spec.ts index 03f523ed4d78..5dc5a54a8e1e 100644 --- a/sdk/core/core-amqp/test/requestResponse.spec.ts +++ b/sdk/core/core-amqp/test/requestResponse.spec.ts @@ -2,14 +2,11 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. import * as assert from "assert"; -import { - RequestResponseLink, - AmqpMessage, - ErrorNameConditionMapper -} from "../src"; +import { RequestResponseLink, AmqpMessage, ErrorNameConditionMapper } from "../src"; import { Connection } from "rhea-promise"; import { stub } from "sinon"; import EventEmitter from "events"; +import { AbortController } from "@azure/abort-controller"; describe("RequestResponseLink", function() { it("should send a request and receive a response correctly", async function() { @@ -34,11 +31,7 @@ describe("RequestResponseLink", function() { const sessionStub = await connectionStub.createSession(); const senderStub = await sessionStub.createSender(); const receiverStub = await sessionStub.createReceiver(); - const link = new RequestResponseLink( - sessionStub as any, - senderStub, - receiverStub - ); + const link = new RequestResponseLink(sessionStub as any, senderStub, receiverStub); const request: AmqpMessage = { body: "Hello World!!" }; @@ -89,11 +82,7 @@ describe("RequestResponseLink", function() { const sessionStub = await connectionStub.createSession(); const senderStub = await sessionStub.createSender(); const receiverStub = await sessionStub.createReceiver(); - const link = new RequestResponseLink( - sessionStub as any, - senderStub, - receiverStub - ); + const link = new RequestResponseLink(sessionStub as any, senderStub, receiverStub); const request: AmqpMessage = { body: "Hello World!!" }; @@ -130,4 +119,139 @@ describe("RequestResponseLink", function() { }); assert.equal(response.correlation_id, messageId); }); + + it("should abort a request and response correctly", async function() { + const connectionStub = stub(new Connection()); + const rcvr = new EventEmitter(); + let req: any = {}; + connectionStub.createSession.resolves({ + connection: { + id: "connection-1" + }, + createSender: () => { + return Promise.resolve({ + send: (request: any) => { + req = request; + } + }); + }, + createReceiver: () => { + return Promise.resolve(rcvr); + } + }); + const sessionStub = await connectionStub.createSession(); + const senderStub = await sessionStub.createSender(); + const receiverStub = await sessionStub.createReceiver(); + const link = new RequestResponseLink(sessionStub as any, senderStub, receiverStub); + const request: AmqpMessage = { + body: "Hello World!!" + }; + setTimeout(() => { + rcvr.emit("message", { + message: { + correlation_id: req.message_id, + application_properties: { + statusCode: 200, + errorCondition: null, + statusDescription: null, + "com.microsoft:tracking-id": null + }, + body: "Hello World!!" + } + }); + }, 2000); + try { + const controller = new AbortController(); + const signal = controller.signal; + setTimeout(controller.abort.bind(controller), 100); + await link.sendRequest(request, { abortSignal: signal, requestName: "foo" }); + throw new Error(`Test failure`); + } catch (err) { + const expectedErrorRegex = new RegExp( + /The foo operation has been cancelled by the user.$/, + "gi" + ); + assert.equal(expectedErrorRegex.test(err.message), true); + } + }); + + it("should abort a request and response correctly when retried", async function() { + const connectionStub = stub(new Connection()); + const rcvr = new EventEmitter(); + let messageId: string = ""; + let counter = 0; + connectionStub.createSession.resolves({ + connection: { + id: "connection-1" + }, + createSender: () => { + return Promise.resolve({ + send: (request: any) => { + counter++; + if (counter != 1) { + assert.notEqual(messageId, undefined); + assert.notEqual(request.message_id, undefined); + assert.notEqual(messageId, request.message_id); + } + messageId = request.message_id; + } + }); + }, + createReceiver: () => { + return Promise.resolve(rcvr); + } + }); + const sessionStub = await connectionStub.createSession(); + const senderStub = await sessionStub.createSender(); + const receiverStub = await sessionStub.createReceiver(); + const link = new RequestResponseLink(sessionStub as any, senderStub, receiverStub); + const request: AmqpMessage = { + body: "Hello World!!" + }; + setTimeout(() => { + rcvr.emit("message", { + message: { + correlation_id: messageId, + application_properties: { + statusCode: 500, + errorCondition: ErrorNameConditionMapper.InternalServerError, + statusDescription: "Please retry later.", + "com.microsoft:tracking-id": "1" + } + } + }); + }, 2000); + setTimeout(() => { + rcvr.emit("message", { + message: { + correlation_id: messageId, + application_properties: { + statusCode: 200, + errorCondition: null, + statusDescription: null, + "com.microsoft:tracking-id": null + }, + body: "Hello World!!" + } + }); + }, 4000); + try { + const controller = new AbortController(); + const signal = controller.signal; + setTimeout(controller.abort.bind(controller), 100); + await link.sendRequest(request, { + delayInSeconds: 1, + timeoutInSeconds: 5, + abortSignal: signal // cancel between request attempts + }); + throw new Error(`Test failure`); + } catch (err) { + const expectedErrorRegex = new RegExp(/The operation has been cancelled by the user.$/, "gi"); + assert.equal( + expectedErrorRegex.test(err.message), + true, + `Incorrect error received "${err.message}"` + ); + } + }); }); diff --git a/sdk/core/core-http/lib/credentials/tokenCredential.ts b/sdk/core/core-http/lib/credentials/tokenCredential.ts index 6941dd2c8d05..f68ebc4f4163 100644 --- a/sdk/core/core-http/lib/credentials/tokenCredential.ts +++ b/sdk/core/core-http/lib/credentials/tokenCredential.ts @@ -14,10 +14,7 @@ export interface TokenCredential { * @param options The options used to configure any requests this * TokenCredential implementation might make. */ - getToken( - scopes: string | string[], - options?: GetTokenOptions - ): Promise; + getToken(scopes: string | string[], options?: GetTokenOptions): Promise; } /** @@ -52,5 +49,5 @@ export interface AccessToken { * @param credential The assumed TokenCredential to be tested. */ export function isTokenCredential(credential: any): credential is TokenCredential { - return "getToken" in credential; + return credential && typeof credential.getToken === "function"; } diff --git a/sdk/eventhub/event-hubs/README.md b/sdk/eventhub/event-hubs/README.md index 24363e8ab28b..32f4f5937c2e 100644 --- a/sdk/eventhub/event-hubs/README.md +++ b/sdk/eventhub/event-hubs/README.md @@ -7,7 +7,11 @@ Use the client library for Azure Event Hubs in your Node.js application to - Send events to Event Hub - Receive events from Event Hub -[Source code](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/eventhub/event-hubs) | [Package (npm)](https://www.npmjs.com/package/@azure/event-hubs) | [API Reference Documentation](https://docs.microsoft.com/en-us/javascript/api/%40azure/event-hubs/index?view=azure-node-latest) | [Product documentation](https://azure.microsoft.com/en-us/services/event-hubs/) +[Source code](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/eventhub/event-hubs) | [Package (npm)](https://www.npmjs.com/package/@azure/event-hubs) | [API Reference Documentation](https://docs.microsoft.com/en-us/javascript/api/%40azure/event-hubs/index?view=azure-node-latest) | [Product documentation](https://azure.microsoft.com/en-us/services/event-hubs/) | [Samples](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/eventhub/event-hubs/samples) + +**NOTE**: If you are using version 2.1.0 or lower, then please use the below links instead + +[Source code for v2.1.0](https://github.com/Azure/azure-sdk-for-js/tree/%40azure/event-hubs_2.1.0/sdk/eventhub/event-hubs) | [Package for v2.1.0 (npm)](https://www.npmjs.com/package/@azure/event-hubs/v/2.1.0) | [Samples for v2.1.0](https://github.com/Azure/azure-sdk-for-js/tree/%40azure/event-hubs_2.1.0/sdk/eventhub/event-hubs/samples) ## Getting Started @@ -31,87 +35,110 @@ npm install @types/node You also need to enable `compilerOptions.allowSyntheticDefaultImports` in your tsconfig.json. Note that if you have enabled `compilerOptions.esModuleInterop`, `allowSyntheticDefaultImports` is enabled by default. See [TypeScript's compiler options handbook](https://www.typescriptlang.org/docs/handbook/compiler-options.html) for more information. +### Key concepts + +- An **Event Hub client** is the primary interface for developers interacting with the Event Hubs client library, allowing for inspection of Event Hub metadata and providing a guided experience towards specific Event Hub operations such as the creation of producers and consumers. + +- An **Event Hub producer** is a source of telemetry data, diagnostics information, usage logs, or other log data, as part of an embedded device solution, a mobile device application, a game title running on a console or other device, some client or server based business solution, or a web site. + +- An **Event Hub consumer** picks up such information from the Event Hub and processes it. Processing may involve aggregation, complex computation and filtering. Processing may also involve distribution or storage of the information in a raw or transformed fashion. Event Hub consumers are often robust and high-scale platform infrastructure parts with built-in analytics capabilities, like Azure Stream Analytics, Apache Spark, or Apache Storm. + +- A **partition** is an ordered sequence of events that is held in an Event Hub. Partitions are a means of data organization associated with the parallelism required by event consumers. Azure Event Hubs provides message streaming through a partitioned consumer pattern in which each consumer only reads a specific subset, or partition, of the message stream. As newer events arrive, they are added to the end of this sequence. The number of partitions is specified at the time an Event Hub is created and cannot be changed. + +- A **consumer group** is a view of an entire Event Hub. Consumer groups enable multiple consuming applications to each have a separate view of the event stream, and to read the stream independently at their own pace and from their own position. There can be at most 5 concurrent readers on a partition per consumer group; however it is recommended that there is only one active consumer for a given partition and consumer group pairing. Each active reader receives all of the events from its partition; If there are multiple readers on the same partition, then they will receive duplicate events. + +For more concepts and deeper discussion, see: [Event Hubs Features](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-features) + ### Authenticate the client Interaction with Event Hubs starts with an instance of the [EventHubClient](https://docs.microsoft.com/en-us/javascript/api/%40azure/event-hubs/eventhubclient?view=azure-node-latest) class. You can instantiate -this class using one of the below static methods on it - -- [createFromConnectionString](https://docs.microsoft.com/en-us/javascript/api/@azure/event-hubs/eventhubclient?view=azure-node-latest#createfromconnectionstring-string--string--clientoptions-) - - This method takes the connection string and entity name to your Event Hub instance. You can get the connection string - from the Azure portal -- [createFromTokenProvider](https://docs.microsoft.com/en-us/javascript/api/%40azure/event-hubs/eventhubclient?view=azure-node-latest#createfromtokenprovider-string--string--tokenprovider--clientoptionsbase-) - - This method takes the host name and entity name of your Event Hub instance and your custom Token Provider. The - host name is of the format `name-of-event-hub-instance.servicebus.windows.net`. -- [createFromAADTokenCredentials](https://docs.microsoft.com/en-us/javascript/api/%40azure/event-hubs/eventhubclient?view=azure-node-latest#createfromaadtokencredentials-string--string--applicationtokencredentials---usertokencredentials---devicetokencredentials---msitokencredentials--clientoptionsbase-) - - This method takes the host name and entity name of your Event Hub instance and a credentials object that you need - to generate using the [@azure/ms-rest-nodeauth](https://www.npmjs.com/package/@azure/ms-rest-nodeauth) - library. The host name is of the format `name-of-event-hub-instance.servicebus.windows.net`. +this class using one of the below + +```javascript +const client = new EventHubClient("my-connection-string", "my-event-hub"); +``` + +- This constructor takes the connection string of the form 'Endpoint=sb://my-servicebus-namespace.servicebus.windows.net/;SharedAccessKeyName=my-SA-name;SharedAccessKey=my-SA-key;' and entity name to your Event Hub instance. You can get the connection string from the [Azure portal](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-get-connection-string#get-connection-string-from-the-portal) + +```javascript +const client = new EventHubClient("my-connection-string-with-entity-path"); +``` + +- The [connection string from Azure Portal](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-get-connection-string#get-connection-string-from-the-portal) is for the entire Event Hubs namespace and will not contain the path to the desired Event Hub instance which is needed for this constructor overload. In this case, the path can be added manually by adding ";EntityPath=[[ EVENT HUB NAME ]]" to the end of the connection string. For example, ";EntityPath=my-event-hub-name". + +If you have defined a shared access policy directly on the Event Hub itself, then copying the connection string from that Event Hub will result in a connection string that contains the path. + +```javascript +const client = new EventHubClient("my-host-name", "my-event-hub", "credential"); +``` + +- This constructor takes the host name and entity name of your Event Hub instance and credential that implements the TokenCredential interface. The host name is of the format `.servicebus.windows.net`. ### Examples The following sections provide code snippets that cover some of the common tasks using Azure Event Hubs -- [Send events](#send-events) -- [Receive events](#receive-events) +- [Publish events to an Event Hub](#publish-events-to-an-hvent-hub) +- [Consume events from an Event Hub](#consume-events-from-an-event-hub) - [Use EventHubClient to work with IotHub](#use-eventHubClient-to-work-with-IotHub) -### Send events +### Publish events to an Event Hub -Once you have created an instance of an `EventHubClient` class, send events -using the [send](https://docs.microsoft.com/en-us/javascript/api/@azure/event-hubs/eventhubclient?view=azure-node-latest#send-eventdata--string---number-) function. +In order to publish events, you'll need to create an `EventHubProducer`. Producers may be dedicated to a specific partition, or allow the Event Hubs service to decide which partition events should be published to. It is recommended to use automatic routing when the publishing of events needs to be highly available or when event data should be distributed evenly among the partitions. In the our example, we will take advantage of automatic routing. -You can also use the [sendBatch](https://docs.microsoft.com/en-us/javascript/api/@azure/event-hubs/eventhubclient?view=azure-node-latest#sendbatch-eventdata----string---number-) method to send multiple events using a single call. +You can also use the [send](link) method to send multiple events using a single call. ```javascript -const client = EventHubClient.createFromConnectionString("connectionString", "eventHubName"); - -await client.send({ body: "my-event-body" }); -await client.sendBatch( - [ - { body: "my-event-body-1" }, - { body: "my-event-body-2" }, - { body: "my-event-body-3" } - ] -); +const client = new EventHubClient("connectionString", "eventHubName"); +const producer = client.createProducer(); +await producer.send({ body: "my-event-body" }); ``` -To send events to a particular partition, use the optional parameter `partitionId` on the `send` and `sendBatch` functions. -You can use the [getPartitionIds](https://docs.microsoft.com/en-us/javascript/api/@azure/event-hubs/eventhubclient?view=azure-node-latest#getpartitionids--) +To send events to a particular partition, use the optional parameter `partitionId` on the `createProducer` function. +Many Event Hub operations take place within the scope of a specific partition. Because partitions are owned by the Event Hub, their names are assigned at the time of creation. To understand what partitions are available, You can use the [getPartitionIds](link) function to get the ids of all available partitions in your Event Hub instance. +`createProducer` method takes an optional parameter of type [EventHubProducerOptions](link) which you can use to specify the retry options for the send operation. + +`send` method takes an optional parameter of type [SendOptions](link) which you can use to specify `abortSignal` to cancel current operation. + **Note**: When working with Azure Stream Analytics, the body of the event being sent should be a JSON object as well. For example: `body: { "message": "Hello World" }` -### Receive events +### Consume events from an Event Hub + +In order to consume events, you'll need to create an `EventHubConsumer` for a specific partition and consumer group combination. When an Event Hub is created, it starts with a default consumer group that can be used to get started. A consumer also needs to specify where in the event stream to begin receiving events; in our example, we will focus on reading new events as they are published. + +```javascript +const client = new EventHubClient("connectionString", "eventHubName"); +const consumer = client.createConsumer("$Default", partitionIds[0], EventPosition.latest()); +``` + +You can use the [getPartitionIds](https://docs.microsoft.com/en-us/javascript/api/@azure/event-hubs/eventhubclient?view=azure-node-latest#getpartitionids--) function to get the ids of all available partitions in your Event Hub instance. + +`createConsumer` method takes an optional parameter of type [EventHubConsumerOptions](link) which you can use to specify the ownerLevel, the level that this consumer is currently using for partition ownership. If another consumer is currently active for the same partition with no or lower level, then it will get disconnected. If another consumer is currently active with a higher level, then this consumer will fail to connect. You can also specify retryOptions for the receive operation on the consumer. -Once you have created an instance of an `EventHubClient` class, you can receive events in one of 2 ways: +You can use this consumer in one of 3 ways to receive events: - [Get an array of events](#get-an-array-of-events) - [Register event handler](#register-event-handler) - -Both ways require you to know the id of the partition that you want to receive events from. -You can use the [getPartitionIds](https://docs.microsoft.com/en-us/javascript/api/@azure/event-hubs/eventhubclient?view=azure-node-latest#getpartitionids--) -function to get the ids of all available partitions in your Event Hub instance. +- [Use async iterator](#use-async-iterator) #### Get an array of events -Use the [receiveBatch](https://docs.microsoft.com/en-us/javascript/api/@azure/event-hubs/eventhubclient?view=azure-node-latest#receivebatch-string---number--number--number--receiveoptions-) function which returns a promise that resolves to an array of events. +Use the [receiveBatch](link) function which returns a promise that resolves to an array of events. -This function takes an optional parameter called `options` of type [ReceiveOptions](https://docs.microsoft.com/en-us/javascript/api/%40azure/event-hubs/receiveoptions?view=azure-node-latest) -which you can use to specify the Consumer Group you want to target or the position from where you want to start receiving events. +This function takes an optional parameter called `abortSignal` to cancel current operation. ```javascript -const client = EventHubClient.createFromConnectionString("connectionString", "eventHubName"); -const myEvents = await client.receiveBatch("my-partitionId", 10); +const myEvents = await consumer.receiveBatch(10); ``` #### Register event handler -Use the [receive](https://docs.microsoft.com/en-us/javascript/api/@azure/event-hubs/eventhubclient?view=azure-node-latest#receive-string---number--onmessage--onerror--receiveoptions-) to set up event handlers and have it running as long as you -need. +Use the [receive](link) to set up event handlers and have it running as long as you need. -This function takes an optional parameter called `options` of type [ReceiveOptions](https://docs.microsoft.com/en-us/javascript/api/%40azure/event-hubs/receiveoptions?view=azure-node-latest) -which you can use to specify the Consumer Group you want to target or the position from where you want to start receiving events. +This function takes an optional parameter called `abortSignal` to cancel current operation. ```javascript const myEventHandler = event => { @@ -120,11 +147,22 @@ const myEventHandler = event => { const myErrorHandler = error => { // your error handler here }; -const receiveHandler = client.receive("partitionId", myEventHandler, myErrorHandler); +const receiveHandler = consumer.receive(myEventHandler, myErrorHandler); // When ready to stop receiving await receiveHandler.stop(); +``` + +#### Use async iterator + +Use the [getMessageIterator](link) to get an async iterator over events +This function takes an optional parameter called `abortSignal` to cancel current operation. + +```javascript +for await (const events of consumer.getEventIterator()){ + // your code here +} ``` ### Use EventHubClient to work with IotHub @@ -184,10 +222,11 @@ export DEBUG=azure:event-hubs:error,azure-amqp-common:error,rhea-promise:error,r node your-test-script.js >out.log 2>&1 ``` - Logging statements from your test script and the sdk go to the same file `out.log`. + ```bash node your-test-script.js &> out.log ``` - + ## Next Steps Please take a look at the [samples](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/eventhub/event-hubs/samples) diff --git a/sdk/eventhub/event-hubs/package.json b/sdk/eventhub/event-hubs/package.json index de35a1be2921..7adf1e07f674 100644 --- a/sdk/eventhub/event-hubs/package.json +++ b/sdk/eventhub/event-hubs/package.json @@ -1,7 +1,7 @@ { "name": "@azure/event-hubs", "sdk-type": "client", - "version": "2.1.0", + "version": "3.0.0-preview.1", "description": "Azure Event Hubs SDK for JS.", "author": "Microsoft Corporation", "license": "MIT", @@ -62,8 +62,8 @@ "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "dependencies": { - "@azure/amqp-common": "^1.0.0-preview.5", - "@azure/ms-rest-nodeauth": "^0.9.2", + "@azure/abort-controller": "1.0.0-preview.1", + "@azure/core-amqp": "^1.0.0-preview.1", "async-lock": "^1.1.3", "debug": "^3.1.0", "is-buffer": "^2.0.3", @@ -73,6 +73,7 @@ "uuid": "^3.3.2" }, "devDependencies": { + "@azure/identity": "^0.1.0", "@microsoft/api-extractor": "^7.1.5", "@types/async-lock": "^1.1.0", "@types/chai": "^4.1.6", diff --git a/sdk/eventhub/event-hubs/review/event-hubs.api.md b/sdk/eventhub/event-hubs/review/event-hubs.api.md index 0b77664837bc..4b933a217fe6 100644 --- a/sdk/eventhub/event-hubs/review/event-hubs.api.md +++ b/sdk/eventhub/event-hubs/review/event-hubs.api.md @@ -4,197 +4,129 @@ ```ts -import { AadTokenProvider } from '@azure/amqp-common'; +import { AbortSignalLike } from '@azure/abort-controller'; import { AmqpError } from 'rhea-promise'; -import { ApplicationTokenCredentials } from '@azure/ms-rest-nodeauth'; -import { ConditionErrorNameMapper } from '@azure/amqp-common'; -import { ConditionStatusMapper } from '@azure/amqp-common'; -import { ConnectionConfig } from '@azure/amqp-common'; -import { ConnectionContextBase } from '@azure/amqp-common'; -import { DataTransformer } from '@azure/amqp-common'; -import { DefaultDataTransformer } from '@azure/amqp-common'; -import { delay } from '@azure/amqp-common'; -import { Delivery } from 'rhea-promise'; -import { DeliveryAnnotations } from 'rhea-promise'; -import { DeviceTokenCredentials } from '@azure/ms-rest-nodeauth'; +import { ConnectionContextBase } from '@azure/core-amqp'; +import { DataTransformer } from '@azure/core-amqp'; +import { DefaultDataTransformer } from '@azure/core-amqp'; +import { delay } from '@azure/core-amqp'; import { Dictionary } from 'rhea-promise'; -import { ErrorNameConditionMapper } from '@azure/amqp-common'; -import { EventHubConnectionConfig } from '@azure/amqp-common'; -import { EventHubConnectionStringModel } from '@azure/amqp-common'; -import { IotHubConnectionStringModel } from '@azure/amqp-common'; -import { isIotHubConnectionString } from '@azure/amqp-common'; -import { Message } from 'rhea-promise'; -import { MessageAnnotations } from 'rhea-promise'; -import { MessageHeader } from 'rhea-promise'; -import { MessageProperties } from 'rhea-promise'; -import { MessagingError } from '@azure/amqp-common'; -import { MSITokenCredentials } from '@azure/ms-rest-nodeauth'; +import { EventHubConnectionConfig } from '@azure/core-amqp'; +import { MessagingError } from '@azure/core-amqp'; import { OnAmqpEvent } from 'rhea-promise'; -import { parseConnectionString } from '@azure/amqp-common'; import { Receiver } from 'rhea-promise'; import { ReceiverOptions } from 'rhea-promise'; -import { SasTokenProvider } from '@azure/amqp-common'; import { Sender } from 'rhea-promise'; -import { StorageConnectionStringModel } from '@azure/amqp-common'; -import { Timeout } from '@azure/amqp-common'; -import { TokenInfo } from '@azure/amqp-common'; -import { TokenProvider } from '@azure/amqp-common'; -import { TokenType } from '@azure/amqp-common'; -import { UserTokenCredentials } from '@azure/ms-rest-nodeauth'; +import { SharedKeyCredential } from '@azure/core-amqp'; +import { TokenCredential } from '@azure/core-amqp'; +import { TokenType } from '@azure/core-amqp'; import { WebSocketImpl } from 'rhea-promise'; -// @public (undocumented) -export const aadEventHubsAudience = "https://eventhubs.azure.net/"; - -export { AadTokenProvider } - -export { AmqpError } - -// @public -export interface ClientOptions extends ClientOptionsBase { - tokenProvider?: TokenProvider; -} - -// @public -export interface ClientOptionsBase { - dataTransformer?: DataTransformer; - userAgent?: string; - webSocket?: WebSocketImpl; - webSocketConstructorOptions?: any; -} - -export { ConditionErrorNameMapper } - -export { ConditionStatusMapper } - -export { ConnectionConfig } - export { DataTransformer } export { DefaultDataTransformer } export { delay } -export { Delivery } - -export { Dictionary } - -export { ErrorNameConditionMapper } - // @public export interface EventData { - annotations?: EventHubMessageAnnotations; - applicationProperties?: Dictionary; body: any; - enqueuedTimeUtc?: Date; - header?: MessageHeader; - lastEnqueuedOffset?: string; - lastEnqueuedTime?: Date; - lastSequenceNumber?: number; - offset?: string; - partitionKey?: string | null; - properties?: MessageProperties; - _raw_amqp_mesage?: Message; - retrievalTime?: Date; - sequenceNumber?: number; -} - -// @public -export namespace EventData { - export function fromAmqpMessage(msg: Message): EventData; - export function toAmqpMessage(data: EventData): Message; + properties?: { + [key: string]: any; + }; } // @public export class EventHubClient { - constructor(config: EventHubConnectionConfig, options?: ClientOptions); + constructor(connectionString: string, options?: EventHubClientOptions); + constructor(connectionString: string, eventHubPath: string, options?: EventHubClientOptions); + constructor(host: string, eventHubPath: string, credential: TokenCredential, options?: EventHubClientOptions); close(): Promise; - connectionId?: string; - static createFromAadTokenCredentials(host: string, entityPath: string, credentials: ApplicationTokenCredentials | UserTokenCredentials | DeviceTokenCredentials | MSITokenCredentials, options?: ClientOptionsBase): EventHubClient; - static createFromConnectionString(connectionString: string, path?: string, options?: ClientOptions): EventHubClient; - static createFromIotHubConnectionString(iothubConnectionString: string, options?: ClientOptions): Promise; - static createFromTokenProvider(host: string, entityPath: string, tokenProvider: TokenProvider, options?: ClientOptionsBase): EventHubClient; - readonly eventhubName: string; - getHubRuntimeInformation(): Promise; - getPartitionIds(): Promise>; - getPartitionInformation(partitionId: string | number): Promise; - receive(partitionId: string | number, onMessage: OnMessage, onError: OnError, options?: ReceiveOptions): ReceiveHandler; - receiveBatch(partitionId: string | number, maxMessageCount: number, maxWaitTimeInSeconds?: number, options?: ReceiveOptions): Promise; - send(data: EventData, partitionId?: string | number): Promise; - sendBatch(datas: EventData[], partitionId?: string | number): Promise; + createConsumer(consumerGroup: string, partitionId: string, eventPosition: EventPosition, options?: EventHubConsumerOptions): EventHubConsumer; + static createFromIotHubConnectionString(iothubConnectionString: string, options?: EventHubClientOptions): Promise; + createProducer(options?: EventHubProducerOptions): EventHubProducer; + static defaultConsumerGroup: string; + readonly eventHubName: string; + getPartitionIds(abortSignal?: AbortSignalLike): Promise>; + getPartitionProperties(partitionId: string, abortSignal?: AbortSignalLike): Promise; + getProperties(abortSignal?: AbortSignalLike): Promise; } -export { EventHubConnectionConfig } +// @public +export interface EventHubClientOptions { + dataTransformer?: DataTransformer; + retryOptions?: RetryOptions; + userAgent?: string; + webSocket?: WebSocketImpl; + webSocketConstructorOptions?: any; +} -export { EventHubConnectionStringModel } +// @public +export class EventHubConsumer { + // Warning: (ae-forgotten-export) The symbol "ConnectionContext" needs to be exported by the entry point index.d.ts + // + // @internal + constructor(context: ConnectionContext, consumerGroup: string, partitionId: string, eventPosition: EventPosition, options?: EventHubConsumerOptions); + close(): Promise; + readonly consumerGroup: string; + getEventIterator(options?: EventIteratorOptions): AsyncIterableIterator; + readonly isClosed: boolean; + readonly isReceivingMessages: boolean; + readonly ownerLevel: number | undefined; + readonly partitionId: string; + receive(onMessage: OnMessage, onError: OnError, abortSignal?: AbortSignalLike): ReceiveHandler; + receiveBatch(maxMessageCount: number, maxWaitTimeInSeconds?: number, abortSignal?: AbortSignalLike): Promise; + } // @public -export interface EventHubDeliveryAnnotations extends DeliveryAnnotations { - [x: string]: any; - last_enqueued_offset?: string; - last_enqueued_sequence_number?: number; - last_enqueued_time_utc?: number; - runtime_info_retrieval_time_utc?: number; +export interface EventHubConsumerOptions { + ownerLevel?: number; + retryOptions?: RetryOptions; } // @public -export interface EventHubMessageAnnotations extends MessageAnnotations { - [x: string]: any; - "x-opt-enqueued-time"?: number; - "x-opt-offset"?: string; - "x-opt-partition-key"?: string | null; - "x-opt-sequence-number"?: number; -} +export class EventHubProducer { + // @internal + constructor(context: ConnectionContext, options?: EventHubProducerOptions); + close(): Promise; + readonly isClosed: boolean; + send(eventData: EventData | EventData[], options?: SendOptions): Promise; + } // @public -export interface EventHubPartitionRuntimeInformation { - beginningSequenceNumber: number; - hubPath: string; - lastEnqueuedOffset: string; - lastEnqueuedTimeUtc: Date; - lastSequenceNumber: number; - partitionId: string; - type: "com.microsoft:partition"; +export interface EventHubProducerOptions { + partitionId?: string; + retryOptions?: RetryOptions; } // @public -export interface EventHubRuntimeInformation { +export interface EventHubProperties { createdAt: Date; - partitionCount: number; partitionIds: string[]; path: string; - type: "com.microsoft:eventhub"; +} + +// @public +export interface EventIteratorOptions { + abortSignal?: AbortSignalLike; } // @public export class EventPosition { // Warning: (ae-forgotten-export) The symbol "EventPositionOptions" needs to be exported by the entry point index.d.ts + // + // @internal constructor(options?: EventPositionOptions); - customFilter?: string; - static readonly endOfStream: string; + static earliest(): EventPosition; enqueuedTime?: Date | number; - static fromEnd(): EventPosition; static fromEnqueuedTime(enqueuedTime: Date | number): EventPosition; static fromOffset(offset: string, isInclusive?: boolean): EventPosition; static fromSequenceNumber(sequenceNumber: number, isInclusive?: boolean): EventPosition; - static fromStart(): EventPosition; - getExpression(): string; isInclusive: boolean; + static latest(): EventPosition; offset?: string; sequenceNumber?: number; - static readonly startOfStream: string; - static withCustomFilter(customFilter: string): EventPosition; -} - -export { IotHubConnectionStringModel } - -export { isIotHubConnectionString } - -export { Message } - -export { MessageHeader } - -export { MessageProperties } + } export { MessagingError } @@ -202,54 +134,55 @@ export { MessagingError } export type OnError = (error: MessagingError | Error) => void; // @public -export type OnMessage = (eventData: EventData) => void; +export type OnMessage = (eventData: ReceivedEventData) => void; -export { parseConnectionString } +// @public +export interface PartitionProperties { + beginningSequenceNumber: number; + eventHubPath: string; + lastEnqueuedOffset: string; + lastEnqueuedSequenceNumber: number; + lastEnqueuedTimeUtc: Date; + partitionId: string; +} + +// @public +export interface ReceivedEventData { + body: any; + enqueuedTimeUtc: Date; + offset: string; + partitionKey: string | null; + properties?: { + [key: string]: any; + }; + sequenceNumber: number; +} // @public export class ReceiveHandler { // Warning: (ae-forgotten-export) The symbol "EventHubReceiver" needs to be exported by the entry point index.d.ts + // + // @internal constructor(receiver: EventHubReceiver); - readonly address: string | undefined; readonly consumerGroup: string | undefined; - readonly epoch: number | undefined; - readonly identifier: string | undefined; readonly isReceiverOpen: boolean; - readonly name: string; - readonly partitionId: string | number | undefined; - readonly runtimeInfo: ReceiverRuntimeInfo | undefined; + readonly partitionId: string | undefined; stop(): Promise; } // @public -export interface ReceiveOptions { - consumerGroup?: string; - enableReceiverRuntimeMetric?: boolean; - epoch?: number; - eventPosition?: EventPosition; - identifier?: string; - name?: string; - prefetchCount?: number; +export interface RetryOptions { + retryCount?: number; + retryInterval?: number; } // @public -export interface ReceiverRuntimeInfo { - lastEnqueuedOffset?: string; - lastEnqueuedTimeUtc?: Date; - lastSequenceNumber?: number; - partitionId: string; - retrievalTime?: Date; +export interface SendOptions { + abortSignal?: AbortSignalLike; + partitionKey?: string | null; } -export { SasTokenProvider } - -export { StorageConnectionStringModel } - -export { Timeout } - -export { TokenInfo } - -export { TokenProvider } +export { TokenCredential } export { TokenType } diff --git a/sdk/eventhub/event-hubs/samples/README.md b/sdk/eventhub/event-hubs/samples/README.md index 342368279613..dd938b3da4ae 100644 --- a/sdk/eventhub/event-hubs/samples/README.md +++ b/sdk/eventhub/event-hubs/samples/README.md @@ -1,5 +1,7 @@ ## Getting started with samples ## +The samples in this folder are for version 3.0.0 and above of this library. If you are using version 2.1.0 or lower, then please use [samples for v2.1.0](https://github.com/Azure/azure-sdk-for-js/tree/%40azure/event-hubs_2.1.0/sdk/eventhub/event-hubs/samples) instead + ## Install the library Run the below in your samples folder to install the npm package for Event Hubs library. diff --git a/sdk/eventhub/event-hubs/samples/getHubRuntimeInfo.ts b/sdk/eventhub/event-hubs/samples/getHubRuntimeInfo.ts deleted file mode 100644 index 5be5be997e77..000000000000 --- a/sdk/eventhub/event-hubs/samples/getHubRuntimeInfo.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the MIT Licence. - - This sample demonstrates how to use getHubRuntimeInformation() and - getPartitionInformation() to get information about the Event Hubs instance. -*/ - -import { EventHubClient } from "@azure/event-hubs"; - -// Define connection string and related Event Hubs entity name here -const connectionString = ""; -const eventHubsName = ""; - -async function main(): Promise { - const client = EventHubClient.createFromConnectionString(connectionString, eventHubsName); - - const info = await client.getHubRuntimeInformation(); - console.log("RuntimeInfo: ", info); - - const pInfo = await client.getPartitionInformation(info.partitionIds[0]); - console.log("Partition Information: ", pInfo); - - await client.close(); -} - -main().catch(err => { - console.log("Error occurred: ", err); -}); diff --git a/sdk/eventhub/event-hubs/samples/interactiveLogin.ts b/sdk/eventhub/event-hubs/samples/interactiveLogin.ts deleted file mode 100644 index 1815a8331e23..000000000000 --- a/sdk/eventhub/event-hubs/samples/interactiveLogin.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the MIT Licence. - - This sample demonstrates how to instantiate EventHubsClien using AAD token credentials - obtained from interactive login. - - Setup : - Please ensure that your Azure Event Hubs resource is in US East, US East 2, or West Europe - region. AAD Role Based Access Control is not supported in other regions yet. -*/ - -import { EventHubClient } from "@azure/event-hubs"; -import { interactiveLogin } from "@azure/ms-rest-nodeauth"; - -// Define Event Hubs Endpoint and related entity name here here -const evenHubsEndpoint = ""; // .servicebus.windows.net -const eventHubsName = ""; - -async function main(): Promise { - const credentials = await interactiveLogin({ tokenAudience: "https://eventhubs.azure.net/" }); - const client = EventHubClient.createFromAadTokenCredentials(evenHubsEndpoint, eventHubsName, credentials); - /* - Refer to other samples, and place your code here - to send/receive events - */ - await client.close(); -} - -main().catch(err => { - console.log("error: ", err); -}); diff --git a/sdk/eventhub/event-hubs/samples/loginWithAzureAccount.ts b/sdk/eventhub/event-hubs/samples/loginWithAzureAccount.ts deleted file mode 100644 index b16623af68f5..000000000000 --- a/sdk/eventhub/event-hubs/samples/loginWithAzureAccount.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the MIT Licence. - - This sample demonstrates how to instantiate EventHubsClient using AAD token credentials - obtained from signing in through your Azure account. - - Setup : - Please ensure that your Azure Event Hubs resource is in US East, US East 2, or West Europe - region. AAD Role Based Access Control is not supported in other regions yet. - - In the Azure portal, go to your Event Hubs resource and click on the Access control (IAM) tab. - Here, assign "owner" role to your account. -*/ - -import { EventHubClient } from "@azure/event-hubs"; -import { loginWithUsernamePassword } from "@azure/ms-rest-nodeauth"; - -// Define Event Hubs Endpoint and related entity name here here -const evenHubsEndpoint = ""; // .servicebus.windows.net -const eventHubsName = ""; - -const username = ""; -const password = ""; - -async function main(): Promise { - const credentials = await loginWithUsernamePassword(username, password, { - tokenAudience: "https://eventhubs.azure.net/" - }); - const client = EventHubClient.createFromAadTokenCredentials(evenHubsEndpoint, eventHubsName, credentials); - /* - Refer to other samples, and place your code here - to send/receive events - */ - await client.close(); -} - -main().catch(err => { - console.log("error: ", err); -}); diff --git a/sdk/eventhub/event-hubs/samples/receiveEventsLoop.ts b/sdk/eventhub/event-hubs/samples/receiveEventsLoop.ts index a8779410115e..678d58f66064 100644 --- a/sdk/eventhub/event-hubs/samples/receiveEventsLoop.ts +++ b/sdk/eventhub/event-hubs/samples/receiveEventsLoop.ts @@ -6,33 +6,46 @@ If your Event Hubs instance doesn't have any events, then please run "sendEvents.ts" sample to populate Event Hubs before running this sample. + + Note: If you are using version 2.1.0 or lower of @azure/event-hubs library, then please use the samples at + https://github.com/Azure/azure-sdk-for-js/tree/%40azure/event-hubs_2.1.0/sdk/eventhub/event-hubs/samples instead. */ import { EventHubClient, EventPosition } from "@azure/event-hubs"; // Define connection string and related Event Hubs entity name here const connectionString = ""; -const eventHubsName = ""; +const eventHubName = ""; async function main(): Promise { - const client = EventHubClient.createFromConnectionString(connectionString, eventHubsName); + const client = new EventHubClient(connectionString, eventHubName); const partitionIds = await client.getPartitionIds(); - let eventPosition = EventPosition.fromStart(); + const consumer = client.createConsumer("$Default", partitionIds[0], EventPosition.earliest()); const batchSize = 1; - for (let i = 0; i < 10; i++) { - const events = await client.receiveBatch(partitionIds[0], batchSize, 5, { - eventPosition: eventPosition, - consumerGroup: "$Default" - }); - if (!events.length) { - console.log("No more events to receive"); - break; + try { + for (let i = 0; i < 5; i++) { + const events = await consumer.receiveBatch(batchSize, 5); + if (!events.length) { + console.log("No more events to receive"); + break; + } + console.log(`Received events: ${events.map(event => event.body)}`); + } + + let iteratorCount = 0; + for await (const events of consumer.getEventIterator()) { + iteratorCount++; + console.log(`Received event: ${events.body}`); + if (iteratorCount === 5) { + break; + } } - eventPosition = EventPosition.fromSequenceNumber(events[events.length - 1].sequenceNumber!); - console.log(`Received events #${i}: ${events.map(event => event.body)}`); + + await consumer.close(); + } finally { + await client.close(); } - await client.close(); } main().catch(err => { diff --git a/sdk/eventhub/event-hubs/samples/receiveEventsStreaming.ts b/sdk/eventhub/event-hubs/samples/receiveEventsStreaming.ts index df0c7ad4179c..b82bdc808600 100644 --- a/sdk/eventhub/event-hubs/samples/receiveEventsStreaming.ts +++ b/sdk/eventhub/event-hubs/samples/receiveEventsStreaming.ts @@ -6,17 +6,21 @@ If your Event Hubs instance doesn't have any events, then please run "sendEvents.ts" sample to populate Event Hubs before running this sample. + + Note: If you are using version 2.1.0 or lower of @azure/event-hubs library, then please use the samples at + https://github.com/Azure/azure-sdk-for-js/tree/%40azure/event-hubs_2.1.0/sdk/eventhub/event-hubs/samples instead. */ -import { EventHubClient, EventPosition, OnMessage, OnError, MessagingError, delay, EventData } from "@azure/event-hubs"; +import { EventHubClient, OnMessage, OnError, MessagingError, delay, EventData, EventPosition } from "@azure/event-hubs"; // Define connection string and related Event Hubs entity name here const connectionString = ""; -const eventHubsName = ""; +const eventHubName = ""; async function main(): Promise { - const client = EventHubClient.createFromConnectionString(connectionString, eventHubsName); + const client = new EventHubClient(connectionString, eventHubName); const partitionIds = await client.getPartitionIds(); + const consumer = client.createConsumer("$Default", partitionIds[0], EventPosition.earliest()); const onMessageHandler: OnMessage = (brokeredMessage: EventData) => { console.log(`Received event: ${brokeredMessage.body}`); @@ -25,15 +29,15 @@ async function main(): Promise { console.log("Error occurred: ", err); }; - const rcvHandler = client.receive(partitionIds[0], onMessageHandler, onErrorHandler, { - eventPosition: EventPosition.fromStart(), - consumerGroup: "$Default" - }); + try { + const rcvHandler = consumer.receive(onMessageHandler, onErrorHandler); - // Waiting long enough before closing the receiver to receive event - await delay(5000); - await rcvHandler.stop(); - await client.close(); + // Waiting long enough before closing the consumer to receive event + await delay(5000); + await rcvHandler.stop(); + } finally { + await client.close(); + } } main().catch(err => { diff --git a/sdk/eventhub/event-hubs/samples/sendEvents.ts b/sdk/eventhub/event-hubs/samples/sendEvents.ts index 49a2d62b5afb..c153106f6479 100644 --- a/sdk/eventhub/event-hubs/samples/sendEvents.ts +++ b/sdk/eventhub/event-hubs/samples/sendEvents.ts @@ -4,15 +4,17 @@ This sample demonstrates how the send() function can be used to send events to Event Hubs. - See https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-about - to learn about Event Hubs. + See https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-about to learn about Event Hubs. + + Note: If you are using version 2.1.0 or lower of @azure/event-hubs library, then please use the samples at + https://github.com/Azure/azure-sdk-for-js/tree/%40azure/event-hubs_2.1.0/sdk/eventhub/event-hubs/samples instead. */ import { EventHubClient, EventData } from "@azure/event-hubs"; // Define connection string and related Event Hubs entity name here const connectionString = ""; -const eventHubsName = ""; +const eventHubName = ""; const listOfScientists = [ { name: "Einstein", firstName: "Albert" }, @@ -28,22 +30,28 @@ const listOfScientists = [ ]; async function main(): Promise { - const client = EventHubClient.createFromConnectionString(connectionString, eventHubsName); + const client = new EventHubClient(connectionString, eventHubName); const partitionIds = await client.getPartitionIds(); - - for (let index = 0; index < listOfScientists.length; index++) { - const scientist = listOfScientists[index]; - const eventData: EventData = { - body: `${scientist.firstName} ${scientist.name}` - }; + const producer = client.createProducer({ partitionId: partitionIds[0] }); + const events: EventData[] = []; + try { // NOTE: For receiving events from Azure Stream Analytics, please send Events to an EventHub // where the body is a JSON object/array. - // const eventData = { body: { "message": `${scientist.firstName} ${scientist.name}` } }; - console.log(`Sending event: ${eventData.body}`); - await client.send(eventData, partitionIds[0]); + // const events = [ + // { body: { "message": "Hello World 1" }, applicationProperties: { id: "Some id" }, partitionKey: "pk786" }, + // { body: { "message": "Hello World 2" } }, + // { body: { "message": "Hello World 3" } } + // ]; + for (let index = 0; index < listOfScientists.length; index++) { + const scientist = listOfScientists[index]; + events.push({ body: `${scientist.firstName} ${scientist.name}` }); + } + console.log("Sending batch events..."); + + await producer.send(events); + } finally { + await client.close(); } - - await client.close(); } main().catch(err => { diff --git a/sdk/eventhub/event-hubs/samples/iotGetHubRuntimeInfo.ts b/sdk/eventhub/event-hubs/samples/useWithIotHub.ts similarity index 55% rename from sdk/eventhub/event-hubs/samples/iotGetHubRuntimeInfo.ts rename to sdk/eventhub/event-hubs/samples/useWithIotHub.ts index 54e26ef34050..40fc4f7e449c 100644 --- a/sdk/eventhub/event-hubs/samples/iotGetHubRuntimeInfo.ts +++ b/sdk/eventhub/event-hubs/samples/useWithIotHub.ts @@ -2,8 +2,7 @@ Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT Licence. - This sample demonstrates how to use getHubRuntimeInformation() and - getPartitionInformation() to get information about the Iot Hub instance. + This sample demonstrates how to use the EventHubClient with an IotHub instance */ import { EventHubClient } from "@azure/event-hubs"; @@ -12,13 +11,9 @@ const connectionString = ""; async function main(): Promise { const client = await EventHubClient.createFromIotHubConnectionString(connectionString); - - const info = await client.getHubRuntimeInformation(); - console.log("RuntimeInfo: ", info); - - const pInfo = await client.getPartitionInformation(info.partitionIds[0]); - console.log("Partition Information: ", pInfo); - + /* + Refer to other samples, and place your code here to send/receive events using the above client + */ await client.close(); } diff --git a/sdk/eventhub/event-hubs/samples/servicePrincipalLogin.ts b/sdk/eventhub/event-hubs/samples/usingAadAuth.ts similarity index 71% rename from sdk/eventhub/event-hubs/samples/servicePrincipalLogin.ts rename to sdk/eventhub/event-hubs/samples/usingAadAuth.ts index 652aaa3e43c3..3c05373b7e25 100644 --- a/sdk/eventhub/event-hubs/samples/servicePrincipalLogin.ts +++ b/sdk/eventhub/event-hubs/samples/usingAadAuth.ts @@ -16,24 +16,22 @@ - In the "Certificates & Secrets" tab, create a secret and note that down. - In the Azure portal, go to your Even Hubs resource and click on the Access control (IAM) tab. Here, assign "owner" role to the registered application. + + Note: If you are using version 2.1.0 or lower of @azure/event-hubs library, then please use the samples at + https://github.com/Azure/azure-sdk-for-js/tree/%40azure/event-hubs_2.1.0/sdk/eventhub/event-hubs/samples instead. */ import { EventHubClient } from "@azure/event-hubs"; -import { loginWithServicePrincipalSecret } from "@azure/ms-rest-nodeauth"; +import { EnvironmentCredential } from "@azure/identity"; // Define Event Hubs Endpoint and related entity name here here const evenHubsEndpoint = ""; // .servicebus.windows.net -const eventHubsName = ""; +const eventHubName = ""; -// Define CLIENT_ID, TENANT_ID and SECRET of your AAD application here -const clientId = ""; -const clientSecret = ""; -const tenantId = ""; +// Define AZURE_TENANT_ID, AZURE_CLIENT_ID and AZURE_CLIENT_SECRET of your AAD application in your environment async function main(): Promise { - const credentials = await loginWithServicePrincipalSecret(clientId, clientSecret, tenantId, { - tokenAudience: "https://eventhubs.azure.net/" - }); - const client = EventHubClient.createFromAadTokenCredentials(evenHubsEndpoint, eventHubsName, credentials); + const credential = new EnvironmentCredential(); + const client = new EventHubClient(evenHubsEndpoint, eventHubName, credential); /* Refer to other samples, and place your code here to send/receive events diff --git a/sdk/eventhub/event-hubs/samples/websockets.ts b/sdk/eventhub/event-hubs/samples/websockets.ts index 6ba411867f5f..959c7ded94e3 100644 --- a/sdk/eventhub/event-hubs/samples/websockets.ts +++ b/sdk/eventhub/event-hubs/samples/websockets.ts @@ -9,6 +9,9 @@ This sample uses 2 external libraries - The `ws` library to provide a WebSocket implementation to the Event Hubs library. - The `https-proxy-agent` to enable the `ws` library to work with a proxy server. + + Note: If you are using version 2.1.0 or lower of @azure/event-hubs library, then please use the samples at + https://github.com/Azure/azure-sdk-for-js/tree/%40azure/event-hubs_2.1.0/sdk/eventhub/event-hubs/samples instead. */ import { EventHubClient } from "@azure/event-hubs"; @@ -18,7 +21,7 @@ const httpsProxyAgent = require("https-proxy-agent"); // Define connection string and related Event Hubs entity name here const connectionString = ""; -const eventHubsName = ""; +const eventHubName = ""; // Create an instance of the `HttpsProxyAgent` class with the proxy server information like // proxy url, username and password @@ -28,13 +31,12 @@ urlParts.auth = "username:password"; // Skip this if proxy server does not need const proxyAgent = new httpsProxyAgent(urlParts); async function main(): Promise { - const client = EventHubClient.createFromConnectionString(connectionString, eventHubsName, { + const client = new EventHubClient(connectionString, eventHubName, { webSocket: WebSocket, webSocketConstructorOptions: { agent: proxyAgent } }); /* - Refer to other samples, and place your code here - to send/receive events + Refer to other samples, and place your code here to send/receive events */ await client.close(); } diff --git a/sdk/eventhub/event-hubs/src/batchingReceiver.ts b/sdk/eventhub/event-hubs/src/batchingReceiver.ts index 481847ee8a5b..026275c987b9 100644 --- a/sdk/eventhub/event-hubs/src/batchingReceiver.ts +++ b/sdk/eventhub/event-hubs/src/batchingReceiver.ts @@ -1,31 +1,55 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -import { ReceiverEvents, EventContext, OnAmqpEvent, SessionEvents } from "rhea-promise"; -import { translate, Func, Constants, MessagingError } from "@azure/amqp-common"; -import { EventData } from "./eventData"; -import { ReceiveOptions } from "./eventHubClient"; +import { ReceiverEvents, EventContext, OnAmqpEvent, SessionEvents, Receiver as RheaReceiver } from "rhea-promise"; +import { + translate, + Func, + Constants, + MessagingError, + randomNumberFromInterval, + RetryOperationType, + RetryConfig, + retry +} from "@azure/core-amqp"; +import { ReceivedEventData, EventDataInternal, fromAmqpMessage } from "./eventData"; +import { EventHubConsumerOptions, RetryOptions } from "./eventHubClient"; import { EventHubReceiver } from "./eventHubReceiver"; import { ConnectionContext } from "./connectionContext"; +import { AbortSignalLike, AbortError } from "@azure/abort-controller"; import * as log from "./log"; +import { EventPosition } from "./eventPosition"; /** * Describes the batching receiver where the user can receive a specified number of messages for a predefined time. * @class BatchingReceiver * @extends EventHubReceiver - * @ignore + * @internal */ export class BatchingReceiver extends EventHubReceiver { + /** + * @property isReceivingMessages Indicates whether the link is actively receiving + * messages. Default: false. + */ + isReceivingMessages: boolean = false; /** * Instantiate a new receiver from the AMQP `Receiver`. Used by `EventHubClient`. * @ignore * @constructor - * @param {ConnectionContext} context The connection context. - * @param {string} partitionId Partition ID from which to receive. - * @param {ReceiveOptions} [options] Options for how you'd like to connect. + * @param context The connection context. + * @param consumerGroup The consumer group from which the receiver should receive events from. + * @param partitionId Partition ID from which to receive. + * @param eventPosition The event position in the partition at which to start receiving messages. + * @param [options] Options for how you'd like to connect. */ - constructor(context: ConnectionContext, partitionId: string | number, options?: ReceiveOptions) { - super(context, partitionId, options); + constructor( + context: ConnectionContext, + consumerGroup: string, + partitionId: string, + eventPosition: EventPosition, + options?: EventHubConsumerOptions + ) { + super(context, consumerGroup, partitionId, eventPosition, options); } /** @@ -33,194 +57,336 @@ export class BatchingReceiver extends EventHubReceiver { * a given max wait time in seconds, whichever happens first. This method can be used directly * after creating the receiver object. * @ignore - * @param {number} maxMessageCount The maximum message count. Must be a value greater than 0. - * @param {number} [maxWaitTimeInSeconds] The maximum wait time in seconds for which the Receiver + * @param maxMessageCount The maximum message count. Must be a value greater than 0. + * @param [maxWaitTimeInSeconds] The maximum wait time in seconds for which the Receiver * should wait to receiver the said amount of messages. If not provided, it defaults to 60 seconds. - * @returns {Promise} A promise that resolves with an array of EventData objects. + * @param [retryOptions] Retry options for the receive operation + * @param abortSignal Signal to cancel current operation. + * @returns A promise that resolves with an array of ReceivedEventData objects. */ - receive(maxMessageCount: number, maxWaitTimeInSeconds?: number): Promise { - if (!maxMessageCount || (maxMessageCount && typeof maxMessageCount !== "number")) { - throw new Error("'maxMessageCount' is a required parameter of type number with a value greater than 0."); - } - + receive( + maxMessageCount: number, + maxWaitTimeInSeconds?: number, + retryOptions?: RetryOptions, + abortSignal?: AbortSignalLike + ): Promise { if (maxWaitTimeInSeconds == undefined) { maxWaitTimeInSeconds = Constants.defaultOperationTimeoutInSeconds; } - const eventDatas: EventData[] = []; - let timeOver = false; - return new Promise((resolve, reject) => { - let onReceiveMessage: OnAmqpEvent; - let onReceiveError: OnAmqpEvent; - let onReceiveClose: OnAmqpEvent; - let onSessionError: OnAmqpEvent; - let onSessionClose: OnAmqpEvent; - let waitTimer: any; - let actionAfterWaitTimeout: Func; - // Final action to be performed after maxMessageCount is reached or the maxWaitTime is over. - const finalAction = (timeOver: boolean, data?: EventData) => { - // Resetting the mode. Now anyone can call start() or receive() again. - if (this._receiver) { - this._receiver.removeListener(ReceiverEvents.receiverError, onReceiveError); - this._receiver.removeListener(ReceiverEvents.message, onReceiveMessage); - } - if (!data) { - data = eventDatas.length ? eventDatas[eventDatas.length - 1] : undefined; + this.isReceivingMessages = true; + const eventDatas: ReceivedEventData[] = []; + + const receiveEventPromise = () => + new Promise(async (resolve, reject) => { + let onReceiveMessage: OnAmqpEvent; + let onReceiveError: OnAmqpEvent; + let onReceiveClose: OnAmqpEvent; + let onSessionError: OnAmqpEvent; + let onSessionClose: OnAmqpEvent; + let waitTimer: any; + let actionAfterWaitTimeout: Func; + + const rejectOnAbort = () => { + const desc: string = + `[${this._context.connectionId}] The request operation on the Receiver "${this.name}" with ` + + `address "${this.address}" has been cancelled by the user.`; + log.error(desc); + reject(new AbortError("The receive operation has been cancelled by the user.")); + }; + + // operation has been cancelled, so exit quickly + if (abortSignal && abortSignal.aborted) { + return rejectOnAbort(); } - if (!timeOver) { + + const cleanUpBeforeReturn = (rheaReceiver?: RheaReceiver) => { + if (!rheaReceiver) { + rheaReceiver = this._receiver; + } + if (this._abortSignal) { + this._abortSignal.removeEventListener("abort", this._onAbort); + } + // Resetting the mode. Now anyone can call start() or receive() again. + if (rheaReceiver) { + rheaReceiver.removeListener(ReceiverEvents.receiverError, onReceiveError); + rheaReceiver.removeListener(ReceiverEvents.message, onReceiveMessage); + rheaReceiver.session.removeListener(SessionEvents.sessionError, onSessionError); + } + + this.isReceivingMessages = false; clearTimeout(waitTimer); - } - if (this.receiverRuntimeMetricEnabled && data) { - this.runtimeInfo.lastSequenceNumber = data.lastSequenceNumber; - this.runtimeInfo.lastEnqueuedTimeUtc = data.lastEnqueuedTime; - this.runtimeInfo.lastEnqueuedOffset = data.lastEnqueuedOffset; - this.runtimeInfo.retrievalTime = data.retrievalTime; - } - resolve(eventDatas); - }; - - // Action to be performed after the max wait time is over. - actionAfterWaitTimeout = () => { - timeOver = true; - log.batching( - "[%s] Batching Receiver '%s', %d messages received when max wait time in seconds %d is over.", - this._context.connectionId, - this.name, - eventDatas.length, - maxWaitTimeInSeconds - ); - return finalAction(timeOver); - }; - - // Action to be performed on the "message" event. - onReceiveMessage = (context: EventContext) => { - const data: EventData = EventData.fromAmqpMessage(context.message!); - data.body = this._context.dataTransformer.decode(context.message!.body); - if (eventDatas.length <= maxMessageCount) { - eventDatas.push(data); - } - if (eventDatas.length === maxMessageCount) { + }; + + // Final action to be performed after maxMessageCount is reached or the maxWaitTime is over. + const finalAction = () => { + cleanUpBeforeReturn(); + resolve(eventDatas); + }; + + // Action to be performed after the max wait time is over. + actionAfterWaitTimeout = () => { log.batching( - "[%s] Batching Receiver '%s', %d messages received within %d seconds.", + "[%s] Batching Receiver '%s', %d messages received when max wait time in seconds %d is over.", this._context.connectionId, this.name, eventDatas.length, maxWaitTimeInSeconds ); - finalAction(timeOver, data); - } - }; - - // Action to be taken when an error is received. - onReceiveError = (context: EventContext) => { - const receiver = this._receiver || context.receiver!; - receiver.removeListener(ReceiverEvents.receiverError, onReceiveError); - receiver.removeListener(ReceiverEvents.message, onReceiveMessage); - receiver.session.removeListener(SessionEvents.sessionError, onSessionError); - - const receiverError = context.receiver && context.receiver.error; - let error = new MessagingError("An error occuured while receiving messages."); - if (receiverError) { - error = translate(receiverError); - log.error("[%s] Receiver '%s' received an error:\n%O", this._context.connectionId, this.name, error); - } - if (waitTimer) { - clearTimeout(waitTimer); - } - reject(error); - }; - - onReceiveClose = async (context: EventContext) => { - const receiverError = context.receiver && context.receiver.error; - if (receiverError) { - log.error( - "[%s] 'receiver_close' event occurred. The associated error is: %O", - this._context.connectionId, - receiverError - ); - } - }; + return finalAction(); + }; - onSessionClose = async (context: EventContext) => { - const sessionError = context.session && context.session.error; - if (sessionError) { - log.error( - "[%s] 'session_close' event occurred for receiver '%s'. The associated error is: %O", - this._context.connectionId, - this.name, - sessionError - ); - } - }; - - onSessionError = (context: EventContext) => { - const receiver = this._receiver || context.receiver!; - receiver.removeListener(ReceiverEvents.receiverError, onReceiveError); - receiver.removeListener(ReceiverEvents.message, onReceiveMessage); - receiver.session.removeListener(SessionEvents.sessionError, onReceiveError); - const sessionError = context.session && context.session.error; - let error = new MessagingError("An error occuured while receiving messages."); - if (sessionError) { - error = translate(sessionError); - log.error( - "[%s] 'session_close' event occurred for Receiver '%s' received an error:\n%O", + // Action to be performed on the "message" event. + onReceiveMessage = (context: EventContext) => { + const data: EventDataInternal = fromAmqpMessage(context.message!); + if (this.receiverRuntimeMetricEnabled) { + this.runtimeInfo.lastEnqueuedSequenceNumber = data.lastSequenceNumber; + this.runtimeInfo.lastEnqueuedTimeUtc = data.lastEnqueuedTime; + this.runtimeInfo.lastEnqueuedOffset = data.lastEnqueuedOffset; + this.runtimeInfo.retrievalTime = data.retrievalTime; + } + + const receivedEventData: ReceivedEventData = { + body: this._context.dataTransformer.decode(context.message!.body), + properties: data.properties, + offset: data.offset!, + sequenceNumber: data.sequenceNumber!, + enqueuedTimeUtc: data.enqueuedTimeUtc!, + partitionKey: data.partitionKey! + }; + this._checkpoint = receivedEventData.sequenceNumber; + if (eventDatas.length <= maxMessageCount) { + eventDatas.push(receivedEventData); + } + if (eventDatas.length === maxMessageCount) { + log.batching( + "[%s] Batching Receiver '%s', %d messages received within %d seconds.", + this._context.connectionId, + this.name, + eventDatas.length, + maxWaitTimeInSeconds + ); + finalAction(); + } + }; + + const onAbort = async () => { + cleanUpBeforeReturn(); + await this.close(); + rejectOnAbort(); + }; + + // Action to be taken when an error is received. + onReceiveError = (context: EventContext) => { + cleanUpBeforeReturn(this._receiver || context.receiver!); + + const receiverError = context.receiver && context.receiver.error; + let error = new MessagingError("An error occuured while receiving messages."); + if (receiverError) { + error = translate(receiverError); + log.error("[%s] Receiver '%s' received an error:\n%O", this._context.connectionId, this.name, error); + } + reject(error); + }; + + onReceiveClose = async (context: EventContext) => { + this.isReceivingMessages = false; + const receiver = this._receiver || context.receiver!; + const receiverError = context.receiver && context.receiver.error; + if (receiverError) { + log.error( + "[%s] 'receiver_close' event occurred. The associated error is: %O", + this._context.connectionId, + receiverError + ); + } + if (receiver && !receiver.isItselfClosed()) { + if (!this.isConnecting) { + log.error( + "[%s] 'receiver_close' event occurred on the receiver '%s' with address '%s' " + + "and the sdk did not initiate this. The receiver is not reconnecting. Hence, calling " + + "detached from the onReceiveClose() handler.", + this._context.connectionId, + this.name, + this.address + ); + await this.onDetached(receiverError); + } else { + log.error( + "[%s] 'receiver_close' event occurred on the receiver '%s' with address '%s' " + + "and the sdk did not initate this. Moreover the receiver is already re-connecting. " + + "Hence not calling detached from the onReceiveClose() handler.", + this._context.connectionId, + this.name, + this.address + ); + } + } else { + log.error( + "[%s] 'receiver_close' event occurred on the receiver '%s' with address '%s' " + + "because the sdk initiated it. Hence not calling detached from the onReceiveClose" + + "() handler.", + this._context.connectionId, + this.name, + this.address + ); + } + }; + + onSessionClose = async (context: EventContext) => { + this.isReceivingMessages = false; + const receiver = this._receiver || context.receiver!; + const sessionError = context.session && context.session.error; + if (sessionError) { + log.error( + "[%s] 'session_close' event occurred for receiver '%s'. The associated error is: %O", + this._context.connectionId, + this.name, + sessionError + ); + } + if (receiver && !receiver.isSessionItselfClosed()) { + if (!this.isConnecting) { + log.error( + "[%s] 'session_close' event occurred on the session of receiver '%s' with " + + "address '%s' and the sdk did not initiate this. Hence calling detached from the " + + "onSessionClose() handler.", + this._context.connectionId, + this.name, + this.address + ); + await this.onDetached(sessionError); + } else { + log.error( + "[%s] 'session_close' event occurred on the session of receiver '%s' with " + + "address '%s' and the sdk did not initiate this. Moreover the receiver is already " + + "re-connecting. Hence not calling detached from the onSessionClose() handler.", + this._context.connectionId, + this.name, + this.address + ); + } + } else { + log.error( + "[%s] 'session_close' event occurred on the session of receiver '%s' with address " + + "'%s' because the sdk initiated it. Hence not calling detached from the onSessionClose" + + "() handler.", + this._context.connectionId, + this.name, + this.address + ); + } + }; + + onSessionError = (context: EventContext) => { + cleanUpBeforeReturn(this._receiver || context.receiver!); + + const sessionError = context.session && context.session.error; + let error = new MessagingError("An error occuured while receiving messages."); + if (sessionError) { + error = translate(sessionError); + log.error( + "[%s] 'session_close' event occurred for Receiver '%s' received an error:\n%O", + this._context.connectionId, + this.name, + error + ); + } + reject(error); + }; + + const addCreditAndSetTimer = (reuse?: boolean) => { + log.batching( + "[%s] Receiver '%s', adding credit for receiving %d messages.", this._context.connectionId, this.name, - error + maxMessageCount ); + this._receiver!.addCredit(maxMessageCount); + let msg: string = "[%s] Setting the wait timer for %d seconds for receiver '%s'."; + if (reuse) msg += " Receiver link already present, hence reusing it."; + log.batching(msg, this._context.connectionId, maxWaitTimeInSeconds, this.name); + waitTimer = setTimeout(actionAfterWaitTimeout, (maxWaitTimeInSeconds as number) * 1000); + }; + + if (!this.isOpen()) { + log.batching("[%s] Receiver '%s', setting the prefetch count to 0.", this._context.connectionId, this.name); + this.prefetchCount = 0; + const rcvrOptions = this._createReceiverOptions({ + onMessage: onReceiveMessage, + onError: onReceiveError, + onClose: onReceiveClose, + onSessionError: onSessionError, + onSessionClose: onSessionClose + }); + + try { + await this._init(rcvrOptions); + if (abortSignal && abortSignal.aborted) { + // exit early if operation was cancelled while initializing connection + cleanUpBeforeReturn(); + await this.close(); + return rejectOnAbort(); + } + addCreditAndSetTimer(); + } catch (err) { + // remove listeners if a connection could not be established + cleanUpBeforeReturn(); + return reject(err); + } + } else { + addCreditAndSetTimer(true); + this._receiver!.on(ReceiverEvents.message, onReceiveMessage); + this._receiver!.on(ReceiverEvents.receiverError, onReceiveError); + this._receiver!.session.on(SessionEvents.sessionError, onSessionError); } - if (waitTimer) { - clearTimeout(waitTimer); + + // only attach abort event listener after the receiver has been initialized + // otherwise `close()` can be called during an intermediate state. + if (abortSignal) { + this._abortSignal = abortSignal; + this._abortSignal.addEventListener("abort", onAbort); } - reject(error); - }; - - const addCreditAndSetTimer = (reuse?: boolean) => { - log.batching( - "[%s] Receiver '%s', adding credit for receiving %d messages.", - this._context.connectionId, - this.name, - maxMessageCount - ); - this._receiver!.addCredit(maxMessageCount); - let msg: string = "[%s] Setting the wait timer for %d seconds for receiver '%s'."; - if (reuse) msg += " Receiver link already present, hence reusing it."; - log.batching(msg, this._context.connectionId, maxWaitTimeInSeconds, this.name); - waitTimer = setTimeout(actionAfterWaitTimeout, (maxWaitTimeInSeconds as number) * 1000); - }; - - if (!this.isOpen()) { - log.batching("[%s] Receiver '%s', setting the prefetch count to 0.", this._context.connectionId, this.name); - this.prefetchCount = 0; - const rcvrOptions = this._createReceiverOptions({ - onMessage: onReceiveMessage, - onError: onReceiveError, - onClose: onReceiveClose, - onSessionError: onSessionError, - onSessionClose: onSessionClose - }); - this._init(rcvrOptions) - .then(() => addCreditAndSetTimer()) - .catch(reject); - } else { - addCreditAndSetTimer(true); - this._receiver!.on(ReceiverEvents.message, onReceiveMessage); - this._receiver!.on(ReceiverEvents.receiverError, onReceiveError); - this._receiver!.session.on(SessionEvents.sessionError, onReceiveError); - } - }); + }); + + const jitterInSeconds = randomNumberFromInterval(1, 4); + const times = + retryOptions && retryOptions.retryCount && retryOptions.retryCount > 0 + ? retryOptions.retryCount + : Constants.defaultRetryAttempts; + const delayInSeconds = + retryOptions && retryOptions.retryInterval && retryOptions.retryInterval > 0 + ? retryOptions.retryInterval / 1000 + : Constants.defaultDelayBetweenOperationRetriesInSeconds; + const config: RetryConfig = { + operation: receiveEventPromise, + connectionId: this._context.connectionId, + operationType: RetryOperationType.receiveMessage, + times: times, + connectionHost: this._context.config.host, + delayInSeconds: delayInSeconds + jitterInSeconds + }; + return retry(config); } /** * Creates a batching receiver. * @static * @ignore - * @param {ConnectionContext} context The connection context. - * @param {string | number} partitionId The partitionId to receive events from. - * @param {ReceiveOptions} [options] Receive options. + * @param context The connection context. + * @param consumerGroup The consumer group from which the receiver should receive events from. + * @param partitionId The partitionId to receive events from. + * @param eventPosition The event position in the partition at which to start receiving messages. + * @param [options] Receive options. */ - static create(context: ConnectionContext, partitionId: string | number, options?: ReceiveOptions): BatchingReceiver { - const bReceiver = new BatchingReceiver(context, partitionId, options); + static create( + context: ConnectionContext, + consumerGroup: string, + partitionId: string, + eventPosition: EventPosition, + options?: EventHubConsumerOptions + ): BatchingReceiver { + const bReceiver = new BatchingReceiver(context, consumerGroup, partitionId, eventPosition, options); context.receivers[bReceiver.name] = bReceiver; return bReceiver; } diff --git a/sdk/eventhub/event-hubs/src/connectionContext.ts b/sdk/eventhub/event-hubs/src/connectionContext.ts index 141fd9893205..f7232ae424c5 100644 --- a/sdk/eventhub/event-hubs/src/connectionContext.ts +++ b/sdk/eventhub/event-hubs/src/connectionContext.ts @@ -11,52 +11,62 @@ import { delay, ConnectionContextBase, CreateConnectionContextBaseParameters, - EventHubConnectionConfig -} from "@azure/amqp-common"; + EventHubConnectionConfig, + TokenCredential, + SharedKeyCredential +} from "@azure/core-amqp"; import { ManagementClient, ManagementClientOptions } from "./managementClient"; -import { ClientOptions } from "./eventHubClient"; +import { EventHubClientOptions } from "./eventHubClient"; import { Dictionary, OnAmqpEvent, EventContext, ConnectionEvents } from "rhea-promise"; /** * @interface ConnectionContext - * @ignore + * @internal * Provides contextual information like the underlying amqp connection, cbs session, management session, * tokenProvider, senders, receivers, etc. about the EventHub client. */ export interface ConnectionContext extends ConnectionContextBase { /** - * @property {EventHubConnectionConfig} config The EventHub connection config that is created after + * @property config The EventHub connection config that is created after * parsing the connection string. */ readonly config: EventHubConnectionConfig; /** - * @property {boolean} wasConnectionCloseCalled Indicates whether the close() method was + * @property wasConnectionCloseCalled Indicates whether the close() method was * called on theconnection object. */ wasConnectionCloseCalled: boolean; /** - * @property {Dictionary} receivers A dictionary of the EventHub Receivers associated with this client. + * @property receivers A dictionary of the EventHub Receivers associated with this client. */ receivers: Dictionary; /** - * @property {Dictionary} senders A dictionary of the EventHub Senders associated with this client. + * @property senders A dictionary of the EventHub Senders associated with this client. */ senders: Dictionary; /** - * @property {ManagementClient} managementSession A reference to the management session ($management endpoint) on + * @property managementSession A reference to the management session ($management endpoint) on * the underlying amqp connection for the EventHub Client. */ managementSession?: ManagementClient; } -export interface ConnectionContextOptions extends ClientOptions { +/** + * @internal + * @ignore + */ +export interface ConnectionContextOptions extends EventHubClientOptions { managementSessionAddress?: string; managementSessionAudience?: string; } +/** + * @internal + * @ignore + */ export namespace ConnectionContext { /** - * @property {string} userAgent The user agent string for the EventHubs client. + * @property userAgent The user agent string for the EventHubs client. * See guideline at https://github.com/Azure/azure-sdk/blob/master/docs/design/Telemetry.mdk */ const userAgent: string = `azsdk-js-azureeventhubs/${packageJsonInfo.version} (NODE-VERSION ${ @@ -74,12 +84,20 @@ export namespace ConnectionContext { return finalUserAgent; } - export function create(config: EventHubConnectionConfig, options?: ConnectionContextOptions): ConnectionContext { + export function create( + config: EventHubConnectionConfig, + tokenCredential: SharedKeyCredential | TokenCredential, + options?: ConnectionContextOptions + ): ConnectionContext { if (!options) options = {}; + config.webSocket = options.webSocket; + config.webSocketEndpointPath = "$servicebus/websocket"; + config.webSocketConstructorOptions = options.webSocketConstructorOptions; + const parameters: CreateConnectionContextBaseParameters = { config: config, - tokenProvider: options.tokenProvider, + tokenCredential: tokenCredential, dataTransformer: options.dataTransformer, isEntityPathRequired: true, connectionProperties: { @@ -166,7 +184,7 @@ export namespace ConnectionContext { sender.name, sender.address ); - sender.detached(connectionError || contextError).catch(err => { + sender.onDetached(connectionError || contextError).catch(err => { log.error( "[%s] An error occurred while reconnecting the sender '%s' with adress '%s' %O.", connectionContext.connection.id, @@ -195,7 +213,7 @@ export namespace ConnectionContext { receiver.name, receiver.address ); - receiver.detached(connectionError || contextError).catch(err => { + receiver.onDetached(connectionError || contextError).catch(err => { log.error( "[%s] An error occurred while reconnecting the receiver '%s' with adress '%s' %O.", connectionContext.connection.id, diff --git a/sdk/eventhub/event-hubs/src/eventData.ts b/sdk/eventhub/event-hubs/src/eventData.ts index 80df9b95f32b..e17df51e17bd 100644 --- a/sdk/eventhub/event-hubs/src/eventData.ts +++ b/sdk/eventhub/event-hubs/src/eventData.ts @@ -1,41 +1,33 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -import { - Message, - MessageProperties, - MessageHeader, - Dictionary, - messageHeader, - messageProperties, - MessageAnnotations, - DeliveryAnnotations -} from "rhea-promise"; -import { Constants } from "@azure/amqp-common"; +import { Message, Dictionary, MessageAnnotations, DeliveryAnnotations } from "rhea-promise"; +import { Constants } from "@azure/core-amqp"; /** * Describes the delivery annotations. * @interface EventHubDeliveryAnnotations + * @ignore */ export interface EventHubDeliveryAnnotations extends DeliveryAnnotations { /** - * @property {string} [last_enqueued_offset] The offset of the last event. + * @property [last_enqueued_offset] The offset of the last event. */ last_enqueued_offset?: string; /** - * @property {number} [last_enqueued_sequence_number] The sequence number of the last event. + * @property [last_enqueued_sequence_number] The sequence number of the last event. */ last_enqueued_sequence_number?: number; /** - * @property {number} [last_enqueued_time_utc] The enqueued time of the last event. + * @property [last_enqueued_time_utc] The enqueued time of the last event. */ last_enqueued_time_utc?: number; /** - * @property {number} [runtime_info_retrieval_time_utc] The retrieval time of the last event. + * @property [runtime_info_retrieval_time_utc] The retrieval time of the last event. */ runtime_info_retrieval_time_utc?: number; /** - * @property {string} Any unknown delivery annotations. + * @property Any unknown delivery annotations. */ [x: string]: any; } @@ -43,213 +35,189 @@ export interface EventHubDeliveryAnnotations extends DeliveryAnnotations { /** * Map containing message attributes that will be held in the message header. * @interface EventHubMessageAnnotations + * @ignore */ export interface EventHubMessageAnnotations extends MessageAnnotations { /** - * @property {string | null} [x-opt-partition-key] Annotation for the partition key set for the event. + * @property [x-opt-partition-key] Annotation for the partition key set for the event. */ "x-opt-partition-key"?: string | null; /** - * @property {number} [x-opt-sequence-number] Annontation for the sequence number of the event. + * @property [x-opt-sequence-number] Annontation for the sequence number of the event. */ "x-opt-sequence-number"?: number; /** - * @property {number} [x-opt-enqueued-time] Annotation for the enqueued time of the event. + * @property [x-opt-enqueued-time] Annotation for the enqueued time of the event. */ "x-opt-enqueued-time"?: number; /** - * @property {string} [x-opt-offset] Annotation for the offset of the event. + * @property [x-opt-offset] Annotation for the offset of the event. */ "x-opt-offset"?: string; /** - * @property {any} Any other annotation that can be added to the message. + * @property Any other annotation that can be added to the message. */ [x: string]: any; } /** * Describes the structure of an event to be sent or received from the EventHub. - * @interface EventData + * @interface + * @ignore */ -export interface EventData { - /** - * @property {MessageHeader} [header] - The message headers. - */ - header?: MessageHeader; +export interface EventDataInternal { /** - * @property {any} body - The message body that needs to be sent or is received. + * @property body - The message body that needs to be sent or is received. */ body: any; /** - * @property {Date} [enqueuedTimeUtc] The enqueued time of the event. + * @property [enqueuedTimeUtc] The enqueued time of the event. */ enqueuedTimeUtc?: Date; /** - * @property {string | null} [partitionKey] If specified EventHub will hash this to a partitionId. + * @property [partitionKey] If specified EventHub will hash this to a partitionId. * It guarantees that messages end up in a specific partition on the event hub. */ partitionKey?: string | null; /** - * @property {string} [offset] The offset of the event. + * @property [offset] The offset of the event. */ offset?: string; /** - * @property {number} [sequenceNumber] The sequence number of the event. + * @property [sequenceNumber] The sequence number of the event. */ sequenceNumber?: number; /** - * @property {AmqpMessageAnnotations} [annotations] The amqp message attributes. - */ - annotations?: EventHubMessageAnnotations; - /** - * @property {AmqpMessageProperties} [properties] The predefined AMQP properties like message_id, correlation_id, reply_to, etc. - */ - properties?: MessageProperties; - /** - * @property {Dictionary} [applicationProperties] The application specific properties. + * @property [properties] The application specific properties. */ - applicationProperties?: Dictionary; + properties?: Dictionary; /** - * @property {number} [lastSequenceNumber] The last sequence number of the event within the partition stream of the Event Hub. + * @property [lastSequenceNumber] The last sequence number of the event within the partition stream of the Event Hub. */ lastSequenceNumber?: number; /** - * @property {string} [lastEnqueuedOffset] The offset of the last enqueued event. + * @property [lastEnqueuedOffset] The offset of the last enqueued event. */ lastEnqueuedOffset?: string; /** - * @property {Date} [lastEnqueuedTime] The enqueued UTC time of the last event. + * @property [lastEnqueuedTime] The enqueued UTC time of the last event. */ lastEnqueuedTime?: Date; /** - * @property {Date} [retrievalTime] The time when the runtime info was retrieved + * @property [retrievalTime] The time when the runtime info was retrieved */ retrievalTime?: Date; - /** - * @property {AmqpMessage} _raw_amqp_mesage The underlying raw amqp message. - */ - _raw_amqp_mesage?: Message; } /** - * Describes the methods on the EventData interface. - * @module EventData + * Converts the AMQP message to an EventData. + * @param msg The AMQP message that needs to be converted to EventData. + * @ignore */ -export namespace EventData { - /** - * Converts the AMQP message to an EventData. - * @param {AmqpMessage} msg The AMQP message that needs to be converted to EventData. - */ - export function fromAmqpMessage(msg: Message): EventData { - const data: EventData = { - body: msg.body, - _raw_amqp_mesage: msg - }; - if (msg.message_annotations) { - data.annotations = msg.message_annotations; - if (msg.message_annotations[Constants.partitionKey] != undefined) { - data.partitionKey = msg.message_annotations[Constants.partitionKey]; - } - if (msg.message_annotations[Constants.sequenceNumber] != undefined) { - data.sequenceNumber = msg.message_annotations[Constants.sequenceNumber]; - } - if (msg.message_annotations[Constants.enqueuedTime] != undefined) { - data.enqueuedTimeUtc = new Date(msg.message_annotations[Constants.enqueuedTime] as number); - } - if (msg.message_annotations[Constants.offset] != undefined) { - data.offset = msg.message_annotations[Constants.offset]; - } - } - // Since rhea expects message properties as top level properties we will look for them and unflatten them inside properties. - for (const prop of messageProperties) { - if ((msg as any)[prop] != undefined) { - if (!data.properties) { - data.properties = {}; - } - (data.properties as any)[prop] = (msg as any)[prop]; - } +export function fromAmqpMessage(msg: Message): EventDataInternal { + const data: EventDataInternal = { + body: msg.body + }; + if (msg.message_annotations) { + if (msg.message_annotations[Constants.partitionKey] != undefined) { + data.partitionKey = msg.message_annotations[Constants.partitionKey]; } - // Since rhea expects message headers as top level properties we will look for them and unflatten them inside header. - for (const prop of messageHeader) { - if ((msg as any)[prop] != undefined) { - if (!data.header) { - data.header = {}; - } - (data.header as any)[prop] = (msg as any)[prop]; - } + if (msg.message_annotations[Constants.sequenceNumber] != undefined) { + data.sequenceNumber = msg.message_annotations[Constants.sequenceNumber]; } - if (msg.application_properties) { - data.applicationProperties = msg.application_properties; + if (msg.message_annotations[Constants.enqueuedTime] != undefined) { + data.enqueuedTimeUtc = new Date(msg.message_annotations[Constants.enqueuedTime] as number); } - if (msg.delivery_annotations) { - data.lastEnqueuedOffset = msg.delivery_annotations.last_enqueued_offset; - data.lastSequenceNumber = msg.delivery_annotations.last_enqueued_sequence_number; - data.lastEnqueuedTime = new Date(msg.delivery_annotations.last_enqueued_time_utc as number); - data.retrievalTime = new Date(msg.delivery_annotations.runtime_info_retrieval_time_utc as number); + if (msg.message_annotations[Constants.offset] != undefined) { + data.offset = msg.message_annotations[Constants.offset]; } - return data; + } + if (msg.application_properties) { + data.properties = msg.application_properties; + } + if (msg.delivery_annotations) { + data.lastEnqueuedOffset = msg.delivery_annotations.last_enqueued_offset; + data.lastSequenceNumber = msg.delivery_annotations.last_enqueued_sequence_number; + data.lastEnqueuedTime = new Date(msg.delivery_annotations.last_enqueued_time_utc as number); + data.retrievalTime = new Date(msg.delivery_annotations.runtime_info_retrieval_time_utc as number); } - /** - * Converts an EventData object to an AMQP message. - * @param {EventData} data The EventData object that needs to be converted to an AMQP message. - */ - export function toAmqpMessage(data: EventData): Message { - const msg: Message = { - body: data.body - }; - // As per the AMQP 1.0 spec If the message-annotations or delivery-annotations section is omitted, - // it is equivalent to a message-annotations section containing anempty map of annotations. - msg.message_annotations = {}; - msg.delivery_annotations = {}; - if (data.annotations) { - msg.message_annotations = data.annotations; - } - if (data.properties) { - // Set amqp message properties as top level properties, since rhea sends them as top level properties. - for (const prop in data.properties) { - (msg as any)[prop] = (data.properties as any)[prop]; - } - } - if (data.applicationProperties) { - msg.application_properties = data.applicationProperties; - } - if (data.partitionKey != undefined) { - msg.message_annotations[Constants.partitionKey] = data.partitionKey; - // Event Hub service cannot route messages to a specific partition based on the partition key - // if AMQP message header is an empty object. Hence we make sure that header is always present - // with atleast one property. Setting durable to true, helps us achieve that. - msg.durable = true; - } - if (data.sequenceNumber != undefined) { - msg.message_annotations[Constants.sequenceNumber] = data.sequenceNumber; - } - if (data.enqueuedTimeUtc != undefined) { - msg.message_annotations[Constants.enqueuedTime] = data.enqueuedTimeUtc.getTime(); - } - if (data.offset != undefined) { - msg.message_annotations[Constants.offset] = data.offset; - } - if (data.lastEnqueuedOffset != undefined) { - msg.delivery_annotations.last_enqueued_offset = data.lastEnqueuedOffset; - } - if (data.lastSequenceNumber != undefined) { - msg.delivery_annotations.last_enqueued_sequence_number = data.lastSequenceNumber; - } - if (data.lastEnqueuedTime != undefined) { - msg.delivery_annotations.last_enqueued_time_utc = data.lastEnqueuedTime.getTime(); - } - if (data.retrievalTime != undefined) { - msg.delivery_annotations.runtime_info_retrieval_time_utc = data.retrievalTime.getTime(); - } - - if (data.header) { - // Set amqp message header as top level properties, since rhea expects them as top level properties. - for (const prop in data.header) { - (msg as any)[prop] = (data.header as any)[prop]; - } - } + return data; +} - return msg; +/** + * Converts an EventData object to an AMQP message. + * @param data The EventData object that needs to be converted to an AMQP message. + * @param partitionKey An optional key to determine the partition that this event should land in. + * @ignore + */ +export function toAmqpMessage(data: EventData, partitionKey?: string): Message { + const msg: Message = { + body: data.body + }; + // As per the AMQP 1.0 spec If the message-annotations or delivery-annotations section is omitted, + // it is equivalent to a message-annotations section containing anempty map of annotations. + msg.message_annotations = {}; + if (data.properties) { + msg.application_properties = data.properties; + } + if (partitionKey != undefined) { + msg.message_annotations[Constants.partitionKey] = partitionKey; + // Event Hub service cannot route messages to a specific partition based on the partition key + // if AMQP message header is an empty object. Hence we make sure that header is always present + // with atleast one property. Setting durable to true, helps us achieve that. + msg.durable = true; } + + return msg; +} + +/** + * Describes the structure of an event to be sent to Event Hub. + * @interface + */ +export interface EventData { + /** + * @property The message body that needs to be sent or is received. + */ + body: any; + /** + * @property The application specific properties. + */ + properties?: { + [key: string]: any; + }; +} + +/** + * Describes the structure of an event received from Event Hub. + */ +export interface ReceivedEventData { + /** + * @property The message body that needs to be sent or is received. + */ + body: any; + /** + * @property The application specific properties. + */ + properties?: { + [key: string]: any; + }; + /** + * @property The enqueued time of the event. + */ + enqueuedTimeUtc: Date; + /** + * @property When specified Event Hub will hash this to a partitionId. + * It guarantees that messages end up in a specific partition on the event hub. + */ + partitionKey: string | null; + /** + * @property The offset of the event. + */ + offset: string; + /** + * @property The sequence number of the event. + */ + sequenceNumber: number; } diff --git a/sdk/eventhub/event-hubs/src/eventHubClient.ts b/sdk/eventhub/event-hubs/src/eventHubClient.ts index f3343ef4049d..dcb43b2c4c4e 100644 --- a/sdk/eventhub/event-hubs/src/eventHubClient.ts +++ b/sdk/eventhub/event-hubs/src/eventHubClient.ts @@ -2,110 +2,156 @@ // Licensed under the MIT License. import * as log from "./log"; -import { Delivery, WebSocketImpl } from "rhea-promise"; +import { WebSocketImpl } from "rhea-promise"; import { - ApplicationTokenCredentials, - DeviceTokenCredentials, - UserTokenCredentials, - MSITokenCredentials -} from "@azure/ms-rest-nodeauth"; -import { - MessagingError, DataTransformer, - TokenProvider, + TokenCredential, EventHubConnectionConfig, - AadTokenProvider -} from "@azure/amqp-common"; -import { OnMessage, OnError } from "./eventHubReceiver"; -import { EventData } from "./eventData"; + SharedKeyCredential, + ConnectionConfig, + isTokenCredential, + Constants +} from "@azure/core-amqp"; + import { ConnectionContext } from "./connectionContext"; -import { EventHubPartitionRuntimeInformation, EventHubRuntimeInformation } from "./managementClient"; +import { PartitionProperties, EventHubProperties } from "./managementClient"; import { EventPosition } from "./eventPosition"; -import { EventHubSender } from "./eventHubSender"; -import { StreamingReceiver, ReceiveHandler } from "./streamingReceiver"; -import { BatchingReceiver } from "./batchingReceiver"; + import { IotHubClient } from "./iothub/iothubClient"; +import { AbortSignalLike } from "@azure/abort-controller"; +import { EventHubProducer } from "./sender"; +import { EventHubConsumer } from "./receiver"; +import { throwTypeErrorIfParameterMissing, throwErrorIfConnectionClosed } from "./util/error"; /** - * Describes the options that one can set while receiving messages. - * @interface ReceiveOptions + * Retry policy options for operations on the EventHubClient. */ -export interface ReceiveOptions { +export interface RetryOptions { /** - * @property {string} [name] The name of the receiver. If not provided then we will set a GUID by default. + * Total number of times to attempt an operation. */ - name?: string; + retryCount?: number; /** - * @property {object} [eventPosition] The starting event position at which to start receiving messages. - * This is used to filter messages for the EventHub Receiver. + * Number of milliseconds to wait between retries. */ - eventPosition?: EventPosition; + retryInterval?: number; + // /** + // * The maximum value the `retryInterval` gets incremented exponentially between retries. + // * Not applicable, when `isExponential` is set to `false`. + // */ + // maxRetryInterval?: number; + // /** + // * Boolean denoting if the `retryInterval` should be incremented exponentially between + // * retries or kept the same. + // */ + // isExponential?: boolean; +} + +/** + * Options to passed when creating a producer using the EventHubClient. + */ +export interface EventHubProducerOptions { + /** + * @property + * The id of the partition to which the event should be sent. If no id is provided, + * the service will determine the partition to which the event will be sent. + */ + partitionId?: string; /** - * @property {string} [consumerGroup] The consumer group to which the receiver wants to connect to. - * If not provided then it will be connected to "$default" consumer group. + * @property + * Retry options for the send operation on the producer. If no value is provided here, the + * retry options set when creating the `EventHubClient` is used. */ - consumerGroup?: string; + retryOptions?: RetryOptions; +} + +/** + * Options that can be passed when sending a batch of events using the EventHubsClient. + */ +export interface SendOptions { /** - * @property {number} [prefetchCount] The upper limit of events this receiver will actively receive - * regardless of whether a receive operation is pending. Defaults to 1000. + * @property + * If specified, Event Hubs will hash this string to map to a partitionId. + * It guarantees that messages with the same partitionKey end up in the same partition. + * Specifying this will throw an error if the producer was created using a `paritionId`. */ - prefetchCount?: number; + partitionKey?: string | null; /** - * @property {number} [epoch] The epoch value that this receiver is currently using for partition ownership. + * @property + * Can cancel the current operation. */ - epoch?: number; + abortSignal?: AbortSignalLike; +} + +/** + * Options that can be passed to the receive operations on the EventHubsClient. + * @interface EventHubConsumerOptions + */ +export interface EventHubConsumerOptions { /** - * @property {string} [identifier] The receiver identifier that uniqely identifies the receiver. + * @property + * The level that this consumer is currently using for partition ownership. + * If another consumer is currently active for the same partition with no or lower + * level, then it will get disconnected. + * If another consumer is currently active with a higher level, then this consumer + * will fail to connect. */ - identifier?: string; + ownerLevel?: number; /** - * @property {boolean} [enableReceiverRuntimeMetric] A value indicating whether the runtime metric of a receiver is enabled. + * @property + * Retry options for the receive operation on the consumer. If no value is provided here, the + * retry options set when creating the `EventHubClient` is used. */ - enableReceiverRuntimeMetric?: boolean; + retryOptions?: RetryOptions; } /** - * Describes the base client options. - * @interface ClientOptionsBase + * Describes the options that can be provided while creating the EventHubClient. + * @interface ClientOptions */ -export interface ClientOptionsBase { +export interface EventHubClientOptions { /** - * @property {DataTransformer} [dataTransformer] The data transformer that will be used to encode - * and decode the sent and received messages respectively. If not provided then we will use the - * DefaultDataTransformer. The default transformer should handle majority of the cases. This - * option needs to be used only for specialized scenarios. + * @property + * The data transformer that will be used to encode and decode the sent and received messages respectively. + * If not provided then the `DefaultDataTransformer` is used which has the below `encode` & `decode` features + * - `encode`: + * - If event body is a Buffer, then the event is sent without any data transformation + * - Else, JSON.stringfy() is run on the body, and then converted to Buffer before sending the event + * - If JSON.stringify() fails at this point, the send operation fails too. + * - `decode` + * - The body receivied via the AMQP protocol is always of type Buffer + * - UTF-8 encoding is used to convert Buffer to string, and then JSON.parse() is run on it to get the event body + * - If the JSON.parse() fails at this point, then the originally received Buffer object is returned in the event body. */ dataTransformer?: DataTransformer; /** - * @property {string} [userAgent] The user agent that needs to be appended to the built in - * user agent string. + * @property + * The user agent that will be appended to the built in user agent string that is passed as a + * connection property to the Event Hubs service */ userAgent?: string; /** - * @property The WebSocket constructor used to create an AMQP connection over a WebSocket. + * @property + * The WebSocket constructor used to create an AMQP connection over a WebSocket. * This option should be provided in the below scenarios * - The TCP port 5671 which is what is used by the AMQP connection to Event Hubs is blocked in your environment. * - Your application needs to be run behind a proxy server * - Your application needs to run in the browser and you want to provide your own choice of Websocket implementation * instead of the built-in WebSocket in the browser. */ - webSocket?: WebSocketImpl; + webSocket?: WebSocketImpl; /** - * @property {webSocketConstructorOptions} - Options to be passed to the WebSocket constructor + * @property + * Options to be passed to the WebSocket constructor when the underlying `rhea` library instantiates + * the WebSocket. */ - webSocketConstructorOptions?: any; -} - -/** - * Describes the options that can be provided while creating the EventHub Client. - * @interface ClientOptions - */ -export interface ClientOptions extends ClientOptionsBase { + webSocketConstructorOptions?: any; /** - * @property {TokenProvider} [tokenProvider] - The token provider that provides the token for authentication. - * Default value: SasTokenProvider. + * @property + * Retry options for all the operations on the client/producer/consumer. + * This can be overridden by the retry options set on the producer and consumer. */ - tokenProvider?: TokenProvider; + retryOptions?: RetryOptions; } /** @@ -114,41 +160,93 @@ export interface ClientOptions extends ClientOptionsBase { */ export class EventHubClient { /** - * @property {string} [connectionId] The amqp connection id that uniquely identifies the connection within a process. + * Describes the amqp connection context for the eventhub client. + */ + private _context: ConnectionContext; + + /** + * The options passed by the user when creating the EventHubClient instance. */ - connectionId?: string; + private _clientOptions: EventHubClientOptions; /** - * @property {string} eventhubName The name of the Eventhub. + * @property * @readonly + * The name of the Event Hub instance for which this client is created. */ - get eventhubName(): string { - return this._context.config.entityPath!; + get eventHubName(): string { + return this._context.config.entityPath; } /** - * @property {ConnectionContext} _context Describes the amqp connection context for the eventhub client. - * @private + * @constructor + * @param connectionString - Connection string of the form 'Endpoint=sb://my-servicebus-namespace.servicebus.windows.net/;SharedAccessKeyName=my-SA-name;SharedAccessKey=my-SA-key;EntityPath=my-event-hub-name'. + * @param options - The options that can be provided during client creation. */ - private _context: ConnectionContext; - + constructor(connectionString: string, options?: EventHubClientOptions); + /** + * @constructor + * @param connectionString - Connection string of the form 'Endpoint=sb://my-servicebus-namespace.servicebus.windows.net/;SharedAccessKeyName=my-SA-name;SharedAccessKey=my-SA-key;'. + * @param eventHubPath - EventHub path of the form 'my-event-hub-name' + * @param options - The options that can be provided during client creation. + */ + constructor(connectionString: string, eventHubPath: string, options?: EventHubClientOptions); /** - * Instantiates a client pointing to the Event Hub given by this configuration. - * * @constructor - * @param {EventHubConnectionConfig} config - The connection configuration to create the EventHub Client. - * @param {ClientOptions} options - The optional parameters that can be provided to the EventHub - * Client constructor. + * @param host - Fully qualified domain name for Event Hubs. Most likely, + * .servicebus.windows.net + * @param eventHubPath - EventHub path of the form 'my-event-hub-name'. + * @param credential - SharedKeyCredential object or your credential that implements the TokenCredential interface. + * @param options - The options that can be provided during client creation. */ - constructor(config: EventHubConnectionConfig, options?: ClientOptions) { - if (!options) options = {}; - this._context = ConnectionContext.create(config, options); + constructor(host: string, eventHubPath: string, credential: TokenCredential, options?: EventHubClientOptions); + constructor( + hostOrConnectionString: string, + eventHubPathOrOptions?: string | EventHubClientOptions, + credentialOrOptions?: TokenCredential | EventHubClientOptions, + options?: EventHubClientOptions + ) { + let connectionString; + let config; + let credential: TokenCredential | SharedKeyCredential; + hostOrConnectionString = String(hostOrConnectionString); + + if (!isTokenCredential(credentialOrOptions)) { + connectionString = hostOrConnectionString; + if (typeof eventHubPathOrOptions !== "string") { + // connectionstring and/or options were passed to constructor + config = EventHubConnectionConfig.create(connectionString); + options = eventHubPathOrOptions; + } else { + // connectionstring, eventHubPath and/or options were passed to constructor + const eventHubPath = eventHubPathOrOptions; + config = EventHubConnectionConfig.create(connectionString, eventHubPath); + options = credentialOrOptions; + } + // Since connectionstring was passed, create a SharedKeyCredential + credential = new SharedKeyCredential(config.sharedAccessKeyName, config.sharedAccessKey); + } else { + // host, eventHubPath, a TokenCredential and/or options were passed to constructor + const eventHubPath = eventHubPathOrOptions; + let host = hostOrConnectionString; + credential = credentialOrOptions; + + if (!host.endsWith("/")) host += "/"; + connectionString = `Endpoint=sb://${host};SharedAccessKeyName=defaultKeyName;SharedAccessKey=defaultKeyValue;EntityPath=${eventHubPath}`; + config = EventHubConnectionConfig.create(connectionString); + } + + ConnectionConfig.validate(config); + + this._clientOptions = options || {}; + this._context = ConnectionContext.create(config, credential, this._clientOptions); } /** * Closes the AMQP connection to the Event Hub for this client, * returning a promise that will be resolved when disconnection is completed. - * @returns {Promise} Promise + * @returns Promise + * @throws {Error} Thrown if the underlying connection encounters an error while closing. */ async close(): Promise { try { @@ -170,125 +268,67 @@ export class EventHubClient { log.client("Closed the amqp connection '%s' on the client.", this._context.connectionId); } } catch (err) { - const msg = `An error occurred while closing the connection "${this._context.connectionId}": ${JSON.stringify(err)}`; - log.error(msg); - throw new Error(msg); + err = err instanceof Error ? err : JSON.stringify(err); + log.error(`An error occurred while closing the connection "${this._context.connectionId}":\n${err}`); + throw err; } } /** - * Sends the given message to the EventHub. + * Creates an EventHubProducer that can be used to send events to the Event Hub for which this client + * was created. * - * @param {any} data Message to send. Will be sent as UTF8-encoded JSON string. - * @param {string|number} [partitionId] Partition ID to which the event data needs to be sent. This should only be specified - * if you intend to send the event to a specific partition. When not specified EventHub will store the messages in a round-robin - * fashion amongst the different partitions in the EventHub. + * @param options Options to create a EventHubProducer where you can specify the id of the partition + * to which events need to be sent to, and retry options. * - * @returns {Promise} Promise + * @throws {Error} Thrown if the underlying connection has been closed, create a new EventHubClient. + * @returns Promise */ - async send(data: EventData, partitionId?: string | number): Promise { - const sender = EventHubSender.create(this._context, partitionId); - return sender.send(data); + createProducer(options?: EventHubProducerOptions): EventHubProducer { + throwErrorIfConnectionClosed(this._context); + return new EventHubProducer(this._context, options); } /** - * Send a batch of EventData to the EventHub. The "message_annotations", "application_properties" and "properties" - * of the first message will be set as that of the envelope (batch message). + * Creates an EventHubConsumer that can be used to receive events from the Event Hub for which this + * client was created. * - * @param {Array} datas An array of EventData objects to be sent in a Batch message. - * @param {string|number} [partitionId] Partition ID to which the event data needs to be sent. This should only be specified - * if you intend to send the event to a specific partition. When not specified EventHub will store the messages in a round-robin - * fashion amongst the different partitions in the EventHub. - * - * @return {Promise} Promise + * @param consumerGroup The consumer group from which the consumer should receive events. + * @param partitionId The id of the partition from which to receive events. + * @param eventPosition The event position in the partition at which to start receiving messages. + * @param options Options to create the EventHubConsumer where you can specify the position from + * which to start receiving events, the consumer group to receive events from, retry options + * and more. + * @throws {Error} Thrown if the underlying connection has been closed, create a new EventHubClient. + * @throws {TypeError} Thrown if a required parameter is missing. */ - async sendBatch(datas: EventData[], partitionId?: string | number): Promise { - const sender = EventHubSender.create(this._context, partitionId); - return sender.sendBatch(datas); + createConsumer( + consumerGroup: string, + partitionId: string, + eventPosition: EventPosition, + options?: EventHubConsumerOptions + ): EventHubConsumer { + throwErrorIfConnectionClosed(this._context); + throwTypeErrorIfParameterMissing(this._context.connectionId, "consumerGroup", consumerGroup); + throwTypeErrorIfParameterMissing(this._context.connectionId, "partitionId", partitionId); + throwTypeErrorIfParameterMissing(this._context.connectionId, "eventPosition", eventPosition); + partitionId = String(partitionId); + return new EventHubConsumer(this._context, consumerGroup, partitionId, eventPosition, options); } /** - * Starts the receiver by establishing an AMQP session and an AMQP receiver link on the session. Messages will be passed to - * the provided onMessage handler and error will be passed to the provided onError handler. - * - * @param {string|number} partitionId Partition ID from which to receive. - * @param {OnMessage} onMessage The message handler to receive event data objects. - * @param {OnError} onError The error handler to receive an error that occurs - * while receiving messages. - * @param {ReceiveOptions} [options] Options for how you'd like to receive messages. - * - * @returns {ReceiveHandler} ReceiveHandler - An object that provides a mechanism to stop receiving more messages. - */ - receive( - partitionId: string | number, - onMessage: OnMessage, - onError: OnError, - options?: ReceiveOptions - ): ReceiveHandler { - if (typeof partitionId !== "string" && typeof partitionId !== "number") { - throw new Error("'partitionId' is a required parameter and must be of type: 'string' | 'number'."); - } - const sReceiver = StreamingReceiver.create(this._context, partitionId, options); - this._context.receivers[sReceiver.name] = sReceiver; - return sReceiver.receive(onMessage, onError); - } - - /** - * Receives a batch of EventData objects from an EventHub partition for a given count and a given max wait time in seconds, whichever - * happens first. This method can be used directly after creating the receiver object and **MUST NOT** be used along with the `start()` method. - * - * @param {string|number} partitionId Partition ID from which to receive. - * @param {number} maxMessageCount The maximum message count. Must be a value greater than 0. - * @param {number} [maxWaitTimeInSeconds] The maximum wait time in seconds for which the Receiver should wait - * to receiver the said amount of messages. If not provided, it defaults to 60 seconds. - * @param {ReceiveOptions} [options] Options for how you'd like to receive messages. - * - * @returns {Promise>} Promise>. - */ - async receiveBatch( - partitionId: string | number, - maxMessageCount: number, - maxWaitTimeInSeconds?: number, - options?: ReceiveOptions - ): Promise { - if (typeof partitionId !== "string" && typeof partitionId !== "number") { - throw new Error("'partitionId' is a required parameter and must be of type: 'string' | 'number'."); - } - const bReceiver = BatchingReceiver.create(this._context, partitionId, options); - this._context.receivers[bReceiver.name] = bReceiver; - let error: MessagingError | undefined; - let result: EventData[] = []; - try { - result = await bReceiver.receive(maxMessageCount, maxWaitTimeInSeconds); - } catch (err) { - error = err; - log.error( - "[%s] Receiver '%s', an error occurred while receiving %d messages for %d max time:\n %O", - this._context.connectionId, - bReceiver.name, - maxMessageCount, - maxWaitTimeInSeconds, - err - ); - } - try { - await bReceiver.close(); - } catch (err) { - // do nothing about it. - } - if (error) { - throw error; - } - return result; - } - - /** - * Provides the eventhub runtime information. - * @returns {Promise} A promise that resolves with EventHubRuntimeInformation. + * Provides the Event Hub runtime information. + * @returns A promise that resolves with EventHubProperties. + * @throws {Error} Thrown if the underlying connection has been closed, create a new EventHubClient. + * @throws {AbortError} Thrown if the operation is cancelled via the abortSignal. */ - async getHubRuntimeInformation(): Promise { + async getProperties(abortSignal?: AbortSignalLike): Promise { + throwErrorIfConnectionClosed(this._context); try { - return await this._context.managementSession!.getHubRuntimeInformation(); + return await this._context.managementSession!.getHubRuntimeInformation({ + retryOptions: this._clientOptions.retryOptions, + abortSignal + }); } catch (err) { log.error("An error occurred while getting the hub runtime information: %O", err); throw err; @@ -297,11 +337,14 @@ export class EventHubClient { /** * Provides an array of partitionIds. - * @returns {Promise>} A promise that resolves with an Array of strings. + * @returns A promise that resolves with an Array of strings. + * @throws {Error} Thrown if the underlying connection has been closed, create a new EventHubClient. + * @throws {AbortError} Thrown if the operation is cancelled via the abortSignal. */ - async getPartitionIds(): Promise> { + async getPartitionIds(abortSignal?: AbortSignalLike): Promise> { + throwErrorIfConnectionClosed(this._context); try { - const runtimeInfo = await this.getHubRuntimeInformation(); + const runtimeInfo = await this.getProperties(abortSignal); return runtimeInfo.partitionIds; } catch (err) { log.error("An error occurred while getting the partition ids: %O", err); @@ -311,15 +354,20 @@ export class EventHubClient { /** * Provides information about the specified partition. - * @param {(string|number)} partitionId Partition ID for which partition information is required. - * @returns {Promise} A promise that resoloves with EventHubPartitionRuntimeInformation. + * @param partitionId Partition ID for which partition information is required. + * @returns A promise that resoloves with PartitionProperties. + * @throws {Error} Thrown if the underlying connection has been closed, create a new EventHubClient. + * @throws {AbortError} Thrown if the operation is cancelled via the abortSignal. */ - async getPartitionInformation(partitionId: string | number): Promise { - if (typeof partitionId !== "string" && typeof partitionId !== "number") { - throw new Error("'partitionId' is a required parameter and must be of type: 'string' | 'number'."); - } + async getPartitionProperties(partitionId: string, abortSignal?: AbortSignalLike): Promise { + throwErrorIfConnectionClosed(this._context); + throwTypeErrorIfParameterMissing(this._context.connectionId, "partitionId", partitionId); + partitionId = String(partitionId); try { - return await this._context.managementSession!.getPartitionInformation(partitionId); + return await this._context.managementSession!.getPartitionProperties(partitionId, { + retryOptions: this._clientOptions.retryOptions, + abortSignal + }); } catch (err) { log.error("An error occurred while getting the partition information: %O", err); throw err; @@ -327,107 +375,26 @@ export class EventHubClient { } /** - * Creates an EventHub Client from connection string. - * @param {string} connectionString - Connection string of the form 'Endpoint=sb://my-servicebus-namespace.servicebus.windows.net/;SharedAccessKeyName=my-SA-name;SharedAccessKey=my-SA-key' - * @param {string} [path] - EventHub path of the form 'my-event-hub-name' - * @param {ClientOptions} [options] Options that can be provided during client creation. - * @returns {EventHubClient} - An instance of the eventhub client. - */ - static createFromConnectionString(connectionString: string, path?: string, options?: ClientOptions): EventHubClient { - if (!connectionString || (connectionString && typeof connectionString !== "string")) { - throw new Error("'connectionString' is a required parameter and must be of type: 'string'."); - } - const config = EventHubConnectionConfig.create(connectionString, path); - - config.webSocket = options && options.webSocket; - config.webSocketEndpointPath = "$servicebus/websocket"; - config.webSocketConstructorOptions = options && options.webSocketConstructorOptions; - - if (!config.entityPath) { - throw new Error( - `Either the connectionString must have "EntityPath=" or ` + - `you must provide "path", while creating the client` - ); - } - return new EventHubClient(config, options); - } - - /** - * Creates an EventHub Client from connection string. - * @param {string} iothubConnectionString - Connection string of the form 'HostName=iot-host-name;SharedAccessKeyName=my-SA-name;SharedAccessKey=my-SA-key' - * @param {ClientOptions} [options] Options that can be provided during client creation. - * @returns {Promise} - Promise. + * Creates an EventHubClient from connection string. + * @param iothubConnectionString - Connection string of the form 'HostName=iot-host-name;SharedAccessKeyName=my-SA-name;SharedAccessKey=my-SA-key'. + * @param [options] Options that can be provided during client creation. + * @returns - Promise. + * @throws {Error} Thrown if the iothubConnectionString is not provided as a string. */ static async createFromIotHubConnectionString( iothubConnectionString: string, - options?: ClientOptions + options?: EventHubClientOptions ): Promise { if (!iothubConnectionString || (iothubConnectionString && typeof iothubConnectionString !== "string")) { throw new Error("'connectionString' is a required parameter and must be of type: 'string'."); } const connectionString = await new IotHubClient(iothubConnectionString).getEventHubConnectionString(); - return EventHubClient.createFromConnectionString(connectionString, undefined, options); + return new EventHubClient(connectionString, options); } /** - * Creates an EventHub Client from a generic token provider. - * @param {string} host - Fully qualified domain name for Event Hubs. Most likely, - * .servicebus.windows.net - * @param {string} entityPath - EventHub path of the form 'my-event-hub-name' - * @param {TokenProvider} tokenProvider - Your token provider that implements the TokenProvider interface. - * @param {ClientOptionsBase} options - The options that can be provided during client creation. - * @returns {EventHubClient} An instance of the Eventhub client. + * @property + * The name of the default consumer group for any Event Hub instance */ - static createFromTokenProvider( - host: string, - entityPath: string, - tokenProvider: TokenProvider, - options?: ClientOptionsBase - ): EventHubClient { - if (!host || (host && typeof host !== "string")) { - throw new Error("'host' is a required parameter and must be of type: 'string'."); - } - - if (!entityPath || (entityPath && typeof entityPath !== "string")) { - throw new Error("'entityPath' is a required parameter and must be of type: 'string'."); - } - - if (!tokenProvider || (tokenProvider && typeof tokenProvider !== "object")) { - throw new Error("'tokenProvider' is a required parameter and must be of type: 'object'."); - } - if (!host.endsWith("/")) host += "/"; - const connectionString = - `Endpoint=sb://${host};SharedAccessKeyName=defaultKeyName;` + `SharedAccessKey=defaultKeyValue`; - if (!options) options = {}; - const clientOptions: ClientOptions = options; - clientOptions.tokenProvider = tokenProvider; - return EventHubClient.createFromConnectionString(connectionString, entityPath, clientOptions); - } - - /** - * Creates an EventHub Client from AADTokenCredentials. - * @param {string} host - Fully qualified domain name for Event Hubs. Most likely, - * .servicebus.windows.net - * @param {string} entityPath - EventHub path of the form 'my-event-hub-name' - * @param {TokenCredentials} credentials - The AAD Token credentials. It can be one of the following: - * ApplicationTokenCredentials | UserTokenCredentials | DeviceTokenCredentials | MSITokenCredentials. - * @param {ClientOptionsBase} options - The options that can be provided during client creation. - * @returns {EventHubClient} An instance of the Eventhub client. - */ - static createFromAadTokenCredentials( - host: string, - entityPath: string, - credentials: ApplicationTokenCredentials | UserTokenCredentials | DeviceTokenCredentials | MSITokenCredentials, - options?: ClientOptionsBase - ): EventHubClient { - if (!credentials || (credentials && typeof credentials !== "object")) { - throw new Error( - "'credentials' is a required parameter and must be an instance of " + - "ApplicationTokenCredentials | UserTokenCredentials | DeviceTokenCredentials | " + - "MSITokenCredentials." - ); - } - const tokenProvider = new AadTokenProvider(credentials); - return EventHubClient.createFromTokenProvider(host, entityPath, tokenProvider, options); - } + static defaultConsumerGroup: string = Constants.defaultConsumerGroup; } diff --git a/sdk/eventhub/event-hubs/src/eventHubReceiver.ts b/sdk/eventhub/event-hubs/src/eventHubReceiver.ts index 408101beb237..fc3853aee9f4 100644 --- a/sdk/eventhub/event-hubs/src/eventHubReceiver.ts +++ b/sdk/eventhub/event-hubs/src/eventHubReceiver.ts @@ -3,13 +3,21 @@ import uuid from "uuid/v4"; import * as log from "./log"; -import { Receiver, OnAmqpEvent, EventContext, ReceiverOptions, types, AmqpError } from "rhea-promise"; -import { translate, Constants, MessagingError, retry, RetryOperationType, RetryConfig } from "@azure/amqp-common"; -import { EventData } from "./eventData"; -import { ReceiveOptions } from "./eventHubClient"; +import { + Receiver, + OnAmqpEvent, + EventContext, + ReceiverOptions as RheaReceiverOptions, + types, + AmqpError +} from "rhea-promise"; +import { translate, Constants, MessagingError, retry, RetryOperationType, RetryConfig } from "@azure/core-amqp"; +import { ReceivedEventData, EventDataInternal, fromAmqpMessage } from "./eventData"; +import { EventHubConsumerOptions } from "./eventHubClient"; import { ConnectionContext } from "./connectionContext"; import { LinkEntity } from "./linkEntity"; -import { EventPosition } from "./eventPosition"; +import { EventPosition, getEventPositionFilter } from "./eventPosition"; +import { AbortSignalLike, AbortError } from "@azure/abort-controller"; interface CreateReceiverOptions { onMessage: OnAmqpEvent; @@ -22,55 +30,33 @@ interface CreateReceiverOptions { } /** + * @internal * Represents the approximate receiver runtime information for a logical partition of an Event Hub. * @interface ReceiverRuntimeInfo */ export interface ReceiverRuntimeInfo { /** - * @property {string} partitionId The parition identifier. + * @property lastSequenceNumber The logical sequence number of the event. */ - partitionId: string; + lastEnqueuedSequenceNumber?: number; /** - * @property {number} lastSequenceNumber The logical sequence number of the event. - */ - lastSequenceNumber?: number; - /** - * @property {Date} lastEnqueuedTimeUtc The enqueued time of the last event. + * @property lastEnqueuedTimeUtc The enqueued time of the last event. */ lastEnqueuedTimeUtc?: Date; /** - * @property {string} lastEnqueuedOffset The offset of the last enqueued event. + * @property lastEnqueuedOffset The offset of the last enqueued event. */ lastEnqueuedOffset?: string; /** - * @property {Date} retrievalTime The enqueued time of the last event. + * @property retrievalTime The enqueued time of the last event. */ retrievalTime?: Date; } -/** - * Describes the checkoint information. - * @interface CheckpointData - */ -export interface CheckpointData { - /** - * @property {Date} enqueuedTimeUtc The enqueued time of the event. - */ - enqueuedTimeUtc: Date; - /** - * @property {string} offset The offset of the event to be checked in. - */ - offset: string; - /** - * @property {string} sequenceNumber The sequence number of the event to be checked in. - */ - sequenceNumber: number; -} - /** * Describes the message handler signature. */ -export type OnMessage = (eventData: EventData) => void; +export type OnMessage = (eventData: ReceivedEventData) => void; /** * Describes the error handler signature. @@ -80,134 +66,161 @@ export type OnError = (error: MessagingError | Error) => void; /** * Describes the EventHubReceiver that will receive event data from EventHub. * @class EventHubReceiver - * @ignore + * @internal */ export class EventHubReceiver extends LinkEntity { /** - * @property {string} consumerGroup The EventHub consumer group from which the receiver will + * @property consumerGroup The EventHub consumer group from which the receiver will * receive messages. (Default: "default"). */ consumerGroup: string; /** - * @property {ReceiverRuntimeInfo} runtimeInfo The receiver runtime info. + * @property runtimeInfo The receiver runtime info. */ runtimeInfo: ReceiverRuntimeInfo; /** - * @property {number} [epoch] The Receiver epoch. + * @property [ownerLevel] The Receiver ownerLevel. */ - epoch?: number; + ownerLevel?: number; /** - * @property {string} [identifier] The Receiver identifier + * @property eventPosition The event position in the partition at which to start receiving messages. */ - identifier?: string; + eventPosition: EventPosition; /** - * @property {ReceiveOptions} [options] Optional properties that can be set while creating - * the EventHubReceiver. + * @property [options] Optional properties that can be set while creating + * the EventHubConsumer. */ - options: ReceiveOptions; + options: EventHubConsumerOptions; /** - * @property {number} [prefetchCount] The number of messages that the receiver can fetch/receive + * @property [prefetchCount] The number of messages that the receiver can fetch/receive * initially. Defaults to 1000. */ prefetchCount?: number = Constants.defaultPrefetchCount; /** - * @property {boolean} receiverRuntimeMetricEnabled Indicates whether receiver runtime metric + * @property receiverRuntimeMetricEnabled Indicates whether receiver runtime metric * is enabled. Default: false. */ receiverRuntimeMetricEnabled: boolean = false; /** - * @property {Receiver} [_receiver] The AMQP receiver link. + * @property [_receiver] The AMQP receiver link. * @protected */ protected _receiver?: Receiver; /** - * @property {OnMessage} _onMessage The message handler provided by the user that will be wrapped + * @property _onMessage The message handler provided by the user that will be wrapped * inside _onAmqpMessage. * @protected */ protected _onMessage?: OnMessage; /** - * @property {OnError} _onError The error handler provided by the user that will be wrapped + * @property _onError The error handler provided by the user that will be wrapped * inside _onAmqpError. * @protected */ protected _onError?: OnError; /** - * @property {OnAmqpEvent} _onAmqpError The message handler that will be set as the handler on the + * @property onAbort The aborter handler that will be invoked when user will call Aborter.abort() + * to cancel the receive request. + * @protected + */ + protected _onAbort: () => void; + /** + * @property _onAmqpError The message handler that will be set as the handler on the * underlying rhea receiver for the "message" event. * @protected */ protected _onAmqpMessage: OnAmqpEvent; /** - * @property {OnAmqpEvent} _onAmqpError The message handler that will be set as the handler on the + * @property _onAmqpError The message handler that will be set as the handler on the * underlying rhea receiver for the "receiver_error" event. * @protected */ protected _onAmqpError: OnAmqpEvent; /** - * @property {OnAmqpEvent} _onAmqpClose The message handler that will be set as the handler on the + * @property _onAmqpClose The message handler that will be set as the handler on the * underlying rhea receiver for the "receiver_close" event. * @protected */ protected _onAmqpClose: OnAmqpEvent; /** - * @property {OnAmqpEvent} _onSessionError The message handler that will be set as the handler on + * @property _onSessionError The message handler that will be set as the handler on * the underlying rhea receiver's session for the "session_error" event. * @protected */ protected _onSessionError: OnAmqpEvent; /** - * @property {OnAmqpEvent} _onSessionClose The message handler that will be set as the handler on + * @property _onSessionClose The message handler that will be set as the handler on * the underlying rhea receiver's session for the "session_close" event. * @protected */ protected _onSessionClose: OnAmqpEvent; /** - * @property {CheckpointData} _checkpoint Describes metadata about the last message received. - * This is used as the offset to receive messages from incase of recovery. + * @property _checkpoint Describes sequenceNumber of the last message received. + * This is used as the sequenceNumber to receive messages from incase of recovery. + */ + protected _checkpoint: number; + /** + * @property _aborter Describes Aborter instance that will be set by the user + * to cancel the request. */ - protected _checkpoint: CheckpointData; + protected _abortSignal: AbortSignalLike | undefined; + + /** + * @property Returns sequenceNumber of the last event received. + * @readonly + */ + get checkpoint(): number { + return this._checkpoint; + } /** * Instantiate a new receiver from the AMQP `Receiver`. Used by `EventHubClient`. * @ignore * @constructor - * @param {EventHubClient} client The EventHub client. - * @param {string} partitionId Partition ID from which to receive. - * @param {ReceiveOptions} [options] Receiver options. + * @param client The EventHub client. + * @param consumerGroup The consumer group from which the receiver should receive events from. + * @param partitionId Partition ID from which to receive. + * @param eventPosition The position in the stream from where to start receiving events. + * @param [options] Receiver options. */ - constructor(context: ConnectionContext, partitionId: string | number, options?: ReceiveOptions) { - super(context, { partitionId: partitionId, name: options ? options.name : undefined }); + constructor( + context: ConnectionContext, + consumerGroup: string, + partitionId: string, + eventPosition: EventPosition, + options?: EventHubConsumerOptions + ) { + super(context, { + partitionId: partitionId, + name: context.config.getReceiverAddress(partitionId, consumerGroup) + }); if (!options) options = {}; - this.consumerGroup = options.consumerGroup ? options.consumerGroup : Constants.defaultConsumerGroup; + this.consumerGroup = consumerGroup; this.address = context.config.getReceiverAddress(partitionId, this.consumerGroup); this.audience = context.config.getReceiverAudience(partitionId, this.consumerGroup); - this.prefetchCount = options.prefetchCount != undefined ? options.prefetchCount : Constants.defaultPrefetchCount; - this.epoch = options.epoch; - this.identifier = options.identifier; + this.ownerLevel = options.ownerLevel; + this.eventPosition = eventPosition; this.options = options; - this.receiverRuntimeMetricEnabled = options.enableReceiverRuntimeMetric || false; - this.runtimeInfo = { - partitionId: `${partitionId}` - }; - this._checkpoint = { - enqueuedTimeUtc: new Date(), - offset: "0", - sequenceNumber: -1 - }; + this.receiverRuntimeMetricEnabled = false; + this.runtimeInfo = {}; + this._checkpoint = -1; this._onAmqpMessage = (context: EventContext) => { - const evData = EventData.fromAmqpMessage(context.message!); - evData.body = this._context.dataTransformer.decode(context.message!.body); - this._checkpoint = { - enqueuedTimeUtc: evData.enqueuedTimeUtc!, - offset: evData.offset!, - sequenceNumber: evData.sequenceNumber! + const data: EventDataInternal = fromAmqpMessage(context.message!); + const receivedEventData: ReceivedEventData = { + body: this._context.dataTransformer.decode(context.message!.body), + properties: data.properties, + offset: data.offset!, + sequenceNumber: data.sequenceNumber!, + enqueuedTimeUtc: data.enqueuedTimeUtc!, + partitionKey: data.partitionKey! }; - if (this.receiverRuntimeMetricEnabled && evData) { - this.runtimeInfo.lastSequenceNumber = evData.lastSequenceNumber; - this.runtimeInfo.lastEnqueuedTimeUtc = evData.lastEnqueuedTime; - this.runtimeInfo.lastEnqueuedOffset = evData.lastEnqueuedOffset; - this.runtimeInfo.retrievalTime = evData.retrievalTime; + this._checkpoint = receivedEventData.sequenceNumber!; + + if (this.receiverRuntimeMetricEnabled && data) { + this.runtimeInfo.lastEnqueuedSequenceNumber = data.lastSequenceNumber; + this.runtimeInfo.lastEnqueuedTimeUtc = data.lastEnqueuedTime; + this.runtimeInfo.lastEnqueuedOffset = data.lastEnqueuedOffset; + this.runtimeInfo.retrievalTime = data.retrievalTime; log.receiver( "[%s] RuntimeInfo of Receiver '%s' is %O", this._context.connectionId, @@ -215,7 +228,16 @@ export class EventHubReceiver extends LinkEntity { this.runtimeInfo ); } - this._onMessage!(evData); + this._onMessage!(receivedEventData); + }; + + this._onAbort = async () => { + const desc: string = + `[${this._context.connectionId}] The receive operation on the Receiver "${this.name}" with ` + + `address "${this.address}" has been cancelled by the user.`; + log.error(desc); + await this.close(); + this._onError!(new AbortError("The receive operation has been cancelled by the user.")); }; this._onAmqpError = (context: EventContext) => { @@ -292,7 +314,7 @@ export class EventHubReceiver extends LinkEntity { this.name, this.address ); - await this.detached(receiverError); + await this.onDetached(receiverError); } else { log.error( "[%s] 'receiver_close' event occurred on the receiver '%s' with address '%s' " + @@ -304,6 +326,9 @@ export class EventHubReceiver extends LinkEntity { ); } } else { + if (this._abortSignal) { + this._abortSignal.removeEventListener("abort", this._onAbort); + } log.error( "[%s] 'receiver_close' event occurred on the receiver '%s' with address '%s' " + "because the sdk initiated it. Hence not calling detached from the _onAmqpClose" + @@ -338,7 +363,7 @@ export class EventHubReceiver extends LinkEntity { this.name, this.address ); - await this.detached(sessionError); + await this.onDetached(sessionError); } else { log.error( "[%s] 'session_close' event occurred on the session of receiver '%s' with " + @@ -350,6 +375,9 @@ export class EventHubReceiver extends LinkEntity { ); } } else { + if (this._abortSignal) { + this._abortSignal.removeEventListener("abort", this._onAbort); + } log.error( "[%s] 'session_close' event occurred on the session of receiver '%s' with address " + "'%s' because the sdk initiated it. Hence not calling detached from the _onSessionClose" + @@ -365,10 +393,10 @@ export class EventHubReceiver extends LinkEntity { /** * Will reconnect the receiver link if necessary. * @ignore - * @param {AmqpError | Error} [receiverError] The receiver error if any. - * @returns {Promise} Promise. + * @param [receiverError] The receiver error if any. + * @returns Promise. */ - async detached(receiverError?: AmqpError | Error): Promise { + async onDetached(receiverError?: AmqpError | Error): Promise { try { const wasCloseInitiated = this._receiver && this._receiver.isItselfClosed(); // Clears the token renewal timer. Closes the link and its session if they are open. @@ -434,10 +462,10 @@ export class EventHubReceiver extends LinkEntity { }; // reconnect the receiver link with sequenceNumber of the last received message as the offset // if messages were received by the receiver before it got disconnected. - if (this._checkpoint.sequenceNumber > -1) { - rcvrOptions.eventPosition = EventPosition.fromSequenceNumber(this._checkpoint.sequenceNumber); + if (this._checkpoint > -1) { + rcvrOptions.eventPosition = EventPosition.fromSequenceNumber(this._checkpoint); } - const options: ReceiverOptions = this._createReceiverOptions(rcvrOptions); + const options: RheaReceiverOptions = this._createReceiverOptions(rcvrOptions); // shall retry forever at an interval of 15 seconds if the error is a retryable error // else bail out when the error is not retryable or the oepration succeeds. const config: RetryConfig = { @@ -449,10 +477,14 @@ export class EventHubReceiver extends LinkEntity { delayInSeconds: 15 }; await retry(config); + } else { + if (this._abortSignal) { + this._abortSignal.removeEventListener("abort", this._onAbort); + } } } catch (err) { log.error( - "[%s] An error occurred while processing detached() of Receiver '%s' with address " + "'%s': %O", + "[%s] An error occurred while processing onDetached() of Receiver '%s' with address " + "'%s': %O", this._context.connectionId, this.name, this.address, @@ -464,10 +496,13 @@ export class EventHubReceiver extends LinkEntity { /** * Closes the underlying AMQP receiver. * @ignore - * @returns {Promise} + * @returns */ async close(): Promise { if (this._receiver) { + if (this._abortSignal) { + this._abortSignal.removeEventListener("abort", this._onAbort); + } const receiverLink = this._receiver; this._deleteFromCache(); await this._closeLink(receiverLink); @@ -477,7 +512,7 @@ export class EventHubReceiver extends LinkEntity { /** * Determines whether the AMQP receiver link is open. If open then returns true else returns false. * @ignore - * @return {boolean} boolean + * @returns boolean */ isOpen(): boolean { const result: boolean = this._receiver! && this._receiver!.isOpen(); @@ -500,9 +535,9 @@ export class EventHubReceiver extends LinkEntity { /** * Creates a new AMQP receiver under a new AMQP session. * @ignore - * @returns {Promise} + * @returns */ - protected async _init(options?: ReceiverOptions): Promise { + protected async _init(options?: RheaReceiverOptions): Promise { try { if (!this.isOpen() && !this.isConnecting) { log.error( @@ -577,9 +612,9 @@ export class EventHubReceiver extends LinkEntity { * Creates the options that need to be specified while creating an AMQP receiver link. * @ignore */ - protected _createReceiverOptions(options: CreateReceiverOptions): ReceiverOptions { + protected _createReceiverOptions(options: CreateReceiverOptions): RheaReceiverOptions { if (options.newName) this.name = `${uuid()}`; - const rcvrOptions: ReceiverOptions = { + const rcvrOptions: RheaReceiverOptions = { name: this.name, autoaccept: true, source: { @@ -592,21 +627,17 @@ export class EventHubReceiver extends LinkEntity { onSessionError: options.onSessionError || this._onSessionError, onSessionClose: options.onSessionClose || this._onSessionClose }; - if (this.epoch !== undefined && this.epoch !== null) { - if (!rcvrOptions.properties) rcvrOptions.properties = {}; - rcvrOptions.properties[Constants.attachEpoch] = types.wrap_long(this.epoch); - } - if (this.identifier) { + if (this.ownerLevel !== undefined && this.ownerLevel !== null) { if (!rcvrOptions.properties) rcvrOptions.properties = {}; - rcvrOptions.properties[Constants.receiverIdentifierName] = this.identifier; + rcvrOptions.properties[Constants.attachEpoch] = types.wrap_long(this.ownerLevel); } if (this.receiverRuntimeMetricEnabled) { rcvrOptions.desired_capabilities = Constants.enableReceiverRuntimeMetricName; } - const eventPosition = options.eventPosition || this.options.eventPosition; + const eventPosition = options.eventPosition || this.eventPosition; if (eventPosition) { // Set filter on the receiver if event position is specified. - const filterClause = eventPosition.getExpression(); + const filterClause = getEventPositionFilter(eventPosition); if (filterClause) { (rcvrOptions.source as any).filter = { "apache.org:selector-filter:string": types.wrap_described(filterClause, 0x468c00000004) diff --git a/sdk/eventhub/event-hubs/src/eventHubSender.ts b/sdk/eventhub/event-hubs/src/eventHubSender.ts index 1f29f716b08c..ca7283ed075e 100644 --- a/sdk/eventhub/event-hubs/src/eventHubSender.ts +++ b/sdk/eventhub/event-hubs/src/eventHubSender.ts @@ -8,8 +8,7 @@ import { Sender, EventContext, OnAmqpEvent, - SenderOptions, - Delivery, + SenderOptions as RheaSenderOptions, SenderEvents, message, AmqpError @@ -25,10 +24,12 @@ import { RetryOperationType, Constants, randomNumberFromInterval -} from "@azure/amqp-common"; -import { EventData } from "./eventData"; +} from "@azure/core-amqp"; +import { EventData, toAmqpMessage } from "./eventData"; import { ConnectionContext } from "./connectionContext"; import { LinkEntity } from "./linkEntity"; +import { SendOptions, EventHubProducerOptions } from "./eventHubClient"; +import { AbortSignalLike, AbortError } from "@azure/abort-controller"; interface CreateSenderOptions { newName?: boolean; @@ -37,41 +38,41 @@ interface CreateSenderOptions { /** * Describes the EventHubSender that will send event data to EventHub. * @class EventHubSender - * @ignore + * @internal */ export class EventHubSender extends LinkEntity { /** - * @property {string} senderLock The unqiue lock name per connection that is used to acquire the + * @property senderLock The unqiue lock name per connection that is used to acquire the * lock for establishing a sender link by an entity on that connection. * @readonly */ readonly senderLock: string = `sender-${uuid()}`; /** - * @property {OnAmqpEvent} _onAmqpError The handler function to handle errors that happen on the + * @property _onAmqpError The handler function to handle errors that happen on the * underlying sender. * @readonly */ private readonly _onAmqpError: OnAmqpEvent; /** - * @property {OnAmqpEvent} _onAmqpClose The handler function to handle "sender_close" event + * @property _onAmqpClose The handler function to handle "sender_close" event * that happens on the underlying sender. * @readonly */ private readonly _onAmqpClose: OnAmqpEvent; /** - * @property {OnAmqpEvent} _onSessionError The message handler that will be set as the handler on + * @property _onSessionError The message handler that will be set as the handler on * the underlying rhea sender's session for the "session_error" event. * @private */ private _onSessionError: OnAmqpEvent; /** - * @property {OnAmqpEvent} _onSessionClose The message handler that will be set as the handler on + * @property _onSessionClose The message handler that will be set as the handler on * the underlying rhea sender's session for the "session_close" event. * @private */ private _onSessionClose: OnAmqpEvent; /** - * @property {Sender} [_sender] The AMQP sender link. + * @property [_sender] The AMQP sender link. * @private */ private _sender?: Sender; @@ -80,12 +81,15 @@ export class EventHubSender extends LinkEntity { * Creates a new EventHubSender instance. * @ignore * @constructor - * @param {ConnectionContext} context The connection context. - * @param {string|number} [partitionId] The EventHub partition id to which the sender + * @param context The connection context. + * @param [partitionId] The EventHub partition id to which the sender * wants to send the event data. */ - constructor(context: ConnectionContext, partitionId?: string | number, name?: string) { - super(context, { name: name, partitionId: partitionId }); + constructor(context: ConnectionContext, partitionId?: string) { + super(context, { + name: context.config.getSenderAddress(partitionId), + partitionId: partitionId + }); this.address = context.config.getSenderAddress(partitionId); this.audience = context.config.getSenderAudience(partitionId); @@ -132,7 +136,7 @@ export class EventHubSender extends LinkEntity { this.name, this.address ); - await this.detached(senderError); + await this.onDetached(senderError); } else { log.error( "[%s] 'sender_close' event occurred on the sender '%s' with address '%s' " + @@ -177,7 +181,7 @@ export class EventHubSender extends LinkEntity { this.name, this.address ); - await this.detached(sessionError); + await this.onDetached(sessionError); } else { log.error( "[%s] 'session_close' event occurred on the session of sender '%s' with " + @@ -204,10 +208,10 @@ export class EventHubSender extends LinkEntity { /** * Will reconnect the sender link if necessary. * @ignore - * @param {AmqpError | Error} [senderError] The sender error if any. - * @returns {Promise} Promise. + * @param [senderError] The sender error if any. + * @returns Promise. */ - async detached(senderError?: AmqpError | Error): Promise { + async onDetached(senderError?: AmqpError | Error): Promise { try { const wasCloseInitiated = this._sender && this._sender.isItselfClosed(); // Clears the token renewal timer. Closes the link and its session if they are open. @@ -263,7 +267,7 @@ export class EventHubSender extends LinkEntity { } if (shouldReopen) { await defaultLock.acquire(this.senderLock, () => { - const options: SenderOptions = this._createSenderOptions({ + const options: RheaSenderOptions = this._createSenderOptions({ newName: true }); // shall retry forever at an interval of 15 seconds if the error is a retryable error @@ -281,7 +285,7 @@ export class EventHubSender extends LinkEntity { } } catch (err) { log.error( - "[%s] An error occurred while processing detached() of Sender '%s' with address " + "'%s': %O", + "[%s] An error occurred while processing onDetached() of Sender '%s' with address " + "'%s': %O", this._context.connectionId, this.name, this.address, @@ -293,10 +297,15 @@ export class EventHubSender extends LinkEntity { /** * Deletes the sender fromt the context. Clears the token renewal timer. Closes the sender link. * @ignore - * @return {Promise} Promise + * @returns Promise */ async close(): Promise { if (this._sender) { + log.sender( + "[%s] Closing the Sender for the entity '%s'.", + this._context.connectionId, + this._context.config.entityPath + ); const senderLink = this._sender; this._deleteFromCache(); await this._closeLink(senderLink); @@ -306,7 +315,7 @@ export class EventHubSender extends LinkEntity { /** * Determines whether the AMQP sender link is open. If open then returns true else returns false. * @ignore - * @return {boolean} boolean + * @returns boolean */ isOpen(): boolean { const result: boolean = this._sender! && this._sender!.isOpen(); @@ -320,54 +329,29 @@ export class EventHubSender extends LinkEntity { return result; } - /** - * Sends the given message, with the given options on this link - * @ignore - * @param {any} data Message to send. Will be sent as UTF8-encoded JSON string. - * @returns {Promise} Promise - */ - async send(data: EventData): Promise { - try { - if (!data || (data && typeof data !== "object")) { - throw new Error("data is required and it must be of type object."); - } - - if (data.partitionKey && typeof data.partitionKey !== "string") { - throw new Error("'partitionKey' must be of type 'string'."); - } - - if (!this.isOpen()) { - log.sender( - "Acquiring lock %s for initializing the session, sender and " + "possibly the connection.", - this.senderLock - ); - await defaultLock.acquire(this.senderLock, () => { - return this._init(); - }); - } - const message = EventData.toAmqpMessage(data); - message.body = this._context.dataTransformer.encode(data.body); - return await this._trySend(message, message.message_id); - } catch (err) { - log.error("An error occurred while sending the message %O", err); - throw err; - } - } - /** * Send a batch of EventData to the EventHub. The "message_annotations", * "application_properties" and "properties" of the first message will be set as that * of the envelope (batch message). * @ignore - * @param {Array} datas An array of EventData objects to be sent in a Batch message. - * @return {Promise} Promise + * @param events An array of EventData objects to be sent in a Batch message. + * @param options Options to control the way the events are batched along with request options + * @return Promise */ - async sendBatch(datas: EventData[]): Promise { + async send(events: EventData[], options?: SendOptions & EventHubProducerOptions): Promise { try { - if (!datas || (datas && !Array.isArray(datas))) { - throw new Error("data is required and it must be an Array."); + // throw an error if partition key and partition id are both defined + if (options && typeof options.partitionKey === "string" && typeof options.partitionId === "string") { + const error = new Error( + "Partition key is not supported when using producers that were created using a partition id." + ); + log.error( + "[%s] Partition key is not supported when using producers that were created using a partition id. %O", + this._context.connectionId, + error + ); + throw error; } - if (!this.isOpen()) { log.sender( "Acquiring lock %s for initializing the session, sender and " + "possibly the connection.", @@ -378,11 +362,12 @@ export class EventHubSender extends LinkEntity { }); } log.sender("[%s] Sender '%s', trying to send EventData[].", this._context.connectionId, this.name); + const partitionKey = (options && options.partitionKey) || undefined; const messages: AmqpMessage[] = []; // Convert EventData to AmqpMessage. - for (let i = 0; i < datas.length; i++) { - const message = EventData.toAmqpMessage(datas[i]); - message.body = this._context.dataTransformer.encode(datas[i].body); + for (let i = 0; i < events.length; i++) { + const message = toAmqpMessage(events[i], partitionKey); + message.body = this._context.dataTransformer.encode(events[i].body); messages[i] = message; } // Encode every amqp message and then convert every encoded message to amqp data section @@ -411,7 +396,7 @@ export class EventHubSender extends LinkEntity { this.name, encodedBatchMessage ); - return await this._trySend(encodedBatchMessage, batchMessage.message_id, 0x80013700); + return await this._trySendBatch(encodedBatchMessage, batchMessage.message_id, options); } catch (err) { log.error("An error occurred while sending the batch message %O", err); throw err; @@ -420,7 +405,7 @@ export class EventHubSender extends LinkEntity { private _deleteFromCache(): void { this._sender = undefined; - delete this._context.senders[this.address]; + delete this._context.senders[this.name]; log.error( "[%s] Deleted the sender '%s' with address '%s' from the client cache.", this._context.connectionId, @@ -429,9 +414,9 @@ export class EventHubSender extends LinkEntity { ); } - private _createSenderOptions(options: CreateSenderOptions): SenderOptions { + private _createSenderOptions(options: CreateSenderOptions): RheaSenderOptions { if (options.newName) this.name = `${uuid()}`; - const srOptions: SenderOptions = { + const srOptions: RheaSenderOptions = { name: this.name, target: { address: this.address @@ -453,11 +438,34 @@ export class EventHubSender extends LinkEntity { * for the message to be accepted or rejected and accordingly resolve or reject the promise. * @ignore * @param message The message to be sent to EventHub. - * @return {Promise} Promise + * @returns Promise */ - private _trySend(message: AmqpMessage | Buffer, tag: any, format?: number): Promise { + private _trySendBatch( + message: AmqpMessage | Buffer, + tag: any, + options?: SendOptions & EventHubProducerOptions, + format?: number + ): Promise { + if (!options) { + options = {}; + } + + const abortSignal: AbortSignalLike | undefined = options.abortSignal; const sendEventPromise = () => - new Promise((resolve, reject) => { + new Promise((resolve, reject) => { + const rejectOnAbort = () => { + const desc: string = + `[${this._context.connectionId}] The send operation on the Sender "${this.name}" with ` + + `address "${this.address}" has been cancelled by the user.`; + log.error(desc); + reject(new AbortError("The send operation has been cancelled by the user.")); + }; + + if (abortSignal && abortSignal.aborted) { + // operation has been cancelled, so exit quickly + return rejectOnAbort(); + } + let waitTimer: any; log.sender( "[%s] Sender '%s', credit: %d available: %d", @@ -477,25 +485,34 @@ export class EventHubSender extends LinkEntity { let onReleased: Func; let onModified: Func; let onAccepted: Func; + let onAborted: () => void; + const removeListeners = (): void => { - clearTimeout(waitTimer); - // When `removeListeners` is called on timeout, the sender might be closed and cleared - // So, check if it exists, before removing listeners from it. - if (this._sender) { - this._sender.removeListener(SenderEvents.rejected, onRejected); - this._sender.removeListener(SenderEvents.accepted, onAccepted); - this._sender.removeListener(SenderEvents.released, onReleased); - this._sender.removeListener(SenderEvents.modified, onModified); - } + clearTimeout(waitTimer); + // When `removeListeners` is called on timeout, the sender might be closed and cleared + // So, check if it exists, before removing listeners from it. + if (abortSignal) { + abortSignal.removeEventListener("abort", onAborted); + } + if (this._sender) { + this._sender.removeListener(SenderEvents.rejected, onRejected); + this._sender.removeListener(SenderEvents.accepted, onAccepted); + this._sender.removeListener(SenderEvents.released, onReleased); + this._sender.removeListener(SenderEvents.modified, onModified); + } }; + onAborted = () => { + removeListeners(); + rejectOnAbort(); + }; onAccepted = (context: EventContext) => { // Since we will be adding listener for accepted and rejected event every time // we send a message, we need to remove listener for both the events. // This will ensure duplicate listeners are not added for the same event. removeListeners(); log.sender("[%s] Sender '%s', got event accepted.", this._context.connectionId, this.name); - resolve(context.delivery); + resolve(); }; onRejected = (context: EventContext) => { removeListeners(); @@ -549,12 +566,15 @@ export class EventHubSender extends LinkEntity { return reject(translate(e)); }; + if (abortSignal) { + abortSignal.addEventListener("abort", onAborted); + } this._sender!.on(SenderEvents.accepted, onAccepted); this._sender!.on(SenderEvents.rejected, onRejected); this._sender!.on(SenderEvents.modified, onModified); this._sender!.on(SenderEvents.released, onReleased); waitTimer = setTimeout(actionAfterTimeout, Constants.defaultOperationTimeoutInSeconds * 1000); - const delivery = this._sender!.send(message, tag, format); + const delivery = this._sender!.send(message, tag, 0x80013700); log.sender( "[%s] Sender '%s', sent message with delivery id: %d and tag: %s", this._context.connectionId, @@ -577,22 +597,30 @@ export class EventHubSender extends LinkEntity { }); const jitterInSeconds = randomNumberFromInterval(1, 4); - const config: RetryConfig = { + const times = + options.retryOptions && options.retryOptions.retryCount && options.retryOptions.retryCount > 0 + ? options.retryOptions.retryCount + : Constants.defaultRetryAttempts; + const delayInSeconds = + options.retryOptions && options.retryOptions.retryInterval && options.retryOptions.retryInterval > 0 + ? options.retryOptions.retryInterval / 1000 + : Constants.defaultDelayBetweenOperationRetriesInSeconds; + const config: RetryConfig = { operation: sendEventPromise, connectionId: this._context.connectionId, operationType: RetryOperationType.sendMessage, - times: Constants.defaultRetryAttempts, - delayInSeconds: Constants.defaultDelayBetweenOperationRetriesInSeconds + jitterInSeconds + times: times, + delayInSeconds: delayInSeconds + jitterInSeconds }; - return retry(config); + return retry(config); } /** * Initializes the sender session on the connection. * @ignore - * @returns {Promise} + * @returns */ - private async _init(options?: SenderOptions): Promise { + private async _init(options?: RheaSenderOptions): Promise { try { // isOpen isConnecting Should establish // true false No @@ -630,7 +658,7 @@ export class EventHubSender extends LinkEntity { log.error("[%s] Sender '%s' created with sender options: %O", this._context.connectionId, this.name, options); // It is possible for someone to close the sender and then start it again. // Thus make sure that the sender is present in the client cache. - if (!this._context.senders[this.address]) this._context.senders[this.address] = this; + if (!this._context.senders[this.name]) this._context.senders[this.name] = this; await this._ensureTokenRenewal(); } else { log.error( @@ -655,18 +683,14 @@ export class EventHubSender extends LinkEntity { * not present in the context or returns the one present in the context. * @ignore * @static - * @param {(string|number)} [partitionId] Partition ID to which it will send event data. - * @returns {Promise} + * @param [partitionId] Partition ID to which it will send event data. + * @returns */ - static create(context: ConnectionContext, partitionId?: string | number): EventHubSender { - if (partitionId && typeof partitionId !== "string" && typeof partitionId !== "number") { - throw new Error("'partitionId' must be of type: 'string' | 'number'."); - } - + static create(context: ConnectionContext, partitionId?: string): EventHubSender { const ehSender: EventHubSender = new EventHubSender(context, partitionId); - if (!context.senders[ehSender.address]) { - context.senders[ehSender.address] = ehSender; + if (!context.senders[ehSender.name]) { + context.senders[ehSender.name] = ehSender; } - return context.senders[ehSender.address]; + return context.senders[ehSender.name]; } } diff --git a/sdk/eventhub/event-hubs/src/eventPosition.ts b/sdk/eventhub/event-hubs/src/eventPosition.ts index ffcec048b07a..dd000494cfb0 100644 --- a/sdk/eventhub/event-hubs/src/eventPosition.ts +++ b/sdk/eventhub/event-hubs/src/eventPosition.ts @@ -1,40 +1,35 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -import { translate, Constants, ErrorNameConditionMapper } from "@azure/amqp-common"; +import { translate, Constants, ErrorNameConditionMapper } from "@azure/core-amqp"; /** * Describes the options that can be set while creating an EventPosition. - * @ignore + * @internal * @interface EventPositionOptions */ export interface EventPositionOptions { /** - * @property {string} [offset] The offset of the event at the position. It can be undefined + * @property The offset of the event at the position. It can be undefined * if the position is just created from a sequence number or an enqueued time. */ offset?: string; /** - * @property {boolean} isInclusive Indicates if the current event at the specified offset is + * @property Indicates if the current event at the specified offset is * included or not. It is only applicable if offset is set. Default value: false. */ isInclusive?: boolean; /** - * @property {Date|number} [enqueuedTime] The enqueued time of the event at the position. It can be undefined + * @property The enqueued time of the event at the position. It can be undefined * if the position is just created from a sequence number or an offset. */ enqueuedTime?: Date | number; /** - * @property {number} [sequenceNumber] The sequence number of the event at the position. It can be undefined + * @property The sequence number of the event at the position. It can be undefined * if the position is just created from an enqueued time or an offset. */ sequenceNumber?: number; - - /** - * @property {string} [customFilter] The custom filter expression that needs to be set on the receiver. - */ - customFilter?: string; } /** @@ -44,156 +39,147 @@ export interface EventPositionOptions { */ export class EventPosition { /** - * @property {string} startOfStream The offset from which events would be received: `"-1"`. + * @property The offset from which events would be received: `"-1"`. * @static * @readonly */ - static readonly startOfStream: string = "-1"; + private static readonly startOfStream: string = "-1"; + /** - * @property {string} endOfStream The offset from which events would be received: `"@latest"`. + * @property The offset from which events would be received: `"@latest"`. * @static * @readonly */ - static readonly endOfStream: string = "@latest"; + private static readonly endOfStream: string = "@latest"; /** - * @property {string} [offset] The offset of the event at the position. It can be undefined + * @property The offset of the event at the position. It can be undefined * if the position is just created from a sequence number or an enqueued time. */ offset?: string; /** - * @property {boolean} isInclusive Indicates if the current event at the specified offset is + * @property Indicates if the current event at the specified offset is * included or not. It is only applicable if offset is set. Default value: false. */ isInclusive: boolean = false; /** - * @property {Date|number} [enqueuedTime] The enqueued time of the event at the position. It can be undefined + * @property The enqueued time of the event at the position. It can be undefined * if the position is just created from a sequence number or an offset. */ enqueuedTime?: Date | number; /** - * @property {number} [sequenceNumber] The sequence number of the event at the position. It can be undefined + * @property The sequence number of the event at the position. It can be undefined * if the position is just created from an enqueued time or an offset. */ sequenceNumber?: number; /** - * @property {string} [customFilter] The custom filter expression that needs to be set on the receiver. + * @constructor + * @internal + * @param options */ - customFilter?: string; - constructor(options?: EventPositionOptions) { if (options) { this.offset = options.offset; this.enqueuedTime = options.enqueuedTime; this.sequenceNumber = options.sequenceNumber; this.isInclusive = options.isInclusive || false; - this.customFilter = options.customFilter; } } - /** - * Gets the expression (filter clause) that needs to be set on the source. - * @return {string} filterExpression - */ - getExpression(): string { - let result; - // order of preference - if (this.offset != undefined) { - result = this.isInclusive - ? `${Constants.offsetAnnotation} >= '${this.offset}'` - : `${Constants.offsetAnnotation} > '${this.offset}'`; - } else if (this.sequenceNumber != undefined) { - result = this.isInclusive - ? `${Constants.sequenceNumberAnnotation} >= '${this.sequenceNumber}'` - : `${Constants.sequenceNumberAnnotation} > '${this.sequenceNumber}'`; - } else if (this.enqueuedTime != undefined) { - const time = this.enqueuedTime instanceof Date ? this.enqueuedTime.getTime() : this.enqueuedTime; - result = `${Constants.enqueuedTimeAnnotation} > '${time}'`; - } else if (this.customFilter != undefined) { - result = this.customFilter; - } - - if (!result) { - throw translate({ - condition: ErrorNameConditionMapper.ArgumentError, - description: "No starting position was set in the EventPosition." - }); - } - return result; - } - /** * Creates a position at the given offset. - * @param {string} offset The offset of the data relative to the Event Hub partition stream. + * @param offset The offset of the data relative to the Event Hub partition stream. * The offset is a marker or identifier for an event within the Event Hubs stream. * The identifier is unique within a partition of the Event Hubs stream. - * @param {boolean} isInclusive If true, the specified event is included; + * @param isInclusive If true, the specified event is included; * otherwise the next event is returned. Default: false. - * @return {EventPosition} EventPosition + * @returns EventPosition */ static fromOffset(offset: string, isInclusive?: boolean): EventPosition { - if (!offset || typeof offset !== "string") { - throw new Error("'offset' is a required parameter and must be a non-empty string."); + if (offset == undefined) { + throw new Error('Missing parameter "offset"'); } - return new EventPosition({ offset: offset, isInclusive: isInclusive }); + return new EventPosition({ offset: String(offset), isInclusive: isInclusive }); } /** * Creates a position at the given sequence number. - * @param {number} sequenceNumber The logical sequence number of the event within the partition stream of the Event Hub. - * @param {boolean} isInclusive If true, the specified event is included; + * @param sequenceNumber The logical sequence number of the event within the partition stream of the Event Hub. + * @param isInclusive If true, the specified event is included; * otherwise the next event is returned. Default false. - * @return {EventPosition} EventPosition + * @returns EventPosition */ static fromSequenceNumber(sequenceNumber: number, isInclusive?: boolean): EventPosition { - if (sequenceNumber == undefined || typeof sequenceNumber !== "number") { - throw new Error("'sequenceNumber' is a required parameter and must be of type 'number'."); + if (sequenceNumber == undefined) { + throw new Error('Missing parameter "sequenceNumber"'); + } + if (typeof sequenceNumber !== "number") { + throw new Error('The parameter "sequenceNumber" should be of type "number"'); } return new EventPosition({ sequenceNumber: sequenceNumber, isInclusive: isInclusive }); } /** * Creates a position at the given enqueued time. - * @param {Date | number} enqueuedTime The enqueue time. This value represents the actual time of enqueuing the message. - * @param {boolean} isInclusive If true, the specified event is included; otherwise the next event is returned. - * @return {EventPosition} EventPosition + * @param enqueuedTime The enqueue time. This value represents the actual time of enqueuing the message. + * @returns EventPosition */ static fromEnqueuedTime(enqueuedTime: Date | number): EventPosition { - if (enqueuedTime == undefined || (typeof enqueuedTime !== "number" && !(enqueuedTime instanceof Date))) { - throw new Error("'enqueuedTime' is a required parameter and must be an instance of 'Date' or of type 'number'."); + if (enqueuedTime == undefined) { + throw new Error('Missing parameter "enqueuedTime"'); } return new EventPosition({ enqueuedTime: enqueuedTime }); } - /** - * Creates a position based on the given custom filter. - * @param {string} customFilter The cutom filter expression that needs to be applied on the receiver. This should be used - * only when one of the other methods `fromOffset()`, `fromSequenceNumber()`, `fromEnqueuedTime()` is not applicable for - * your scenario. - */ - static withCustomFilter(customFilter: string): EventPosition { - if (!customFilter || typeof customFilter !== "string") { - throw new Error("'customFilter' is a required parameter and must be a non-empty string."); - } - return new EventPosition({ customFilter: customFilter }); - } - /** * Returns the position for the start of a stream. Provide this position in receiver creation to * start receiving from the first available event in the partition. - * @return {EventPosition} EventPosition + * @returns EventPosition */ - static fromStart(): EventPosition { + + static earliest(): EventPosition { return EventPosition.fromOffset(EventPosition.startOfStream); } /** * Returns the position for the end of a stream. Provide this position in receiver creation to * start receiving from the next available event in the partition after the receiver is created. - * @return {EventPosition} EventPosition + * @returns EventPosition */ - static fromEnd(): EventPosition { + + static latest(): EventPosition { return EventPosition.fromOffset(EventPosition.endOfStream); } } + +/** + * @internal + * Gets the expression to be set as the filter clause when creating the receiver + * @return {string} filterExpression + */ +export function getEventPositionFilter(eventPosition: EventPosition): string { + let result; + // order of preference + if (eventPosition.offset != undefined) { + result = eventPosition.isInclusive + ? `${Constants.offsetAnnotation} >= '${eventPosition.offset}'` + : `${Constants.offsetAnnotation} > '${eventPosition.offset}'`; + } else if (eventPosition.sequenceNumber != undefined) { + result = eventPosition.isInclusive + ? `${Constants.sequenceNumberAnnotation} >= '${eventPosition.sequenceNumber}'` + : `${Constants.sequenceNumberAnnotation} > '${eventPosition.sequenceNumber}'`; + } else if (eventPosition.enqueuedTime != undefined) { + const time = + eventPosition.enqueuedTime instanceof Date ? eventPosition.enqueuedTime.getTime() : eventPosition.enqueuedTime; + result = `${Constants.enqueuedTimeAnnotation} > '${time}'`; + } + + if (!result) { + throw translate({ + condition: ErrorNameConditionMapper.ArgumentError, + description: "No starting position was set in the EventPosition." + }); + } + return result; +} diff --git a/sdk/eventhub/event-hubs/src/index.ts b/sdk/eventhub/event-hubs/src/index.ts index 109472b07118..73d387d4aaad 100644 --- a/sdk/eventhub/event-hubs/src/index.ts +++ b/sdk/eventhub/event-hubs/src/index.ts @@ -1,34 +1,29 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -export { EventData, EventHubDeliveryAnnotations, EventHubMessageAnnotations } from "./eventData"; -export { Delivery, AmqpError, Message, MessageHeader, MessageProperties, Dictionary, WebSocketImpl } from "rhea-promise"; -export { ReceiverRuntimeInfo, OnMessage, OnError } from "./eventHubReceiver"; +/// + +export { EventData, ReceivedEventData } from "./eventData"; +export { WebSocketImpl } from "rhea-promise"; +export { OnMessage, OnError } from "./eventHubReceiver"; export { ReceiveHandler } from "./streamingReceiver"; -export { EventHubClient, ReceiveOptions, ClientOptionsBase, ClientOptions } from "./eventHubClient"; +export { + EventHubClient, + EventHubClientOptions, + EventHubConsumerOptions, + EventHubProducerOptions, + RetryOptions, + SendOptions +} from "./eventHubClient"; export { EventPosition } from "./eventPosition"; -export { EventHubPartitionRuntimeInformation, EventHubRuntimeInformation } from "./managementClient"; -import { Constants } from "@azure/amqp-common"; -export const aadEventHubsAudience = Constants.aadEventHubsAudience; +export { PartitionProperties, EventHubProperties } from "./managementClient"; +export { EventHubProducer } from "./sender"; +export { EventHubConsumer, EventIteratorOptions } from "./receiver"; export { - delay, - Timeout, - EventHubConnectionStringModel, - parseConnectionString, - IotHubConnectionStringModel, - StorageConnectionStringModel, - isIotHubConnectionString, - ErrorNameConditionMapper, - ConditionStatusMapper, - ConditionErrorNameMapper, MessagingError, DataTransformer, DefaultDataTransformer, TokenType, - TokenProvider, - TokenInfo, - AadTokenProvider, - SasTokenProvider, - ConnectionConfig, - EventHubConnectionConfig -} from "@azure/amqp-common"; + TokenCredential, + delay +} from "@azure/core-amqp"; diff --git a/sdk/eventhub/event-hubs/src/iothub/iothubClient.ts b/sdk/eventhub/event-hubs/src/iothub/iothubClient.ts index 69738088e8a9..43bc9b3e08f8 100644 --- a/sdk/eventhub/event-hubs/src/iothub/iothubClient.ts +++ b/sdk/eventhub/event-hubs/src/iothub/iothubClient.ts @@ -1,8 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -import { translate, MessagingError, IotSasTokenProvider } from "@azure/amqp-common"; -import { IotHubConnectionConfig } from "@azure/amqp-common"; +import { translate, MessagingError, IotSharedKeyCredential } from "@azure/core-amqp"; +import { IotHubConnectionConfig } from "@azure/core-amqp"; import { ConnectionContext, ConnectionContextOptions } from "../connectionContext"; import * as log from "../log"; @@ -28,7 +28,7 @@ export interface EHConfig extends ParsedRedirectError { */ export class IotHubClient { /** - * @property {string} connectionString the IotHub connection string. + * @property connectionString the IotHub connection string. */ connectionString: string; @@ -39,22 +39,18 @@ export class IotHubClient { * Constructs the EventHub connection string by catching the redirect error and parsing the error * information. * @ignore - * @param {ConnectionContextOptions} [options] optional parameters to be provided while creating + * @param [options] optional parameters to be provided while creating * the connection context. - * @return {Promise} Promise + * @returns Promise */ async getEventHubConnectionString(options?: ConnectionContextOptions): Promise { const iothubconfig = IotHubConnectionConfig.create(this.connectionString); const config = IotHubConnectionConfig.convertToEventHubConnectionConfig(iothubconfig); let result: string = ""; if (!options) options = {}; - options.tokenProvider = new IotSasTokenProvider( - config.endpoint, - config.sharedAccessKeyName, - config.sharedAccessKey - ); + const tokenProvider = new IotSharedKeyCredential(config.sharedAccessKeyName, config.sharedAccessKey); options.managementSessionAddress = `/messages/events/$management`; - const context = ConnectionContext.create(config, options); + const context = ConnectionContext.create(config, tokenProvider, options); try { log.iotClient("Getting the hub runtime info from the iothub connection string to get the redirect error."); await context.managementSession!.getHubRuntimeInformation(); @@ -79,7 +75,7 @@ export class IotHubClient { * Closes the AMQP connection to the Event Hub for this client, * returning a promise that will be resolved when disconnection is completed. * @ignore - * @returns {Promise} + * @returns */ async close(context: ConnectionContext): Promise { try { diff --git a/sdk/eventhub/event-hubs/src/linkEntity.ts b/sdk/eventhub/event-hubs/src/linkEntity.ts index 545ce276bd7b..aa980d47a60c 100644 --- a/sdk/eventhub/event-hubs/src/linkEntity.ts +++ b/sdk/eventhub/event-hubs/src/linkEntity.ts @@ -2,42 +2,46 @@ // Licensed under the MIT License. import uuid from "uuid/v4"; -import { defaultLock } from "@azure/amqp-common"; +import { defaultLock, SharedKeyCredential, AccessToken, Constants, TokenType } from "@azure/core-amqp"; import { ConnectionContext } from "./connectionContext"; import { Sender, Receiver } from "rhea-promise"; import * as log from "./log"; + +/** + * @ignore + */ export interface LinkEntityOptions { /** - * @property {string} [name] The unique name for the entity. If not provided then a guid will be + * @property [name] The unique name for the entity. If not provided then a guid will be * assigned. */ name?: string; /** - * @property {string | number} [partitionId] The partitionId associated with the link entity. + * @property [partitionId] The partitionId associated with the link entity. */ - partitionId?: string | number; + partitionId?: string; /** - * @property {string} address The link entity address in one of the following forms: + * @property address The link entity address in one of the following forms: */ address?: string; /** - * @property {string} audience The link entity token audience in one of the following forms: + * @property audience The link entity token audience in one of the following forms: */ audience?: string; } /** * Describes the base class for entities like EventHub Sender, Receiver and Management link. - * @ignore + * @internal * @class LinkEntity */ export class LinkEntity { /** - * @property {string} [name] The unique name for the entity (mostly a guid). + * @property [name] The unique name for the entity (mostly a guid). */ name: string; /** - * @property {string} address The link entity address in one of the following forms: + * @property address The link entity address in one of the following forms: * * **Sender** * - `""` @@ -51,7 +55,7 @@ export class LinkEntity { */ address: string; /** - * @property {string} audience The link entity token audience in one of the following forms: + * @property audience The link entity token audience in one of the following forms: * * **Sender** * - `"sb://.servicebus.windows.net/"` @@ -65,39 +69,44 @@ export class LinkEntity { */ audience: string; /** - * @property {string | number} [partitionId] The partitionId associated with the link entity. + * @property [partitionId] The partitionId associated with the link entity. */ - partitionId?: string | number; + partitionId?: string; /** - * @property {boolean} isConnecting Indicates whether the link is in the process of connecting + * @property isConnecting Indicates whether the link is in the process of connecting * (establishing) itself. Default value: `false`. */ isConnecting: boolean = false; /** - * @property {ConnectionContext} _context Provides relevant information about the amqp connection, + * @property _context Provides relevant information about the amqp connection, * cbs and $management sessions, token provider, sender and receivers. * @protected */ protected _context: ConnectionContext; /** - * @property {NodeJS.Timer} _tokenRenewalTimer The token renewal timer that keeps track of when + * @property _tokenRenewalTimer The token renewal timer that keeps track of when * the Link Entity is due for token renewal. * @protected */ protected _tokenRenewalTimer?: NodeJS.Timer; + /** + * @property _tokenTimeout Indicates token timeout + * @protected + */ + protected _tokenTimeout?: number; /** * Creates a new LinkEntity instance. * @ignore * @constructor - * @param {ConnectionContext} context The connection context. - * @param {LinkEntityOptions} [options] Options that can be provided while creating the LinkEntity. + * @param context The connection context. + * @param [options] Options that can be provided while creating the LinkEntity. */ constructor(context: ConnectionContext, options?: LinkEntityOptions) { if (!options) options = {}; this._context = context; this.address = options.address || ""; this.audience = options.audience || ""; - this.name = options.name || uuid(); + this.name = `${options.name}-${uuid()}`; this.partitionId = options.partitionId; } @@ -105,8 +114,8 @@ export class LinkEntity { * Negotiates cbs claim for the LinkEntity. * @ignore * @protected - * @param {boolean} [setTokenRenewal] Set the token renewal timer. Default false. - * @return {Promise} Promise + * @param [setTokenRenewal] Set the token renewal timer. Default false. + * @returns Promise */ protected async _negotiateClaim(setTokenRenewal?: boolean): Promise { // Acquire the lock and establish a cbs session if it does not exist on the connection. @@ -124,7 +133,23 @@ export class LinkEntity { await defaultLock.acquire(this._context.cbsSession.cbsLock, () => { return this._context.cbsSession.init(); }); - const tokenObject = await this._context.tokenProvider.getToken(this.audience); + let tokenObject: AccessToken; + let tokenType: TokenType; + if (this._context.tokenCredential instanceof SharedKeyCredential) { + tokenObject = this._context.tokenCredential.getToken(this.audience); + tokenType = TokenType.CbsTokenTypeSas; + // renew sas token in every 45 minutess + this._tokenTimeout = (3600 - 900) * 1000; + } else { + const aadToken = await this._context.tokenCredential.getToken(Constants.aadEventHubsScope); + if (!aadToken) { + throw new Error(`Failed to get token from the provided "TokenCredential" object`); + } + tokenObject = aadToken; + tokenType = TokenType.CbsTokenTypeJwt; + this._tokenTimeout = tokenObject.expiresOnTimestamp - Date.now() - 2 * 60 * 1000; + } + log.link( "[%s] %s: calling negotiateClaim for audience '%s'.", this._context.connectionId, @@ -141,7 +166,7 @@ export class LinkEntity { this.address ); await defaultLock.acquire(this._context.negotiateClaimLock, () => { - return this._context.cbsSession.negotiateClaim(this.audience, tokenObject); + return this._context.cbsSession.negotiateClaim(this.audience, tokenObject, tokenType); }); log.link( "[%s] Negotiated claim for %s '%s' with with address: %s", @@ -159,12 +184,12 @@ export class LinkEntity { * Ensures that the token is renewed within the predefined renewal margin. * @ignore * @protected - * @returns {void} + * @returns */ protected async _ensureTokenRenewal(): Promise { - const tokenValidTimeInSeconds = this._context.tokenProvider.tokenValidTimeInSeconds; - const tokenRenewalMarginInSeconds = this._context.tokenProvider.tokenRenewalMarginInSeconds; - const nextRenewalTimeout = (tokenValidTimeInSeconds - tokenRenewalMarginInSeconds) * 1000; + if (!this._tokenTimeout) { + return; + } this._tokenRenewalTimer = setTimeout(async () => { try { await this._negotiateClaim(true); @@ -178,15 +203,15 @@ export class LinkEntity { err ); } - }, nextRenewalTimeout); + }, this._tokenTimeout); log.link( "[%s] %s '%s' with address %s, has next token renewal in %d seconds @(%s).", this._context.connectionId, this._type, this.name, this.address, - nextRenewalTimeout / 1000, - new Date(Date.now() + nextRenewalTimeout).toString() + this._tokenTimeout / 1000, + new Date(Date.now() + this._tokenTimeout).toString() ); } @@ -194,7 +219,7 @@ export class LinkEntity { * Closes the Sender|Receiver link and it's underlying session and also removes it from the * internal map. * @ignore - * @param {Sender | Receiver} [link] The Sender or Receiver link that needs to be closed and + * @param [link] The Sender or Receiver link that needs to be closed and * removed. */ protected async _closeLink(link?: Sender | Receiver): Promise { @@ -226,7 +251,7 @@ export class LinkEntity { /** * Provides the current type of the LinkEntity. - * @return {string} The entity type. + * @returns The entity type. */ private get _type(): string { let result = "LinkEntity"; diff --git a/sdk/eventhub/event-hubs/src/managementClient.ts b/sdk/eventhub/event-hubs/src/managementClient.ts index 0609d829baaf..e1bfa5e02bef 100644 --- a/sdk/eventhub/event-hubs/src/managementClient.ts +++ b/sdk/eventhub/event-hubs/src/managementClient.ts @@ -2,73 +2,67 @@ // Licensed under the MIT License. import uuid from "uuid/v4"; -import { RequestResponseLink, defaultLock, translate, Constants } from "@azure/amqp-common"; +import { RequestResponseLink, defaultLock, translate, Constants, SendRequestOptions } from "@azure/core-amqp"; import { Message, EventContext, SenderEvents, ReceiverEvents, SenderOptions, ReceiverOptions } from "rhea-promise"; import { ConnectionContext } from "./connectionContext"; import { LinkEntity } from "./linkEntity"; import * as log from "./log"; +import { RetryOptions } from "./eventHubClient"; +import { AbortSignalLike } from "@azure/abort-controller"; /** - * Describes the runtime information of an EventHub. - * @interface EventHubRuntimeInformation + * Describes the runtime information of an Event Hub. + * @interface HubRuntimeInformation */ -export interface EventHubRuntimeInformation { +export interface EventHubProperties { /** - * @property {string} path - The name of the event hub. + * @property The name of the event hub. */ path: string; /** - * @property {Date} createdAt - The date and time the hub was created in UTC. + * @property The date and time the hub was created in UTC. */ createdAt: Date; /** - * @property {number} partitionCount - The number of partitions in the event hub. - */ - partitionCount: number; - /** - * @property {string[]} partitionIds - The slice of string partition identifiers. + * @property The slice of string partition identifiers. */ partitionIds: string[]; - /** - * @property {string} type - The type of entity. - */ - type: "com.microsoft:eventhub"; } /** * Describes the runtime information of an EventHub Partition. - * @interface EventHubPartitionRuntimeInformation + * @interface PartitionProperties */ -export interface EventHubPartitionRuntimeInformation { +export interface PartitionProperties { /** - * @property {string} hubPath - The name of the eventhub. + * @property The name of the Event Hub. */ - hubPath: string; + eventHubPath: string; /** - * @property {string} partitionId - Identifier of the partition within the eventhub. + * @property Identifier of the partition within the Event Hub. */ partitionId: string; /** - * @property {number} beginningSequenceNumber - The starting sequence number of the partition's message log. + * @property The starting sequence number of the partition's message log. */ beginningSequenceNumber: number; /** - * @property {number} lastSequenceNumber - The last sequence number of the partition's message log. + * @property The last sequence number of the partition's message log. */ - lastSequenceNumber: number; + lastEnqueuedSequenceNumber: number; /** - * @property {string} lastEnqueuedOffset - The offset of the last enqueued message in the partition's message log. + * @property The offset of the last enqueued message in the partition's message log. */ lastEnqueuedOffset: string; /** - * @property {Date} lastEnqueuedTimeUtc - The time of the last enqueued message in the partition's message log in UTC. + * @property The time of the last enqueued message in the partition's message log in UTC. */ lastEnqueuedTimeUtc: Date; - /** - * @property {string} type - The type of entity. - */ - type: "com.microsoft:partition"; } +/** + * @internal + * @ignore + */ export interface ManagementClientOptions { address?: string; audience?: string; @@ -76,19 +70,19 @@ export interface ManagementClientOptions { /** * @class ManagementClient - * @ignore + * @internal * Descibes the EventHubs Management Client that talks * to the $management endpoint over AMQP connection. */ export class ManagementClient extends LinkEntity { readonly managementLock: string = `${Constants.managementRequestKey}-${uuid()}`; /** - * @property {string} entityPath - The name/path of the entity (hub name) for which the management + * @property entityPath - The name/path of the entity (hub name) for which the management * request needs to be made. */ entityPath: string; /** - * @property {string} replyTo The reply to Guid for the management client. + * @property replyTo The reply to Guid for the management client. */ replyTo: string = uuid(); /** @@ -101,8 +95,8 @@ export class ManagementClient extends LinkEntity { * Instantiates the management client. * @constructor * @ignore - * @param {BaseConnectionContext} context The connection context. - * @param {string} [address] The address for the management endpoint. For IotHub it will be + * @param context The connection context. + * @param [address] The address for the management endpoint. For IotHub it will be * `/messages/events/$management`. */ constructor(context: ConnectionContext, options?: ManagementClientOptions) { @@ -117,17 +111,35 @@ export class ManagementClient extends LinkEntity { /** * Provides the eventhub runtime information. * @ignore - * @param {Connection} connection - The established amqp connection - * @returns {Promise} + * @param connection - The established amqp connection + * @returns */ - async getHubRuntimeInformation(): Promise { - const info: any = await this._makeManagementRequest(Constants.eventHub); - const runtimeInfo: EventHubRuntimeInformation = { + async getHubRuntimeInformation(options?: { + retryOptions?: RetryOptions; + abortSignal?: AbortSignalLike; + }): Promise { + if (!options) { + options = {}; + } + const request: Message = { + body: Buffer.from(JSON.stringify([])), + message_id: uuid(), + reply_to: this.replyTo, + application_properties: { + operation: Constants.readOperation, + name: this.entityPath as string, + type: `${Constants.vendorString}:${Constants.eventHub}` + } + }; + + const info: any = await this._makeManagementRequest(request, { + ...options, + requestName: "getHubRuntimeInformation" + }); + const runtimeInfo: EventHubProperties = { path: info.name, createdAt: new Date(info.created_at), - partitionCount: info.partition_count, - partitionIds: info.partition_ids, - type: info.type + partitionIds: info.partition_ids }; log.mgmt("[%s] The hub runtime info is: %O", this._context.connectionId, runtimeInfo); return runtimeInfo; @@ -136,8 +148,8 @@ export class ManagementClient extends LinkEntity { /** * Provides an array of partitionIds. * @ignore - * @param {Connection} connection - The established amqp connection - * @returns {Promise>} + * @param connection - The established amqp connection + * @returns */ async getPartitionIds(): Promise> { const runtimeInfo = await this.getHubRuntimeInformation(); @@ -147,22 +159,39 @@ export class ManagementClient extends LinkEntity { /** * Provides information about the specified partition. * @ignore - * @param {Connection} connection - The established amqp connection - * @param {(string|number)} partitionId Partition ID for which partition information is required. + * @param connection - The established amqp connection + * @param partitionId Partition ID for which partition information is required. */ - async getPartitionInformation(partitionId: string | number): Promise { - if (typeof partitionId !== "string" && typeof partitionId !== "number") { - throw new Error("'partitionId' is a required parameter and must be of " + "type: 'string' | 'number'."); + async getPartitionProperties( + partitionId: string, + options?: { retryOptions?: RetryOptions; abortSignal?: AbortSignalLike } + ): Promise { + if (!options) { + options = {}; } - const info: any = await this._makeManagementRequest(Constants.partition, partitionId); - const partitionInfo: EventHubPartitionRuntimeInformation = { + const request: Message = { + body: Buffer.from(JSON.stringify([])), + message_id: uuid(), + reply_to: this.replyTo, + application_properties: { + operation: Constants.readOperation, + name: this.entityPath as string, + type: `${Constants.vendorString}:${Constants.partition}`, + partition: `${partitionId}` + } + }; + + const info: any = await this._makeManagementRequest(request, { + ...options, + requestName: "getPartitionInformation" + }); + const partitionInfo: PartitionProperties = { beginningSequenceNumber: info.begin_sequence_number, - hubPath: info.name, + eventHubPath: info.name, lastEnqueuedOffset: info.last_enqueued_offset, lastEnqueuedTimeUtc: new Date(info.last_enqueued_time_utc), - lastSequenceNumber: info.last_enqueued_sequence_number, - partitionId: info.partition, - type: info.type + lastEnqueuedSequenceNumber: info.last_enqueued_sequence_number, + partitionId: info.partition }; log.mgmt("[%s] The partition info is: %O.", this._context.connectionId, partitionInfo); return partitionInfo; @@ -172,7 +201,7 @@ export class ManagementClient extends LinkEntity { * Closes the AMQP management session to the Event Hub for this client, * returning a promise that will be resolved when disconnection is completed. * @ignore - * @return {Promise} + * @returns */ async close(): Promise { try { @@ -245,33 +274,33 @@ export class ManagementClient extends LinkEntity { /** * @private * Helper method to make the management request - * @param {Connection} connection - The established amqp connection - * @param {string} type - The type of entity requested for. Valid values are "eventhub", "partition" - * @param {string | number} [partitionId] - The partitionId. Required only when type is "partition". + * @param request The AMQP message to send + * @param options The options to use when sending a request over a $management link */ - private async _makeManagementRequest(type: "eventhub" | "partition", partitionId?: string | number): Promise { - if (partitionId != undefined && (typeof partitionId !== "string" && typeof partitionId !== "number")) { - throw new Error("'partitionId' is a required parameter and must be of type: 'string' | 'number'."); - } + private async _makeManagementRequest( + request: Message, + options?: { retryOptions?: RetryOptions; timeout?: number; abortSignal?: AbortSignalLike; requestName?: string } + ): Promise { try { - const request: Message = { - body: Buffer.from(JSON.stringify([])), - message_id: uuid(), - reply_to: this.replyTo, - application_properties: { - operation: Constants.readOperation, - name: this.entityPath as string, - type: `${Constants.vendorString}:${type}` - } - }; - if (partitionId != undefined && type === Constants.partition) { - request.application_properties!.partition = `${partitionId}`; - } log.mgmt("[%s] Acquiring lock to get the management req res link.", this._context.connectionId); await defaultLock.acquire(this.managementLock, () => { return this._init(); }); - return (await this._mgmtReqResLink!.sendRequest(request)).body; + + if (!options) { + options = {}; + } + + const sendRequestOptions: SendRequestOptions = { + times: options.retryOptions && options.retryOptions.retryCount, + abortSignal: options.abortSignal, + requestName: options.requestName, + delayInSeconds: + options.retryOptions && options.retryOptions.retryInterval + ? options.retryOptions.retryInterval / 1000 + : undefined + }; + return (await this._mgmtReqResLink!.sendRequest(request, sendRequestOptions)).body; } catch (err) { err = translate(err); log.error("An error occurred while making the request to $management endpoint: %O", err); diff --git a/sdk/eventhub/event-hubs/src/receiver.ts b/sdk/eventhub/event-hubs/src/receiver.ts new file mode 100644 index 000000000000..35769e893dd8 --- /dev/null +++ b/sdk/eventhub/event-hubs/src/receiver.ts @@ -0,0 +1,336 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import * as log from "./log"; +import { ConnectionContext } from "./connectionContext"; +import { EventHubConsumerOptions } from "./eventHubClient"; +import { OnMessage, OnError } from "./eventHubReceiver"; +import { ReceivedEventData } from "./eventData"; +import { Constants } from "@azure/core-amqp"; +import { StreamingReceiver, ReceiveHandler } from "./streamingReceiver"; +import { BatchingReceiver } from "./batchingReceiver"; +import { AbortSignalLike } from "@azure/abort-controller"; +import { throwErrorIfConnectionClosed } from "./util/error"; +import { EventPosition } from "./eventPosition"; + +/** + * Options to pass when creating an iterator to iterate over events + */ +export interface EventIteratorOptions { + /** + * Number of events to fetch at a time in the background + */ + // prefetchCount?: number; + /** + * Signal to cancel the operation. + */ + abortSignal?: AbortSignalLike; +} + +/** + * The EventHubConsumer class can be used to receive messages in a batch or by registering handlers. + * Use the `createConsumer` function on the EventHubClient to instantiate an EventHubConsumer. + * The EventHubConsumer class is an abstraction over the underlying AMQP receiver link. + * @class EventHubConsumer + */ +export class EventHubConsumer { + /** + * @property Describes the amqp connection context for the QueueClient. + */ + private _context: ConnectionContext; + /** + * @property The consumer group from which the receiver should receive events from. + */ + private _consumerGroup: string; + /** + * @property The event position in the partition at which to start receiving messages. + */ + private _eventPosition: EventPosition; + /** + * @property Denotes if close() was called on this receiver + */ + private _isClosed: boolean = false; + + private _partitionId: string; + private _receiverOptions: EventHubConsumerOptions; + private _streamingReceiver: StreamingReceiver | undefined; + private _batchingReceiver: BatchingReceiver | undefined; + + /** + * @property Returns `true` if the consumer is closed. This can happen either because the consumer + * itself has been closed or the client that created it has been closed. + * @readonly + */ + public get isClosed(): boolean { + return this._isClosed || this._context.wasConnectionCloseCalled; + } + + /** + * @property Returns the Partition ID to receive events from. + * @readonly + */ + public get partitionId(): string { + return this._partitionId; + } + + /** + * @property The consumer group from which the handler is receiving + * events from. + * @readonly + */ + get consumerGroup(): string { + return this._consumerGroup; + } + + /** + * @property The ownerLevel value of the underlying consumer, if present. + * @readonly + */ + get ownerLevel(): number | undefined { + return this._receiverOptions && this._receiverOptions.ownerLevel; + } + + /** + * Indicates whether the consumer is currently receiving messages or not. + * When this returns true, new `receive()` or `receiveBatch()` calls cannot be made. + */ + get isReceivingMessages(): boolean { + if (this._streamingReceiver && this._streamingReceiver.isOpen()) { + return true; + } + if (this._batchingReceiver && this._batchingReceiver.isOpen() && this._batchingReceiver.isReceivingMessages) { + return true; + } + return false; + } + + /** + * @constructor + * @internal + */ + constructor( + context: ConnectionContext, + consumerGroup: string, + partitionId: string, + eventPosition: EventPosition, + options?: EventHubConsumerOptions + ) { + this._context = context; + this._consumerGroup = consumerGroup; + this._partitionId = partitionId; + this._eventPosition = eventPosition; + this._receiverOptions = options || {}; + } + /** + * Starts the consumer by establishing an AMQP session and an AMQP receiver link on the session. Messages will be passed to + * the provided onMessage handler and error will be passed to the provided onError handler. + * + * @param onMessage The message handler to receive event data objects. + * @param onError The error handler to receive an error that occurs + * while receiving messages. + * @param abortSignal Signal to cancel current operation. + * + * @returns ReceiveHandler - An object that provides a mechanism to stop receiving more messages. + * @throws {AbortError} Thrown if the operation is cancelled via the abortSignal. + * @throws {TypeError} Thrown if a required parameter is missing. + * @throws {Error} Thrown if the underlying connection or receiver has been closed. + * Create a new EventHubConsumer using the EventHubClient createConsumer method. + * @throws {Error} Thrown if the receiver is already receiving messages. + */ + receive(onMessage: OnMessage, onError: OnError, abortSignal?: AbortSignalLike): ReceiveHandler { + this._throwIfReceiverOrConnectionClosed(); + this._throwIfAlreadyReceiving(); + if (typeof onMessage !== "function") { + throw new TypeError("The parameter 'onMessage' must be of type 'function'."); + } + if (typeof onError !== "function") { + throw new TypeError("The parameter 'onError' must be of type 'function'."); + } + const checkpoint = this.getCheckpoint(); + if (checkpoint) { + this._eventPosition = EventPosition.fromSequenceNumber(checkpoint); + } + this._streamingReceiver = StreamingReceiver.create( + this._context, + this.consumerGroup, + this.partitionId, + this._eventPosition, + this._receiverOptions + ); + this._streamingReceiver.prefetchCount = Constants.defaultPrefetchCount; + return this._streamingReceiver.receive(onMessage, onError, abortSignal); + } + + /** + * Gets an async iterator over events from the consumer. + * @param [options] Options to pass to the event iterator. + */ + async *getEventIterator(options?: EventIteratorOptions): AsyncIterableIterator { + if (!options) { + options = {}; + } + + const maxMessageCount = 1; + const maxWaitTimeInSeconds = Constants.defaultOperationTimeoutInSeconds; + while (true) { + const currentBatch = await this.receiveBatch(maxMessageCount, maxWaitTimeInSeconds, options.abortSignal); + if (!currentBatch || !currentBatch.length) { + continue; + } + yield currentBatch[0]; + } + } + + /** + * Receives a batch of EventData objects from an EventHub partition for a given count and a given max wait time in seconds, whichever + * happens first. This method can be used directly after creating the consumer object and **MUST NOT** be used along with the `start()` method. + * + * @param maxMessageCount The maximum message count. Must be a value greater than 0. + * @param [maxWaitTimeInSeconds] The maximum wait time in seconds for which the Receiver should wait + * to receiver the said amount of messages. If not provided, it defaults to 60 seconds. + * @param abortSignal Signal to cancel current operation. + * + * @returns Promise. + * @throws {AbortError} Thrown if the operation is cancelled via the abortSignal. + * @throws {MessagingError} Thrown if an error is encountered while receiving a message. + * @throws {Error} Thrown if the underlying connection or receiver has been closed. + * Create a new EventHubConsumer using the EventHubClient createConsumer method. + * @throws {Error} Thrown if the receiver is already receiving messages. + */ + async receiveBatch( + maxMessageCount: number, + maxWaitTimeInSeconds?: number, + abortSignal?: AbortSignalLike + ): Promise { + this._throwIfReceiverOrConnectionClosed(); + this._throwIfAlreadyReceiving(); + const checkpoint = this.getCheckpoint(); + if (checkpoint) { + this._eventPosition = EventPosition.fromSequenceNumber(checkpoint); + } + if (!this._batchingReceiver || !this._batchingReceiver.isOpen()) { + this._batchingReceiver = BatchingReceiver.create( + this._context, + this.consumerGroup, + this.partitionId, + this._eventPosition, + this._receiverOptions + ); + } else if (this._batchingReceiver.checkpoint < checkpoint!) { + await this._batchingReceiver.close(); + this._batchingReceiver = BatchingReceiver.create( + this._context, + this.consumerGroup, + this.partitionId, + this._eventPosition, + this._receiverOptions + ); + } + + let result: ReceivedEventData[] = []; + try { + result = await this._batchingReceiver.receive( + maxMessageCount, + maxWaitTimeInSeconds, + this._receiverOptions.retryOptions, + abortSignal + ); + if (result.length < maxMessageCount) { + // we are now re-using the same receiver link between multiple calls to receiveBatch() or the iterator on the receiver. + // This can result in the receiver link having pending credits if a receiveBatch() call asking for m events returned n events where n < m. + // Since Event Hubs doesnt support the drain feature yet, this can result in the receiver link receiving events when the user is not expecting it to. + // Hence closing the link when result.length < maxMessageCount + await this._batchingReceiver.close(); + } + } catch (err) { + log.error( + "[%s] Receiver '%s', an error occurred while receiving %d messages for %d max time:\n %O", + this._context.connectionId, + this._batchingReceiver.name, + maxMessageCount, + maxWaitTimeInSeconds, + err + ); + throw err; + } + return result; + } + + /** + * Closes the underlying AMQP receiver link. + * Once closed, the consumer cannot be used for any further operations. + * Use the `createConsumer` function on the EventHubClient to instantiate + * a new EventHubConsumer + * + * @returns + * @throws {Error} Thrown if the underlying connection encounters an error while closing. + */ + async close(): Promise { + try { + if (this._context.connection && this._context.connection.isOpen()) { + // Close the streaming receiver. + if (this._streamingReceiver) { + await this._streamingReceiver.close(); + this._streamingReceiver = undefined; + } + + // Close the batching receiver. + if (this._batchingReceiver) { + await this._batchingReceiver.close(); + this._batchingReceiver = undefined; + } + } + } catch (err) { + log.error( + "[%s] An error occurred while closing the Receiver for %s: %O", + this._context.connectionId, + this._context.config.entityPath, + err + ); + throw err; + } finally { + this._isClosed = true; + } + } + + private getCheckpoint(): number | undefined { + if (!this._streamingReceiver && !this._batchingReceiver) { + return; + } + let lastBatchingReceiverSequenceNum: number = -1; + let lastStreamingReceiverSequenceNum: number = -1; + if (this._batchingReceiver) { + lastBatchingReceiverSequenceNum = this._batchingReceiver.checkpoint; + } + if (this._streamingReceiver) { + lastStreamingReceiverSequenceNum = this._streamingReceiver.checkpoint; + } + + const checkpoint = Math.max(lastStreamingReceiverSequenceNum, lastBatchingReceiverSequenceNum); + if (checkpoint === -1) { + return; + } + return checkpoint; + } + + private _throwIfAlreadyReceiving(): void { + if (this.isReceivingMessages) { + const errorMessage = `The receiver for "${this._context.config.entityPath}" is already receiving messages.`; + const error = new Error(errorMessage); + log.error(`[${this._context.connectionId}] %O`, error); + throw error; + } + } + + private _throwIfReceiverOrConnectionClosed(): void { + throwErrorIfConnectionClosed(this._context); + if (this.isClosed) { + const errorMessage = + `The receiver for "${this._context.config.entityPath}" has been closed and can no longer be used. ` + + `Please create a new receiver using the "createConsumer" function on the EventHubClient.`; + const error = new Error(errorMessage); + log.error(`[${this._context.connectionId}] %O`, error); + throw error; + } + } +} diff --git a/sdk/eventhub/event-hubs/src/sender.ts b/sdk/eventhub/event-hubs/src/sender.ts new file mode 100644 index 000000000000..1f9413227f38 --- /dev/null +++ b/sdk/eventhub/event-hubs/src/sender.ts @@ -0,0 +1,112 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import { EventData } from "./eventData"; +import { EventHubSender } from "./eventHubSender"; +import { EventHubProducerOptions, SendOptions } from "./eventHubClient"; +import { ConnectionContext } from "./connectionContext"; +import * as log from "./log"; +import { throwErrorIfConnectionClosed, throwTypeErrorIfParameterMissing } from "./util/error"; + +/** + * The EventHubProducer class can be used to send messages. + * Use the `createProducer` function on the EventHubClient to instantiate an EventHubProducer. + * The EventHubProducer class is an abstraction over the underlying AMQP sender link. + * @class EventHubProducer + */ +export class EventHubProducer { + /** + * @property Describes the amqp connection context for the Client. + */ + private _context: ConnectionContext; + /** + * @property Denotes if close() was called on this sender + */ + private _isClosed: boolean = false; + + private _senderOptions: EventHubProducerOptions; + + private _eventHubSender: EventHubSender | undefined; + + /** + * @property Returns `true` if either the producer or the client that created it has been closed. + * @readonly + */ + public get isClosed(): boolean { + return this._isClosed || this._context.wasConnectionCloseCalled; + } + + /** + * @constructor + * @internal + */ + constructor(context: ConnectionContext, options?: EventHubProducerOptions) { + this._context = context; + this._senderOptions = options || {}; + const partitionId = + this._senderOptions.partitionId != undefined ? String(this._senderOptions.partitionId) : undefined; + this._eventHubSender = EventHubSender.create(this._context, partitionId); + } + + /** + * Send a batch of EventData to the EventHub using the options provided. + * + * @param eventData An individual EventData or array of EventData objects to be sent in a Batch message. + * @param options Options where you can specifiy the partition to send the message to along with controlling the send + * request via retry options, log level and cancellation token. + * + * @returns Promise + * @throws {AbortError} Thrown if the operation is cancelled via the abortSignal. + * @throws {MessagingError} Thrown if an error is encountered while sending a message. + * @throws {TypeError} Thrown if a required parameter is missing. + * @throws {Error} Thrown if the underlying connection or sender has been closed. + * @throws {Error} Thrown if a partitionKey is provided when the producer was created with a partitionId. + * Create a new producer using the EventHubClient createProducer method. + */ + async send(eventData: EventData | EventData[], options?: SendOptions): Promise { + this._throwIfSenderOrConnectionClosed(); + throwTypeErrorIfParameterMissing(this._context.connectionId, "eventData", eventData); + if (!Array.isArray(eventData)) { + eventData = [eventData]; + } + return this._eventHubSender!.send(eventData, { ...this._senderOptions, ...options }); + } + + /** + * Closes the underlying AMQP sender link. + * Once closed, the producer cannot be used for any further operations. + * Use the `createProducer` function on the EventHubClient to instantiate a new EventHubProducer. + * + * @returns + * @throws {Error} Thrown if the underlying connection encounters an error while closing. + */ + async close(): Promise { + try { + if (this._context.connection && this._context.connection.isOpen() && this._eventHubSender) { + await this._eventHubSender.close(); + this._eventHubSender = undefined; + } + this._isClosed = true; + } catch (err) { + log.error( + "[%s] An error occurred while closing the Sender for %s: %O", + this._context.connectionId, + this._context.config.entityPath, + err + ); + throw err; + } + } + + private _throwIfSenderOrConnectionClosed(): void { + throwErrorIfConnectionClosed(this._context); + if (this.isClosed) { + const errorMessage = + `The sender for "${this._context.config.entityPath}" has been closed and can no longer be used. ` + + `Please create a new sender using the "createProducer" function on the EventHubClient.`; + const error = new Error(errorMessage); + log.error(`[${this._context.connectionId}] %O`, error); + throw error; + } + } +} diff --git a/sdk/eventhub/event-hubs/src/streamingReceiver.ts b/sdk/eventhub/event-hubs/src/streamingReceiver.ts index 095d6479cb8e..5be2975fc397 100644 --- a/sdk/eventhub/event-hubs/src/streamingReceiver.ts +++ b/sdk/eventhub/event-hubs/src/streamingReceiver.ts @@ -1,27 +1,23 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -import { Constants } from "@azure/amqp-common"; +import { Constants } from "@azure/core-amqp"; import { ReceiverEvents } from "rhea-promise"; -import { ReceiveOptions } from "./eventHubClient"; -import { EventHubReceiver, ReceiverRuntimeInfo, OnMessage, OnError } from "./eventHubReceiver"; +import { EventHubConsumerOptions } from "./eventHubClient"; +import { EventHubReceiver, OnMessage, OnError } from "./eventHubReceiver"; import { ConnectionContext } from "./connectionContext"; import * as log from "./log"; +import { AbortSignalLike } from "@azure/abort-controller"; +import { EventPosition } from "./eventPosition"; /** - * Describes the receive handler object that is returned from the receive() method with handlers is - * called. The ReceiveHandler is used to stop receiving more messages. + * Describes the receive handler object that is returned from the receive() method with handlers. + * The ReceiveHandler is used to stop receiving more messages. * @class ReceiveHandler */ export class ReceiveHandler { /** - * @property {string} name The Receiver handler name. - * @readonly - */ - readonly name: string; - - /** - * @property {EventHubReceiver} _receiver The underlying EventHubReceiver. + * @property _receiver The underlying EventHubReceiver. * @private */ private _receiver: EventHubReceiver; @@ -29,25 +25,23 @@ export class ReceiveHandler { /** * Creates an instance of the ReceiveHandler. * @constructor - * @param {EventHubReceiver} receiver The underlying EventHubReceiver. + * @internal + * @param receiver The underlying EventHubReceiver. */ constructor(receiver: EventHubReceiver) { this._receiver = receiver; - this.name = receiver ? receiver.name : "ReceiveHandler"; } /** - * @property {string | number} [partitionId] The partitionId from which the handler is receiving - * events from. + * @property The partitionId from which the handler is receiving events. * @readonly */ - get partitionId(): string | number | undefined { + get partitionId(): string | undefined { return this._receiver ? this._receiver.partitionId : undefined; } /** - * @property {string} [consumerGroup] The consumer group from which the handler is receiving - * events from. + * @property The consumer group from which the handler is receiving events. * @readonly */ get consumerGroup(): string | undefined { @@ -55,41 +49,7 @@ export class ReceiveHandler { } /** - * @property {string} [address] The address of the underlying receiver. - * @readonly - */ - get address(): string | undefined { - return this._receiver ? this._receiver.address : undefined; - } - - /** - * @property {number} [epoch] The epoch value of the underlying receiver, if present. - * @readonly - */ - get epoch(): number | undefined { - return this._receiver ? this._receiver.epoch : undefined; - } - - /** - * @property {string} [identifier] The identifier of the underlying receiver, if present. - * @readonly - */ - get identifier(): string | undefined { - return this._receiver ? this._receiver.identifier : undefined; - } - - /** - * @property {ReceiverRuntimeInfo} [runtimeInfo] The receiver runtime info. This property will only - * be enabled when `enableReceiverRuntimeMetric` option is set to true in the - * `client.receive()` method. - * @readonly - */ - get runtimeInfo(): ReceiverRuntimeInfo | undefined { - return this._receiver ? this._receiver.runtimeInfo : undefined; - } - - /** - * @property {boolean} isReceiverOpen Indicates whether the receiver is connected/open. + * @property Indicates whether the receiver is connected/open. * `true` - is open; `false` otherwise. * @readonly */ @@ -99,7 +59,8 @@ export class ReceiveHandler { /** * Stops the underlying EventHubReceiver from receiving more messages. - * @return {Promise} Promise + * @returns Promise + * @throws {Error} Thrown if the underlying connection encounters an error while closing. */ async stop(): Promise { if (this._receiver) { @@ -120,7 +81,7 @@ export class ReceiveHandler { /** * Describes the streaming receiver where the user can receive the message * by providing handler functions. - * @ignore + * @internal * @class StreamingReceiver * @extends EventHubReceiver */ @@ -130,34 +91,53 @@ export class StreamingReceiver extends EventHubReceiver { * Instantiate a new receiver from the AMQP `Receiver`. Used by `EventHubClient`. * @ignore * @constructor - * @param {EventHubClient} client The EventHub client. - * @param {string} partitionId Partition ID from which to receive. - * @param {ReceiveOptions} [options] Options for how you'd like to connect. + * @param client The EventHub client. + * @param consumerGroup The consumer group from which the receiver should receive events from. + * @param partitionId Partition ID from which to receive. + * @param eventPosition The event position in the partition at + * @param [options] Options for how you'd like to connect. */ - constructor(context: ConnectionContext, partitionId: string | number, options?: ReceiveOptions) { - super(context, partitionId, options); + constructor( + context: ConnectionContext, + consumerGroup: string, + partitionId: string, + eventPosition: EventPosition, + options?: EventHubConsumerOptions + ) { + super(context, consumerGroup, partitionId, eventPosition, options); this.receiveHandler = new ReceiveHandler(this); } /** * Starts the receiver by establishing an AMQP session and an AMQP receiver link on the session. * @ignore - * @param {OnMessage} onMessage The message handler to receive event data objects. - * @param {OnError} onError The error handler to receive an error that occurs while receivin messages. + * @param onMessage The message handler to receive event data objects. + * @param onError The error handler to receive an error that occurs while receivin messages. + * @param abortSignal Signal to cancel current operation. */ - receive(onMessage: OnMessage, onError: OnError): ReceiveHandler { - if (!onMessage || typeof onMessage !== "function") { - throw new Error("'onMessage' is a required parameter and must be of type 'function'."); - } - if (!onError || typeof onError !== "function") { - throw new Error("'onError' is a required parameter and must be of type 'function'."); - } + receive(onMessage: OnMessage, onError: OnError, abortSignal?: AbortSignalLike): ReceiveHandler { this._onMessage = onMessage; this._onError = onError; + if (abortSignal) { + // exit early if operation already cancelled + if (abortSignal.aborted) { + this._onAbort(); + return this.receiveHandler; + } + + this._abortSignal = abortSignal; + this._abortSignal.addEventListener("abort", this._onAbort); + } if (!this.isOpen()) { - this._init().catch(err => { - this._onError!(err); - }); + this._init() + .then(() => { + if (abortSignal && abortSignal.aborted) { + return this._onAbort(); + } + }) + .catch(err => { + this._onError!(err); + }); } else { // It is possible that the receiver link has been established due to a previous receive() call. If that // is the case then add message and error event handlers to the receiver. When the receiver will be closed @@ -185,12 +165,20 @@ export class StreamingReceiver extends EventHubReceiver { * Creates a streaming receiver. * @static * @ignore - * @param {ConnectionContext} context The connection context. - * @param {string | number} partitionId The partitionId to receive events from. - * @param {ReceiveOptions} [options] Receive options. + * @param context The connection context. + * @param consumerGroup The consumer group from which the receiver should receive events from. + * @param partitionId The partitionId to receive events from. + * @param eventPosition The event position in the partition at which to start receiving messages. + * @param [options] Receive options. */ - static create(context: ConnectionContext, partitionId: string | number, options?: ReceiveOptions): StreamingReceiver { - const sReceiver = new StreamingReceiver(context, partitionId, options); + static create( + context: ConnectionContext, + consumerGroup: string, + partitionId: string, + eventPosition: EventPosition, + options?: EventHubConsumerOptions + ): StreamingReceiver { + const sReceiver = new StreamingReceiver(context, consumerGroup, partitionId, eventPosition, options); context.receivers[sReceiver.name] = sReceiver; return sReceiver; } diff --git a/sdk/eventhub/event-hubs/src/util/constants.ts b/sdk/eventhub/event-hubs/src/util/constants.ts index 04013215fa39..4cc282ff0520 100644 --- a/sdk/eventhub/event-hubs/src/util/constants.ts +++ b/sdk/eventhub/event-hubs/src/util/constants.ts @@ -3,5 +3,5 @@ export const packageJsonInfo = { name: "@azure/event-hubs", - version: "2.1.0" + version: "3.0.0-preview.1" }; diff --git a/sdk/eventhub/event-hubs/src/util/error.ts b/sdk/eventhub/event-hubs/src/util/error.ts new file mode 100644 index 000000000000..1364cb252beb --- /dev/null +++ b/sdk/eventhub/event-hubs/src/util/error.ts @@ -0,0 +1,38 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import * as log from "../log"; +import { ConnectionContext } from "../connectionContext"; + +/** + * @internal + * Logs and throws Error if the current AMQP connection is closed. + * @param context The ConnectionContext associated with the current AMQP connection. + */ +export function throwErrorIfConnectionClosed(context: ConnectionContext): void { + if (context && context.wasConnectionCloseCalled) { + const errorMessage = "The underlying AMQP connection is closed."; + const error = new Error(errorMessage); + log.error(`[${context.connectionId}] %O`, error); + throw error; + } +} + +/** + * @internal + * Logs and Throws TypeError if given parameter is undefined or null + * @param connectionId Id of the underlying AMQP connection used for logging + * @param parameterName Name of the parameter to check + * @param parameterValue Value of the parameter to check + */ +export function throwTypeErrorIfParameterMissing( + connectionId: string, + parameterName: string, + parameterValue: any +): void { + if (parameterValue === undefined || parameterValue === null) { + const error = new TypeError(`Missing parameter "${parameterName}"`); + log.error(`[${connectionId}] %O`, error); + throw error; + } +} diff --git a/sdk/eventhub/event-hubs/test/client.spec.ts b/sdk/eventhub/event-hubs/test/client.spec.ts index d5c7e4477a06..8402219151ab 100644 --- a/sdk/eventhub/event-hubs/test/client.spec.ts +++ b/sdk/eventhub/event-hubs/test/client.spec.ts @@ -10,235 +10,374 @@ import chaiString from "chai-string"; chai.use(chaiString); import debugModule from "debug"; const debug = debugModule("azure:event-hubs:client-spec"); -import { EventHubClient } from "../src"; +import { EventHubClient, EventPosition, TokenCredential, EventHubProducer, EventHubConsumer } from "../src"; import { packageJsonInfo } from "../src/util/constants"; import { EnvVarKeys, getEnvVars } from "./utils/testUtils"; +// import { EnvironmentCredential } from "@azure/identity"; const env = getEnvVars(); -function testFalsyValues(testFn: Function): void { - // tslint:disable-next-line: no-null-keyword - [null, undefined, "", 0].forEach(function(value: string | number | null | undefined): void { - testFn(value); +describe("Create EventHubClient #RunnableInBrowser", function(): void { + it("throws when it cannot find the Event Hub path", function(): void { + const connectionString = "Endpoint=sb://abc"; + const test = function(): EventHubClient { + return new EventHubClient(connectionString); + }; + test.should.throw( + Error, + `Either provide "path" or the "connectionString": "${connectionString}", ` + + `must contain EntityPath="".` + ); }); -} -describe("EventHubClient #RunnableInBrowser", function(): void { - describe(".fromConnectionString", function(): void { - it("throws when there is no connection string", function(): void { - testFalsyValues(function(value: any): void { - const test = function(): EventHubClient { - return EventHubClient.createFromConnectionString(value); + it("creates an EventHubClient from a connection string", function(): void { + const client = new EventHubClient( + "Endpoint=sb://a;SharedAccessKeyName=b;SharedAccessKey=c;EntityPath=my-event-hub-path" + ); + client.should.be.an.instanceof(EventHubClient); + should.equal(client.eventHubName, "my-event-hub-path"); + }); + + it("creates an EventHubClient from a connection string and an Event Hub path", function(): void { + const client = new EventHubClient("Endpoint=sb://a;SharedAccessKeyName=b;SharedAccessKey=c", "my-event-hub-path"); + client.should.be.an.instanceof(EventHubClient); + should.equal(client.eventHubName, "my-event-hub-path"); + }); + + it("creates an EventHubClient from a custom TokenCredential", function(): void { + const dummyCredential: TokenCredential = { + getToken: async () => { + return { + token: "boo", + expiresOnTimestamp: 12324 }; - test.should.throw(Error, "'connectionString' is a required parameter and must be of type: 'string'."); - }); - }); + } + }; + const client = new EventHubClient("abc", "my-event-hub-path", dummyCredential); + client.should.be.an.instanceof(EventHubClient); + should.equal(client.eventHubName, "my-event-hub-path"); + }); - it("throws when it cannot find the Event Hub path", function(): void { - const endpoint = "Endpoint=sb://abc"; - const test = function(): EventHubClient { - return EventHubClient.createFromConnectionString(endpoint); - }; - test.should.throw( - Error, - `Either provide "path" or the "connectionString": "${endpoint}", must contain EntityPath="".` - ); - }); + // it("creates an EventHubClient from an Azure.Identity credential", async function(): Promise { + // should.exist( + // env[EnvVarKeys.AZURE_CLIENT_ID], + // "define AZURE_CLIENT_ID in your environment before running integration tests." + // ); + // should.exist( + // env[EnvVarKeys.AZURE_TENANT_ID], + // "define AZURE_TENANT_ID in your environment before running integration tests." + // ); + // should.exist( + // env[EnvVarKeys.AZURE_CLIENT_SECRET], + // "define AZURE_CLIENT_SECRET in your environment before running integration tests." + // ); + // should.exist(env[EnvVarKeys.ENDPOINT], "define ENDPOINT in your environment before running integration tests."); - it("creates an EventHubClient from a connection string", function(): void { - const client = EventHubClient.createFromConnectionString( - "Endpoint=sb://a;SharedAccessKeyName=b;SharedAccessKey=c;EntityPath=d" - ); - client.should.be.an.instanceof(EventHubClient); - }); + // const credential = new EnvironmentCredential(); + // const client = new EventHubClient(env.ENDPOINT, env.EVENTHUB_NAME, credential); - it("creates an EventHubClient from a connection string and an Event Hub path", function(): void { - const client = EventHubClient.createFromConnectionString( - "Endpoint=sb://a;SharedAccessKeyName=b;SharedAccessKey=c", - "path" - ); - client.should.be.an.instanceof(EventHubClient); - }); - }); + // // Extra check involving actual call to the service to ensure this works + // const hubInfo = await client.getProperties(); + // should.equal(hubInfo.path, client.eventHubName); + // await client.close(); + // }); }); -function arrayOfIncreasingNumbersFromZero(length: any): Array { - // tslint:disable-next-line: no-null-keyword - return Array.apply(null, new Array(length)).map((x: any, i: any) => { - return `${i}`; - }); -} - -before("validate environment", function(): void { - should.exist( - env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], - "define EVENTHUB_CONNECTION_STRING in your environment before running integration tests." - ); - should.exist( - env[EnvVarKeys.EVENTHUB_NAME], - "define EVENTHUB_NAME in your environment before running integration tests." - ); -}); +describe("ServiceCommunicationError for non existent namespace", function(): void { + let client: EventHubClient; + + beforeEach(() => { + client = new EventHubClient("Endpoint=sb://a;SharedAccessKeyName=b;SharedAccessKey=c;EntityPath=d"); + }); + + afterEach(() => { + return client.close(); + }); + + it("should throw ServiceCommunicationError while getting hub runtime info", async function(): Promise { + try { + await client.getProperties(); + } catch (err) { + debug(err); + should.equal(err.name, "ServiceCommunicationError"); + } + }); + + it("should throw ServiceCommunicationError while getting partition runtime info", async function(): Promise { + try { + await client.getPartitionProperties("0"); + } catch (err) { + debug(err); + should.equal(err.name, "ServiceCommunicationError"); + } + }); -const service = { - connectionString: env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], - path: env[EnvVarKeys.EVENTHUB_NAME] -}; + it("should throw ServiceCommunicationError while creating a sender", async function(): Promise { + try { + const sender = client.createProducer({ partitionId: "0" }); + await sender.send([{ body: "Hello World" }]); + } catch (err) { + debug(err); + should.equal(err.name, "ServiceCommunicationError"); + } + }); -describe("EventHubClient on #RunnableInBrowser", function(): void { + it("should throw ServiceCommunicationError while creating a receiver", async function(): Promise { + try { + const receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, "0", EventPosition.earliest()); + await receiver.receiveBatch(10, 5); + } catch (err) { + debug(err); + should.equal(err.name, "ServiceCommunicationError"); + } + }); +}); + +describe("MessagingEntityNotFoundError for non existent eventhub", function(): void { let client: EventHubClient; - afterEach("close the connection", async function(): Promise { - if (client) { - debug(">>>>>>>> afterEach: closing the client."); - await client.close(); + beforeEach(() => { + should.exist( + env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], + "define EVENTHUB_CONNECTION_STRING in your environment before running integration tests." + ); + client = new EventHubClient(env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], "bad" + Math.random()); + }); + + afterEach(() => { + return client.close(); + }); + + it("should throw MessagingEntityNotFoundError while getting hub runtime info", async function(): Promise { + try { + await client.getProperties(); + } catch (err) { + debug(err); + should.equal(err.name, "MessagingEntityNotFoundError"); } }); - describe("user-agent", function(): void { - it("should correctly populate the default user agent", function(done: Mocha.Done): void { - client = EventHubClient.createFromConnectionString(service.connectionString!, service.path); - const packageVersion = packageJsonInfo.version; - const properties = client["_context"].connection.options.properties; - properties!["user-agent"].should.startWith(`azsdk-js-azureeventhubs/${packageVersion}`); - should.equal(properties!.product, "MSJSClient"); - should.equal(properties!.version, packageVersion); - should.equal(properties!.framework, `Node/${process.version}`); - should.equal(properties!.platform, `(${os.arch()}-${os.type()}-${os.release()})`); - done(); - }); + it("should throw MessagingEntityNotFoundError while getting partition runtime info", async function(): Promise { + try { + await client.getPartitionProperties("0"); + } catch (err) { + debug(err); + should.equal(err.name, "MessagingEntityNotFoundError"); + } + }); - it("should correctly populate the custom user agent", function(done: Mocha.Done): void { - const customua = "/js-event-processor-host=0.2.0"; - client = EventHubClient.createFromConnectionString(service.connectionString!, service.path, { - userAgent: customua - }); - const packageVersion = packageJsonInfo.version; - const properties = client["_context"].connection.options.properties; - properties!["user-agent"].should.startWith(`azsdk-js-azureeventhubs/${packageVersion}`); - properties!["user-agent"].should.endWith(customua); - should.equal(properties!.product, "MSJSClient"); - should.equal(properties!.version, packageVersion); - should.equal(properties!.framework, `Node/${process.version}`); - should.equal(properties!.platform, `(${os.arch()}-${os.type()}-${os.release()})`); - done(); - }); + it("should throw MessagingEntityNotFoundError while creating a sender", async function(): Promise { + try { + const sender = client.createProducer({ partitionId: "0" }); + await sender.send([{ body: "Hello World" }]); + } catch (err) { + debug(err); + should.equal(err.name, "MessagingEntityNotFoundError"); + } }); - describe("#close", function(): void { - it("is a no-op when the connection is already closed", function(): Chai.PromisedAssertion { - client = EventHubClient.createFromConnectionString(service.connectionString!, service.path); - return client.close().should.be.fulfilled; - }); + it("should throw MessagingEntityNotFoundError while creating a receiver", async function(): Promise { + try { + const receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, "0", EventPosition.earliest()); + await receiver.receiveBatch(10, 5); + } catch (err) { + debug(err); + should.equal(err.name, "MessagingEntityNotFoundError"); + } }); +}); - describe("getPartitionIds", function(): void { - it("returns an array of partition IDs", async function(): Promise { - client = EventHubClient.createFromConnectionString(service.connectionString!, service.path); - const ids = await client.getPartitionIds(); - ids.should.have.members(arrayOfIncreasingNumbersFromZero(ids.length)); - }); +describe("User Agent on EventHubClient on #RunnableInBrowser", function(): void { + let client: EventHubClient; + + beforeEach(() => { + should.exist( + env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], + "define EVENTHUB_CONNECTION_STRING in your environment before running integration tests." + ); + should.exist( + env[EnvVarKeys.EVENTHUB_NAME], + "define EVENTHUB_NAME in your environment before running integration tests." + ); }); - describe("non existent eventhub", function(): void { - it("should throw MessagingEntityNotFoundError while getting hub runtime info", async function(): Promise { - try { - client = EventHubClient.createFromConnectionString(service.connectionString!, "bad" + Math.random()); - await client.getHubRuntimeInformation(); - } catch (err) { - debug(err); - should.equal(err.name, "MessagingEntityNotFoundError"); - } - }); + afterEach(() => { + return client.close(); + }); - it("should throw MessagingEntityNotFoundError while getting partition runtime info", async function(): Promise< - void - > { - try { - client = EventHubClient.createFromConnectionString(service.connectionString!, "bad" + Math.random()); - await client.getPartitionInformation("0"); - } catch (err) { - debug(err); - should.equal(err.name, "MessagingEntityNotFoundError"); - } - }); + it("should correctly populate the default user agent", function(done: Mocha.Done): void { + client = new EventHubClient(env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], env[EnvVarKeys.EVENTHUB_NAME]); + const packageVersion = packageJsonInfo.version; + const properties = client["_context"].connection.options.properties; + properties!["user-agent"].should.startWith(`azsdk-js-azureeventhubs/${packageVersion}`); + should.equal(properties!.product, "MSJSClient"); + should.equal(properties!.version, packageVersion); + should.equal(properties!.framework, `Node/${process.version}`); + should.equal(properties!.platform, `(${os.arch()}-${os.type()}-${os.release()})`); + done(); + }); - it("should throw MessagingEntityNotFoundError while creating a sender", async function(): Promise { - try { - client = EventHubClient.createFromConnectionString(service.connectionString!, "bad" + Math.random()); - await client.send({ body: "Hello World" }, "0"); - } catch (err) { - debug(err); - should.equal(err.name, "MessagingEntityNotFoundError"); - } - }); + it("should correctly populate the custom user agent", function(done: Mocha.Done): void { + const customua = "/js-event-processor-host=0.2.0"; - it("should throw MessagingEntityNotFoundError while creating a receiver", async function(): Promise { - try { - client = EventHubClient.createFromConnectionString(service.connectionString!, "bad" + Math.random()); - await client.receiveBatch("0", 10, 5); - } catch (err) { - debug(err); - should.equal(err.name, "MessagingEntityNotFoundError"); - } + client = new EventHubClient(env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], env[EnvVarKeys.EVENTHUB_NAME], { + userAgent: customua }); + const packageVersion = packageJsonInfo.version; + const properties = client["_context"].connection.options.properties; + properties!["user-agent"].should.startWith(`azsdk-js-azureeventhubs/${packageVersion}`); + properties!["user-agent"].should.endWith(customua); + should.equal(properties!.product, "MSJSClient"); + should.equal(properties!.version, packageVersion); + should.equal(properties!.framework, `Node/${process.version}`); + should.equal(properties!.platform, `(${os.arch()}-${os.type()}-${os.release()})`); + done(); }); +}); - describe("non existent consumer group", function(): void { - it("should throw MessagingEntityNotFoundError while creating a receiver", function(done: Mocha.Done): void { - try { - client = EventHubClient.createFromConnectionString(service.connectionString!, service.path); - debug(">>>>>>>> client created."); - const onMessage = (data: any) => { - debug(">>>>> data: ", data); - }; - const onError = (error: any) => { - debug(">>>>>>>> error occurred", error); - // sleep for 3 seconds so that receiver link and the session can be closed properly then - // in aftereach the connection can be closed. closing the connection while the receiver - // link and it's session are being closed (and the session being removed from rhea's - // internal map) can create havoc. - setTimeout(() => { - done(should.equal(error.name, "MessagingEntityNotFoundError")); - }, 3000); - }; - client.receive("0", onMessage, onError, { consumerGroup: "some-randome-name" }); - debug(">>>>>>>> attached the error handler on the receiver..."); - } catch (err) { - debug(">>> Some error", err); - throw new Error("This code path must not have hit.. " + JSON.stringify(err)); - } - }); +describe("Errors after close()", function(): void { + let client: EventHubClient; + let sender: EventHubProducer; + let receiver: EventHubConsumer; + + afterEach(() => { + return client.close(); }); - describe("on invalid partition ids like", function(): void { - const invalidIds = ["XYZ", "-1", "1000", "-", " "]; - invalidIds.forEach(function(id: string): void { - it(`"${id}" should throw an error`, async function(): Promise { - try { - client = EventHubClient.createFromConnectionString(service.connectionString!, service.path); - await client.getPartitionInformation(id); - } catch (err) { - debug(`>>>> Received error - `, err); - should.exist(err); - err.message.should.match( - /.*The specified partition is invalid for an EventHub partition sender or receiver.*/gi - ); - } - }); + async function beforeEachTest(entityToClose: string): Promise { + should.exist( + env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], + "define EVENTHUB_CONNECTION_STRING in your environment before running integration tests." + ); + should.exist( + env[EnvVarKeys.EVENTHUB_NAME], + "define EVENTHUB_NAME in your environment before running integration tests." + ); + client = new EventHubClient(env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], env[EnvVarKeys.EVENTHUB_NAME]); + + const timeNow = Date.now(); + + // Ensure sender link is opened + sender = client.createProducer({ partitionId: "0" }); + await sender.send({ body: "dummy send to ensure AMQP connection is opened" }); + + // Ensure receiver link is opened + receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, "0", EventPosition.fromEnqueuedTime(timeNow)); + const msgs = await receiver.receiveBatch(1, 10); + should.equal(msgs.length, 1); + + // close(), so that we can then test the resulting error. + switch (entityToClose) { + case "client": + await client.close(); + break; + case "sender": + await sender.close(); + break; + case "receiver": + await receiver.close(); + break; + default: + break; + } + } + + /** + * Tests that each feature of the sender throws expected error + */ + async function testSender(expectedErrorMsg: string): Promise { + should.equal(sender.isClosed, true, "Sender is not marked as closed."); + + const testMessage = { body: "test" }; + let errorSend: string = ""; + await sender.send(testMessage).catch(err => { + errorSend = err.message; }); + should.equal(errorSend, expectedErrorMsg, "Expected error not thrown for send()"); + } + + /** + * Tests that each feature of the receiver throws expected error + */ + async function testReceiver(expectedErrorMsg: string): Promise { + should.equal(receiver.isClosed, true, "Receiver is not marked as closed."); - // tslint:disable-next-line: no-null-keyword - const invalidIds2 = ["", null]; - invalidIds2.forEach(function(id: string | null): void { - it(`"${id}" should throw an error`, async function(): Promise { - try { - client = EventHubClient.createFromConnectionString(service.connectionString!, service.path); - await client.getPartitionInformation(id as any); - } catch (err) { - debug(`>>>> Received error - `, err); - should.exist(err); - } - }); + let errorReceiveBatch: string = ""; + await receiver.receiveBatch(1, 1).catch(err => { + errorReceiveBatch = err.message; }); + should.equal(errorReceiveBatch, expectedErrorMsg, "Expected error not thrown for receiveMessages()"); + + let errorReceiveStream: string = ""; + try { + receiver.receive(() => Promise.resolve(), e => console.log(e)); + } catch (err) { + errorReceiveStream = err.message; + } + should.equal(errorReceiveStream, expectedErrorMsg, "Expected error not thrown for registerMessageHandler()"); + } + + it("errors after close() on client", async function(): Promise { + await beforeEachTest("client"); + const expectedErrorMsg = "The underlying AMQP connection is closed."; + + await testSender(expectedErrorMsg); + await testReceiver(expectedErrorMsg); + + let errorNewSender: string = ""; + try { + client.createProducer(); + } catch (err) { + errorNewSender = err.message; + } + should.equal(errorNewSender, expectedErrorMsg, "Expected error not thrown for createSender()"); + + let errorNewReceiver: string = ""; + try { + receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, "0", EventPosition.earliest()); + } catch (err) { + errorNewReceiver = err.message; + } + should.equal(errorNewReceiver, expectedErrorMsg, "Expected error not thrown for createReceiver()"); + + let errorGetPartitionIds: string = ""; + try { + await client.getPartitionIds(); + } catch (err) { + errorGetPartitionIds = err.message; + } + should.equal(errorGetPartitionIds, expectedErrorMsg, "Expected error not thrown for getPartitionIds()"); + + let errorGetPartitionProperties: string = ""; + try { + await client.getPartitionProperties("0"); + } catch (err) { + errorGetPartitionProperties = err.message; + } + should.equal(errorGetPartitionProperties, expectedErrorMsg, "Expected error not thrown for getPartitionProperties()"); + + let errorGetProperties: string = ""; + try { + await client.getProperties(); + } catch (err) { + errorGetProperties = err.message; + } + should.equal(errorGetProperties, expectedErrorMsg, "Expected error not thrown for getProperties()"); + }); -}).timeout(60000); + + it("errors after close() on sender", async function(): Promise { + const senderErrorMsg = + `The sender for "${client.eventHubName}" has been closed and can no longer be used. ` + + `Please create a new sender using the "createProducer" function on the EventHubClient.`; + await beforeEachTest("sender"); + await testSender(senderErrorMsg); + }); + + it("errors after close() on receiver", async function(): Promise { + const receiverErrorMsg = + `The receiver for "${client.eventHubName}" has been closed and can no longer be used. ` + + `Please create a new receiver using the "createConsumer" function on the EventHubClient.`; + await beforeEachTest("receiver"); + await testReceiver(receiverErrorMsg); + }); +}); diff --git a/sdk/eventhub/event-hubs/test/eventPosition.spec.ts b/sdk/eventhub/event-hubs/test/eventPosition.spec.ts index b5d4e660deef..d6230750a744 100644 --- a/sdk/eventhub/event-hubs/test/eventPosition.spec.ts +++ b/sdk/eventhub/event-hubs/test/eventPosition.spec.ts @@ -5,34 +5,35 @@ import chai from "chai"; chai.should(); import { EventPosition } from "../src"; +import { getEventPositionFilter } from "../src/eventPosition"; describe("EventPosition #RunnableInBrowser", function(): void { describe("happy", function(): void { it("should create from an offset with inclusive false", function(done: Mocha.Done): void { const result = "amqp.annotation.x-opt-offset > '1234'"; const pos = EventPosition.fromOffset("1234"); - result.should.equal(pos.getExpression()); + result.should.equal(getEventPositionFilter(pos)); done(); }); it("should create from an offset with inclusive true", function(done: Mocha.Done): void { const result = "amqp.annotation.x-opt-offset >= '1234'"; const pos = EventPosition.fromOffset("1234", true); - result.should.equal(pos.getExpression()); + result.should.equal(getEventPositionFilter(pos)); done(); }); it("should create from a sequence with inclusive false", function(done: Mocha.Done): void { const result = "amqp.annotation.x-opt-sequence-number > '0'"; const pos = EventPosition.fromSequenceNumber(0); - result.should.equal(pos.getExpression()); + result.should.equal(getEventPositionFilter(pos)); done(); }); it("should create from a sequence with inclusive true", function(done: Mocha.Done): void { const result = "amqp.annotation.x-opt-sequence-number >= '0'"; const pos = EventPosition.fromSequenceNumber(0, true); - result.should.equal(pos.getExpression()); + result.should.equal(getEventPositionFilter(pos)); done(); }); @@ -40,7 +41,7 @@ describe("EventPosition #RunnableInBrowser", function(): void { const result = "amqp.annotation.x-opt-enqueued-time > '1537406052971'"; const d = new Date("2018-09-20T01:14:12.971Z"); const pos = EventPosition.fromEnqueuedTime(d); - result.should.equal(pos.getExpression()); + result.should.equal(getEventPositionFilter(pos)); done(); }); @@ -48,28 +49,28 @@ describe("EventPosition #RunnableInBrowser", function(): void { const result = "amqp.annotation.x-opt-enqueued-time > '1537406052971'"; const d = new Date("2018-09-20T01:14:12.971Z").getTime(); const pos = EventPosition.fromEnqueuedTime(d); - result.should.equal(pos.getExpression()); + result.should.equal(getEventPositionFilter(pos)); done(); }); - it("should create custom filter", function(done: Mocha.Done): void { - const custom = "amqp.annotation.x-opt-custom > 'foo-bar'"; - const pos = EventPosition.withCustomFilter(custom); - custom.should.equal(pos.getExpression()); - done(); - }); + // it("should create custom filter", function(done: Mocha.Done): void { + // const custom = "amqp.annotation.x-opt-custom > 'foo-bar'"; + // const pos = EventPosition.withCustomFilter(custom); + // custom.should.equal(getEventPositionFilter(pos)); + // done(); + // }); it("should create from an offset from start", function(done: Mocha.Done): void { const result = "amqp.annotation.x-opt-offset > '-1'"; - const pos = EventPosition.fromStart(); - result.should.equal(pos.getExpression()); + const pos = EventPosition.earliest(); + result.should.equal(getEventPositionFilter(pos)); done(); }); it("should create from an offset from end", function(done: Mocha.Done): void { const result = "amqp.annotation.x-opt-offset > '@latest'"; - const pos = EventPosition.fromEnd(); - result.should.equal(pos.getExpression()); + const pos = EventPosition.latest(); + result.should.equal(getEventPositionFilter(pos)); done(); }); }); diff --git a/sdk/eventhub/event-hubs/test/eventdata.spec.ts b/sdk/eventhub/event-hubs/test/eventdata.spec.ts index 90021fdf959d..26a24914dcff 100644 --- a/sdk/eventhub/event-hubs/test/eventdata.spec.ts +++ b/sdk/eventhub/event-hubs/test/eventdata.spec.ts @@ -4,7 +4,8 @@ import chai from "chai"; chai.should(); -import { EventData, Message } from "../src"; +import { fromAmqpMessage, toAmqpMessage, EventData } from "../src/eventData"; +import { Message } from "rhea-promise"; const testAnnotations = { "x-opt-enqueued-time": Date.now(), @@ -15,10 +16,6 @@ const testAnnotations = { const testBody = '{ "foo": "bar" }'; -const messageProperties = { - message_id: "test_id" -}; - const applicationProperties = { propKey: "propValue" }; @@ -26,72 +23,57 @@ const applicationProperties = { const testMessage: Message = { body: testBody, message_annotations: testAnnotations, - message_id: "test_id", application_properties: applicationProperties }; -const testEventData = EventData.fromAmqpMessage(testMessage); -const messageFromED = EventData.toAmqpMessage(testEventData); + +const properties = { + foo: "bar" +}; + +const testSourceEventData: EventData = { + body: testBody, + properties: properties +}; + +const testEventData = fromAmqpMessage(testMessage); +const messageFromED = toAmqpMessage(testSourceEventData); describe("EventData #RunnableInBrowser", function(): void { describe("fromAmqpMessage", function(): void { - it("populates annotations with the message annotations", function(): void { - testEventData.annotations!.should.equal(testAnnotations); - }); - it("populates body with the message body", function(): void { testEventData.body.should.equal(testBody); }); - it("populates the properties with the message properties", function(): void { - testEventData.properties!.message_id!.should.equal(messageProperties.message_id!); - }); - - it("populates the application properties with the message application properties", function(): void { - testEventData.applicationProperties!.should.equal(applicationProperties); - }); - - it("preserves the raw amqp message as-is.", function(): void { - testEventData._raw_amqp_mesage!.should.equal(testMessage); + describe("properties", function(): void { + it("enqueuedTimeUtc gets the enqueued time from system properties", function(): void { + const testEventData = fromAmqpMessage(testMessage); + testEventData.enqueuedTimeUtc!.getTime().should.equal(testAnnotations["x-opt-enqueued-time"]); + }); + + it("offset gets the offset from system properties", function(): void { + const testEventData = fromAmqpMessage(testMessage); + testEventData.offset!.should.equal(testAnnotations["x-opt-offset"]); + }); + + it("sequenceNumber gets the sequence number from system properties", function(): void { + const testEventData = fromAmqpMessage(testMessage); + testEventData.sequenceNumber!.should.equal(testAnnotations["x-opt-sequence-number"]); + }); + + it("partitionKey gets the sequence number from system properties", function(): void { + const testEventData = fromAmqpMessage(testMessage); + testEventData.partitionKey!.should.equal(testAnnotations["x-opt-partition-key"]); + }); }); }); describe("toAmqpMessage", function(): void { - it("populates annotations with the message annotations", function(): void { - messageFromED.message_annotations!.should.equal(testAnnotations); - }); - it("populates body with the message body", function(): void { messageFromED.body.should.equal(testBody); }); - it("populates properties with the message properties", function(): void { - messageFromED.message_id!.should.equal(messageProperties.message_id); - }); - it("populates application_properties of the message", function(): void { - messageFromED.application_properties!.should.equal(applicationProperties); - }); - }); - - describe("properties", function(): void { - it("enqueuedTimeUtc gets the enqueued time from system properties", function(): void { - const testEventData = EventData.fromAmqpMessage(testMessage); - testEventData.enqueuedTimeUtc!.getTime().should.equal(testAnnotations["x-opt-enqueued-time"]); - }); - - it("offset gets the offset from system properties", function(): void { - const testEventData = EventData.fromAmqpMessage(testMessage); - testEventData.offset!.should.equal(testAnnotations["x-opt-offset"]); - }); - - it("sequenceNumber gets the sequence number from system properties", function(): void { - const testEventData = EventData.fromAmqpMessage(testMessage); - testEventData.sequenceNumber!.should.equal(testAnnotations["x-opt-sequence-number"]); - }); - - it("partitionKey gets the sequence number from system properties", function(): void { - const testEventData = EventData.fromAmqpMessage(testMessage); - testEventData.partitionKey!.should.equal(testAnnotations["x-opt-partition-key"]); + messageFromED.application_properties!.should.equal(properties); }); }); }); diff --git a/sdk/eventhub/event-hubs/test/hubruntime.spec.ts b/sdk/eventhub/event-hubs/test/hubruntime.spec.ts index c99d164ab95c..7bc9686deac3 100644 --- a/sdk/eventhub/event-hubs/test/hubruntime.spec.ts +++ b/sdk/eventhub/event-hubs/test/hubruntime.spec.ts @@ -11,6 +11,7 @@ import { EnvVarKeys, getEnvVars } from "./utils/testUtils"; const env = getEnvVars(); import { EventHubClient } from "../src"; +import { AbortController } from "@azure/abort-controller"; describe("RuntimeInformation #RunnableInBrowser", function(): void { let client: EventHubClient; const service = { @@ -38,73 +39,116 @@ describe("RuntimeInformation #RunnableInBrowser", function(): void { }); } - it("gets the hub runtime information", async function(): Promise { - client = EventHubClient.createFromConnectionString(service.connectionString!, service.path, { - userAgent: "/js-event-processor-host=0.2.0" + describe("getPartitionIds", function(): void { + it("returns an array of partition IDs", async function(): Promise { + client = new EventHubClient(service.connectionString, service.path); + const ids = await client.getPartitionIds(); + ids.should.have.members(arrayOfIncreasingNumbersFromZero(ids.length)); }); - const hubRuntimeInfo = await client.getHubRuntimeInformation(); - debug(hubRuntimeInfo); - hubRuntimeInfo.path.should.equal(service.path); - hubRuntimeInfo.type.should.equal("com.microsoft:eventhub"); - hubRuntimeInfo.partitionIds.should.have.members( - arrayOfIncreasingNumbersFromZero(hubRuntimeInfo.partitionIds.length) - ); - hubRuntimeInfo.partitionCount.should.equal(hubRuntimeInfo.partitionIds.length); - hubRuntimeInfo.createdAt.should.be.instanceof(Date); - }); - it("gets the partition runtime information with partitionId as a string", async function(): Promise { - client = EventHubClient.createFromConnectionString(service.connectionString!, service.path); - const partitionRuntimeInfo = await client.getPartitionInformation("0"); - debug(partitionRuntimeInfo); - partitionRuntimeInfo.partitionId.should.equal("0"); - partitionRuntimeInfo.type.should.equal("com.microsoft:partition"); - partitionRuntimeInfo.hubPath.should.equal(service.path); - partitionRuntimeInfo.lastEnqueuedTimeUtc.should.be.instanceof(Date); - should.exist(partitionRuntimeInfo.lastSequenceNumber); - should.exist(partitionRuntimeInfo.lastEnqueuedOffset); + it("respects cancellationTokens", async function(): Promise { + client = new EventHubClient(service.connectionString, service.path); + try { + const controller = new AbortController(); + setTimeout(() => controller.abort(), 1); + await client.getPartitionIds(controller.signal); + throw new Error(`Test failure`); + } catch (err) { + err.message.should.match(/The [\w]+ operation has been cancelled by the user.$/gi); + } + }); }); - it("gets the partition runtime information with partitionId as a number", async function(): Promise { - client = EventHubClient.createFromConnectionString(service.connectionString!, service.path); - const partitionRuntimeInfo = await client.getPartitionInformation(0); - debug(partitionRuntimeInfo); - partitionRuntimeInfo.partitionId.should.equal("0"); - partitionRuntimeInfo.type.should.equal("com.microsoft:partition"); - partitionRuntimeInfo.hubPath.should.equal(service.path); - partitionRuntimeInfo.lastEnqueuedTimeUtc.should.be.instanceof(Date); - should.exist(partitionRuntimeInfo.lastSequenceNumber); - should.exist(partitionRuntimeInfo.lastEnqueuedOffset); - }); + describe("hub runtime information", function(): void { + it("gets the hub runtime information", async function(): Promise { + client = new EventHubClient(service.connectionString, service.path, { + userAgent: "/js-event-processor-host=0.2.0" + }); + const hubRuntimeInfo = await client.getProperties(); + debug(hubRuntimeInfo); + hubRuntimeInfo.path.should.equal(service.path); - it("should fail the partition runtime information when partitionId is not a number or string", async function(): Promise< - void - > { - client = EventHubClient.createFromConnectionString(service.connectionString!, service.path); - try { - await client.getPartitionInformation(true as any); - } catch (err) { - err.message.should.equal("'partitionId' is a required parameter and must be of type: 'string' | 'number'."); - } - }); + hubRuntimeInfo.partitionIds.should.have.members( + arrayOfIncreasingNumbersFromZero(hubRuntimeInfo.partitionIds.length) + ); + hubRuntimeInfo.createdAt.should.be.instanceof(Date); + }); - it("should fail the partition runtime information when partitionId is empty string", async function(): Promise { - client = EventHubClient.createFromConnectionString(service.connectionString!, service.path); - try { - await client.getPartitionInformation(""); - } catch (err) { - err.message.should.match(/.*The specified partition is invalid for an EventHub partition sender or receiver.*/gi); - } + it("can cancel a request for hub runtime information", async function(): Promise { + client = new EventHubClient(service.connectionString, service.path, { + userAgent: "/js-event-processor-host=0.2.0" + }); + try { + const controller = new AbortController(); + setTimeout(() => controller.abort(), 1); + await client.getProperties(controller.signal); + throw new Error(`Test failure`); + } catch (err) { + err.message.should.match(/The [\w]+ operation has been cancelled by the user.$/gi); + } + }); }); - it("should fail the partition runtime information when partitionId is a negative number", async function(): Promise< - void - > { - client = EventHubClient.createFromConnectionString(service.connectionString!, service.path); - try { - await client.getPartitionInformation(-1); - } catch (err) { - err.message.should.match(/.*The specified partition is invalid for an EventHub partition sender or receiver.*/gi); - } + describe("partition runtime information", function(): void { + it("should throw an error if partitionId is missing", async function(): Promise { + try { + client = new EventHubClient(service.connectionString, service.path); + await client.getPartitionProperties(undefined as any); + throw new Error("Test failure"); + } catch (err) { + err.name.should.equal("TypeError"); + err.message.should.equal(`Missing parameter "partitionId"`); + } + }); + + it("gets the partition runtime information with partitionId as a string", async function(): Promise { + client = new EventHubClient(service.connectionString, service.path); + const partitionRuntimeInfo = await client.getPartitionProperties("0"); + debug(partitionRuntimeInfo); + partitionRuntimeInfo.partitionId.should.equal("0"); + partitionRuntimeInfo.eventHubPath.should.equal(service.path); + partitionRuntimeInfo.lastEnqueuedTimeUtc.should.be.instanceof(Date); + should.exist(partitionRuntimeInfo.lastEnqueuedSequenceNumber); + should.exist(partitionRuntimeInfo.lastEnqueuedOffset); + }); + + it("gets the partition runtime information with partitionId as a number", async function(): Promise { + client = new EventHubClient(service.connectionString, service.path); + const partitionRuntimeInfo = await client.getPartitionProperties(0 as any); + debug(partitionRuntimeInfo); + partitionRuntimeInfo.partitionId.should.equal("0"); + partitionRuntimeInfo.eventHubPath.should.equal(service.path); + partitionRuntimeInfo.lastEnqueuedTimeUtc.should.be.instanceof(Date); + should.exist(partitionRuntimeInfo.lastEnqueuedSequenceNumber); + should.exist(partitionRuntimeInfo.lastEnqueuedOffset); + }); + + const invalidIds = ["XYZ", -1, 1000, "-", " ", ""]; + invalidIds.forEach(function(id: any): void { + it(`should fail the partition runtime information when partitionId is "${id}"`, async function(): Promise { + try { + client = new EventHubClient(service.connectionString, service.path); + await client.getPartitionProperties(id as any); + } catch (err) { + debug(`>>>> Received error - `, err); + should.exist(err); + err.message.should.match( + /.*The specified partition is invalid for an EventHub partition sender or receiver.*/gi + ); + } + }); + }); + + it("can cancel a request for getPartitionInformation", async function(): Promise { + client = new EventHubClient(service.connectionString, service.path); + try { + const controller = new AbortController(); + setTimeout(() => controller.abort(), 1); + await client.getPartitionProperties("0", controller.signal); + throw new Error(`Test failure`); + } catch (err) { + err.message.should.match(/The [\w]+ operation has been cancelled by the user.$/gi); + } + }); }); }).timeout(60000); diff --git a/sdk/eventhub/event-hubs/test/iothub.spec.ts b/sdk/eventhub/event-hubs/test/iothub.spec.ts index 352e8a12a2b8..6d106133d7a3 100644 --- a/sdk/eventhub/event-hubs/test/iothub.spec.ts +++ b/sdk/eventhub/event-hubs/test/iothub.spec.ts @@ -7,7 +7,7 @@ import chaiAsPromised from "chai-as-promised"; chai.use(chaiAsPromised); import debugModule from "debug"; const debug = debugModule("azure:event-hubs:iothub-spec"); -import { EventHubClient } from "../src"; +import { EventHubClient, EventPosition } from "../src"; import { EnvVarKeys, getEnvVars } from "./utils/testUtils"; const env = getEnvVars(); @@ -30,15 +30,9 @@ describe("EventHub Client with iothub connection string ", function(): void { it("should be able to get hub runtime info", async function(): Promise { client = await EventHubClient.createFromIotHubConnectionString(service.connectionString!); - const runtimeInfo = await client.getHubRuntimeInformation(); + const runtimeInfo = await client.getProperties(); debug(">>> RuntimeInfo: ", runtimeInfo); should.exist(runtimeInfo, `RuntimeIno does not exist. Found ${runtimeInfo}`); - should.equal(runtimeInfo.type, "com.microsoft:eventhub", `Runtime Type is not equal and found ${runtimeInfo.type}`); - should.equal( - runtimeInfo.partitionCount > 0, - true, - `partitionCount is not > 0 and found ${runtimeInfo.partitionCount}` - ); should.equal( runtimeInfo.partitionIds.length > 0, true, @@ -48,7 +42,8 @@ describe("EventHub Client with iothub connection string ", function(): void { it("should be able to receive messages from the event hub", async function(): Promise { client = await EventHubClient.createFromIotHubConnectionString(service.connectionString!); - const datas = await client.receiveBatch("0", 15, 10); + const receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, "0", EventPosition.earliest()); + const datas = await receiver.receiveBatch(15, 10); debug(">>>> Received events from partition %s, %O", "0", datas); }); }).timeout(30000); diff --git a/sdk/eventhub/event-hubs/test/misc.spec.ts b/sdk/eventhub/event-hubs/test/misc.spec.ts index 81c42f8220ab..efb1b835c82f 100644 --- a/sdk/eventhub/event-hubs/test/misc.spec.ts +++ b/sdk/eventhub/event-hubs/test/misc.spec.ts @@ -9,7 +9,7 @@ import chaiAsPromised from "chai-as-promised"; chai.use(chaiAsPromised); import debugModule from "debug"; const debug = debugModule("azure:event-hubs:misc-spec"); -import { EventPosition, EventHubClient, EventData, EventHubRuntimeInformation } from "../src"; +import { EventPosition, EventHubClient, EventData, EventHubProperties } from "../src"; import { BatchingReceiver } from "../src/batchingReceiver"; import { EnvVarKeys, getEnvVars } from "./utils/testUtils"; const env = getEnvVars(); @@ -19,9 +19,9 @@ describe("Misc tests #RunnableInBrowser", function(): void { connectionString: env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], path: env[EnvVarKeys.EVENTHUB_NAME] }; - const client: EventHubClient = EventHubClient.createFromConnectionString(service.connectionString!, service.path); + const client: EventHubClient = new EventHubClient(service.connectionString, service.path); let breceiver: BatchingReceiver; - let hubInfo: EventHubRuntimeInformation; + let hubInfo: EventHubProperties; before("validate environment", async function(): Promise { should.exist( env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], @@ -31,7 +31,7 @@ describe("Misc tests #RunnableInBrowser", function(): void { env[EnvVarKeys.EVENTHUB_NAME], "define EVENTHUB_NAME in your environment before running integration tests." ); - hubInfo = await client.getHubRuntimeInformation(); + hubInfo = await client.getProperties(); }); after("close the connection", async function(): Promise { @@ -44,15 +44,19 @@ describe("Misc tests #RunnableInBrowser", function(): void { const msgString = "A".repeat(220 * 1024); const msgBody = Buffer.from(msgString); const obj: EventData = { body: msgBody }; - const offset = (await client.getPartitionInformation(partitionId)).lastEnqueuedOffset; + const offset = (await client.getPartitionProperties(partitionId)).lastEnqueuedOffset; debug(`Partition ${partitionId} has last message with offset ${offset}.`); debug("Sending one message with %d bytes.", bodysize); - breceiver = BatchingReceiver.create((client as any)._context, partitionId, { - eventPosition: EventPosition.fromOffset(offset) - }); + breceiver = BatchingReceiver.create( + (client as any)._context, + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromOffset(offset) + ); let data = await breceiver.receive(5, 10); should.equal(data.length, 0, "Unexpected to receive message before client sends it"); - await client.send(obj, partitionId); + const sender = client.createProducer({ partitionId }); + await sender.send([obj]); debug("Successfully sent the large message."); data = await breceiver.receive(5, 30); debug("Closing the receiver.."); @@ -79,13 +83,17 @@ describe("Misc tests #RunnableInBrowser", function(): void { ] }; const obj: EventData = { body: msgBody }; - const offset = (await client.getPartitionInformation(partitionId)).lastEnqueuedOffset; + const offset = (await client.getPartitionProperties(partitionId)).lastEnqueuedOffset; debug(`Partition ${partitionId} has last message with offset ${offset}.`); debug("Sending one message %O", obj); - breceiver = BatchingReceiver.create((client as any)._context, partitionId, { - eventPosition: EventPosition.fromOffset(offset) - }); - await client.send(obj, partitionId); + breceiver = BatchingReceiver.create( + (client as any)._context, + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromOffset(offset) + ); + const sender = client.createProducer({ partitionId }); + await sender.send([obj]); debug("Successfully sent the large message."); const data = await breceiver.receive(5, 30); await breceiver.close(); @@ -110,13 +118,17 @@ describe("Misc tests #RunnableInBrowser", function(): void { "some string" ]; const obj: EventData = { body: msgBody, properties: { message_id: uuid() } }; - const offset = (await client.getPartitionInformation(partitionId)).lastEnqueuedOffset; + const offset = (await client.getPartitionProperties(partitionId)).lastEnqueuedOffset; debug(`Partition ${partitionId} has last message with offset ${offset}.`); debug("Sending one message %O", obj); - breceiver = BatchingReceiver.create((client as any)._context, partitionId, { - eventPosition: EventPosition.fromOffset(offset) - }); - await client.send(obj, partitionId); + breceiver = BatchingReceiver.create( + (client as any)._context, + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromOffset(offset) + ); + const sender = client.createProducer({ partitionId }); + await sender.send([obj]); debug("Successfully sent the large message."); const data = await breceiver.receive(5, 30); await breceiver.close(); @@ -132,13 +144,17 @@ describe("Misc tests #RunnableInBrowser", function(): void { const partitionId = hubInfo.partitionIds[0]; const msgBody = true; const obj: EventData = { body: msgBody }; - const offset = (await client.getPartitionInformation(partitionId)).lastEnqueuedOffset; + const offset = (await client.getPartitionProperties(partitionId)).lastEnqueuedOffset; debug(`Partition ${partitionId} has last message with offset ${offset}.`); debug("Sending one message %O", obj); - breceiver = BatchingReceiver.create((client as any)._context, partitionId, { - eventPosition: EventPosition.fromOffset(offset) - }); - await client.send(obj, partitionId); + breceiver = BatchingReceiver.create( + (client as any)._context, + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromOffset(offset) + ); + const sender = client.createProducer({ partitionId }); + await sender.send([obj]); debug("Successfully sent the large message."); const data = await breceiver.receive(5, 30); await breceiver.close(); @@ -153,24 +169,26 @@ describe("Misc tests #RunnableInBrowser", function(): void { it("should be able to send and receive batched messages correctly ", async function(): Promise { try { const partitionId = hubInfo.partitionIds[0]; - const offset = (await client.getPartitionInformation(partitionId)).lastEnqueuedOffset; + const offset = (await client.getPartitionProperties(partitionId)).lastEnqueuedOffset; debug(`Partition ${partitionId} has last message with offset ${offset}.`); - const messageCount = 5; const d: EventData[] = []; for (let i = 0; i < messageCount; i++) { const obj: EventData = { body: `Hello EH ${i}` }; d.push(obj); } - d[0].partitionKey = "pk1234656"; - await client.sendBatch(d, partitionId); + const sender = client.createProducer({ partitionId }); + await sender.send(d); debug("Successfully sent 5 messages batched together."); - const data = await client.receiveBatch(partitionId, 5, 30, { - eventPosition: EventPosition.fromOffset(offset) - }); - + const receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromOffset(offset) + ); + const data = await receiver.receiveBatch(5, 30); + await receiver.close(); debug("received message: ", data); should.exist(data); data.length.should.equal(5); @@ -186,9 +204,8 @@ describe("Misc tests #RunnableInBrowser", function(): void { it("should be able to send and receive batched messages as JSON objects correctly ", async function(): Promise { try { const partitionId = hubInfo.partitionIds[0]; - const offset = (await client.getPartitionInformation(partitionId)).lastEnqueuedOffset; + const offset = (await client.getPartitionProperties(partitionId)).lastEnqueuedOffset; debug(`Partition ${partitionId} has last message with offset ${offset}.`); - const messageCount = 5; const d: EventData[] = []; for (let i = 0; i < messageCount; i++) { @@ -212,15 +229,18 @@ describe("Misc tests #RunnableInBrowser", function(): void { }; d.push(obj); } - d[0].partitionKey = "pk1234656"; - await client.sendBatch(d, partitionId); + const sender = client.createProducer({ partitionId }); + await sender.send(d); debug("Successfully sent 5 messages batched together."); - const data = await client.receiveBatch(partitionId, 5, 30, { - eventPosition: EventPosition.fromOffset(offset) - }); - + const receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromOffset(offset) + ); + const data = await receiver.receiveBatch(5, 30); + await receiver.close(); debug("received message: ", data); should.exist(data); should.equal(data[0].body.count, 0); @@ -240,7 +260,7 @@ describe("Misc tests #RunnableInBrowser", function(): void { debug("Discovering end of stream on each partition."); const partitionIds = hubInfo.partitionIds; for (const id of partitionIds) { - const pInfo = await client.getPartitionInformation(id); + const pInfo = await client.getPartitionProperties(id); partitionOffsets[id] = pInfo.lastEnqueuedOffset; debug(`Partition ${id} has last message with offset ${pInfo.lastEnqueuedOffset}.`); } @@ -250,18 +270,23 @@ describe("Misc tests #RunnableInBrowser", function(): void { } for (let i = 0; i < msgToSendCount; i++) { const partitionKey = getRandomInt(10); - await client.send({ body: "Hello EventHub " + i, partitionKey: partitionKey.toString() }); + const sender = client.createProducer(); + await sender.send([{ body: "Hello EventHub " + i }], { partitionKey: partitionKey.toString() }); } debug("Starting to receive all messages from each partition."); const partitionMap: any = {}; let totalReceived = 0; for (const id of partitionIds) { - const data = await client.receiveBatch(id, 50, 10, { - eventPosition: EventPosition.fromOffset(partitionOffsets[id]) - }); + const receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + id, + EventPosition.fromOffset(partitionOffsets[id]) + ); + const data = await receiver.receiveBatch(50, 10); + await receiver.close(); debug(`Received ${data.length} messages from partition ${id}.`); for (const d of data) { - debug(">>>> _raw_amqp_mesage: ", d._raw_amqp_mesage); + debug(">>>> _raw_amqp_mesage: ", (d as any)._raw_amqp_mesage); const pk = d.partitionKey as string; debug("pk: ", pk); if (partitionMap[pk] && partitionMap[pk] !== id) { diff --git a/sdk/eventhub/event-hubs/test/receiver.spec.ts b/sdk/eventhub/event-hubs/test/receiver.spec.ts index 647bf1ab1f4c..b2340999b005 100644 --- a/sdk/eventhub/event-hubs/test/receiver.spec.ts +++ b/sdk/eventhub/event-hubs/test/receiver.spec.ts @@ -8,10 +8,11 @@ import chaiAsPromised from "chai-as-promised"; chai.use(chaiAsPromised); import debugModule from "debug"; const debug = debugModule("azure:event-hubs:receiver-spec"); -import { EventPosition, EventHubClient, EventData, EventHubRuntimeInformation, MessagingError } from "../src"; +import { EventPosition, EventHubClient, EventData, MessagingError, ReceivedEventData, EventHubConsumer } from "../src"; import { BatchingReceiver } from "../src/batchingReceiver"; import { ReceiveHandler } from "../src/streamingReceiver"; import { EnvVarKeys, getEnvVars } from "./utils/testUtils"; +import { AbortController } from "@azure/abort-controller"; const env = getEnvVars(); describe("EventHub Receiver #RunnableInBrowser", function(): void { @@ -19,9 +20,10 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { connectionString: env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], path: env[EnvVarKeys.EVENTHUB_NAME] }; - const client: EventHubClient = EventHubClient.createFromConnectionString(service.connectionString!, service.path); + const client: EventHubClient = new EventHubClient(service.connectionString, service.path); let breceiver: BatchingReceiver; - let hubInfo: EventHubRuntimeInformation; + let receiver: EventHubConsumer | undefined; + let partitionIds: string[]; before("validate environment", async function(): Promise { should.exist( env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], @@ -31,7 +33,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { env[EnvVarKeys.EVENTHUB_NAME], "define EVENTHUB_NAME in your environment before running integration tests." ); - hubInfo = await client.getHubRuntimeInformation(); + partitionIds = await client.getPartitionIds(); }); after("close the connection", async function(): Promise { @@ -45,9 +47,21 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } }); + afterEach("close the receiver link", async function(): Promise { + if (receiver) { + await receiver.close(); + debug("After each - Receiver closed."); + } + }); + describe("with partitionId 0 as number", function(): void { it("should work for receiveBatch", async function(): Promise { - const result = await client.receiveBatch(0, 10, 20, { eventPosition: EventPosition.fromSequenceNumber(0) }); + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionIds[0], + EventPosition.fromSequenceNumber(0) + ); + const result = await receiver.receiveBatch(10, 20); should.equal(true, Array.isArray(result)); }); @@ -57,7 +71,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { const onError = (error: MessagingError | Error) => { debug(">>>> An error occurred: %O", error); }; - const onMsg = (data: EventData) => { + const onMsg = (data: ReceivedEventData) => { debug(">>>> Received Data: %O", data); if (!stopCalled) { stopCalled = true; @@ -71,115 +85,140 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { }); } }; - rcvHandler = client.receive(0, onMsg, onError, { epoch: 1, eventPosition: EventPosition.fromOffset("0") }); + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionIds[0], + EventPosition.fromOffset("0"), + { + ownerLevel: 1 + } + ); + rcvHandler = receiver.receive(onMsg, onError); }); }); describe("with EventPosition specified as", function(): void { - // TODO: Enable following test as part of https://github.com/Azure/azure-sdk-for-js/issues/3714 - // After we ensure the multiple receiveBatch calls on the user facing receiver work as expected - /* - it("'from end of stream' should receive messages correctly", async function(): Promise { - const partitionId = hubInfo.partitionIds[0]; + // TODO: Below test is commented due to https://github.com/Azure/azure-sdk-for-js/issues/3938 + // it("'from end of stream' should receive messages correctly", async function(): Promise { + // const partitionId = partitionIds[0]; + // debug("Creating new receiver with offset EndOfStream"); + // const receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, partitionId, EventPosition.latest()); + // const data = await receiver.receiveBatch(10, 10); + // data.length.should.equal(0, "Unexpected message received when using EventPosition.fromEnd()"); + // const events: EventData[] = []; + // for (let i = 0; i < 10; i++) { + // const ed: EventData = { + // body: "Hello awesome world " + i + // }; + // events.push(ed); + // } + // await client.createProducer({ partitionId: partitionId }).send(events); + // debug(">>>>>>> Sent the new messages. We should only receive these messages."); + // const data2 = await receiver.receiveBatch(10, 20); + // debug("received messages: ", data2); + // data2.length.should.equal(10, "Failed to receive the expected nummber of messages"); + // debug("Next receive on this partition should not receive any messages."); + // const data3 = await receiver.receiveBatch(10, 10); + // data3.length.should.equal(0, "Unexpected message received"); + // await receiver.close(); + // }); + + it("'from last enqueued sequence number' should receive messages correctly", async function(): Promise { + const partitionId = partitionIds[0]; + const partitionInfo = await client.getPartitionProperties(partitionId); + debug("Creating a receiver with last enqueued sequence number"); + const receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromSequenceNumber(partitionInfo.lastEnqueuedSequenceNumber) + ); + const data = await receiver.receiveBatch(10, 10); + data.length.should.equal(0, "Unexpected message received when using EventPosition.fromSequenceNumber()"); + const events: EventData[] = []; for (let i = 0; i < 10; i++) { const ed: EventData = { body: "Hello awesome world " + i }; - await client.send(ed, partitionId); - debug("sent message - " + i); + events.push(ed); } - debug("Creating new receiver with offset EndOfStream"); - breceiver = BatchingReceiver.create((client as any)._context, partitionId, { - eventPosition: EventPosition.fromEnd() - }); - const data1 = await breceiver.receive(10, 10); - data1.length.should.equal(0, "Unexpected message received when using EventPosition.fromEnd()"); - // send a new message. We should only receive this new message. - const uid = uuid(); - const ed: EventData = { - body: "New message", - applicationProperties: { - stamp: uid - } - }; - await client.send(ed, partitionId); - debug(">>>>>>> Sent the new message after creating the receiver. We should only receive this message."); - const data2 = await breceiver.receive(10, 20); + await client.createProducer({ partitionId: partitionId }).send(events); + debug(">>>>>>> Sent 10 messages. We should only receive these 10 messages."); + const data2 = await receiver.receiveBatch(10, 20); debug("received messages: ", data2); - data2.length.should.equal(1, "Failed to receive the expected one single message"); - data2[0].applicationProperties!.stamp.should.equal(uid, "Message received with unexpected uid"); - debug("Next receive on this partition should not receive any messages."); - const data3 = await breceiver.receive(10, 10); - data3.length.should.equal(0, "Unexpected message received"); + data2.length.should.equal(10, "Failed to receive the expected nummber of messages"); + await receiver.close(); }); - */ - it("'after a particular offset' should receive messages correctly", async function(): Promise { - const partitionId = hubInfo.partitionIds[0]; - const pInfo = await client.getPartitionInformation(partitionId); + const partitionId = partitionIds[0]; + const pInfo = await client.getPartitionProperties(partitionId); debug(`Creating new receiver with last enqueued offset: "${pInfo.lastEnqueuedOffset}".`); - debug("Establishing the receiver link..."); // send a new message. We should only receive this new message. const uid = uuid(); const ed: EventData = { body: "New message after last enqueued offset", - applicationProperties: { + properties: { stamp: uid } }; - await client.send(ed, "0"); + await client.createProducer({ partitionId: partitionId }).send([ed]); debug("Sent the new message after creating the receiver. We should only receive this message."); - const data = await client.receiveBatch(partitionId, 10, 20, { - eventPosition: EventPosition.fromOffset(pInfo.lastEnqueuedOffset) - }); + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromOffset(pInfo.lastEnqueuedOffset) + ); + const data = await receiver.receiveBatch(10, 20); debug("received messages: ", data); data.length.should.equal(1); - data[0].applicationProperties!.stamp.should.equal(uid); + data[0].properties!.stamp.should.equal(uid); }); it("'after a particular offset with isInclusive true' should receive messages correctly", async function(): Promise< void > { - const partitionId = hubInfo.partitionIds[0]; + const partitionId = partitionIds[0]; const uid = uuid(); const ed: EventData = { body: "New message after last enqueued offset", - applicationProperties: { + properties: { stamp: uid } }; - await client.send(ed, partitionId); + await client.createProducer({ partitionId: partitionId }).send([ed]); debug(`Sent message 1 with stamp: ${uid}.`); - const pInfo = await client.getPartitionInformation(partitionId); + const pInfo = await client.getPartitionProperties(partitionId); const uid2 = uuid(); const ed2: EventData = { body: "New message after last enqueued offset", - applicationProperties: { + properties: { stamp: uid2 } }; - await client.send(ed2, partitionId); + await client.createProducer({ partitionId: partitionId }).send([ed2]); debug(`Sent message 2 with stamp: ${uid} after getting the enqueued offset.`); debug(`Creating new receiver with last enqueued offset: "${pInfo.lastEnqueuedOffset}".`); - breceiver = BatchingReceiver.create((client as any)._context, partitionId, { - eventPosition: EventPosition.fromOffset(pInfo.lastEnqueuedOffset, true) - }); + breceiver = BatchingReceiver.create( + (client as any)._context, + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromOffset(pInfo.lastEnqueuedOffset, true) + ); debug("We should receive the last 2 messages."); const data = await breceiver.receive(10, 30); debug("received messages: ", data); data.length.should.equal(2, "Failed to receive the two expected messages"); - data[0].applicationProperties!.stamp.should.equal(uid, "First message has unexpected uid"); - data[1].applicationProperties!.stamp.should.equal(uid2, "Second message has unexpected uid"); + data[0].properties!.stamp.should.equal(uid, "First message has unexpected uid"); + data[1].properties!.stamp.should.equal(uid2, "Second message has unexpected uid"); debug("Next receive on this partition should not receive any messages."); const data2 = await breceiver.receive(10, 10); data2.length.should.equal(0, "Unexpected message received"); }); - it("'from a particular enqueued time' should receive messages correctly ", async function(): Promise { - const partitionId = hubInfo.partitionIds[0]; - const pInfo = await client.getPartitionInformation(partitionId); + it("'from a particular enqueued time' should receive messages correctly", async function(): Promise { + const partitionId = partitionIds[0]; + const pInfo = await client.getPartitionProperties(partitionId); debug(`Creating new receiver with last enqueued time: "${pInfo.lastEnqueuedTimeUtc}".`); debug("Establishing the receiver link..."); @@ -187,43 +226,50 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { const uid = uuid(); const ed: EventData = { body: "New message after last enqueued time " + pInfo.lastEnqueuedTimeUtc, - applicationProperties: { + properties: { stamp: uid } }; - await client.send(ed, partitionId); + await client.createProducer({ partitionId: partitionId }).send([ed]); debug("Sent the new message after creating the receiver. We should only receive this message."); - const data = await client.receiveBatch(partitionId, 10, 20, { - eventPosition: EventPosition.fromEnqueuedTime(pInfo.lastEnqueuedTimeUtc) - }); + + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromEnqueuedTime(pInfo.lastEnqueuedTimeUtc) + ); + const data = await receiver.receiveBatch(10, 20); debug("received messages: ", data); data.length.should.equal(1, "Failed to received the expected single message"); - data[0].applicationProperties!.stamp.should.equal(uid); + data[0].properties!.stamp.should.equal(uid); }); it("'after the particular sequence number' should receive messages correctly", async function(): Promise { - const partitionId = hubInfo.partitionIds[0]; - const pInfo = await client.getPartitionInformation(partitionId); + const partitionId = partitionIds[0]; + const pInfo = await client.getPartitionProperties(partitionId); // send a new message. We should only receive this new message. const uid = uuid(); const ed: EventData = { - body: "New message after last enqueued sequence number " + pInfo.lastSequenceNumber, - applicationProperties: { + body: "New message after last enqueued sequence number " + pInfo.lastEnqueuedSequenceNumber, + properties: { stamp: uid } }; - await client.send(ed, partitionId); + await client.createProducer({ partitionId: partitionId }).send([ed]); debug( "Sent the new message after getting the partition runtime information. We should only receive this message." ); - debug(`Creating new receiver with last enqueued sequence number: "${pInfo.lastSequenceNumber}".`); - breceiver = BatchingReceiver.create((client as any)._context, partitionId, { - eventPosition: EventPosition.fromSequenceNumber(pInfo.lastSequenceNumber) - }); + debug(`Creating new receiver with last enqueued sequence number: "${pInfo.lastEnqueuedSequenceNumber}".`); + breceiver = BatchingReceiver.create( + (client as any)._context, + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromSequenceNumber(pInfo.lastEnqueuedSequenceNumber) + ); const data = await breceiver.receive(10, 20); debug("received messages: ", data); data.length.should.equal(1, "Failed to receive the expected single message"); - data[0].applicationProperties!.stamp.should.equal(uid, "Received message has unexpected uid"); + data[0].properties!.stamp.should.equal(uid, "Received message has unexpected uid"); debug("Next receive on this partition should not receive any messages."); const data2 = await breceiver.receive(10, 10); data2.length.should.equal(0, "Unexpected message received"); @@ -232,55 +278,573 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { it("'after the particular sequence number' with isInclusive true should receive messages correctly", async function(): Promise< void > { - const partitionId = hubInfo.partitionIds[0]; + const partitionId = partitionIds[0]; const uid = uuid(); const ed: EventData = { body: "New message before getting the last sequence number", - applicationProperties: { + properties: { stamp: uid } }; - await client.send(ed, partitionId); + await client.createProducer({ partitionId: partitionId }).send([ed]); debug(`Sent message 1 with stamp: ${uid}.`); - const pInfo = await client.getPartitionInformation(partitionId); + const pInfo = await client.getPartitionProperties(partitionId); const uid2 = uuid(); const ed2: EventData = { body: "New message after the last enqueued offset", - applicationProperties: { + properties: { stamp: uid2 } }; - await client.send(ed2, partitionId); + await client.createProducer({ partitionId: partitionId }).send([ed2]); debug(`Sent message 2 with stamp: ${uid}.`); - debug(`Creating new receiver with last sequence number: "${pInfo.lastSequenceNumber}".`); - breceiver = BatchingReceiver.create((client as any)._context, partitionId, { - eventPosition: EventPosition.fromSequenceNumber(pInfo.lastSequenceNumber, true) - }); + debug(`Creating new receiver with last sequence number: "${pInfo.lastEnqueuedSequenceNumber}".`); + breceiver = BatchingReceiver.create( + (client as any)._context, + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromSequenceNumber(pInfo.lastEnqueuedSequenceNumber, true) + ); debug("We should receive the last 2 messages."); const data = await breceiver.receive(10, 30); debug("received messages: ", data); data.length.should.equal(2, "Failed to received two expected messages"); - data[0].applicationProperties!.stamp.should.equal(uid, "Message 1 has unexpected uid"); - data[1].applicationProperties!.stamp.should.equal(uid2, "Message 2 has unexpected uid"); + data[0].properties!.stamp.should.equal(uid, "Message 1 has unexpected uid"); + data[1].properties!.stamp.should.equal(uid2, "Message 2 has unexpected uid"); debug("Next receive on this partition should not receive any messages."); const data2 = await breceiver.receive(10, 10); data2.length.should.equal(0, "Unexpected message received"); }); }); - describe("in batch mode", function(): void { + describe("in streaming mode", function(): void { it("should receive messages correctly", async function(): Promise { - const partitionId = hubInfo.partitionIds[0]; - const data = await client.receiveBatch(partitionId, 5, 10); + const partitionId = partitionIds[0]; + const time = Date.now(); + // send a message that can be received + const sender = client.createProducer({ partitionId }); + try { + await sender.send({ body: "receive behaves correctly" }); + } finally { + await sender.close(); + } + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromEnqueuedTime(time) + ); + + const received: ReceivedEventData[] = await new Promise((resolve, reject) => { + let shouldStop = false; + const events: ReceivedEventData[] = []; + + const handler = receiver!.receive(event => { + if (!shouldStop) { + events.push(event); + shouldStop = true; + handler + .stop() + .then(() => resolve(events)) + .catch(reject); + } + }, reject); + }); + + received.length.should.equal(1); + }); + + it("should support being cancelled", async function(): Promise { + const partitionId = partitionIds[0]; + const time = Date.now(); + // send a message that can be received + const sender = client.createProducer({ partitionId }); + try { + await sender.send({ body: "receive cancellation - timeout 0" }); + } finally { + await sender.close(); + } + + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromEnqueuedTime(time) + ); + + try { + await new Promise((resolve, reject) => { + let shouldStop = false; + const events: ReceivedEventData[] = []; + // abortSignal event listeners will be triggered after synchronous paths are executed + const abortSignal = AbortController.timeout(0); + + const handler = receiver!.receive( + event => { + if (!shouldStop) { + events.push(event); + shouldStop = true; + handler + .stop() + .then(() => resolve(events)) + .catch(reject); + } + }, + reject, + abortSignal + ); + }); + throw new Error(`Test failure`); + } catch (err) { + err.name.should.equal("AbortError"); + err.message.should.equal("The receive operation has been cancelled by the user."); + } + }); + + it("should support being cancelled from an already aborted AbortSignal", async function(): Promise { + const partitionId = partitionIds[0]; + const time = Date.now(); + // send a message that can be received + const sender = client.createProducer({ partitionId }); + try { + await sender.send({ body: "receive cancellation - immediate" }); + } finally { + await sender.close(); + } + + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromEnqueuedTime(time) + ); + + try { + await new Promise((resolve, reject) => { + let shouldStop = false; + const events: ReceivedEventData[] = []; + + // create an AbortSignal that's in the aborted state + const abortController = new AbortController(); + abortController.abort(); + + const handler = receiver!.receive( + event => { + if (!shouldStop) { + events.push(event); + shouldStop = true; + handler + .stop() + .then(() => resolve(events)) + .catch(reject); + } + }, + reject, + abortController.signal + ); + }); + throw new Error(`Test failure`); + } catch (err) { + err.name.should.equal("AbortError"); + err.message.should.equal("The receive operation has been cancelled by the user."); + } + }); + }); + + describe("in batch mode #RunnableInBrowser", function(): void { + it("should receive messages correctly", async function(): Promise { + const partitionId = partitionIds[0]; + receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, partitionId, EventPosition.earliest()); + const data = await receiver.receiveBatch(5, 10); debug("received messages: ", data); data.length.should.equal(5, "Failed to receive five expected messages"); }); + + it("should support being cancelled", async function(): Promise { + const partitionId = partitionIds[0]; + const time = Date.now(); + // send a message that can be received + const sender = client.createProducer({ partitionId }); + try { + await sender.send({ body: "batchReceiver cancellation - timeout 0" }); + } finally { + await sender.close(); + } + + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromEnqueuedTime(time) + ); + + try { + // abortSignal event listeners will be triggered after synchronous paths are executed + const abortSignal = AbortController.timeout(0); + await receiver.receiveBatch(1, 60, abortSignal); + throw new Error(`Test failure`); + } catch (err) { + err.name.should.equal("AbortError"); + err.message.should.equal("The receive operation has been cancelled by the user."); + } + }); + + it("should support being cancelled from an already aborted AbortSignal", async function(): Promise { + const partitionId = partitionIds[0]; + const time = Date.now(); + // send a message that can be received + const sender = client.createProducer({ partitionId }); + try { + await sender.send({ body: "batchReceiver cancellation - immediate" }); + } finally { + await sender.close(); + } + + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromEnqueuedTime(time) + ); + + try { + // abortSignal event listeners will be triggered after synchronous paths are executed + const abortController = new AbortController(); + abortController.abort(); + await receiver.receiveBatch(1, 60, abortController.signal); + throw new Error(`Test failure`); + } catch (err) { + err.name.should.equal("AbortError"); + err.message.should.equal("The receive operation has been cancelled by the user."); + } + }); + + it("should support cancellation when a connection already exists", async function(): Promise { + const partitionId = partitionIds[0]; + const time = Date.now(); + // send a message that can be received + const sender = client.createProducer({ partitionId }); + try { + await sender.send({ body: "batchReceiver cancellation - timeout 0" }); + } finally { + await sender.close(); + } + + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromEnqueuedTime(time) + ); + + try { + // call receiveBatch once to establish a connection + await receiver.receiveBatch(1, 60); + // abortSignal event listeners will be triggered after synchronous paths are executed + const abortSignal = AbortController.timeout(0); + await receiver.receiveBatch(1, 60, abortSignal); + throw new Error(`Test failure`); + } catch (err) { + err.name.should.equal("AbortError"); + err.message.should.equal("The receive operation has been cancelled by the user."); + } + }); + + it("should support calling receiveBatch after a cancellation", async function(): Promise { + const partitionId = partitionIds[0]; + const time = Date.now(); + // send a message that can be received + const sender = client.createProducer({ partitionId }); + try { + await sender.send({ body: "batchReceiver post-cancellation - timeout 0" }); + } finally { + await sender.close(); + } + + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromEnqueuedTime(time) + ); + + try { + // abortSignal event listeners will be triggered after synchronous paths are executed + const abortSignal = AbortController.timeout(0); + await receiver.receiveBatch(1, 60, abortSignal); + throw new Error(`Test failure`); + } catch (err) { + err.name.should.equal("AbortError"); + err.message.should.equal("The receive operation has been cancelled by the user."); + const events = await receiver.receiveBatch(1, 60); + events.length.should.equal(1); + } + }); + }); + + describe("getIterator", function(): void { + it("should receive messages correctly", async function(): Promise { + const partitionId = partitionIds[0]; + + const time = Date.now(); + // ensure messages exist to retrieve + const messageCount = 5; + const sentEventData: EventData[] = []; + for (let i = 0; i < messageCount; i++) { + sentEventData.push({ + body: `getIterator test message ${Date.now()} - ${i}` + }); + } + + const sender = client.createProducer({ partitionId: partitionId }); + try { + await sender.send(sentEventData); + } finally { + await sender.close(); + } + + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromEnqueuedTime(time) + ); + const eventIterator = receiver.getEventIterator(); + + let messagesReceivedCount = 0; + const data: ReceivedEventData[] = []; + for await (const event of eventIterator) { + data.push(event); + if (++messagesReceivedCount >= messageCount) { + break; + } + } + + debug("received messages: ", data); + data.length.should.equal(messageCount, `Failed to receive ${messageCount} expected messages`); + }); + + it("should not return undefined if no messages are found", async function(): Promise { + const partitionId = partitionIds[0]; + + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromEnqueuedTime(Date.now()) + ); + const eventIterator = receiver.getEventIterator({ + // behind the scenes, eventIterator will wait up to 60 seconds before returning. + // set timeout to 70 seconds to give the iterator a chance to yield a value. + abortSignal: AbortController.timeout(70000) + }); + + const data: ReceivedEventData[] = []; + try { + for await (const event of eventIterator) { + data.push(event); + break; + } + // no events should have been received, so fail quickly if one was + throw new Error(`Test failure`); + } catch (err) { + data.length.should.equal(0); + err.name.should.equal("AbortError"); + err.message.should.equal("The receive operation has been cancelled by the user."); + } + }); + + it("should support being cancelled", async function(): Promise { + const partitionId = partitionIds[0]; + const time = Date.now(); + // send a message that can be received + const sender = client.createProducer({ partitionId }); + try { + await sender.send({ body: "getEventIterator cancellation - timeout 0" }); + } finally { + await sender.close(); + } + + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromEnqueuedTime(time) + ); + + try { + // abortSignal event listeners will be triggered after synchronous paths are executed + const abortSignal = AbortController.timeout(0); + const eventIterator = receiver.getEventIterator({ abortSignal }); + + for await (const _ of eventIterator) { + } + throw new Error(`Test failure`); + } catch (err) { + err.name.should.equal("AbortError"); + err.message.should.equal("The receive operation has been cancelled by the user."); + } + }); + + it("should support being cancelled from an already aborted AbortSignal", async function(): Promise { + const partitionId = partitionIds[0]; + const time = Date.now(); + // send a message that can be received + const sender = client.createProducer({ partitionId }); + try { + await sender.send({ body: "getEventIterator cancellation - immediate" }); + } finally { + await sender.close(); + } + + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromEnqueuedTime(time) + ); + + try { + // abortSignal event listeners will be triggered after synchronous paths are executed + const abortController = new AbortController(); + abortController.abort(); + const eventIterator = receiver.getEventIterator({ abortSignal: abortController.signal }); + + for await (const _ of eventIterator) { + } + throw new Error(`Test failure`); + } catch (err) { + err.name.should.equal("AbortError"); + err.message.should.equal("The receive operation has been cancelled by the user."); + } + }); + }); + + describe("mix and match receive methods", function(): void { + it("should maintain sequence across calls", function(done: Mocha.Done): void { + // wrap test to allow mixing async/await with done + (async (done: Mocha.Done) => { + const partitionId = partitionIds[0]; + + const time = Date.now(); + // ensure messages exist to retrieve + const messageCount = 25; + const sentEventData: EventData[] = []; + for (let i = 0; i < messageCount; i++) { + sentEventData.push({ + body: `mix and match test messsage ${Date.now()} - ${i}` + }); + } + + const sender = client.createProducer({ partitionId: partitionId }); + try { + await sender.send(sentEventData); + } finally { + await sender.close(); + } + + const data: ReceivedEventData[] = []; + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromEnqueuedTime(time) + ); + + // start with iterator + for await (const event of receiver.getEventIterator()) { + data.push(event); + if (data.length >= 5) { + break; + } + } + + // switch to batcher + (await receiver.receiveBatch(5)).forEach(event => { + data.push(event); + }); + + // switch to handler + let handlerReceivedCount = 0; + const handler = receiver.receive( + async event => { + data.push(event); + + if (++handlerReceivedCount >= 5) { + await handler.stop(); + + // get the rest of the messages using another iterator + for await (const event of receiver!.getEventIterator()) { + data.push(event); + if (data.length >= messageCount) { + break; + } + } + + data.length.should.equal(messageCount, `Failed to receive ${messageCount} expected messages`); + + try { + data + .map(event => event.sequenceNumber) + .reduce((prev, current) => { + // each sequenceNumber should only be incremented by 1 + current.should.equal(prev + 1, `Invalid sequence of events`); + return current; + }); + // test complete + done(); + } catch (err) { + done(err); + } + } + }, + err => { + throw err; + } + ); + })(done).catch(done); + }); + }); + + describe("Errors when calling createConsumer", function(): void { + it("should throw an error if EventPosition is missing", function() { + try { + client.createConsumer(EventHubClient.defaultConsumerGroup, "0", undefined as any); + throw new Error("Test failure"); + } catch (err) { + err.name.should.equal("TypeError"); + err.message.should.equal(`Missing parameter "eventPosition"`); + } + }); + + it("should throw an error if consumerGroup is missing", function() { + try { + client.createConsumer(undefined as any, "0", EventPosition.earliest()); + throw new Error("Test failure"); + } catch (err) { + err.name.should.equal("TypeError"); + err.message.should.equal(`Missing parameter "consumerGroup"`); + } + }); + + it("should throw MessagingEntityNotFoundError fr non existing consumer group", function(done: Mocha.Done): void { + try { + debug(">>>>>>>> client created."); + const onMessage = (data: any) => { + debug(">>>>> data: ", data); + }; + const onError = (error: any) => { + debug(">>>>>>>> error occurred", error); + // sleep for 3 seconds so that receiver link and the session can be closed properly then + // in aftereach the connection can be closed. closing the connection while the receiver + // link and it's session are being closed (and the session being removed from rhea's + // internal map) can create havoc. + setTimeout(() => { + done(should.equal(error.name, "MessagingEntityNotFoundError")); + }, 3000); + }; + const receiver = client.createConsumer("some-random-name", "0", EventPosition.earliest()); + receiver.receive(onMessage, onError); + debug(">>>>>>>> attached the error handler on the receiver..."); + } catch (err) { + debug(">>> Some error", err); + throw new Error("This code path must not have hit.. " + JSON.stringify(err)); + } + }); }); // describe("with receiverRuntimeMetricEnabled", function (): void { // it("should have ReceiverRuntimeInfo populated", async function (): Promise { // const partitionId = hubInfo.partitionIds[0]; - // sender = client.createSender(partitionId); + // sender = client.createProducer(partitionId); // for (let i = 0; i < 10; i++) { // const ed: EventData = { // body: "Hello awesome world " + i @@ -289,10 +853,10 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { // debug("sent message - " + i); // } // debug("Getting the partition information"); - // const pInfo = await client.getPartitionInformation(partitionId); + // const pInfo = await client.getPartitionProperties(partitionId); // debug("partition info: ", pInfo); // debug("Creating new receiver with offset EndOfStream"); - // receiver = client.createReceiver(partitionId, { eventPosition: EventPosition.fromStart(), enableReceiverRuntimeMetric: true }); + // receiver = client.createConsumer(partitionId, { eventPosition: EventPosition.fromStart(), enableReceiverRuntimeMetric: true }); // let data = await receiver.receive(1, 10); // debug("receiver.runtimeInfo ", receiver.runtimeInfo); // data.length.should.equal(1); @@ -305,30 +869,40 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { // }); // }); - describe("with epoch", function(): void { - it("should behave correctly when a receiver with lower epoch value is connected after a receiver with higher epoch value to a partition in a consumer group", function(done: Mocha.Done): void { - const partitionId = hubInfo.partitionIds[0]; - let epochRcvr1: ReceiveHandler; - let epochRcvr2: ReceiveHandler; + describe("with ownerLevel", function(): void { + it("should behave correctly when a receiver with lower ownerLevel value is connected after a receiver with higher ownerLevel value to a partition in a consumer group", function(done: Mocha.Done): void { + const partitionId = partitionIds[0]; + let ownerLevelRcvr1: ReceiveHandler; + let ownerLevelRcvr2: ReceiveHandler; const onError = (error: MessagingError | Error) => { - debug(">>>> epoch Receiver 1", error); - throw new Error("An Error should not have happened for epoch receiver with epoch value 2."); + debug(">>>> ownerLevel Receiver 1", error); + throw new Error("An Error should not have happened for ownerLevel receiver with ownerLevel value 2."); }; - const onMsg = (data: EventData) => { - debug(">>>> epoch Receiver 1", data); + const onMsg = (data: ReceivedEventData) => { + debug(">>>> ownerLevel Receiver 1", data); }; - epochRcvr1 = client.receive(partitionId, onMsg, onError, { epoch: 2, eventPosition: EventPosition.fromEnd() }); - debug("Created epoch receiver 1 %s", epochRcvr1.name); + const receiver1 = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.latest(), + { + ownerLevel: 2 + } + ); + ownerLevelRcvr1 = receiver1.receive(onMsg, onError); + debug("Created ownerLevel receiver 1 %s", ownerLevelRcvr1); setTimeout(() => { const onError2 = (error: MessagingError | Error) => { - debug(">>>> epoch Receiver 2", error); + debug(">>>> ownerLevel Receiver 2", error); should.exist(error); should.equal(error.name, "ReceiverDisconnectedError"); - epochRcvr2 + ownerLevelRcvr2 .stop() - .then(() => epochRcvr1.stop()) + .then(() => receiver2.close()) + .then(() => ownerLevelRcvr1.stop()) + .then(() => receiver1.close()) .then(() => { - debug("Successfully closed the epoch receivers 1 and 2."); + debug("Successfully closed the ownerLevel receivers 1 and 2."); done(); }) .catch(err => { @@ -336,30 +910,38 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { done(); }); }; - const onMsg2 = (data: EventData) => { - debug(">>>> epoch Receiver 2", data); + const onMsg2 = (data: ReceivedEventData) => { + debug(">>>> ownerLevel Receiver 2", data); }; - epochRcvr2 = client.receive(partitionId, onMsg2, onError2, { - epoch: 1, - eventPosition: EventPosition.fromEnd() - }); - debug("Created epoch receiver 2 %s", epochRcvr2.name); + const receiver2 = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.latest(), + { + ownerLevel: 1 + } + ); + ownerLevelRcvr2 = receiver2.receive(onMsg2, onError2); + debug("Created ownerLevel receiver 2 %s", ownerLevelRcvr2); }, 3000); }); - it("should behave correctly when a receiver with higher epoch value is connected after a receiver with lower epoch value to a partition in a consumer group", function(done: Mocha.Done): void { - const partitionId = hubInfo.partitionIds[0]; - let epochRcvr1: ReceiveHandler; - let epochRcvr2: ReceiveHandler; + it("should behave correctly when a receiver with higher ownerLevel value is connected after a receiver with lower ownerLevel value to a partition in a consumer group", function(done: Mocha.Done): void { + const partitionId = partitionIds[0]; + let ownerLevelRcvr1: ReceiveHandler; + let ownerLevelRcvr2: ReceiveHandler; + let receiver2: EventHubConsumer; const onError = (error: MessagingError | Error) => { - debug(">>>> epoch Receiver 1", error); + debug(">>>> ownerLevel Receiver 1", error); should.exist(error); should.equal(error.name, "ReceiverDisconnectedError"); - epochRcvr1 + ownerLevelRcvr1 .stop() - .then(() => epochRcvr2.stop()) + .then(() => receiver1.close()) + .then(() => ownerLevelRcvr2.stop()) + .then(() => receiver2.close()) .then(() => { - debug("Successfully closed the epoch receivers 1 and 2."); + debug("Successfully closed the ownerLevel receivers 1 and 2."); done(); }) .catch(err => { @@ -367,49 +949,67 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { done(); }); }; - const onMsg = (data: EventData) => { - debug(">>>> epoch Receiver 1", data); + const onMsg = (data: ReceivedEventData) => { + debug(">>>> ownerLevel Receiver 1", data); }; - epochRcvr1 = client.receive(partitionId, onMsg, onError, { epoch: 1, eventPosition: EventPosition.fromEnd() }); - debug("Created epoch receiver 1 %s", epochRcvr1.name); + const receiver1 = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.latest(), + { + ownerLevel: 1 + } + ); + ownerLevelRcvr1 = receiver1.receive(onMsg, onError); + debug("Created ownerLevel receiver 1 %s", ownerLevelRcvr1); setTimeout(() => { const onError2 = (error: MessagingError | Error) => { - debug(">>>> epoch Receiver 2", error); - throw new Error("An Error should not have happened for epoch receiver with epoch value 2."); + debug(">>>> ownerLevel Receiver 2", error); + throw new Error("An Error should not have happened for ownerLevel receiver with ownerLevel value 2."); }; - const onMsg2 = (data: EventData) => { - debug(">>>> epoch Receiver 2", data); + const onMsg2 = (data: ReceivedEventData) => { + debug(">>>> ownerLevel Receiver 2", data); }; - epochRcvr2 = client.receive(partitionId, onMsg2, onError2, { - epoch: 2, - eventPosition: EventPosition.fromEnd() + receiver2 = client.createConsumer(EventHubClient.defaultConsumerGroup, partitionId, EventPosition.latest(), { + ownerLevel: 2 }); - debug("Created epoch receiver 2 %s", epochRcvr2.name); + ownerLevelRcvr2 = receiver2.receive(onMsg2, onError2); + debug("Created ownerLevel receiver 2 %s", ownerLevelRcvr2); }, 3000); }); - it("should behave correctly when a non epoch receiver is created after an epoch receiver", function(done: Mocha.Done): void { - const partitionId = hubInfo.partitionIds[0]; - let epochRcvr: ReceiveHandler; - let nonEpochRcvr: ReceiveHandler; + it("should behave correctly when a non ownerLevel receiver is created after an ownerLevel receiver", function(done: Mocha.Done): void { + const partitionId = partitionIds[0]; + let ownerLevelRcvr: ReceiveHandler; + let nonownerLevelRcvr: ReceiveHandler; const onerr1 = (error: MessagingError | Error) => { - debug(">>>> epoch Receiver ", error); - throw new Error("An Error should not have happened for epoch receiver with epoch value 1."); + debug(">>>> ownerLevel Receiver ", error); + throw new Error("An Error should not have happened for ownerLevel receiver with ownerLevel value 1."); }; - const onmsg1 = (data: EventData) => { - debug(">>>> epoch Receiver ", data); + const onmsg1 = (data: ReceivedEventData) => { + debug(">>>> ownerLevel Receiver ", data); }; - epochRcvr = client.receive(partitionId, onmsg1, onerr1, { epoch: 1, eventPosition: EventPosition.fromEnd() }); - debug("Created epoch receiver %s", epochRcvr.name); + const receiver1 = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.latest(), + { + ownerLevel: 1 + } + ); + ownerLevelRcvr = receiver1.receive(onmsg1, onerr1); + debug("Created ownerLevel receiver %s", ownerLevelRcvr); const onerr2 = (error: MessagingError | Error) => { - debug(">>>> non epoch Receiver", error); + debug(">>>> non ownerLevel Receiver", error); should.exist(error); should.equal(error.name, "ReceiverDisconnectedError"); - nonEpochRcvr + nonownerLevelRcvr .stop() - .then(() => epochRcvr.stop()) + .then(() => receiver2.close()) + .then(() => ownerLevelRcvr.stop()) + .then(() => receiver1.close()) .then(() => { - debug("Successfully closed the nonEpoch and epoch receivers"); + debug("Successfully closed the nonownerLevel and ownerLevel receivers"); done(); }) .catch(err => { @@ -417,26 +1017,31 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { done(); }); }; - const onmsg2 = (data: EventData) => { - debug(">>>> non epoch Receiver", data); + const onmsg2 = (data: ReceivedEventData) => { + debug(">>>> non ownerLevel Receiver", data); }; - nonEpochRcvr = client.receive(partitionId, onmsg2, onerr2, { eventPosition: EventPosition.fromEnd() }); - debug("Created non epoch receiver %s", nonEpochRcvr.name); + const receiver2 = client.createConsumer(EventHubClient.defaultConsumerGroup, partitionId, EventPosition.latest()); + nonownerLevelRcvr = receiver2.receive(onmsg2, onerr2); + debug("Created non ownerLevel receiver %s", nonownerLevelRcvr); }); - it("should behave correctly when an epoch receiver is created after a non epoch receiver", function(done: Mocha.Done): void { - const partitionId = hubInfo.partitionIds[0]; - let epochRcvr: ReceiveHandler; - let nonEpochRcvr: ReceiveHandler; + it("should behave correctly when an ownerLevel receiver is created after a non ownerLevel receiver", function(done: Mocha.Done): void { + const partitionId = partitionIds[0]; + let ownerLevelRcvr: ReceiveHandler; + let nonownerLevelRcvr: ReceiveHandler; + let receiver1: EventHubConsumer; + let receiver2: EventHubConsumer; const onerr3 = (error: MessagingError | Error) => { - debug(">>>> non epoch Receiver", error); + debug(">>>> non ownerLevel Receiver", error); should.exist(error); should.equal(error.name, "ReceiverDisconnectedError"); - nonEpochRcvr + nonownerLevelRcvr .stop() - .then(() => epochRcvr.stop()) + .then(() => receiver1.close()) + .then(() => ownerLevelRcvr.stop()) + .then(() => receiver2.close()) .then(() => { - debug("Successfully closed the nonEpoch and epoch receivers"); + debug("Successfully closed the nonownerLevel and ownerLevel receivers"); done(); }) .catch(err => { @@ -444,21 +1049,27 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { done(); }); }; - const onmsg3 = (data: EventData) => { - debug(">>>> non epoch Receiver", data); + const onmsg3 = (data: ReceivedEventData) => { + debug(">>>> non ownerLevel Receiver", data); }; - nonEpochRcvr = client.receive(partitionId, onmsg3, onerr3, { eventPosition: EventPosition.fromEnd() }); - debug("Created non epoch receiver %s", nonEpochRcvr.name); + receiver1 = client.createConsumer(EventHubClient.defaultConsumerGroup, partitionId, EventPosition.latest()); + nonownerLevelRcvr = receiver1.receive(onmsg3, onerr3); + debug("Created non ownerLevel receiver %s", nonownerLevelRcvr); setTimeout(() => { const onerr4 = (error: MessagingError | Error) => { - debug(">>>> epoch Receiver ", error); - throw new Error("OnErr4 >> An Error should not have happened for epoch receiver with epoch value 1."); + debug(">>>> ownerLevel Receiver ", error); + throw new Error( + "OnErr4 >> An Error should not have happened for ownerLevel receiver with ownerLevel value 1." + ); }; - const onmsg4 = (data: EventData) => { - debug(">>>> epoch Receiver ", data); + const onmsg4 = (data: ReceivedEventData) => { + debug(">>>> ownerLevel Receiver ", data); }; - epochRcvr = client.receive(partitionId, onmsg4, onerr4, { epoch: 1, eventPosition: EventPosition.fromEnd() }); - debug("Created epoch receiver %s", epochRcvr.name); + receiver2 = client.createConsumer(EventHubClient.defaultConsumerGroup, partitionId, EventPosition.latest(), { + ownerLevel: 1 + }); + ownerLevelRcvr = receiver2.receive(onmsg4, onerr4); + debug("Created ownerLevel receiver %s", ownerLevelRcvr); }, 3000); }); }); @@ -470,7 +1081,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { it(`"${id}" should throw an error`, async function(): Promise { try { debug("Created receiver and will be receiving messages from partition id ...", id); - const d = await client.receiveBatch(id, 10, 3); + const d = await client + .createConsumer(EventHubClient.defaultConsumerGroup, id, EventPosition.latest()) + .receiveBatch(10, 3); debug("received messages ", d.length); } catch (err) { debug("Receiver received an error", err); @@ -486,7 +1099,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { try { const id = " "; debug("Created receiver and will be receiving messages from partition id ...", id); - const d = await client.receiveBatch(id, 10, 3); + const d = await client + .createConsumer(EventHubClient.defaultConsumerGroup, id, EventPosition.latest()) + .receiveBatch(10, 3); debug("received messages ", d.length); } catch (err) { debug("Receiver received an error", err); @@ -499,7 +1114,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { invalidIds2.forEach(function(id: string): void { it(`"${id}" should throw an error`, async function(): Promise { try { - await client.receiveBatch(id, 10, 3); + await client + .createConsumer(EventHubClient.defaultConsumerGroup, id, EventPosition.latest()) + .receiveBatch(10, 3); } catch (err) { debug(`>>>> Received error - `, err); should.exist(err); @@ -509,7 +1126,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { }); it("should receive 'QuotaExceededError' when attempting to connect more than 5 receivers to a partition in a consumer group", function(done: Mocha.Done): void { - const partitionId = hubInfo.partitionIds[0]; + const partitionId = partitionIds[0]; const rcvHndlrs: ReceiveHandler[] = []; const rcvrs: any[] = []; @@ -517,13 +1134,13 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { // onerr2() to be called with QuotaExceededError. So it's fastest to use EventPosition.fromEnd(). // Using EventPosition.fromStart() can cause timeouts or ServiceUnavailableException if the EventHub has // a large number of messages. - const eventPosition = EventPosition.fromEnd(); + const eventPosition = EventPosition.latest(); debug(">>> Receivers length: ", rcvHndlrs.length); for (let i = 1; i <= 5; i++) { const rcvrId = `rcvr-${i}`; debug(rcvrId); - const onMsg = (data: EventData) => { + const onMsg = (data: ReceivedEventData) => { if (!rcvrs[i]) { rcvrs[i] = rcvrId; debug("receiver id %s", rcvrId); @@ -533,16 +1150,15 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { debug("@@@@ Error received by receiver %s", rcvrId); debug(err); }; - const rcvHndlr = client.receive(partitionId, onMsg, onError, { - eventPosition: eventPosition, - identifier: rcvrId - }); + const rcvHndlr = client + .createConsumer(EventHubClient.defaultConsumerGroup, partitionId, eventPosition) + .receive(onMsg, onError); rcvHndlrs.push(rcvHndlr); } debug(">>> Attached message handlers to each receiver."); setTimeout(() => { debug(`Created 6th receiver - "rcvr-6"`); - const onmsg2 = (data: EventData) => { + const onmsg2 = (data: ReceivedEventData) => { // debug(data); }; const onerr2 = (err: MessagingError | Error) => { @@ -563,10 +1179,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { done(); }); }; - const failedRcvHandler = client.receive(partitionId, onmsg2, onerr2, { - eventPosition: eventPosition, - identifier: "rcvr-6" - }); + const failedRcvHandler = client + .createConsumer(EventHubClient.defaultConsumerGroup, partitionId, eventPosition) + .receive(onmsg2, onerr2); rcvHndlrs.push(failedRcvHandler); }, 5000); }); diff --git a/sdk/eventhub/event-hubs/test/sender.spec.ts b/sdk/eventhub/event-hubs/test/sender.spec.ts index 4e487aa5bd4d..e81dda3fb38a 100644 --- a/sdk/eventhub/event-hubs/test/sender.spec.ts +++ b/sdk/eventhub/event-hubs/test/sender.spec.ts @@ -7,8 +7,9 @@ import chaiAsPromised from "chai-as-promised"; chai.use(chaiAsPromised); import debugModule from "debug"; const debug = debugModule("azure:event-hubs:sender-spec"); -import { EventHubClient, EventData } from "../src"; +import { EventHubClient, EventData, EventHubProducer } from "../src"; import { EnvVarKeys, getEnvVars } from "./utils/testUtils"; +import { AbortController } from "@azure/abort-controller"; const env = getEnvVars(); describe("EventHub Sender #RunnableInBrowser", function(): void { @@ -16,7 +17,7 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { connectionString: env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], path: env[EnvVarKeys.EVENTHUB_NAME] }; - const client: EventHubClient = EventHubClient.createFromConnectionString(service.connectionString!, service.path); + const client: EventHubClient = new EventHubClient(service.connectionString, service.path); before("validate environment", function(): void { should.exist( env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], @@ -35,35 +36,65 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { describe("Single message", function(): void { it("should be sent successfully.", async function(): Promise { - const data: EventData = { - body: "Hello World" - }; - const delivery = await client.send(data); - // debug(delivery); - delivery.format.should.equal(0); - delivery.settled.should.equal(true); - delivery.remote_settled.should.equal(true); + const data: EventData = { body: "Hello World 1" }; + await client.createProducer().send(data); }); + it("with partition key should be sent successfully.", async function(): Promise { - const data: EventData = { - body: "Hello World with partition key", - partitionKey: "p1234" - }; - const delivery = await client.send(data); - // debug(delivery); - delivery.format.should.equal(0); - delivery.settled.should.equal(true); - delivery.remote_settled.should.equal(true); + const data: EventData = { body: "Hello World 1" }; + await client.createProducer().send(data, { partitionKey: "1" }); }); + + it("with partition key as a number should be sent successfully.", async function(): Promise { + const data: EventData = { body: "Hello World 1" }; + await client.createProducer().send(data, { partitionKey: 1 as any }); + }); + it("should be sent successfully to a specific partition.", async function(): Promise { - const data: EventData = { - body: "Hello World" - }; - const delivery = await client.send(data, "0"); - // debug(delivery); - delivery.format.should.equal(0); - delivery.settled.should.equal(true); - delivery.remote_settled.should.equal(true); + const data: EventData = { body: "Hello World 1" }; + await client.createProducer({ partitionId: "0" }).send(data); + }); + + it("should support being cancelled", async function(): Promise { + try { + const data: EventData = { body: "Sender single message Cancellation Test - timeout 0" }; + const sender = client.createProducer(); + // call send() once to create a connection + await sender.send(data); + // abortSignal event listeners will be triggered after synchronous paths are executed + const abortSignal = AbortController.timeout(0); + await sender.send(data, { abortSignal }); + throw new Error(`Test failure`); + } catch (err) { + err.name.should.equal("AbortError"); + err.message.should.equal("The send operation has been cancelled by the user."); + } + }); + + it("should support being cancelled from an already aborted AbortSignal", async function(): Promise { + const abortController = new AbortController(); + abortController.abort(); + + try { + const data: EventData = { body: "Sender single message Cancellation Test - immediate" }; + await client.createProducer().send(data, { abortSignal: abortController.signal }); + throw new Error(`Test failure`); + } catch (err) { + err.name.should.equal("AbortError"); + err.message.should.equal("The send operation has been cancelled by the user."); + } + }); + + it("should throw when partitionId and partitionKey are provided", async function(): Promise { + try { + const data: EventData = { body: "Sender paritition id and partition key" }; + await client.createProducer({ partitionId: "0" }).send(data, { partitionKey: "1" }); + throw new Error("Test Failure"); + } catch (err) { + err.message.should.equal( + "Partition key is not supported when using producers that were created using a partition id." + ); + } }); }); @@ -77,27 +108,18 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { body: "Hello World 2" } ]; - const delivery = await client.sendBatch(data); - // debug(delivery); - delivery.format.should.equal(0x80013700); - delivery.settled.should.equal(true); - delivery.remote_settled.should.equal(true); + await client.createProducer().send(data); }); it("with partition key should be sent successfully.", async function(): Promise { const data: EventData[] = [ { - body: "Hello World 1", - partitionKey: "p1234" + body: "Hello World 1" }, { body: "Hello World 2" } ]; - const delivery = await client.sendBatch(data); - // debug(delivery); - delivery.format.should.equal(0x80013700); - delivery.settled.should.equal(true); - delivery.remote_settled.should.equal(true); + await client.createProducer().send(data, { partitionKey: 1 as any }); }); it("should be sent successfully to a specific partition.", async function(): Promise { const data: EventData[] = [ @@ -108,11 +130,86 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { body: "Hello World 2" } ]; - const delivery = await client.sendBatch(data, "0"); - // debug(delivery); - delivery.format.should.equal(0x80013700); - delivery.settled.should.equal(true); - delivery.remote_settled.should.equal(true); + await client.createProducer({ partitionId: "0" }).send(data); + }); + + it("should support being cancelled", async function(): Promise { + try { + const data: EventData[] = [ + { + body: "Sender Cancellation Test - timeout 0" + } + ]; + const sender = client.createProducer(); + // call send() once to create a connection + await sender.send(data); + // abortSignal event listeners will be triggered after synchronous paths are executed + const abortSignal = AbortController.timeout(0); + await sender.send(data, { abortSignal }); + throw new Error(`Test failure`); + } catch (err) { + err.name.should.equal("AbortError"); + err.message.should.equal("The send operation has been cancelled by the user."); + } + }); + + it("should support being cancelled from an already aborted AbortSignal", async function(): Promise { + const abortController = new AbortController(); + abortController.abort(); + + try { + const data: EventData[] = [ + { + body: "Sender Cancellation Test - immediate" + } + ]; + await client.createProducer().send(data, { abortSignal: abortController.signal }); + throw new Error(`Test failure`); + } catch (err) { + err.name.should.equal("AbortError"); + err.message.should.equal("The send operation has been cancelled by the user."); + } + }); + + it("should throw when partitionId and partitionKey are provided", async function(): Promise { + try { + const data: EventData[] = [ + { + body: "Sender paritition id and partition key" + } + ]; + await client.createProducer({ partitionId: "0" }).send(data, { partitionKey: "1" }); + throw new Error("Test Failure"); + } catch (err) { + err.message.should.equal( + "Partition key is not supported when using producers that were created using a partition id." + ); + } + }); + }); + + describe("multiple producers", function(): void { + it("should be isolated on same partitionId", async function(): Promise { + const producers: EventHubProducer[] = []; + + // create multiple producers with the same partition id + for (let i = 0; i < 5; i++) { + producers.push(client.createProducer({ partitionId: "0" })); + } + + // ensure all producers can send a message + for (const producer of producers) { + await producer.send({ body: "foo" }); + } + + do { + // close one of the producers and send messages with remaining senders + // also closes all of the senders by the end of the test! + await producers.pop()!.close(); + for (const producer of producers) { + await producer.send({ body: "bar" }); + } + } while (producers.length); }); }); @@ -120,16 +217,9 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { it("should be sent successfully in parallel", async function(): Promise { const promises = []; for (let i = 0; i < 5; i++) { - promises.push(client.send({ body: `Hello World ${i}` })); - } - const result = await Promise.all(promises); - for (let i = 0; i < result.length; i++) { - const delivery = result[i]; - // debug("delivery %d: %O", i, delivery); - delivery.format.should.equal(0); - delivery.settled.should.equal(true); - delivery.remote_settled.should.equal(true); + promises.push(client.createProducer().send([{ body: `Hello World ${i}` }])); } + await Promise.all(promises); }); it("should be sent successfully in parallel by multiple senders", async function(): Promise { const senderCount = 3; @@ -138,23 +228,16 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { for (let i = 0; i < senderCount; i++) { if (i === 0) { debug(">>>>> Sending a message to partition %d", i); - promises.push(client.send({ body: `Hello World ${i}` }, i)); + promises.push(client.createProducer({ partitionId: "0" }).send([{ body: `Hello World ${i}` }])); } else if (i === 1) { debug(">>>>> Sending a message to partition %d", i); - promises.push(client.send({ body: `Hello World ${i}` }, i)); + promises.push(client.createProducer({ partitionId: "1" }).send([{ body: `Hello World ${i}` }])); } else { debug(">>>>> Sending a message to the hub when i == %d", i); - promises.push(client.send({ body: `Hello World ${i}` })); + promises.push(client.createProducer().send([{ body: `Hello World ${i}` }])); } } - const result = await Promise.all(promises); - for (let i = 0; i < result.length; i++) { - const delivery = result[i]; - // debug("delivery %d: %O", i, delivery); - delivery.format.should.equal(0); - delivery.settled.should.equal(true); - delivery.remote_settled.should.equal(true); - } + await Promise.all(promises); } catch (err) { debug("An error occurred while running the test: ", err); throw err; @@ -169,7 +252,7 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { }; try { debug("Sendina message of 300KB..."); - await client.send(data, "0"); + await client.createProducer({ partitionId: "0" }).send([data]); } catch (err) { debug(err); should.exist(err); @@ -178,11 +261,8 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { /.*The received message \(delivery-id:(\d+), size:3000\d\d bytes\) exceeds the limit \(262144 bytes\) currently allowed on the link\..*/gi ); } - const delivery = await client.send({ body: "Hello World EventHub!!" }, "0"); + await client.createProducer({ partitionId: "0" }).send([{ body: "Hello World EventHub!!" }]); debug("Sent the message successfully on the same link.."); - delivery.format.should.equal(0); - delivery.settled.should.equal(true); - delivery.remote_settled.should.equal(true); }); }); @@ -192,7 +272,7 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { body: Buffer.from("Z".repeat(300000)) }; try { - await client.send(data); + await client.createProducer().send([data]); } catch (err) { debug(err); should.exist(err); @@ -203,20 +283,6 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { } }); - it("Error thrown when the 'partitionKey' is not of type 'string'", async function(): Promise { - const data: EventData = { - body: "Hello World", - partitionKey: 1 as any - }; - try { - await client.send(data, "0"); - } catch (err) { - debug(err); - should.exist(err); - err.message.should.match(/.*'partitionKey' must be of type 'string'.*/gi); - } - }); - describe("on invalid partition ids like", function(): void { // tslint:disable-next-line: no-null-keyword const invalidIds = ["XYZ", "-1", "1000", "-", null]; @@ -224,7 +290,7 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { it(`"${id}" should throw an error`, async function(): Promise { try { debug("Created sender and will be sending a message to partition id ...", id); - await client.send({ body: "Hello world!" }, id as any); + await client.createProducer().send([{ body: "Hello world!" }], id as any); debug("sent the message."); } catch (err) { debug(`>>>> Received error for invalid partition id "${id}" - `, err); @@ -241,7 +307,7 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { it(`"${id}" should throw an invalid EventHub address error`, async function(): Promise { try { debug("Created sender and will be sending a message to partition id ...", id); - await client.send({ body: "Hello world!" }, id as any); + await client.createProducer().send([{ body: "Hello world!" }], id as any); debug("sent the message."); } catch (err) { debug(`>>>> Received invalid EventHub address error for partition id "${id}" - `, err); diff --git a/sdk/eventhub/event-hubs/test/utils/testUtils.ts b/sdk/eventhub/event-hubs/test/utils/testUtils.ts index b5e1665d71fc..db72248c1bca 100644 --- a/sdk/eventhub/event-hubs/test/utils/testUtils.ts +++ b/sdk/eventhub/event-hubs/test/utils/testUtils.ts @@ -6,7 +6,11 @@ export const isNode = !!process && !!process.version && !!process.versions && !! export enum EnvVarKeys { EVENTHUB_CONNECTION_STRING = "EVENTHUB_CONNECTION_STRING", EVENTHUB_NAME = "EVENTHUB_NAME", - IOTHUB_CONNECTION_STRING = "IOTHUB_CONNECTION_STRING" + IOTHUB_CONNECTION_STRING = "IOTHUB_CONNECTION_STRING", + ENDPOINT = "ENDPOINT", + AZURE_TENANT_ID = "AZURE_TENANT_ID", + AZURE_CLIENT_ID = "AZURE_CLIENT_ID", + AZURE_CLIENT_SECRET = "AZURE_CLIENT_SECRET" } function getEnvVarValue(name: string): string | undefined { @@ -22,6 +26,10 @@ export function getEnvVars(): { [key in EnvVarKeys]: any } { return { [EnvVarKeys.EVENTHUB_CONNECTION_STRING]: getEnvVarValue(EnvVarKeys.EVENTHUB_CONNECTION_STRING), [EnvVarKeys.EVENTHUB_NAME]: getEnvVarValue(EnvVarKeys.EVENTHUB_NAME), - [EnvVarKeys.IOTHUB_CONNECTION_STRING]: getEnvVarValue(EnvVarKeys.IOTHUB_CONNECTION_STRING) + [EnvVarKeys.IOTHUB_CONNECTION_STRING]: getEnvVarValue(EnvVarKeys.IOTHUB_CONNECTION_STRING), + [EnvVarKeys.ENDPOINT]: getEnvVarValue(EnvVarKeys.ENDPOINT), + [EnvVarKeys.AZURE_TENANT_ID]: getEnvVarValue(EnvVarKeys.AZURE_TENANT_ID), + [EnvVarKeys.AZURE_CLIENT_ID]: getEnvVarValue(EnvVarKeys.AZURE_CLIENT_ID), + [EnvVarKeys.AZURE_CLIENT_SECRET]: getEnvVarValue(EnvVarKeys.AZURE_CLIENT_SECRET) }; } From 40f4a99d973e5a2c30452c5bef0caa0e89119d9f Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Fri, 21 Jun 2019 16:10:51 -0700 Subject: [PATCH 170/289] [Event Hubs] Remove no-op browser tests from CI (#4013) --- sdk/eventhub/event-hubs/tests.yml | 11 +++++++++++ sdk/eventhub/event-processor-host/tests.yml | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/sdk/eventhub/event-hubs/tests.yml b/sdk/eventhub/event-hubs/tests.yml index cc4a3ee47175..c658ee310656 100644 --- a/sdk/eventhub/event-hubs/tests.yml +++ b/sdk/eventhub/event-hubs/tests.yml @@ -4,6 +4,17 @@ jobs: - template: ../../../eng/pipelines/templates/jobs/archetype-sdk-tests.yml parameters: PackageName: "@azure/event-hubs" + # Remove Browser tests from matrix since they are currently a no-op + Matrix: + Linux_Node10X: + OSVmImage: "ubuntu-16.04" + TestType: "node" + Windows_Node10X: + OSVmImage: "vs2017-win2016" + TestType: "node" + Mac_Node10X: + OSVmImage: "macOS-10.13" + TestType: "node" EnvVars: EVENTHUB_CONNECTION_STRING: $(js-event-hubs-test-connection-string) EVENTHUB_NAME: $(js-event-hubs-test-name) diff --git a/sdk/eventhub/event-processor-host/tests.yml b/sdk/eventhub/event-processor-host/tests.yml index f694703ba6dc..6754a4adff97 100644 --- a/sdk/eventhub/event-processor-host/tests.yml +++ b/sdk/eventhub/event-processor-host/tests.yml @@ -4,6 +4,17 @@ jobs: - template: ../../../eng/pipelines/templates/jobs/archetype-sdk-tests.yml parameters: PackageName: "@azure/event-processor-host" + # Remove Browser tests from matrix since they are currently a no-op + Matrix: + Linux_Node10X: + OSVmImage: "ubuntu-16.04" + TestType: "node" + Windows_Node10X: + OSVmImage: "vs2017-win2016" + TestType: "node" + Mac_Node10X: + OSVmImage: "macOS-10.13" + TestType: "node" EnvVars: EVENTHUB_CONNECTION_STRING: $(js-event-hubs-test-connection-string) EVENTHUB_NAME: $(js-event-hubs-test-name) From b813bbf60ffef25a6b6d5594c757e22baf400996 Mon Sep 17 00:00:00 2001 From: ramya0820 <45977823+ramya0820@users.noreply.github.com> Date: Fri, 21 Jun 2019 16:25:53 -0700 Subject: [PATCH 171/289] [core-amqp] Fix 2 build warnings (#3996) --- sdk/core/core-amqp/rollup.base.config.js | 2 -- sdk/core/core-amqp/src/ConnectionContextBase.ts | 6 ++++-- sdk/core/core-amqp/src/connectionConfig/index.ts | 3 --- .../src/connectionConfig/iothubConnectionConfig.ts | 3 ++- sdk/core/core-amqp/src/index.ts | 10 ++++------ 5 files changed, 10 insertions(+), 14 deletions(-) delete mode 100644 sdk/core/core-amqp/src/connectionConfig/index.ts diff --git a/sdk/core/core-amqp/rollup.base.config.js b/sdk/core/core-amqp/rollup.base.config.js index c484793fa81a..cfb2313ce434 100644 --- a/sdk/core/core-amqp/rollup.base.config.js +++ b/sdk/core/core-amqp/rollup.base.config.js @@ -13,8 +13,6 @@ import inject from "rollup-plugin-inject"; import shim from "rollup-plugin-shim"; import json from "rollup-plugin-json"; -import path from "path"; - const pkg = require("./package.json"); const depNames = Object.keys(pkg.dependencies).concat( Object.keys(pkg.peerDependencies) diff --git a/sdk/core/core-amqp/src/ConnectionContextBase.ts b/sdk/core/core-amqp/src/ConnectionContextBase.ts index 02622642f486..1dc82962d567 100644 --- a/sdk/core/core-amqp/src/ConnectionContextBase.ts +++ b/sdk/core/core-amqp/src/ConnectionContextBase.ts @@ -5,7 +5,7 @@ import { Connection, ConnectionOptions, generate_uuid } from "rhea-promise"; import { CbsClient } from "./cbs"; import { DataTransformer, DefaultDataTransformer } from "./dataTransformer"; import { TokenCredential } from "@azure/core-http"; -import { ConnectionConfig } from "./connectionConfig"; +import { ConnectionConfig } from "./connectionConfig/connectionConfig"; import { SharedKeyCredential } from "./auth/sas"; import * as Constants from "./util/constants"; @@ -137,7 +137,9 @@ export module ConnectionContextBase { const userAgent = parameters.connectionProperties.userAgent; if (userAgent.length > Constants.maxUserAgentLength) { throw new Error( - `The user-agent string cannot be more than ${Constants.maxUserAgentLength} characters in length.` + + `The user-agent string cannot be more than ${ + Constants.maxUserAgentLength + } characters in length.` + `The given user-agent string is: ${userAgent} with length: ${userAgent.length}` ); } diff --git a/sdk/core/core-amqp/src/connectionConfig/index.ts b/sdk/core/core-amqp/src/connectionConfig/index.ts deleted file mode 100644 index 18c6002ebd1f..000000000000 --- a/sdk/core/core-amqp/src/connectionConfig/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { ConnectionConfig, ConnectionConfigOptions } from "./connectionConfig"; -export { EventHubConnectionConfig } from "./eventhubConnectionConfig"; -export { IotHubConnectionConfig } from "./iothubConnectionConfig"; diff --git a/sdk/core/core-amqp/src/connectionConfig/iothubConnectionConfig.ts b/sdk/core/core-amqp/src/connectionConfig/iothubConnectionConfig.ts index df98987b74b1..0e141fe52860 100644 --- a/sdk/core/core-amqp/src/connectionConfig/iothubConnectionConfig.ts +++ b/sdk/core/core-amqp/src/connectionConfig/iothubConnectionConfig.ts @@ -1,7 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { ConnectionConfig, EventHubConnectionConfig } from "."; +import { ConnectionConfig } from "./connectionConfig"; +import { EventHubConnectionConfig } from "./eventhubConnectionConfig"; import { parseConnectionString, IotHubConnectionStringModel diff --git a/sdk/core/core-amqp/src/index.ts b/sdk/core/core-amqp/src/index.ts index 3c71643e771e..502d8af3fb48 100644 --- a/sdk/core/core-amqp/src/index.ts +++ b/sdk/core/core-amqp/src/index.ts @@ -11,12 +11,10 @@ export { AccessToken, TokenCredential, isTokenCredential } from "@azure/core-htt export { SharedKeyCredential } from "./auth/sas"; export { IotSharedKeyCredential } from "./auth/iotSas"; -export { - ConnectionConfig, - ConnectionConfigOptions, - EventHubConnectionConfig, - IotHubConnectionConfig -} from "./connectionConfig"; +export { ConnectionConfig, ConnectionConfigOptions } from "./connectionConfig/connectionConfig"; +export { EventHubConnectionConfig } from "./connectionConfig/eventhubConnectionConfig"; +export { IotHubConnectionConfig } from "./connectionConfig/iothubConnectionConfig"; + export { CbsClient, CbsResponse } from "./cbs"; import * as Constants from "./util/constants"; export { Constants }; From 8493a18ead7cd8fd877110572f1eaea46d21e066 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez?= Date: Fri, 21 Jun 2019 19:33:03 -0400 Subject: [PATCH 172/289] [JS] [Storage] Replaced sleep and wait with a delay function that doesn't run on playback (#4011) * small ts signature fix on keyvault * storage-blob delay changes * storage-file delay changes * storage-blob wait removed on favor of delay * storage-queue changes --- .../keyvault-keys/tests/utils/recorder.ts | 2 +- .../keyvault-secrets/tests/utils/recorder.ts | 2 +- sdk/storage/storage-blob/test/bloburl.spec.ts | 14 +++++------ .../storage-blob/test/containerurl.spec.ts | 23 +++++++++++++------ .../test/node/pagebloburl.spec.ts | 13 +++++++---- .../storage-blob/test/serviceurl.spec.ts | 6 ++--- .../storage-blob/test/utils/recorder.ts | 5 ++++ .../test/utils/testutils.common.ts | 12 ---------- sdk/storage/storage-file/test/fileurl.spec.ts | 6 ++--- .../storage-file/test/serviceurl.spec.ts | 8 +++---- .../storage-file/test/utils/recorder.ts | 5 ++++ .../test/utils/testutils.common.ts | 12 ---------- .../storage-queue/test/messageidurl.spec.ts | 6 ++--- .../storage-queue/test/node/sas.spec.ts | 6 ++--- .../storage-queue/test/serviceurl.spec.ts | 6 ++--- .../storage-queue/test/utils/recorder.ts | 5 ++++ .../test/utils/testutils.common.ts | 12 ---------- 17 files changed, 67 insertions(+), 76 deletions(-) diff --git a/sdk/keyvault/keyvault-keys/tests/utils/recorder.ts b/sdk/keyvault/keyvault-keys/tests/utils/recorder.ts index 30ffe5616d79..3f842acafff5 100644 --- a/sdk/keyvault/keyvault-keys/tests/utils/recorder.ts +++ b/sdk/keyvault/keyvault-keys/tests/utils/recorder.ts @@ -39,7 +39,7 @@ export function setReplacements(maps: any): void { replacements = maps; } -export function delay(milliseconds: number): Promise { +export function delay(milliseconds: number): Promise | null { return isPlayingBack ? null : restDelay(milliseconds); } diff --git a/sdk/keyvault/keyvault-secrets/tests/utils/recorder.ts b/sdk/keyvault/keyvault-secrets/tests/utils/recorder.ts index 30ffe5616d79..3f842acafff5 100644 --- a/sdk/keyvault/keyvault-secrets/tests/utils/recorder.ts +++ b/sdk/keyvault/keyvault-secrets/tests/utils/recorder.ts @@ -39,7 +39,7 @@ export function setReplacements(maps: any): void { replacements = maps; } -export function delay(milliseconds: number): Promise { +export function delay(milliseconds: number): Promise | null { return isPlayingBack ? null : restDelay(milliseconds); } diff --git a/sdk/storage/storage-blob/test/bloburl.spec.ts b/sdk/storage/storage-blob/test/bloburl.spec.ts index de7cafe1b03b..bf710cf6794c 100644 --- a/sdk/storage/storage-blob/test/bloburl.spec.ts +++ b/sdk/storage/storage-blob/test/bloburl.spec.ts @@ -5,8 +5,8 @@ import { Aborter } from "../src/Aborter"; import { BlobURL } from "../src/BlobURL"; import { BlockBlobURL } from "../src/BlockBlobURL"; import { ContainerURL } from "../src/ContainerURL"; -import { bodyToString, getBSU, sleep } from "./utils"; -import { record } from "./utils/recorder"; +import { bodyToString, getBSU } from "./utils"; +import { record, delay } from "./utils/recorder"; import * as dotenv from "dotenv"; dotenv.config({ path: "../.env" }); @@ -14,7 +14,7 @@ describe("BlobURL", () => { const serviceURL = getBSU(); let containerName: string; let containerURL: ContainerURL; - let blobName: string;; + let blobName: string; let blobURL: BlobURL; let blockBlobURL: BlockBlobURL; const content = "Hello World"; @@ -147,7 +147,7 @@ describe("BlobURL", () => { assert.equal(result.leaseState, "leased"); assert.equal(result.leaseStatus, "locked"); - await sleep(20 * 1000); + await delay(20 * 1000); const result2 = await blobURL.getProperties(Aborter.none); assert.ok(!result2.leaseDuration); @@ -197,7 +197,7 @@ describe("BlobURL", () => { assert.equal(result2.leaseState, "breaking"); assert.equal(result2.leaseStatus, "locked"); - await sleep(5 * 1000); + await delay(5 * 1000); const result3 = await blobURL.getProperties(Aborter.none); assert.ok(!result3.leaseDuration); @@ -266,7 +266,7 @@ describe("BlobURL", () => { enabled: true } }); - await sleep(15 * 1000); + await delay(15 * 1000); } await blobURL.delete(Aborter.none); @@ -299,7 +299,7 @@ describe("BlobURL", () => { const newBlobURL = BlobURL.fromContainerURL(containerURL, recorder.getUniqueName("copiedblob")); const result = await newBlobURL.startCopyFromURL(Aborter.none, blobURL.url); assert.ok(result.copyId); - sleep(1 * 1000); + delay(1 * 1000); try { await newBlobURL.abortCopyFromURL(Aborter.none, result.copyId!); diff --git a/sdk/storage/storage-blob/test/containerurl.spec.ts b/sdk/storage/storage-blob/test/containerurl.spec.ts index b9dd9d2dfe53..e2421f10d973 100644 --- a/sdk/storage/storage-blob/test/containerurl.spec.ts +++ b/sdk/storage/storage-blob/test/containerurl.spec.ts @@ -4,8 +4,8 @@ import { Aborter } from "../src/Aborter"; import { BlobURL } from "../src/BlobURL"; import { BlockBlobURL } from "../src/BlockBlobURL"; import { ContainerURL } from "../src/ContainerURL"; -import { getBSU, sleep } from "./utils"; -import { record } from "./utils/recorder"; +import { getBSU } from "./utils"; +import { record, delay } from "./utils/recorder"; import * as dotenv from "dotenv"; dotenv.config({ path: "../.env" }); @@ -109,7 +109,7 @@ describe("ContainerURL", () => { assert.equal(result.leaseState, "leased"); assert.equal(result.leaseStatus, "locked"); - await sleep(16 * 1000); + await delay(16 * 1000); const result2 = await containerURL.getProperties(Aborter.none); assert.ok(!result2.leaseDuration); assert.equal(result2.leaseState, "expired"); @@ -158,7 +158,7 @@ describe("ContainerURL", () => { assert.equal(result2.leaseState, "breaking"); assert.equal(result2.leaseStatus, "locked"); - await sleep(3 * 1000); + await delay(3 * 1000); const result3 = await containerURL.getProperties(Aborter.none); assert.ok(!result3.leaseDuration); @@ -169,7 +169,10 @@ describe("ContainerURL", () => { it("listBlobFlatSegment with default parameters", async () => { const blobURLs = []; for (let i = 0; i < 3; i++) { - const blobURL = BlobURL.fromContainerURL(containerURL, recorder.getUniqueName(`blockblob/${i}`)); + const blobURL = BlobURL.fromContainerURL( + containerURL, + recorder.getUniqueName(`blockblob/${i}`) + ); const blockBlobURL = BlockBlobURL.fromBlobURL(blobURL); await blockBlobURL.upload(Aborter.none, "", 0); blobURLs.push(blobURL); @@ -195,7 +198,10 @@ describe("ContainerURL", () => { keyb: "c" }; for (let i = 0; i < 2; i++) { - const blobURL = BlobURL.fromContainerURL(containerURL, recorder.getUniqueName(`${prefix}/${i}`)); + const blobURL = BlobURL.fromContainerURL( + containerURL, + recorder.getUniqueName(`${prefix}/${i}`) + ); const blockBlobURL = BlockBlobURL.fromBlobURL(blobURL); await blockBlobURL.upload(Aborter.none, "", 0, { metadata @@ -234,7 +240,10 @@ describe("ContainerURL", () => { it("listBlobHierarchySegment with default parameters", async () => { const blobURLs = []; for (let i = 0; i < 3; i++) { - const blobURL = BlobURL.fromContainerURL(containerURL, recorder.getUniqueName(`blockblob${i}/${i}`)); + const blobURL = BlobURL.fromContainerURL( + containerURL, + recorder.getUniqueName(`blockblob${i}/${i}`) + ); const blockBlobURL = BlockBlobURL.fromBlobURL(blobURL); await blockBlobURL.upload(Aborter.none, "", 0); blobURLs.push(blobURL); diff --git a/sdk/storage/storage-blob/test/node/pagebloburl.spec.ts b/sdk/storage/storage-blob/test/node/pagebloburl.spec.ts index d2c65e5dc6b6..737ea1513869 100644 --- a/sdk/storage/storage-blob/test/node/pagebloburl.spec.ts +++ b/sdk/storage/storage-blob/test/node/pagebloburl.spec.ts @@ -4,8 +4,8 @@ import { Aborter } from "../../src/Aborter"; import { BlobURL } from "../../src/BlobURL"; import { ContainerURL } from "../../src/ContainerURL"; import { PageBlobURL } from "../../src/PageBlobURL"; -import { getBSU, sleep } from "../utils"; -import { record } from "../utils/recorder"; +import { getBSU } from "../utils"; +import { record, delay } from "../utils/recorder"; describe("PageBlobURL", () => { const serviceURL = getBSU(); @@ -43,11 +43,14 @@ describe("PageBlobURL", () => { let snapshotResult = await pageBlobURL.createSnapshot(Aborter.none); assert.ok(snapshotResult.snapshot); - const destPageBlobURL = PageBlobURL.fromContainerURL(containerURL, recorder.getUniqueName("page")); + const destPageBlobURL = PageBlobURL.fromContainerURL( + containerURL, + recorder.getUniqueName("page") + ); await containerURL.setAccessPolicy(Aborter.none, "container"); - await sleep(5 * 1000); + await delay(5 * 1000); let copySource = pageBlobURL.withSnapshot(snapshotResult.snapshot!).url; let copyResponse = await destPageBlobURL.startCopyIncremental(Aborter.none, copySource); @@ -63,7 +66,7 @@ describe("PageBlobURL", () => { case "aborted": throw new Error("Copy unexcepted aborted."); case "pending": - await sleep(3000); + await delay(3000); copyResponse = await destPageBlobURL.getProperties(Aborter.none); await waitForCopy(++retries); return; diff --git a/sdk/storage/storage-blob/test/serviceurl.spec.ts b/sdk/storage/storage-blob/test/serviceurl.spec.ts index 85696d8d9589..d14834b75ebd 100644 --- a/sdk/storage/storage-blob/test/serviceurl.spec.ts +++ b/sdk/storage/storage-blob/test/serviceurl.spec.ts @@ -3,8 +3,8 @@ import * as assert from "assert"; import { Aborter } from "../src/Aborter"; import { ContainerURL } from "../src/ContainerURL"; import { ServiceURL } from "../src/ServiceURL"; -import { getAlternateBSU, getBSU, wait } from "./utils"; -import { record } from "./utils/recorder"; +import { getAlternateBSU, getBSU } from "./utils"; +import { record, delay } from "./utils/recorder"; import * as dotenv from "dotenv"; dotenv.config({ path: "../.env" }); @@ -162,7 +162,7 @@ describe("ServiceURL", () => { } await serviceURL.setProperties(Aborter.none, serviceProperties); - await wait(5 * 1000); + await delay(5 * 1000); const result = await serviceURL.getProperties(Aborter.none); assert.ok(typeof result.requestId); diff --git a/sdk/storage/storage-blob/test/utils/recorder.ts b/sdk/storage/storage-blob/test/utils/recorder.ts index 46ebda750ebc..63ff0dcff8cd 100644 --- a/sdk/storage/storage-blob/test/utils/recorder.ts +++ b/sdk/storage/storage-blob/test/utils/recorder.ts @@ -2,6 +2,7 @@ import fs from "fs-extra"; import nise from "nise"; import queryString from "query-string"; import { getUniqueName, isBrowser } from "../utils"; +import { delay as restDelay } from "@azure/ms-rest-js"; import { blobToString } from "./index.browser"; import * as dotenv from "dotenv"; dotenv.config({ path: "../.env" }); @@ -22,6 +23,10 @@ if (isPlayingBack) { env.ACCOUNT_SAS = "aaaaa"; } +export function delay(milliseconds: number): Promise | null { + return isPlayingBack ? null : restDelay(milliseconds); +} + /** * Possible reasons for skipping a test: * * Abort: browser testing unexpectedly finishes when a request is aborted during playback (unknown reason; probably related to the way nise handles it) diff --git a/sdk/storage/storage-blob/test/utils/testutils.common.ts b/sdk/storage/storage-blob/test/utils/testutils.common.ts index de4d969696c9..ceae604e5f38 100644 --- a/sdk/storage/storage-blob/test/utils/testutils.common.ts +++ b/sdk/storage/storage-blob/test/utils/testutils.common.ts @@ -13,12 +13,6 @@ export function getUniqueName(prefix: string): string { )}`; } -export async function sleep(time: number): Promise { - return new Promise((resolve) => { - setTimeout(resolve, time); - }); -} - export function base64encode(content: string): string { return isBrowser() ? btoa(content) : Buffer.from(content).toString("base64"); } @@ -47,9 +41,3 @@ export class ConsoleHttpPipelineLogger implements IHttpPipelineLogger { } } } - -export async function wait(time: number): Promise { - return new Promise((resolve) => { - setTimeout(resolve, time); - }); -} diff --git a/sdk/storage/storage-file/test/fileurl.spec.ts b/sdk/storage/storage-file/test/fileurl.spec.ts index 67b5e296e8ef..2734ccddbe0a 100644 --- a/sdk/storage/storage-file/test/fileurl.spec.ts +++ b/sdk/storage/storage-file/test/fileurl.spec.ts @@ -5,8 +5,8 @@ import { Aborter } from "../src/Aborter"; import { DirectoryURL } from "../src/DirectoryURL"; import { FileURL } from "../src/FileURL"; import { ShareURL } from "../src/ShareURL"; -import { bodyToString, getBSU, sleep } from "./utils"; -import { record } from "./utils/recorder"; +import { bodyToString, getBSU } from "./utils"; +import { record, delay } from "./utils/recorder"; import * as dotenv from "dotenv"; dotenv.config({ path: "../.env" }); @@ -166,7 +166,7 @@ describe("FileURL", () => { const newFileURL = FileURL.fromDirectoryURL(dirURL, recorder.getUniqueName("copiedfile")); const result = await newFileURL.startCopyFromURL(Aborter.none, fileURL.url); assert.ok(result.copyId); - sleep(1 * 1000); + await delay(1 * 1000); try { await newFileURL.abortCopyFromURL(Aborter.none, result.copyId!); diff --git a/sdk/storage/storage-file/test/serviceurl.spec.ts b/sdk/storage/storage-file/test/serviceurl.spec.ts index 31374b37b9de..98c0f3c6f823 100644 --- a/sdk/storage/storage-file/test/serviceurl.spec.ts +++ b/sdk/storage/storage-file/test/serviceurl.spec.ts @@ -2,8 +2,8 @@ import * as assert from "assert"; import { Aborter } from "../src/Aborter"; import { ShareURL } from "../src/ShareURL"; -import { getBSU, wait } from "./utils"; -import { record } from "./utils/recorder"; +import { getBSU } from "./utils"; +import { record, delay } from "./utils/recorder"; import * as dotenv from "dotenv"; dotenv.config({ path: "../.env" }); @@ -16,7 +16,7 @@ describe("ServiceURL", () => { afterEach(() => { recorder.stop(); - }) + }); it("ListShares with default parameters", async () => { const serviceURL = getBSU(); @@ -136,7 +136,7 @@ describe("ServiceURL", () => { } await serviceURL.setProperties(Aborter.none, serviceProperties); - await wait(5 * 1000); + await delay(5 * 1000); const result = await serviceURL.getProperties(Aborter.none); assert.ok(typeof result.requestId); diff --git a/sdk/storage/storage-file/test/utils/recorder.ts b/sdk/storage/storage-file/test/utils/recorder.ts index 02df567bbdc0..7a79bc2db9f1 100644 --- a/sdk/storage/storage-file/test/utils/recorder.ts +++ b/sdk/storage/storage-file/test/utils/recorder.ts @@ -2,6 +2,7 @@ import fs from "fs-extra"; import nise from "nise"; import queryString from "query-string"; import { getUniqueName, isBrowser } from "../utils"; +import { delay as restDelay } from "@azure/ms-rest-js"; import { blobToString } from "./index.browser"; import * as dotenv from "dotenv"; dotenv.config({ path: "../.env" }); @@ -22,6 +23,10 @@ if (isPlayingBack) { env.ACCOUNT_SAS = "aaaaa"; } +export function delay(milliseconds: number): Promise | null { + return isPlayingBack ? null : restDelay(milliseconds); +} + /** * Possible reasons for skipping a test: * * Abort: browser testing unexpectedly finishes when a request is aborted during playback (unknown reason; probably related to the way nise handles it) diff --git a/sdk/storage/storage-file/test/utils/testutils.common.ts b/sdk/storage/storage-file/test/utils/testutils.common.ts index de4d969696c9..ceae604e5f38 100644 --- a/sdk/storage/storage-file/test/utils/testutils.common.ts +++ b/sdk/storage/storage-file/test/utils/testutils.common.ts @@ -13,12 +13,6 @@ export function getUniqueName(prefix: string): string { )}`; } -export async function sleep(time: number): Promise { - return new Promise((resolve) => { - setTimeout(resolve, time); - }); -} - export function base64encode(content: string): string { return isBrowser() ? btoa(content) : Buffer.from(content).toString("base64"); } @@ -47,9 +41,3 @@ export class ConsoleHttpPipelineLogger implements IHttpPipelineLogger { } } } - -export async function wait(time: number): Promise { - return new Promise((resolve) => { - setTimeout(resolve, time); - }); -} diff --git a/sdk/storage/storage-queue/test/messageidurl.spec.ts b/sdk/storage/storage-queue/test/messageidurl.spec.ts index a558afcbcfe4..0d1b7c87d63f 100644 --- a/sdk/storage/storage-queue/test/messageidurl.spec.ts +++ b/sdk/storage/storage-queue/test/messageidurl.spec.ts @@ -4,8 +4,8 @@ import { Aborter } from "../src/Aborter"; import { QueueURL } from "../src/QueueURL"; import { MessagesURL } from "../src/MessagesURL"; import { MessageIdURL } from "../src/MessageIdURL"; -import { getQSU, sleep } from "./utils"; -import { record } from "./utils/recorder"; +import { getQSU } from "./utils"; +import { record, delay } from "./utils/recorder"; import * as dotenv from "dotenv"; dotenv.config({ path: "../.env" }); @@ -87,7 +87,7 @@ describe("MessageIdURL", () => { let pResult = await messagesURL.peek(Aborter.none); assert.equal(pResult.peekedMessageItems.length, 0); - await sleep(11 * 1000); // Sleep 11 seconds, and wait the message to be visible again + await delay(11 * 1000); // Sleep 11 seconds, and wait the message to be visible again let pResult2 = await messagesURL.peek(Aborter.none); assert.equal(pResult2.peekedMessageItems.length, 1); diff --git a/sdk/storage/storage-queue/test/node/sas.spec.ts b/sdk/storage/storage-queue/test/node/sas.spec.ts index 05a854de9d97..09e3c93234ed 100644 --- a/sdk/storage/storage-queue/test/node/sas.spec.ts +++ b/sdk/storage/storage-queue/test/node/sas.spec.ts @@ -17,8 +17,8 @@ import { } from "../../src"; import { Aborter } from "../../src/Aborter"; import { SASProtocol } from "../../src/SASQueryParameters"; -import { getQSU, sleep } from "../utils/index"; -import { record } from "../utils/recorder"; +import { getQSU } from "../utils/index"; +import { record, delay } from "../utils/recorder"; describe("Shared Access Signature (SAS) generation Node.js only", () => { const serviceURL = getQSU(); @@ -317,7 +317,7 @@ describe("Shared Access Signature (SAS) generation Node.js only", () => { }); assert.deepStrictEqual(dResult.dequeuedMessageItems[0].messageText, messageContent); - await sleep(2 * 1000); + await delay(2 * 1000); const messageIdURL = MessageIdURL.fromMessagesURL( messagesURL, diff --git a/sdk/storage/storage-queue/test/serviceurl.spec.ts b/sdk/storage/storage-queue/test/serviceurl.spec.ts index 12d5c03ed7ad..1d72a089f723 100644 --- a/sdk/storage/storage-queue/test/serviceurl.spec.ts +++ b/sdk/storage/storage-queue/test/serviceurl.spec.ts @@ -3,8 +3,8 @@ import * as assert from "assert"; import { Aborter } from "../src/Aborter"; import { QueueURL } from "../src/QueueURL"; import { ServiceURL } from "../src/ServiceURL"; -import { getAlternateQSU, getQSU, wait } from "./utils"; -import { record } from "./utils/recorder"; +import { getAlternateQSU, getQSU } from "./utils"; +import { record, delay } from "./utils/recorder"; import * as dotenv from "dotenv"; dotenv.config({ path: "../.env" }); @@ -141,7 +141,7 @@ describe("ServiceURL", () => { } await serviceURL.setProperties(Aborter.none, serviceProperties); - await wait(5 * 1000); + await delay(5 * 1000); const result = await serviceURL.getProperties(Aborter.none); assert.ok(typeof result.requestId); diff --git a/sdk/storage/storage-queue/test/utils/recorder.ts b/sdk/storage/storage-queue/test/utils/recorder.ts index bc3ed20feea6..9da2855b3a13 100644 --- a/sdk/storage/storage-queue/test/utils/recorder.ts +++ b/sdk/storage/storage-queue/test/utils/recorder.ts @@ -2,6 +2,7 @@ import fs from "fs-extra"; import nise from "nise"; import queryString from "query-string"; import { getUniqueName, isBrowser } from "../utils"; +import { delay as restDelay } from "@azure/ms-rest-js"; import { blobToString } from "./index.browser"; import * as dotenv from "dotenv"; dotenv.config({ path: "../.env" }); @@ -22,6 +23,10 @@ if (isPlayingBack) { env.ACCOUNT_SAS = "aaaaa"; } +export function delay(milliseconds: number): Promise | null { + return isPlayingBack ? null : restDelay(milliseconds); +} + /** * Possible reasons for skipping a test: * * Abort: browser testing unexpectedly finishes when a request is aborted during playback (unknown reason; probably related to the way nise handles it) diff --git a/sdk/storage/storage-queue/test/utils/testutils.common.ts b/sdk/storage/storage-queue/test/utils/testutils.common.ts index de4d969696c9..ceae604e5f38 100644 --- a/sdk/storage/storage-queue/test/utils/testutils.common.ts +++ b/sdk/storage/storage-queue/test/utils/testutils.common.ts @@ -13,12 +13,6 @@ export function getUniqueName(prefix: string): string { )}`; } -export async function sleep(time: number): Promise { - return new Promise((resolve) => { - setTimeout(resolve, time); - }); -} - export function base64encode(content: string): string { return isBrowser() ? btoa(content) : Buffer.from(content).toString("base64"); } @@ -47,9 +41,3 @@ export class ConsoleHttpPipelineLogger implements IHttpPipelineLogger { } } } - -export async function wait(time: number): Promise { - return new Promise((resolve) => { - setTimeout(resolve, time); - }); -} From 347481d1abcfe0a56fa76a314e2d4527177d0d03 Mon Sep 17 00:00:00 2001 From: chradek <51000525+chradek@users.noreply.github.com> Date: Sun, 23 Jun 2019 20:56:03 -0700 Subject: [PATCH 173/289] [Event Hubs] improve consumer tests (#4017) * [Event Hubs] improves consumer tests --- sdk/eventhub/event-hubs/test/receiver.spec.ts | 201 ++++++++++++++---- 1 file changed, 165 insertions(+), 36 deletions(-) diff --git a/sdk/eventhub/event-hubs/test/receiver.spec.ts b/sdk/eventhub/event-hubs/test/receiver.spec.ts index b2340999b005..6ff099cacdb8 100644 --- a/sdk/eventhub/event-hubs/test/receiver.spec.ts +++ b/sdk/eventhub/event-hubs/test/receiver.spec.ts @@ -8,7 +8,15 @@ import chaiAsPromised from "chai-as-promised"; chai.use(chaiAsPromised); import debugModule from "debug"; const debug = debugModule("azure:event-hubs:receiver-spec"); -import { EventPosition, EventHubClient, EventData, MessagingError, ReceivedEventData, EventHubConsumer } from "../src"; +import { + EventPosition, + EventHubClient, + EventData, + MessagingError, + ReceivedEventData, + EventHubConsumer, + delay +} from "../src"; import { BatchingReceiver } from "../src/batchingReceiver"; import { ReceiveHandler } from "../src/streamingReceiver"; import { EnvVarKeys, getEnvVars } from "./utils/testUtils"; @@ -55,45 +63,13 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { }); describe("with partitionId 0 as number", function(): void { - it("should work for receiveBatch", async function(): Promise { + it("should not throw an error", async function(): Promise { receiver = client.createConsumer( EventHubClient.defaultConsumerGroup, - partitionIds[0], + 0 as any, EventPosition.fromSequenceNumber(0) ); - const result = await receiver.receiveBatch(10, 20); - should.equal(true, Array.isArray(result)); - }); - - it("should work for receive", function(done: Mocha.Done): void { - let rcvHandler: ReceiveHandler; - let stopCalled = false; - const onError = (error: MessagingError | Error) => { - debug(">>>> An error occurred: %O", error); - }; - const onMsg = (data: ReceivedEventData) => { - debug(">>>> Received Data: %O", data); - if (!stopCalled) { - stopCalled = true; - rcvHandler - .stop() - .then(() => { - done(); - }) - .catch(() => { - done(); - }); - } - }; - receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, - partitionIds[0], - EventPosition.fromOffset("0"), - { - ownerLevel: 1 - } - ); - rcvHandler = receiver.receive(onMsg, onError); + await receiver.receiveBatch(10, 20); }); }); @@ -446,6 +422,72 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { err.message.should.equal("The receive operation has been cancelled by the user."); } }); + + it("should support creating a new handler after cancellation", async function(): Promise { + const partitionId = partitionIds[0]; + const time = Date.now(); + // send a message that can be received + const sender = client.createProducer({ partitionId }); + try { + await sender.send({ body: "receive cancellation - immediate" }); + } finally { + await sender.close(); + } + + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromEnqueuedTime(time) + ); + + try { + await new Promise((resolve, reject) => { + let shouldStop = false; + const events: ReceivedEventData[] = []; + + // create an AbortSignal that's in the aborted state + const abortController = new AbortController(); + abortController.abort(); + + const handler = receiver!.receive( + event => { + if (!shouldStop) { + events.push(event); + shouldStop = true; + handler + .stop() + .then(() => resolve(events)) + .catch(reject); + } + }, + reject, + abortController.signal + ); + }); + throw new Error(`Test failure`); + } catch (err) { + err.name.should.equal("AbortError"); + err.message.should.equal("The receive operation has been cancelled by the user."); + + const events: ReceivedEventData[] = []; + await new Promise((resolve, reject) => { + let shouldStop = false; + + const handler = receiver!.receive(event => { + if (!shouldStop) { + events.push(event); + shouldStop = true; + handler + .stop() + .then(() => resolve(events)) + .catch(reject); + } + }, reject); + }); + + events.length.should.equal(1); + } + }); }); describe("in batch mode #RunnableInBrowser", function(): void { @@ -616,6 +658,53 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { data.length.should.equal(messageCount, `Failed to receive ${messageCount} expected messages`); }); + it("should properly drain if broken out of", async function(): Promise { + const partitionId = partitionIds[0]; + + receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, partitionId, EventPosition.latest()); + const eventIterator = receiver.getEventIterator(); + + const eventPromise = eventIterator.next(); + + // wait 65 seconds before sending a message to give underlying receiveBatch a chance to return 0 results + const raceResult = await Promise.race([delay(65000, "delay"), eventPromise]); + + // the timeout should happen before the event is resolved + raceResult.should.equal("delay"); + + // send an event and ensure the event iterator reads it + const sender = client.createProducer({ partitionId }); + const expectedBodies: string[] = []; + const messageCount = 5; + for (let i = 0; i < messageCount; i++) { + expectedBodies.push(`Event Iterator Drainage - ${Date.now()} - ${i}`); + } + + try { + await sender.send( + expectedBodies.map(body => { + return { body }; + }) + ); + } finally { + await sender.close(); + } + + const events = []; + events.push((await eventPromise).value); + for await (const event of eventIterator) { + events.push(event); + if (events.length === 5) { + break; + } + } + + events.length.should.equal(5); + events.forEach((event, index) => { + event.body.should.equal(expectedBodies[index]); + }); + }); + it("should not return undefined if no messages are found", async function(): Promise { const partitionId = partitionIds[0]; @@ -707,6 +796,46 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { err.message.should.equal("The receive operation has been cancelled by the user."); } }); + + it("should support creating a new iterator after a cancellation", async function(): Promise { + const partitionId = partitionIds[0]; + const time = Date.now(); + // send a message that can be received + const sender = client.createProducer({ partitionId }); + try { + await sender.send({ body: "getEventIterator post-cancellation - timeout 0" }); + } finally { + await sender.close(); + } + + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroup, + partitionId, + EventPosition.fromEnqueuedTime(time) + ); + + // abortSignal event listeners will be triggered after synchronous paths are executed + const abortSignal = AbortController.timeout(0); + const eventIterator = receiver.getEventIterator({ abortSignal }); + try { + for await (const _ of eventIterator) { + } + throw new Error(`Test failure`); + } catch (err) { + err.name.should.equal("AbortError"); + err.message.should.equal("The receive operation has been cancelled by the user."); + const events = []; + + const eventIterator2 = receiver.getEventIterator(); + for await (const event of eventIterator2) { + events.push(event); + break; + } + + events.length.should.equal(1); + events[0].should.haveOwnProperty("body"); + } + }); }); describe("mix and match receive methods", function(): void { From dad998dabeca4a041b90f2cec98bf24135e32717 Mon Sep 17 00:00:00 2001 From: chradek <51000525+chradek@users.noreply.github.com> Date: Mon, 24 Jun 2019 10:12:25 -0700 Subject: [PATCH 174/289] [Event Hubs] harden tests and update error messages (#4029) --- sdk/eventhub/event-hubs/src/receiver.ts | 6 ++--- sdk/eventhub/event-hubs/src/sender.ts | 4 ++-- sdk/eventhub/event-hubs/test/client.spec.ts | 23 +++++++++++++----- .../event-hubs/test/hubruntime.spec.ts | 1 + sdk/eventhub/event-hubs/test/receiver.spec.ts | 9 ++++--- sdk/eventhub/event-hubs/test/sender.spec.ts | 24 +++++++++++-------- 6 files changed, 41 insertions(+), 26 deletions(-) diff --git a/sdk/eventhub/event-hubs/src/receiver.ts b/sdk/eventhub/event-hubs/src/receiver.ts index 35769e893dd8..fbde89842173 100644 --- a/sdk/eventhub/event-hubs/src/receiver.ts +++ b/sdk/eventhub/event-hubs/src/receiver.ts @@ -315,7 +315,7 @@ export class EventHubConsumer { private _throwIfAlreadyReceiving(): void { if (this.isReceivingMessages) { - const errorMessage = `The receiver for "${this._context.config.entityPath}" is already receiving messages.`; + const errorMessage = `The EventHubConsumer for "${this._context.config.entityPath}" is already receiving messages.`; const error = new Error(errorMessage); log.error(`[${this._context.connectionId}] %O`, error); throw error; @@ -326,8 +326,8 @@ export class EventHubConsumer { throwErrorIfConnectionClosed(this._context); if (this.isClosed) { const errorMessage = - `The receiver for "${this._context.config.entityPath}" has been closed and can no longer be used. ` + - `Please create a new receiver using the "createConsumer" function on the EventHubClient.`; + `The EventHubConsumer for "${this._context.config.entityPath}" has been closed and can no longer be used. ` + + `Please create a new EventHubConsumer using the "createConsumer" function on the EventHubClient.`; const error = new Error(errorMessage); log.error(`[${this._context.connectionId}] %O`, error); throw error; diff --git a/sdk/eventhub/event-hubs/src/sender.ts b/sdk/eventhub/event-hubs/src/sender.ts index 1f9413227f38..49c2151424a5 100644 --- a/sdk/eventhub/event-hubs/src/sender.ts +++ b/sdk/eventhub/event-hubs/src/sender.ts @@ -102,8 +102,8 @@ export class EventHubProducer { throwErrorIfConnectionClosed(this._context); if (this.isClosed) { const errorMessage = - `The sender for "${this._context.config.entityPath}" has been closed and can no longer be used. ` + - `Please create a new sender using the "createProducer" function on the EventHubClient.`; + `The EventHubProducer for "${this._context.config.entityPath}" has been closed and can no longer be used. ` + + `Please create a new EventHubProducer using the "createProducer" function on the EventHubClient.`; const error = new Error(errorMessage); log.error(`[${this._context.connectionId}] %O`, error); throw error; diff --git a/sdk/eventhub/event-hubs/test/client.spec.ts b/sdk/eventhub/event-hubs/test/client.spec.ts index 8402219151ab..41c2cd5f5271 100644 --- a/sdk/eventhub/event-hubs/test/client.spec.ts +++ b/sdk/eventhub/event-hubs/test/client.spec.ts @@ -96,6 +96,7 @@ describe("ServiceCommunicationError for non existent namespace", function(): voi it("should throw ServiceCommunicationError while getting hub runtime info", async function(): Promise { try { await client.getProperties(); + throw new Error("Test failure"); } catch (err) { debug(err); should.equal(err.name, "ServiceCommunicationError"); @@ -105,6 +106,7 @@ describe("ServiceCommunicationError for non existent namespace", function(): voi it("should throw ServiceCommunicationError while getting partition runtime info", async function(): Promise { try { await client.getPartitionProperties("0"); + throw new Error("Test failure"); } catch (err) { debug(err); should.equal(err.name, "ServiceCommunicationError"); @@ -115,6 +117,7 @@ describe("ServiceCommunicationError for non existent namespace", function(): voi try { const sender = client.createProducer({ partitionId: "0" }); await sender.send([{ body: "Hello World" }]); + throw new Error("Test failure"); } catch (err) { debug(err); should.equal(err.name, "ServiceCommunicationError"); @@ -125,6 +128,7 @@ describe("ServiceCommunicationError for non existent namespace", function(): voi try { const receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, "0", EventPosition.earliest()); await receiver.receiveBatch(10, 5); + throw new Error("Test failure"); } catch (err) { debug(err); should.equal(err.name, "ServiceCommunicationError"); @@ -150,6 +154,7 @@ describe("MessagingEntityNotFoundError for non existent eventhub", function(): v it("should throw MessagingEntityNotFoundError while getting hub runtime info", async function(): Promise { try { await client.getProperties(); + throw new Error("Test failure"); } catch (err) { debug(err); should.equal(err.name, "MessagingEntityNotFoundError"); @@ -159,6 +164,7 @@ describe("MessagingEntityNotFoundError for non existent eventhub", function(): v it("should throw MessagingEntityNotFoundError while getting partition runtime info", async function(): Promise { try { await client.getPartitionProperties("0"); + throw new Error("Test failure"); } catch (err) { debug(err); should.equal(err.name, "MessagingEntityNotFoundError"); @@ -169,6 +175,7 @@ describe("MessagingEntityNotFoundError for non existent eventhub", function(): v try { const sender = client.createProducer({ partitionId: "0" }); await sender.send([{ body: "Hello World" }]); + throw new Error("Test failure"); } catch (err) { debug(err); should.equal(err.name, "MessagingEntityNotFoundError"); @@ -179,6 +186,7 @@ describe("MessagingEntityNotFoundError for non existent eventhub", function(): v try { const receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, "0", EventPosition.earliest()); await receiver.receiveBatch(10, 5); + throw new Error("Test failure"); } catch (err) { debug(err); should.equal(err.name, "MessagingEntityNotFoundError"); @@ -353,7 +361,11 @@ describe("Errors after close()", function(): void { } catch (err) { errorGetPartitionProperties = err.message; } - should.equal(errorGetPartitionProperties, expectedErrorMsg, "Expected error not thrown for getPartitionProperties()"); + should.equal( + errorGetPartitionProperties, + expectedErrorMsg, + "Expected error not thrown for getPartitionProperties()" + ); let errorGetProperties: string = ""; try { @@ -362,21 +374,20 @@ describe("Errors after close()", function(): void { errorGetProperties = err.message; } should.equal(errorGetProperties, expectedErrorMsg, "Expected error not thrown for getProperties()"); - }); it("errors after close() on sender", async function(): Promise { const senderErrorMsg = - `The sender for "${client.eventHubName}" has been closed and can no longer be used. ` + - `Please create a new sender using the "createProducer" function on the EventHubClient.`; + `The EventHubProducer for "${client.eventHubName}" has been closed and can no longer be used. ` + + `Please create a new EventHubProducer using the "createProducer" function on the EventHubClient.`; await beforeEachTest("sender"); await testSender(senderErrorMsg); }); it("errors after close() on receiver", async function(): Promise { const receiverErrorMsg = - `The receiver for "${client.eventHubName}" has been closed and can no longer be used. ` + - `Please create a new receiver using the "createConsumer" function on the EventHubClient.`; + `The EventHubConsumer for "${client.eventHubName}" has been closed and can no longer be used. ` + + `Please create a new EventHubConsumer using the "createConsumer" function on the EventHubClient.`; await beforeEachTest("receiver"); await testReceiver(receiverErrorMsg); }); diff --git a/sdk/eventhub/event-hubs/test/hubruntime.spec.ts b/sdk/eventhub/event-hubs/test/hubruntime.spec.ts index 7bc9686deac3..e927ca812b66 100644 --- a/sdk/eventhub/event-hubs/test/hubruntime.spec.ts +++ b/sdk/eventhub/event-hubs/test/hubruntime.spec.ts @@ -129,6 +129,7 @@ describe("RuntimeInformation #RunnableInBrowser", function(): void { try { client = new EventHubClient(service.connectionString, service.path); await client.getPartitionProperties(id as any); + throw new Error("Test failure"); } catch (err) { debug(`>>>> Received error - `, err); should.exist(err); diff --git a/sdk/eventhub/event-hubs/test/receiver.spec.ts b/sdk/eventhub/event-hubs/test/receiver.spec.ts index 6ff099cacdb8..b074ba0852ee 100644 --- a/sdk/eventhub/event-hubs/test/receiver.spec.ts +++ b/sdk/eventhub/event-hubs/test/receiver.spec.ts @@ -708,11 +708,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { it("should not return undefined if no messages are found", async function(): Promise { const partitionId = partitionIds[0]; - receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, - partitionId, - EventPosition.fromEnqueuedTime(Date.now()) - ); + receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, partitionId, EventPosition.latest()); const eventIterator = receiver.getEventIterator({ // behind the scenes, eventIterator will wait up to 60 seconds before returning. // set timeout to 70 seconds to give the iterator a chance to yield a value. @@ -1214,6 +1210,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { .createConsumer(EventHubClient.defaultConsumerGroup, id, EventPosition.latest()) .receiveBatch(10, 3); debug("received messages ", d.length); + throw new Error("Test failure"); } catch (err) { debug("Receiver received an error", err); should.exist(err); @@ -1232,6 +1229,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { .createConsumer(EventHubClient.defaultConsumerGroup, id, EventPosition.latest()) .receiveBatch(10, 3); debug("received messages ", d.length); + throw new Error("Test failure"); } catch (err) { debug("Receiver received an error", err); should.exist(err); @@ -1246,6 +1244,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { await client .createConsumer(EventHubClient.defaultConsumerGroup, id, EventPosition.latest()) .receiveBatch(10, 3); + throw new Error("Test failure"); } catch (err) { debug(`>>>> Received error - `, err); should.exist(err); diff --git a/sdk/eventhub/event-hubs/test/sender.spec.ts b/sdk/eventhub/event-hubs/test/sender.spec.ts index e81dda3fb38a..07df9beb1e8d 100644 --- a/sdk/eventhub/event-hubs/test/sender.spec.ts +++ b/sdk/eventhub/event-hubs/test/sender.spec.ts @@ -244,21 +244,22 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { } }); - it("should fail when a message greater than 256 KB is sent and succeed when a normal message is sent after that on the same link.", async function(): Promise< + it("should fail when a message greater than 1 MB is sent and succeed when a normal message is sent after that on the same link.", async function(): Promise< void > { const data: EventData = { - body: Buffer.from("Z".repeat(300000)) + body: Buffer.from("Z".repeat(1300000)) }; try { - debug("Sendina message of 300KB..."); + debug("Sending a message of 300KB..."); await client.createProducer({ partitionId: "0" }).send([data]); + throw new Error("Test failure"); } catch (err) { debug(err); should.exist(err); should.equal(err.name, "MessageTooLargeError"); err.message.should.match( - /.*The received message \(delivery-id:(\d+), size:3000\d\d bytes\) exceeds the limit \(262144 bytes\) currently allowed on the link\..*/gi + /.*The received message \(delivery-id:(\d+), size:(\d+) bytes\) exceeds the limit \((\d+) bytes\) currently allowed on the link\..*/gi ); } await client.createProducer({ partitionId: "0" }).send([{ body: "Hello World EventHub!!" }]); @@ -267,31 +268,33 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { }); describe("Negative scenarios", function(): void { - it("a message greater than 256 KB should fail.", async function(): Promise { + it("a message greater than 1 MB should fail.", async function(): Promise { const data: EventData = { - body: Buffer.from("Z".repeat(300000)) + body: Buffer.from("Z".repeat(1300000)) }; try { await client.createProducer().send([data]); + throw new Error("Test failure"); } catch (err) { debug(err); should.exist(err); should.equal(err.name, "MessageTooLargeError"); err.message.should.match( - /.*The received message \(delivery-id:(\d+), size:3000\d\d bytes\) exceeds the limit \(262144 bytes\) currently allowed on the link\..*/gi + /.*The received message \(delivery-id:(\d+), size:(\d+) bytes\) exceeds the limit \((\d+) bytes\) currently allowed on the link\..*/gi ); } }); describe("on invalid partition ids like", function(): void { // tslint:disable-next-line: no-null-keyword - const invalidIds = ["XYZ", "-1", "1000", "-", null]; + const invalidIds = ["XYZ", "-1", "1000", "-"]; invalidIds.forEach(function(id: string | null): void { it(`"${id}" should throw an error`, async function(): Promise { try { debug("Created sender and will be sending a message to partition id ...", id); - await client.createProducer().send([{ body: "Hello world!" }], id as any); + await client.createProducer({ partitionId: id as any }).send([{ body: "Hello world!" }]); debug("sent the message."); + throw new Error("Test failure"); } catch (err) { debug(`>>>> Received error for invalid partition id "${id}" - `, err); should.exist(err); @@ -307,8 +310,9 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { it(`"${id}" should throw an invalid EventHub address error`, async function(): Promise { try { debug("Created sender and will be sending a message to partition id ...", id); - await client.createProducer().send([{ body: "Hello world!" }], id as any); + await client.createProducer({ partitionId: id as any }).send([{ body: "Hello world!" }]); debug("sent the message."); + throw new Error("Test failure"); } catch (err) { debug(`>>>> Received invalid EventHub address error for partition id "${id}" - `, err); should.exist(err); From dc1154ec5f3d033475df21aab1c875121eeccd3e Mon Sep 17 00:00:00 2001 From: Harsha Nalluru Date: Mon, 24 Jun 2019 11:52:53 -0700 Subject: [PATCH 175/289] [Storage] Updating test scripts (#4020) --- sdk/storage/storage-blob/package.json | 6 +++--- sdk/storage/storage-file/package.json | 6 +++--- sdk/storage/storage-queue/package.json | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/sdk/storage/storage-blob/package.json b/sdk/storage/storage-blob/package.json index c509064aa365..8a17c4b7d577 100644 --- a/sdk/storage/storage-blob/package.json +++ b/sdk/storage/storage-blob/package.json @@ -36,9 +36,9 @@ "lint": "eslint -c ../../.eslintrc.json src test samples --ext .ts -f node_modules/eslint-detailed-reporter/lib/detailed.js -o storage-blob-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", + "test:browser": "npm run clean && npm run build:test && npm run integration-test:browser", + "test:node": "npm run clean && npm run build:test && npm run integration-test:node", + "test": "npm run clean && npm run build:test && npm run integration-test", "unit-test:browser": "cross-env TEST_MODE=playback npm run integration-test:browser", "unit-test:node": "cross-env TEST_MODE=playback npm run integration-test:node", "unit-test": "npm run unit-test:node && npm run unit-test:browser" diff --git a/sdk/storage/storage-file/package.json b/sdk/storage/storage-file/package.json index 06e2af1bb0f7..1e25f50e6f19 100644 --- a/sdk/storage/storage-file/package.json +++ b/sdk/storage/storage-file/package.json @@ -36,9 +36,9 @@ "lint": "eslint -c ../../.eslintrc.json src test samples --ext .ts -f node_modules/eslint-detailed-reporter/lib/detailed.js -o storage-file-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", + "test:browser": "npm run clean && npm run build:test && npm run integration-test:browser", + "test:node": "npm run clean && npm run build:test && npm run integration-test:node", + "test": "npm run clean && npm run build:test && npm run integration-test", "unit-test:browser": "cross-env TEST_MODE=playback npm run integration-test:browser", "unit-test:node": "cross-env TEST_MODE=playback npm run integration-test:node", "unit-test": "npm run unit-test:node && npm run unit-test:browser" diff --git a/sdk/storage/storage-queue/package.json b/sdk/storage/storage-queue/package.json index fed665755a8d..fe88479c0189 100644 --- a/sdk/storage/storage-queue/package.json +++ b/sdk/storage/storage-queue/package.json @@ -35,9 +35,9 @@ "lint": "eslint -c ../../.eslintrc.json src test samples --ext .ts -f node_modules/eslint-detailed-reporter/lib/detailed.js -o storage-queue-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", + "test:browser": "npm run clean && npm run build:test && npm run integration-test:browser", + "test:node": "npm run clean && npm run build:test && npm run integration-test:node", + "test": "npm run clean && npm run build:test && npm run integration-test", "unit-test:browser": "cross-env TEST_MODE=playback npm run integration-test:browser", "unit-test:node": "cross-env TEST_MODE=playback npm run integration-test:node", "unit-test": "npm run unit-test:node && npm run unit-test:browser" From 55963518d764779d296a65dfb0fa8ab518cd5aca Mon Sep 17 00:00:00 2001 From: ShivangiReja <45216704+ShivangiReja@users.noreply.github.com> Date: Mon, 24 Jun 2019 12:09:48 -0700 Subject: [PATCH 176/289] [Event Hubs] Add test for Azure Identity (#4031) * [Event Hubs] Add test for Azure Identity * Revert extra changes * Revert extra changes --- sdk/eventhub/event-hubs/package.json | 7 +-- sdk/eventhub/event-hubs/test/client.spec.ts | 48 +++++++++---------- .../event-hubs/test/tsconfig.test.json | 6 +++ 3 files changed, 34 insertions(+), 27 deletions(-) create mode 100644 sdk/eventhub/event-hubs/test/tsconfig.test.json diff --git a/sdk/eventhub/event-hubs/package.json b/sdk/eventhub/event-hubs/package.json index 7adf1e07f674..66bf9647e7e9 100644 --- a/sdk/eventhub/event-hubs/package.json +++ b/sdk/eventhub/event-hubs/package.json @@ -40,7 +40,7 @@ "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 && npm run build:test:browser", + "build:test": "npm run build", "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", @@ -48,7 +48,7 @@ "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 120000 test-dist/index.js --reporter mocha-multi --reporter-options spec=-,mocha-junit-reporter=-", + "integration-test:node": "ts-mocha -p test/tsconfig.test.json test/*.ts --timeout 1200000 --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 node_modules/eslint-detailed-reporter/lib/detailed.js -o event-hubs-lintReport.html || exit 0", @@ -132,6 +132,7 @@ "ts-node": "^7.0.1", "tslint": "^5.15.0", "typescript": "^3.2.2", - "ws": "^6.2.1" + "ws": "^6.2.1", + "ts-mocha": "^6.0.0" } } diff --git a/sdk/eventhub/event-hubs/test/client.spec.ts b/sdk/eventhub/event-hubs/test/client.spec.ts index 41c2cd5f5271..31be8710dc89 100644 --- a/sdk/eventhub/event-hubs/test/client.spec.ts +++ b/sdk/eventhub/event-hubs/test/client.spec.ts @@ -13,7 +13,7 @@ const debug = debugModule("azure:event-hubs:client-spec"); import { EventHubClient, EventPosition, TokenCredential, EventHubProducer, EventHubConsumer } from "../src"; import { packageJsonInfo } from "../src/util/constants"; import { EnvVarKeys, getEnvVars } from "./utils/testUtils"; -// import { EnvironmentCredential } from "@azure/identity"; +import { EnvironmentCredential } from "@azure/identity"; const env = getEnvVars(); describe("Create EventHubClient #RunnableInBrowser", function(): void { @@ -57,29 +57,29 @@ describe("Create EventHubClient #RunnableInBrowser", function(): void { should.equal(client.eventHubName, "my-event-hub-path"); }); - // it("creates an EventHubClient from an Azure.Identity credential", async function(): Promise { - // should.exist( - // env[EnvVarKeys.AZURE_CLIENT_ID], - // "define AZURE_CLIENT_ID in your environment before running integration tests." - // ); - // should.exist( - // env[EnvVarKeys.AZURE_TENANT_ID], - // "define AZURE_TENANT_ID in your environment before running integration tests." - // ); - // should.exist( - // env[EnvVarKeys.AZURE_CLIENT_SECRET], - // "define AZURE_CLIENT_SECRET in your environment before running integration tests." - // ); - // should.exist(env[EnvVarKeys.ENDPOINT], "define ENDPOINT in your environment before running integration tests."); - - // const credential = new EnvironmentCredential(); - // const client = new EventHubClient(env.ENDPOINT, env.EVENTHUB_NAME, credential); - - // // Extra check involving actual call to the service to ensure this works - // const hubInfo = await client.getProperties(); - // should.equal(hubInfo.path, client.eventHubName); - // await client.close(); - // }); + it("creates an EventHubClient from an Azure.Identity credential", async function(): Promise { + should.exist( + env[EnvVarKeys.AZURE_CLIENT_ID], + "define AZURE_CLIENT_ID in your environment before running integration tests." + ); + should.exist( + env[EnvVarKeys.AZURE_TENANT_ID], + "define AZURE_TENANT_ID in your environment before running integration tests." + ); + should.exist( + env[EnvVarKeys.AZURE_CLIENT_SECRET], + "define AZURE_CLIENT_SECRET in your environment before running integration tests." + ); + should.exist(env[EnvVarKeys.ENDPOINT], "define ENDPOINT in your environment before running integration tests."); + + const credential = new EnvironmentCredential(); + const client = new EventHubClient(env.ENDPOINT, env.EVENTHUB_NAME, credential); + + // Extra check involving actual call to the service to ensure this works + const hubInfo = await client.getProperties(); + should.equal(hubInfo.path, client.eventHubName); + await client.close(); + }); }); describe("ServiceCommunicationError for non existent namespace", function(): void { diff --git a/sdk/eventhub/event-hubs/test/tsconfig.test.json b/sdk/eventhub/event-hubs/test/tsconfig.test.json new file mode 100644 index 000000000000..0e7afc685537 --- /dev/null +++ b/sdk/eventhub/event-hubs/test/tsconfig.test.json @@ -0,0 +1,6 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "module": "commonjs" + } +} From 653721f9371b2a14a702daf8ea77609795b9a050 Mon Sep 17 00:00:00 2001 From: KarishmaGhiya Date: Mon, 24 Jun 2019 13:27:54 -0700 Subject: [PATCH 177/289] types/node dev-dependency added for three keyvault packages, to prevent typedoc from blowing up (#4034) --- sdk/keyvault/keyvault-certificates/package.json | 1 + sdk/keyvault/keyvault-keys/package.json | 1 + sdk/keyvault/keyvault-secrets/package.json | 1 + 3 files changed, 3 insertions(+) diff --git a/sdk/keyvault/keyvault-certificates/package.json b/sdk/keyvault/keyvault-certificates/package.json index 01c86ca9de4a..9bccd0c50e75 100644 --- a/sdk/keyvault/keyvault-certificates/package.json +++ b/sdk/keyvault/keyvault-certificates/package.json @@ -72,6 +72,7 @@ "@azure/identity": "^0.1.0", "@microsoft/api-extractor": "^7.1.5", "@types/chai": "^4.1.6", + "@types/node": "^8.0.0", "chai": "^4.2.0", "prettier": "^1.16.4", "rimraf": "^2.6.2", diff --git a/sdk/keyvault/keyvault-keys/package.json b/sdk/keyvault/keyvault-keys/package.json index 6a1ea9b93fe8..a668800bd5ba 100644 --- a/sdk/keyvault/keyvault-keys/package.json +++ b/sdk/keyvault/keyvault-keys/package.json @@ -81,6 +81,7 @@ "@types/fs-extra": "~7.0.0", "@types/mocha": "^5.2.5", "@types/nock": "^10.0.1", + "@types/node": "^8.0.0", "@typescript-eslint/eslint-plugin": "~1.9.0", "@typescript-eslint/parser": "^1.7.0", "chai": "^4.2.0", diff --git a/sdk/keyvault/keyvault-secrets/package.json b/sdk/keyvault/keyvault-secrets/package.json index e8386564b237..15e3132ae36f 100644 --- a/sdk/keyvault/keyvault-secrets/package.json +++ b/sdk/keyvault/keyvault-secrets/package.json @@ -83,6 +83,7 @@ "@types/fs-extra": "~7.0.0", "@types/mocha": "^5.2.5", "@types/nock": "^10.0.1", + "@types/node": "^8.0.0", "@typescript-eslint/eslint-plugin": "~1.9.0", "@typescript-eslint/parser": "^1.7.0", "chai": "^4.2.0", From 8bb1cac85a18ce7e00d745a44e1102567b14d2bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez?= Date: Mon, 24 Jun 2019 18:28:22 -0400 Subject: [PATCH 178/289] [JS] [KeyVault] No query-string in keyvault-keys (#4016) Removed query-string since we're not using it. Related to #3990 --- sdk/keyvault/keyvault-keys/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/sdk/keyvault/keyvault-keys/package.json b/sdk/keyvault/keyvault-keys/package.json index a668800bd5ba..0bc47d2b7aed 100644 --- a/sdk/keyvault/keyvault-keys/package.json +++ b/sdk/keyvault/keyvault-keys/package.json @@ -97,7 +97,6 @@ "mocha": "^5.2.0", "nock": "^10.0.6", "prettier": "^1.16.4", - "query-string": "^6.5.0", "rimraf": "^2.6.2", "rollup": "~1.13.1", "rollup-plugin-commonjs": "^10.0.0", From eae61d8da6de393e78808892f44554d047726fc6 Mon Sep 17 00:00:00 2001 From: KarishmaGhiya Date: Mon, 24 Jun 2019 15:47:58 -0700 Subject: [PATCH 179/289] add env variables for event-hubs livetests (#4040) --- sdk/eventhub/event-hubs/tests.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sdk/eventhub/event-hubs/tests.yml b/sdk/eventhub/event-hubs/tests.yml index c658ee310656..a007dfdfc2e1 100644 --- a/sdk/eventhub/event-hubs/tests.yml +++ b/sdk/eventhub/event-hubs/tests.yml @@ -19,5 +19,8 @@ jobs: EVENTHUB_CONNECTION_STRING: $(js-event-hubs-test-connection-string) EVENTHUB_NAME: $(js-event-hubs-test-name) IOTHUB_CONNECTION_STRING: $(js-event-hubs-test-iothub-connection-string) + AZURE_TENANT_ID: $(aad-azure-sdk-test-tenant-id) + AZURE_CLIENT_ID: $(aad-azure-sdk-test-client-id) + AZURE_CLIENT_SECRET: $(aad-azure-sdk-test-client-secret) # Event Hubs tests do not support concurrent execution MaxParallel: 1 From 35a2c69297502c7dc6d94f235f50ef4179a8481f Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Mon, 24 Jun 2019 16:24:59 -0700 Subject: [PATCH 180/289] Generate @azure/arm-cognitiveservices package (#4042) * Generate @azure/arm-cognitiveservices package * Bump the version --- .../arm-cognitiveservices/README.md | 2 + .../arm-cognitiveservices/package.json | 8 +- .../src/cognitiveServicesManagementClient.ts | 63 +++++++ ...ognitiveServicesManagementClientContext.ts | 2 +- .../src/models/accountsMappers.ts | 5 +- .../arm-cognitiveservices/src/models/index.ts | 130 +++++++++++++++ .../src/models/mappers.ts | 157 ++++++++++++++++++ 7 files changed, 361 insertions(+), 6 deletions(-) diff --git a/sdk/cognitiveservices/arm-cognitiveservices/README.md b/sdk/cognitiveservices/arm-cognitiveservices/README.md index 4258757bbea7..f8089bd64892 100644 --- a/sdk/cognitiveservices/arm-cognitiveservices/README.md +++ b/sdk/cognitiveservices/arm-cognitiveservices/README.md @@ -98,3 +98,5 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to ## Related projects - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) + +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/cognitiveservices/arm-cognitiveservices/README.png) diff --git a/sdk/cognitiveservices/arm-cognitiveservices/package.json b/sdk/cognitiveservices/arm-cognitiveservices/package.json index 495a6abf2161..daefc4cbaafc 100644 --- a/sdk/cognitiveservices/arm-cognitiveservices/package.json +++ b/sdk/cognitiveservices/arm-cognitiveservices/package.json @@ -2,7 +2,7 @@ "name": "@azure/arm-cognitiveservices", "author": "Microsoft Corporation", "description": "CognitiveServicesManagementClient Library with typescript type definitions for node.js and browser.", - "version": "3.0.0", + "version": "3.1.0", "dependencies": { "@azure/ms-rest-azure-js": "^1.3.2", "@azure/ms-rest-js": "^1.8.1", @@ -26,13 +26,13 @@ "rollup-plugin-sourcemaps": "^0.4.2", "uglify-js": "^3.4.9" }, - "homepage": "https://github.com/azure/azure-sdk-for-js", + "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/cognitiveservices/arm-cognitiveservices", "repository": { "type": "git", - "url": "https://github.com/azure/azure-sdk-for-js.git" + "url": "https://github.com/Azure/azure-sdk-for-js.git" }, "bugs": { - "url": "https://github.com/azure/azure-sdk-for-js/issues" + "url": "https://github.com/Azure/azure-sdk-for-js/issues" }, "files": [ "dist/**/*.js", diff --git a/sdk/cognitiveservices/arm-cognitiveservices/src/cognitiveServicesManagementClient.ts b/sdk/cognitiveservices/arm-cognitiveservices/src/cognitiveServicesManagementClient.ts index e2d721fdca7c..6d87d48815ae 100644 --- a/sdk/cognitiveservices/arm-cognitiveservices/src/cognitiveServicesManagementClient.ts +++ b/sdk/cognitiveservices/arm-cognitiveservices/src/cognitiveServicesManagementClient.ts @@ -11,6 +11,7 @@ import * as msRest from "@azure/ms-rest-js"; import * as Models from "./models"; import * as Mappers from "./models/mappers"; +import * as Parameters from "./models/parameters"; import * as operations from "./operations"; import { CognitiveServicesManagementClientContext } from "./cognitiveServicesManagementClientContext"; @@ -35,9 +36,71 @@ class CognitiveServicesManagementClient extends CognitiveServicesManagementClien this.operations = new operations.Operations(this); this.checkSkuAvailability = new operations.CheckSkuAvailability(this); } + + /** + * Check whether a domain is available. + * @param subdomainName The subdomain name to use. + * @param type The Type of the resource. + * @param [options] The optional parameters + * @returns Promise + */ + checkDomainAvailability(subdomainName: string, type: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param subdomainName The subdomain name to use. + * @param type The Type of the resource. + * @param callback The callback + */ + checkDomainAvailability(subdomainName: string, type: string, callback: msRest.ServiceCallback): void; + /** + * @param subdomainName The subdomain name to use. + * @param type The Type of the resource. + * @param options The optional parameters + * @param callback The callback + */ + checkDomainAvailability(subdomainName: string, type: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + checkDomainAvailability(subdomainName: string, type: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.sendOperationRequest( + { + subdomainName, + type, + options + }, + checkDomainAvailabilityOperationSpec, + callback) as Promise; + } } // Operation Specifications +const serializer = new msRest.Serializer(Mappers); +const checkDomainAvailabilityOperationSpec: msRest.OperationSpec = { + httpMethod: "POST", + path: "providers/Microsoft.CognitiveServices/checkDomainAvailability", + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + requestBody: { + parameterPath: { + subdomainName: "subdomainName", + type: "type" + }, + mapper: { + ...Mappers.CheckDomainAvailabilityParameter, + required: true + } + }, + responses: { + 200: { + bodyMapper: Mappers.CheckDomainAvailabilityResult + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + serializer +}; export { CognitiveServicesManagementClient, diff --git a/sdk/cognitiveservices/arm-cognitiveservices/src/cognitiveServicesManagementClientContext.ts b/sdk/cognitiveservices/arm-cognitiveservices/src/cognitiveServicesManagementClientContext.ts index 32363acbb2ce..f6bbd637c171 100644 --- a/sdk/cognitiveservices/arm-cognitiveservices/src/cognitiveServicesManagementClientContext.ts +++ b/sdk/cognitiveservices/arm-cognitiveservices/src/cognitiveServicesManagementClientContext.ts @@ -13,7 +13,7 @@ import * as msRest from "@azure/ms-rest-js"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-cognitiveservices"; -const packageVersion = "3.0.0"; +const packageVersion = "3.1.0"; export class CognitiveServicesManagementClientContext extends msRestAzure.AzureServiceClient { credentials: msRest.ServiceClientCredentials; diff --git a/sdk/cognitiveservices/arm-cognitiveservices/src/models/accountsMappers.ts b/sdk/cognitiveservices/arm-cognitiveservices/src/models/accountsMappers.ts index 522047653605..ecb47c3859e7 100644 --- a/sdk/cognitiveservices/arm-cognitiveservices/src/models/accountsMappers.ts +++ b/sdk/cognitiveservices/arm-cognitiveservices/src/models/accountsMappers.ts @@ -17,9 +17,12 @@ export { CognitiveServicesResourceAndSku, ErrorBody, ErrorModel, + IpRule, MetricName, + NetworkRuleSet, RegenerateKeyParameters, Sku, Usage, - UsagesResult + UsagesResult, + VirtualNetworkRule } from "../models/mappers"; diff --git a/sdk/cognitiveservices/arm-cognitiveservices/src/models/index.ts b/sdk/cognitiveservices/arm-cognitiveservices/src/models/index.ts index 568e98a8d604..8e0217a4a9e5 100644 --- a/sdk/cognitiveservices/arm-cognitiveservices/src/models/index.ts +++ b/sdk/cognitiveservices/arm-cognitiveservices/src/models/index.ts @@ -80,6 +80,60 @@ export interface CognitiveServicesAccountUpdateParameters { properties?: any; } +/** + * A rule governing the accessibility from a specific ip address or ip range. + */ +export interface IpRule { + /** + * An IPv4 address range in CIDR notation, such as '124.56.78.91' (simple IP address) or + * '124.56.78.0/24' (all addresses that start with 124.56.78). + */ + value: string; +} + +/** + * A rule governing the accessibility from a specific virtual network. + */ +export interface VirtualNetworkRule { + /** + * Full resource id of a vnet subnet, such as + * '/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/subnet1'. + */ + id: string; + /** + * Gets the state of virtual network rule. + */ + state?: string; + /** + * Ignore missing vnet service endpoint or not. + */ + ignoreMissingVnetServiceEndpoint?: boolean; +} + +/** + * A set of rules governing the network accessibility. + */ +export interface NetworkRuleSet { + /** + * Tells what traffic can bypass network rules. This can be 'AzureServices' or 'None'. If not + * specified the default is 'AzureServices'. Possible values include: 'AzureServices', 'None' + */ + bypass?: NetworkRuleBypassOptions; + /** + * The default action when no rule from ipRules and from virtualNetworkRules match. This is only + * used after the bypass property has been evaluated. Possible values include: 'Allow', 'Deny' + */ + defaultAction?: NetworkRuleAction; + /** + * The list of IP address rules. + */ + ipRules?: IpRule[]; + /** + * The list of virtual network rules. + */ + virtualNetworkRules?: VirtualNetworkRule[]; +} + /** * Cognitive Services Account is an Azure resource representing the provisioned account, its type, * location and SKU. @@ -126,6 +180,10 @@ export interface CognitiveServicesAccount extends BaseResource { * Optional subdomain name used for token-based authentication. */ customSubDomainName?: string; + /** + * A collection of rules governing the accessibility from specific network locations. + */ + networkAcls?: NetworkRuleSet; /** * The SKU of Cognitive Services account. */ @@ -387,6 +445,42 @@ export interface CheckSkuAvailabilityResultList { value?: CheckSkuAvailabilityResult[]; } +/** + * Check Domain availability parameter. + */ +export interface CheckDomainAvailabilityParameter { + /** + * The subdomain name to use. + */ + subdomainName: string; + /** + * The Type of the resource. + */ + type: string; +} + +/** + * Check Domain availability result. + */ +export interface CheckDomainAvailabilityResult { + /** + * Indicates the given SKU is available or not. + */ + isSubdomainAvailable?: boolean; + /** + * Reason why the SKU is not available. + */ + reason?: string; + /** + * The subdomain name to use. + */ + subdomainName?: string; + /** + * The Type of the resource. + */ + type?: string; +} + /** * An interface representing ResourceSkuRestrictionInfo. */ @@ -558,6 +652,22 @@ export type SkuTier = 'Free' | 'Standard' | 'Premium'; */ export type ProvisioningState = 'Creating' | 'ResolvingDNS' | 'Moving' | 'Deleting' | 'Succeeded' | 'Failed'; +/** + * Defines values for NetworkRuleBypassOptions. + * Possible values include: 'AzureServices', 'None' + * @readonly + * @enum {string} + */ +export type NetworkRuleBypassOptions = 'AzureServices' | 'None'; + +/** + * Defines values for NetworkRuleAction. + * Possible values include: 'Allow', 'Deny' + * @readonly + * @enum {string} + */ +export type NetworkRuleAction = 'Allow' | 'Deny'; + /** * Defines values for KeyName. * Possible values include: 'Key1', 'Key2' @@ -918,3 +1028,23 @@ export type CheckSkuAvailabilityListResponse = CheckSkuAvailabilityResultList & parsedBody: CheckSkuAvailabilityResultList; }; }; + +/** + * Contains response data for the checkDomainAvailability operation. + */ +export type CheckDomainAvailabilityResponse = CheckDomainAvailabilityResult & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: CheckDomainAvailabilityResult; + }; +}; diff --git a/sdk/cognitiveservices/arm-cognitiveservices/src/models/mappers.ts b/sdk/cognitiveservices/arm-cognitiveservices/src/models/mappers.ts index 2dd60c875822..e31af7209975 100644 --- a/sdk/cognitiveservices/arm-cognitiveservices/src/models/mappers.ts +++ b/sdk/cognitiveservices/arm-cognitiveservices/src/models/mappers.ts @@ -125,6 +125,98 @@ export const CognitiveServicesAccountUpdateParameters: msRest.CompositeMapper = } }; +export const IpRule: msRest.CompositeMapper = { + serializedName: "IpRule", + type: { + name: "Composite", + className: "IpRule", + modelProperties: { + value: { + required: true, + serializedName: "value", + type: { + name: "String" + } + } + } + } +}; + +export const VirtualNetworkRule: msRest.CompositeMapper = { + serializedName: "VirtualNetworkRule", + type: { + name: "Composite", + className: "VirtualNetworkRule", + modelProperties: { + id: { + required: true, + serializedName: "id", + type: { + name: "String" + } + }, + state: { + serializedName: "state", + type: { + name: "String" + } + }, + ignoreMissingVnetServiceEndpoint: { + serializedName: "ignoreMissingVnetServiceEndpoint", + type: { + name: "Boolean" + } + } + } + } +}; + +export const NetworkRuleSet: msRest.CompositeMapper = { + serializedName: "NetworkRuleSet", + type: { + name: "Composite", + className: "NetworkRuleSet", + modelProperties: { + bypass: { + serializedName: "bypass", + type: { + name: "String" + } + }, + defaultAction: { + serializedName: "defaultAction", + type: { + name: "String" + } + }, + ipRules: { + serializedName: "ipRules", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "IpRule" + } + } + } + }, + virtualNetworkRules: { + serializedName: "virtualNetworkRules", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "VirtualNetworkRule" + } + } + } + } + } + } +}; + export const CognitiveServicesAccount: msRest.CompositeMapper = { serializedName: "CognitiveServicesAccount", type: { @@ -188,6 +280,13 @@ export const CognitiveServicesAccount: msRest.CompositeMapper = { name: "String" } }, + networkAcls: { + serializedName: "properties.networkAcls", + type: { + name: "Composite", + className: "NetworkRuleSet" + } + }, sku: { serializedName: "sku", type: { @@ -625,6 +724,64 @@ export const CheckSkuAvailabilityResultList: msRest.CompositeMapper = { } }; +export const CheckDomainAvailabilityParameter: msRest.CompositeMapper = { + serializedName: "CheckDomainAvailabilityParameter", + type: { + name: "Composite", + className: "CheckDomainAvailabilityParameter", + modelProperties: { + subdomainName: { + required: true, + serializedName: "subdomainName", + type: { + name: "String" + } + }, + type: { + required: true, + serializedName: "type", + type: { + name: "String" + } + } + } + } +}; + +export const CheckDomainAvailabilityResult: msRest.CompositeMapper = { + serializedName: "CheckDomainAvailabilityResult", + type: { + name: "Composite", + className: "CheckDomainAvailabilityResult", + modelProperties: { + isSubdomainAvailable: { + serializedName: "isSubdomainAvailable", + type: { + name: "Boolean" + } + }, + reason: { + serializedName: "reason", + type: { + name: "String" + } + }, + subdomainName: { + serializedName: "subdomainName", + type: { + name: "String" + } + }, + type: { + serializedName: "type", + type: { + name: "String" + } + } + } + } +}; + export const ResourceSkuRestrictionInfo: msRest.CompositeMapper = { serializedName: "ResourceSkuRestrictionInfo", type: { From fd4406c3443fe05c822babad137e8e4c760d8d6b Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Mon, 24 Jun 2019 16:26:11 -0700 Subject: [PATCH 181/289] Generate @azure/arm-machinelearningservices package (#4044) * Generate @azure/arm-machinelearningservices package * Bump the version --- .../arm-machinelearningservices/LICENSE.txt | 2 +- .../arm-machinelearningservices/README.md | 9 +- .../arm-machinelearningservices/package.json | 16 +- .../rollup.config.js | 22 +- .../src/azureMachineLearningWorkspaces.ts | 4 + .../azureMachineLearningWorkspacesContext.ts | 4 +- .../src/models/index.ts | 1348 +++++++++++------ .../models/machineLearningComputeMappers.ts | 59 +- .../src/models/mappers.ts | 670 +++++++- .../src/models/operationsMappers.ts | 15 +- .../src/models/parameters.ts | 23 + .../src/models/usagesMappers.ts | 15 + .../src/models/virtualMachineSizesMappers.ts | 14 + .../src/models/workspacesMappers.ts | 53 +- .../src/operations/index.ts | 2 + .../src/operations/machineLearningCompute.ts | 125 +- .../src/operations/usages.ts | 133 ++ .../src/operations/virtualMachineSizes.ts | 82 + 18 files changed, 1985 insertions(+), 611 deletions(-) create mode 100644 sdk/machinelearningservices/arm-machinelearningservices/src/models/usagesMappers.ts create mode 100644 sdk/machinelearningservices/arm-machinelearningservices/src/models/virtualMachineSizesMappers.ts create mode 100644 sdk/machinelearningservices/arm-machinelearningservices/src/operations/usages.ts create mode 100644 sdk/machinelearningservices/arm-machinelearningservices/src/operations/virtualMachineSizes.ts diff --git a/sdk/machinelearningservices/arm-machinelearningservices/LICENSE.txt b/sdk/machinelearningservices/arm-machinelearningservices/LICENSE.txt index a70e8cf66038..b73b4a1293c3 100644 --- a/sdk/machinelearningservices/arm-machinelearningservices/LICENSE.txt +++ b/sdk/machinelearningservices/arm-machinelearningservices/LICENSE.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2018 Microsoft +Copyright (c) 2019 Microsoft Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/sdk/machinelearningservices/arm-machinelearningservices/README.md b/sdk/machinelearningservices/arm-machinelearningservices/README.md index c19b471b053e..d6b986c2f0d7 100644 --- a/sdk/machinelearningservices/arm-machinelearningservices/README.md +++ b/sdk/machinelearningservices/arm-machinelearningservices/README.md @@ -9,7 +9,7 @@ This package contains an isomorphic SDK for AzureMachineLearningWorkspaces. ### How to Install -``` +```bash npm install @azure/arm-machinelearningservices ``` @@ -19,13 +19,13 @@ npm install @azure/arm-machinelearningservices ##### Install @azure/ms-rest-nodeauth -``` +```bash npm install @azure/ms-rest-nodeauth ``` ##### Sample code -```ts +```typescript import * as msRest from "@azure/ms-rest-js"; import * as msRestAzure from "@azure/ms-rest-azure-js"; import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; @@ -47,7 +47,7 @@ msRestNodeAuth.interactiveLogin().then((creds) => { ##### Install @azure/ms-rest-browserauth -``` +```bash npm install @azure/ms-rest-browserauth ``` @@ -95,5 +95,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) - ![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/machinelearningservices/arm-machinelearningservices/README.png) diff --git a/sdk/machinelearningservices/arm-machinelearningservices/package.json b/sdk/machinelearningservices/arm-machinelearningservices/package.json index 62f21af0210a..29592ca0a1d2 100644 --- a/sdk/machinelearningservices/arm-machinelearningservices/package.json +++ b/sdk/machinelearningservices/arm-machinelearningservices/package.json @@ -2,10 +2,10 @@ "name": "@azure/arm-machinelearningservices", "author": "Microsoft Corporation", "description": "AzureMachineLearningWorkspaces Library with typescript type definitions for node.js and browser.", - "version": "2.1.0", + "version": "3.0.0", "dependencies": { - "@azure/ms-rest-azure-js": "^1.1.0", - "@azure/ms-rest-js": "^1.1.0", + "@azure/ms-rest-azure-js": "^1.3.2", + "@azure/ms-rest-js": "^1.8.1", "tslib": "^1.9.3" }, "keywords": [ @@ -23,15 +23,16 @@ "typescript": "^3.1.1", "rollup": "^0.66.2", "rollup-plugin-node-resolve": "^3.4.0", + "rollup-plugin-sourcemaps": "^0.4.2", "uglify-js": "^3.4.9" }, - "homepage": "https://github.com/azure/azure-sdk-for-js/tree/master/sdk/machinelearningservices/arm-machinelearningservices", + "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/machinelearningservices/arm-machinelearningservices", "repository": { "type": "git", - "url": "https://github.com/azure/azure-sdk-for-js.git" + "url": "https://github.com/Azure/azure-sdk-for-js.git" }, "bugs": { - "url": "https://github.com/azure/azure-sdk-for-js/issues" + "url": "https://github.com/Azure/azure-sdk-for-js/issues" }, "files": [ "dist/**/*.js", @@ -43,6 +44,7 @@ "esm/**/*.d.ts", "esm/**/*.d.ts.map", "src/**/*.ts", + "README.md", "rollup.config.js", "tsconfig.json" ], @@ -52,5 +54,5 @@ "prepack": "npm install && npm run build" }, "sideEffects": false, - "authPublish": true + "autoPublish": true } diff --git a/sdk/machinelearningservices/arm-machinelearningservices/rollup.config.js b/sdk/machinelearningservices/arm-machinelearningservices/rollup.config.js index 8e10c7141784..1a9e76332601 100644 --- a/sdk/machinelearningservices/arm-machinelearningservices/rollup.config.js +++ b/sdk/machinelearningservices/arm-machinelearningservices/rollup.config.js @@ -1,10 +1,16 @@ +import rollup from "rollup"; import nodeResolve from "rollup-plugin-node-resolve"; +import sourcemaps from "rollup-plugin-sourcemaps"; + /** - * @type {import('rollup').RollupFileOptions} + * @type {rollup.RollupFileOptions} */ const config = { - input: './esm/azureMachineLearningWorkspaces.js', - external: ["@azure/ms-rest-js", "@azure/ms-rest-azure-js"], + input: "./esm/azureMachineLearningWorkspaces.js", + external: [ + "@azure/ms-rest-js", + "@azure/ms-rest-azure-js" + ], output: { file: "./dist/arm-machinelearningservices.js", format: "umd", @@ -16,16 +22,16 @@ const config = { }, banner: `/* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */` }, plugins: [ - nodeResolve({ module: true }) + nodeResolve({ module: true }), + sourcemaps() ] }; + export default config; diff --git a/sdk/machinelearningservices/arm-machinelearningservices/src/azureMachineLearningWorkspaces.ts b/sdk/machinelearningservices/arm-machinelearningservices/src/azureMachineLearningWorkspaces.ts index e021f907b8b2..c8b88568754d 100644 --- a/sdk/machinelearningservices/arm-machinelearningservices/src/azureMachineLearningWorkspaces.ts +++ b/sdk/machinelearningservices/arm-machinelearningservices/src/azureMachineLearningWorkspaces.ts @@ -19,6 +19,8 @@ class AzureMachineLearningWorkspaces extends AzureMachineLearningWorkspacesConte // Operation groups operations: operations.Operations; workspaces: operations.Workspaces; + usages: operations.Usages; + virtualMachineSizes: operations.VirtualMachineSizes; machineLearningCompute: operations.MachineLearningCompute; /** @@ -31,6 +33,8 @@ class AzureMachineLearningWorkspaces extends AzureMachineLearningWorkspacesConte super(credentials, subscriptionId, options); this.operations = new operations.Operations(this); this.workspaces = new operations.Workspaces(this); + this.usages = new operations.Usages(this); + this.virtualMachineSizes = new operations.VirtualMachineSizes(this); this.machineLearningCompute = new operations.MachineLearningCompute(this); } } diff --git a/sdk/machinelearningservices/arm-machinelearningservices/src/azureMachineLearningWorkspacesContext.ts b/sdk/machinelearningservices/arm-machinelearningservices/src/azureMachineLearningWorkspacesContext.ts index 6b0d543270a9..9a1cb99cc2a5 100644 --- a/sdk/machinelearningservices/arm-machinelearningservices/src/azureMachineLearningWorkspacesContext.ts +++ b/sdk/machinelearningservices/arm-machinelearningservices/src/azureMachineLearningWorkspacesContext.ts @@ -13,7 +13,7 @@ import * as msRest from "@azure/ms-rest-js"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-machinelearningservices"; -const packageVersion = "0.1.0"; +const packageVersion = "3.0.0"; export class AzureMachineLearningWorkspacesContext extends msRestAzure.AzureServiceClient { credentials: msRest.ServiceClientCredentials; @@ -44,7 +44,7 @@ export class AzureMachineLearningWorkspacesContext extends msRestAzure.AzureServ super(credentials, options); - this.apiVersion = '2018-03-01-preview'; + this.apiVersion = '2019-05-01'; this.acceptLanguage = 'en-US'; this.longRunningOperationRetryTimeout = 30; this.baseUri = options.baseUri || this.baseUri || "https://management.azure.com"; diff --git a/sdk/machinelearningservices/arm-machinelearningservices/src/models/index.ts b/sdk/machinelearningservices/arm-machinelearningservices/src/models/index.ts index a8edc6443acb..652dcfba3a34 100644 --- a/sdk/machinelearningservices/arm-machinelearningservices/src/models/index.ts +++ b/sdk/machinelearningservices/arm-machinelearningservices/src/models/index.ts @@ -1,11 +1,9 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ import { BaseResource, CloudError, AzureServiceClientOptions } from "@azure/ms-rest-azure-js"; @@ -13,1086 +11,1346 @@ import * as msRest from "@azure/ms-rest-js"; export { BaseResource, CloudError }; - /** - * @interface - * An interface representing OperationDisplay. * Display name of operation - * */ export interface OperationDisplay { /** - * @member {string} [provider] The resource provider name: - * Microsoft.MachineLearningExperimentation + * The resource provider name: Microsoft.MachineLearningExperimentation */ provider?: string; /** - * @member {string} [resource] The resource on which the operation is - * performed. + * The resource on which the operation is performed. */ resource?: string; /** - * @member {string} [operation] The operation that users can perform. + * The operation that users can perform. */ operation?: string; /** - * @member {string} [description] The description for the operation. + * The description for the operation. */ description?: string; } /** - * @interface - * An interface representing Operation. * Azure Machine Learning workspace REST API operation - * */ export interface Operation { /** - * @member {string} [name] Operation name: {provider}/{resource}/{operation} + * Operation name: {provider}/{resource}/{operation} */ name?: string; /** - * @member {OperationDisplay} [display] Display name of operation + * Display name of operation */ display?: OperationDisplay; } /** - * @interface - * An interface representing Resource. * Azure Resource Manager resource envelope. - * - * @extends BaseResource */ export interface Resource extends BaseResource { /** - * @member {string} [id] Specifies the resource ID. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Specifies the resource ID. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly id?: string; /** - * @member {string} [name] Specifies the name of the resource. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Specifies the name of the resource. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly name?: string; /** - * @member {Identity} [identity] The identity of the resource. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The identity of the resource. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly identity?: Identity; /** - * @member {string} [location] Specifies the location of the resource. + * Specifies the location of the resource. */ location?: string; /** - * @member {string} [type] Specifies the type of the resource. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Specifies the type of the resource. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly type?: string; /** - * @member {{ [propertyName: string]: string }} [tags] Contains resource tags - * defined as key/value pairs. + * Contains resource tags defined as key/value pairs. */ tags?: { [propertyName: string]: string }; } /** - * @interface - * An interface representing Workspace. * An object that represents a machine learning workspace. - * - * @extends Resource */ export interface Workspace extends Resource { /** - * @member {string} [workspaceId] The immutable id associated with this - * workspace. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The immutable id associated with this workspace. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly workspaceId?: string; /** - * @member {string} [description] The description of this workspace. + * The description of this workspace. */ description?: string; /** - * @member {string} [friendlyName] The friendly name for this workspace. This - * name in mutable + * The friendly name for this workspace. This name in mutable */ friendlyName?: string; /** - * @member {Date} [creationTime] The creation time of the machine learning - * workspace in ISO8601 format. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The creation time of the machine learning workspace in ISO8601 format. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly creationTime?: Date; /** - * @member {string} [batchaiWorkspace] ARM id of the Batch AI workspace - * associated with this workspace. This cannot be changed once the workspace - * has been created - */ - batchaiWorkspace?: string; - /** - * @member {string} [keyVault] ARM id of the key vault associated with this - * workspace. This cannot be changed once the workspace has been created + * ARM id of the key vault associated with this workspace. This cannot be changed once the + * workspace has been created */ keyVault?: string; /** - * @member {string} [applicationInsights] ARM id of the application insights - * associated with this workspace. This cannot be changed once the workspace - * has been created + * ARM id of the application insights associated with this workspace. This cannot be changed once + * the workspace has been created */ applicationInsights?: string; /** - * @member {string} [containerRegistry] ARM id of the container registry - * associated with this workspace. This cannot be changed once the workspace - * has been created + * ARM id of the container registry associated with this workspace. This cannot be changed once + * the workspace has been created */ containerRegistry?: string; /** - * @member {string} [storageAccount] ARM id of the storage account associated - * with this workspace. This cannot be changed once the workspace has been - * created + * ARM id of the storage account associated with this workspace. This cannot be changed once the + * workspace has been created */ storageAccount?: string; /** - * @member {string} [discoveryUrl] Url for the discovery service to identify - * regional endpoints for machine learning experimentation services + * Url for the discovery service to identify regional endpoints for machine learning + * experimentation services */ discoveryUrl?: string; /** - * @member {ProvisioningState} [provisioningState] The current deployment - * state of workspace resource. The provisioningState is to indicate states - * for resource provisioning. Possible values include: 'Unknown', 'Updating', - * 'Creating', 'Deleting', 'Succeeded', 'Failed', 'Canceled' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The current deployment state of workspace resource. The provisioningState is to indicate + * states for resource provisioning. Possible values include: 'Unknown', 'Updating', 'Creating', + * 'Deleting', 'Succeeded', 'Failed', 'Canceled' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: ProvisioningState; } /** - * @interface - * An interface representing WorkspaceUpdateParameters. * The parameters for updating a machine learning workspace. - * */ export interface WorkspaceUpdateParameters { /** - * @member {{ [propertyName: string]: string }} [tags] The resource tags for - * the machine learning workspace. + * The resource tags for the machine learning workspace. */ tags?: { [propertyName: string]: string }; /** - * @member {string} [description] The description of this workspace. + * The description of this workspace. */ description?: string; /** - * @member {string} [friendlyName] The friendly name for this workspace. + * The friendly name for this workspace. */ friendlyName?: string; } /** - * @interface - * An interface representing Identity. + * The Usage Names. + */ +export interface UsageName { + /** + * The name of the resource. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly value?: string; + /** + * The localized name of the resource. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly localizedValue?: string; +} + +/** + * Describes AML Resource Usage. + */ +export interface Usage { + /** + * Specifies the resource ID. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly id?: string; + /** + * Specifies the resource type. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly type?: string; + /** + * An enum describing the unit of usage measurement. Possible values include: 'Count' + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly unit?: UsageUnit; + /** + * The current usage of the resource. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly currentValue?: number; + /** + * The maximum permitted usage of the resource. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly limit?: number; + /** + * The name of the type of usage. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly name?: UsageName; +} + +/** + * Describes the properties of a VM size. + */ +export interface VirtualMachineSize { + /** + * Virtual Machine size name. The name of the virtual machine size. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly name?: string; + /** + * Virtual Machine family name. The family name of the virtual machine size. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly family?: string; + /** + * Number of vPUs. The number of vCPUs supported by the virtual machine size. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly vCPUs?: number; + /** + * OS VHD Disk size. The OS VHD disk size, in MB, allowed by the virtual machine size. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly osVhdSizeMB?: number; + /** + * Resource volume size. The resource volume size, in MB, allowed by the virtual machine size. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly maxResourceVolumeMB?: number; + /** + * Memory size. The amount of memory, in GB, supported by the virtual machine size. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly memoryGB?: number; + /** + * Low priority capable. Specifies if the virtual machine size supports low priority VMs. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly lowPriorityCapable?: boolean; + /** + * Premium IO supported. Specifies if the virtual machine size supports premium IO. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly premiumIO?: boolean; +} + +/** + * The List Virtual Machine size operation response. + */ +export interface VirtualMachineSizeListResult { + /** + * The list of virtual machine sizes supported by AmlCompute. + */ + amlCompute?: VirtualMachineSize[]; +} + +/** * Identity for the resource. - * */ export interface Identity { /** - * @member {string} [principalId] The principal ID of resource identity. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The principal ID of resource identity. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly principalId?: string; /** - * @member {string} [tenantId] The tenant ID of resource. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The tenant ID of resource. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly tenantId?: string; /** - * @member {ResourceIdentityType} [type] The identity type. Possible values - * include: 'SystemAssigned' + * The identity type. Possible values include: 'SystemAssigned' */ type?: ResourceIdentityType; } /** - * @interface + * Represents a resource ID. For example, for a subnet, it is the resource URL for the subnet. + */ +export interface ResourceId extends BaseResource { + /** + * The ID of the resource + */ + id: string; +} + +/** * An interface representing Password. */ export interface Password { /** - * @member {string} [name] **NOTE: This property will not be serialized. It - * can only be populated by the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly name?: string; /** - * @member {string} [value] **NOTE: This property will not be serialized. It - * can only be populated by the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly value?: string; } /** - * @interface * An interface representing RegistryListCredentialsResult. */ export interface RegistryListCredentialsResult { /** - * @member {string} [location] **NOTE: This property will not be serialized. - * It can only be populated by the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly location?: string; /** - * @member {string} [username] **NOTE: This property will not be serialized. - * It can only be populated by the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly username?: string; - /** - * @member {Password[]} [passwords] - */ passwords?: Password[]; } /** - * @interface * An interface representing ListWorkspaceKeysResult. */ export interface ListWorkspaceKeysResult { /** - * @member {string} [userStorageKey] **NOTE: This property will not be - * serialized. It can only be populated by the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly userStorageKey?: string; /** - * @member {string} [userStorageResourceId] **NOTE: This property will not be - * serialized. It can only be populated by the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly userStorageResourceId?: string; /** - * @member {string} [appInsightsInstrumentationKey] **NOTE: This property - * will not be serialized. It can only be populated by the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly appInsightsInstrumentationKey?: string; /** - * @member {RegistryListCredentialsResult} [containerRegistryCredentials] - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly containerRegistryCredentials?: RegistryListCredentialsResult; } /** - * @interface - * An interface representing ErrorDetail. * Error detail information. - * */ export interface ErrorDetail { /** - * @member {string} code Error code. + * Error code. */ code: string; /** - * @member {string} message Error message. + * Error message. */ message: string; } /** - * @interface - * An interface representing ErrorResponse. * Error response information. - * */ export interface ErrorResponse { /** - * @member {string} code Error code. + * Error code. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ - code: string; + readonly code?: string; /** - * @member {string} message Error message. + * Error message. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ - message: string; + readonly message?: string; /** - * @member {ErrorDetail[]} [details] An array of error detail objects. + * An array of error detail objects. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ - details?: ErrorDetail[]; + readonly details?: ErrorDetail[]; } /** - * @interface - * An interface representing MachineLearningServiceError. * Wrapper for error response to follow ARM guidelines. - * */ export interface MachineLearningServiceError { /** - * @member {ErrorResponse} [error] The error response. + * The error response. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ - error?: ErrorResponse; + readonly error?: ErrorResponse; } /** * Contains the possible cases for Compute. */ -export type ComputeUnion = Compute | AKS | BatchAI | VirtualMachine | HDInsight | DataFactory; +export type ComputeUnion = Compute | AKS | AmlCompute | VirtualMachine | HDInsight | DataFactory | Databricks | DataLakeAnalytics; /** - * @interface - * An interface representing Compute. * Machine Learning compute object. - * */ export interface Compute { /** - * @member {string} computeType Polymorphic Discriminator + * Polymorphic Discriminator */ computeType: "Compute"; /** - * @member {string} [computeLocation] Location for the underlying compute + * Location for the underlying compute */ computeLocation?: string; /** - * @member {ProvisioningState} [provisioningState] The provision state of the - * cluster. Valid values are Unknown, Updating, Provisioning, Succeeded, and - * Failed. Possible values include: 'Unknown', 'Updating', 'Creating', - * 'Deleting', 'Succeeded', 'Failed', 'Canceled' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The provision state of the cluster. Valid values are Unknown, Updating, Provisioning, + * Succeeded, and Failed. Possible values include: 'Unknown', 'Updating', 'Creating', 'Deleting', + * 'Succeeded', 'Failed', 'Canceled' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: ProvisioningState; /** - * @member {string} [description] The description of the Machine Learning - * compute. + * The description of the Machine Learning compute. */ description?: string; /** - * @member {Date} [createdOn] The date and time when the compute was created. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The date and time when the compute was created. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly createdOn?: Date; /** - * @member {Date} [modifiedOn] The date and time when the compute was last - * modified. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The date and time when the compute was last modified. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly modifiedOn?: Date; /** - * @member {string} [resourceId] ARM resource id of the compute + * ARM resource id of the underlying compute */ resourceId?: string; /** - * @member {MachineLearningServiceError[]} [provisioningErrors] Errors during - * provisioning - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Errors during provisioning + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningErrors?: MachineLearningServiceError[]; + /** + * Indicating whether the compute was provisioned by user and brought from outside if true, or + * machine learning service provisioned it if false. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly isAttachedCompute?: boolean; } /** - * @interface - * An interface representing ComputeResource. * Machine Learning compute object wrapped into ARM resource envelope. - * - * @extends Resource */ export interface ComputeResource extends Resource { /** - * @member {ComputeUnion} [properties] Compute properties + * Compute properties */ properties?: ComputeUnion; } /** - * @interface - * An interface representing SystemService. * A system service running on a compute. - * */ export interface SystemService { /** - * @member {string} [systemServiceType] The type of this system service. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The type of this system service. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly systemServiceType?: string; /** - * @member {string} [publicIpAddress] Public IP address - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Public IP address + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly publicIpAddress?: string; /** - * @member {string} [version] The version for this type. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The version for this type. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly version?: string; } /** - * @interface - * An interface representing SslConfiguration. - * The ssl configugation for scoring - * + * The ssl configuration for scoring */ export interface SslConfiguration { /** - * @member {Status} [status] Enable or disable ssl for scoring. Possible - * values include: 'Disabled', 'Enabled' + * Enable or disable ssl for scoring. Possible values include: 'Disabled', 'Enabled' */ status?: Status; /** - * @member {string} [cert] Cert data + * Cert data */ cert?: string; /** - * @member {string} [key] Key data + * Key data */ key?: string; /** - * @member {string} [cname] CNAME of the cert + * CNAME of the cert */ cname?: string; } /** - * @interface - * An interface representing AKSProperties. + * Advance configuration for AKS networking + */ +export interface AksNetworkingConfiguration { + /** + * Virtual network subnet resource ID the compute nodes belong to + */ + subnetId?: string; + /** + * A CIDR notation IP range from which to assign service cluster IPs. It must not overlap with + * any Subnet IP ranges. + */ + serviceCidr?: string; + /** + * An IP address assigned to the Kubernetes DNS service. It must be within the Kubernetes service + * address range specified in serviceCidr. + */ + dnsServiceIP?: string; + /** + * A CIDR notation IP range assigned to the Docker bridge network. It must not overlap with any + * Subnet IP ranges or the Kubernetes service address range. + */ + dockerBridgeCidr?: string; +} + +/** * AKS properties - * */ export interface AKSProperties { /** - * @member {string} [clusterFqdn] Cluster full qualified domain name + * Cluster full qualified domain name */ clusterFqdn?: string; /** - * @member {SystemService[]} [systemServices] System services + * System services + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ - systemServices?: SystemService[]; + readonly systemServices?: SystemService[]; /** - * @member {number} [agentCount] Number of agents + * Number of agents */ agentCount?: number; /** - * @member {string} [agentVMSize] Agent virtual machine size + * Agent virtual machine size */ agentVMSize?: string; /** - * @member {SslConfiguration} [sslConfiguration] SSL configuration + * SSL configuration */ sslConfiguration?: SslConfiguration; + /** + * AKS networking configuration for vnet + */ + aksNetworkingConfiguration?: AksNetworkingConfiguration; } /** - * @interface - * An interface representing AKS. * A Machine Learning compute based on AKS. - * */ export interface AKS { /** - * @member {string} computeType Polymorphic Discriminator + * Polymorphic Discriminator */ computeType: "AKS"; /** - * @member {string} [computeLocation] Location for the underlying compute + * Location for the underlying compute */ computeLocation?: string; /** - * @member {ProvisioningState} [provisioningState] The provision state of the - * cluster. Valid values are Unknown, Updating, Provisioning, Succeeded, and - * Failed. Possible values include: 'Unknown', 'Updating', 'Creating', - * 'Deleting', 'Succeeded', 'Failed', 'Canceled' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The provision state of the cluster. Valid values are Unknown, Updating, Provisioning, + * Succeeded, and Failed. Possible values include: 'Unknown', 'Updating', 'Creating', 'Deleting', + * 'Succeeded', 'Failed', 'Canceled' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: ProvisioningState; /** - * @member {string} [description] The description of the Machine Learning - * compute. + * The description of the Machine Learning compute. */ description?: string; /** - * @member {Date} [createdOn] The date and time when the compute was created. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The date and time when the compute was created. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly createdOn?: Date; /** - * @member {Date} [modifiedOn] The date and time when the compute was last - * modified. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The date and time when the compute was last modified. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly modifiedOn?: Date; /** - * @member {string} [resourceId] ARM resource id of the compute + * ARM resource id of the underlying compute */ resourceId?: string; /** - * @member {MachineLearningServiceError[]} [provisioningErrors] Errors during - * provisioning - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Errors during provisioning + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningErrors?: MachineLearningServiceError[]; /** - * @member {AKSProperties} [properties] AKS properties + * Indicating whether the compute was provisioned by user and brought from outside if true, or + * machine learning service provisioned it if false. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly isAttachedCompute?: boolean; + /** + * AKS properties */ properties?: AKSProperties; } /** - * @interface - * An interface representing ScaleSettings. - * scale settings for BatchAI Compute - * + * scale settings for AML Compute */ export interface ScaleSettings { /** - * @member {number} [maxNodeCount] Max number of nodes to use + * Max number of nodes to use */ - maxNodeCount?: number; + maxNodeCount: number; /** - * @member {number} [minNodeCount] Min number of nodes to use + * Min number of nodes to use. Default value: 0. */ minNodeCount?: number; /** - * @member {boolean} [autoScaleEnabled] Enable or disable auto scale + * Node Idle Time before scaling down amlCompute */ - autoScaleEnabled?: boolean; + nodeIdleTimeBeforeScaleDown?: string; } /** - * @interface - * An interface representing BatchAIProperties. - * BatchAI properties - * + * Settings for user account that gets created on each on the nodes of a compute. + */ +export interface UserAccountCredentials { + /** + * User name. Name of the administrator user account which can be used to SSH to nodes. + */ + adminUserName: string; + /** + * SSH public key. SSH public key of the administrator user account. + */ + adminUserSshPublicKey?: string; + /** + * Password. Password of the administrator user account. + */ + adminUserPassword?: string; +} + +/** + * Counts of various compute node states on the amlCompute. + */ +export interface NodeStateCounts { + /** + * Idle node count. Number of compute nodes in idle state. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly idleNodeCount?: number; + /** + * Running node count. Number of compute nodes which are running jobs. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly runningNodeCount?: number; + /** + * Preparing node count. Number of compute nodes which are being prepared. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly preparingNodeCount?: number; + /** + * Unusable node count. Number of compute nodes which are in unusable state. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly unusableNodeCount?: number; + /** + * Leaving node count. Number of compute nodes which are leaving the amlCompute. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly leavingNodeCount?: number; + /** + * Preempted node count. Number of compute nodes which are in preempted state. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly preemptedNodeCount?: number; +} + +/** + * AML Compute properties */ -export interface BatchAIProperties { +export interface AmlComputeProperties { /** - * @member {string} [vmSize] Virtual Machine Size + * Virtual Machine Size */ vmSize?: string; /** - * @member {string} [vmPriority] Virtual Machine priority + * Virtual Machine priority. Possible values include: 'Dedicated', 'LowPriority' */ - vmPriority?: string; + vmPriority?: VmPriority; /** - * @member {ScaleSettings} [scaleSettings] Scale settings for BatchAI + * Scale settings for AML Compute */ scaleSettings?: ScaleSettings; + /** + * User account credentials. Credentials for an administrator user account that will be created + * on each compute node. + */ + userAccountCredentials?: UserAccountCredentials; + /** + * Subnet. Virtual network subnet resource ID the compute nodes belong to. + */ + subnet?: ResourceId; + /** + * Allocation state. Allocation state of the compute. Possible values are: steady - Indicates + * that the compute is not resizing. There are no changes to the number of compute nodes in the + * compute in progress. A compute enters this state when it is created and when no operations are + * being performed on the compute to change the number of compute nodes. resizing - Indicates + * that the compute is resizing; that is, compute nodes are being added to or removed from the + * compute. Possible values include: 'Steady', 'Resizing' + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly allocationState?: AllocationState; + /** + * Allocation state transition time. The time at which the compute entered its current allocation + * state. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly allocationStateTransitionTime?: Date; + /** + * Errors. Collection of errors encountered by various compute nodes during node setup. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly errors?: MachineLearningServiceError[]; + /** + * Current node count. The number of compute nodes currently assigned to the compute. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly currentNodeCount?: number; + /** + * Target node count. The target number of compute nodes for the compute. If the allocationState + * is resizing, this property denotes the target node count for the ongoing resize operation. If + * the allocationState is steady, this property denotes the target node count for the previous + * resize operation. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly targetNodeCount?: number; + /** + * Node state counts. Counts of various node states on the compute. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly nodeStateCounts?: NodeStateCounts; } /** - * @interface - * An interface representing BatchAI. - * A Machine Learning compute based on Azure BatchAI. - * + * An Azure Machine Learning compute. */ -export interface BatchAI { +export interface AmlCompute { /** - * @member {string} computeType Polymorphic Discriminator + * Polymorphic Discriminator */ - computeType: "BatchAI"; + computeType: "AmlCompute"; /** - * @member {string} [computeLocation] Location for the underlying compute + * Location for the underlying compute */ computeLocation?: string; /** - * @member {ProvisioningState} [provisioningState] The provision state of the - * cluster. Valid values are Unknown, Updating, Provisioning, Succeeded, and - * Failed. Possible values include: 'Unknown', 'Updating', 'Creating', - * 'Deleting', 'Succeeded', 'Failed', 'Canceled' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The provision state of the cluster. Valid values are Unknown, Updating, Provisioning, + * Succeeded, and Failed. Possible values include: 'Unknown', 'Updating', 'Creating', 'Deleting', + * 'Succeeded', 'Failed', 'Canceled' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: ProvisioningState; /** - * @member {string} [description] The description of the Machine Learning - * compute. + * The description of the Machine Learning compute. */ description?: string; /** - * @member {Date} [createdOn] The date and time when the compute was created. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The date and time when the compute was created. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly createdOn?: Date; /** - * @member {Date} [modifiedOn] The date and time when the compute was last - * modified. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The date and time when the compute was last modified. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly modifiedOn?: Date; /** - * @member {string} [resourceId] ARM resource id of the compute + * ARM resource id of the underlying compute */ resourceId?: string; /** - * @member {MachineLearningServiceError[]} [provisioningErrors] Errors during - * provisioning - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Errors during provisioning + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningErrors?: MachineLearningServiceError[]; /** - * @member {BatchAIProperties} [properties] BatchAI properties + * Indicating whether the compute was provisioned by user and brought from outside if true, or + * machine learning service provisioned it if false. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly isAttachedCompute?: boolean; + /** + * AML Compute properties */ - properties?: BatchAIProperties; + properties?: AmlComputeProperties; } /** - * @interface - * An interface representing VirtualMachineSshCredentials. * Admin credentials for virtual machine - * */ export interface VirtualMachineSshCredentials { /** - * @member {string} [username] Username of admin account + * Username of admin account */ username?: string; /** - * @member {string} [password] Password of admin account + * Password of admin account */ password?: string; /** - * @member {string} [publicKeyData] Public key data + * Public key data */ publicKeyData?: string; /** - * @member {string} [privateKeyData] Private key data + * Private key data */ privateKeyData?: string; } /** - * @interface * An interface representing VirtualMachineProperties. */ export interface VirtualMachineProperties { /** - * @member {string} [virtualMachineSize] Virtual Machine size + * Virtual Machine size */ virtualMachineSize?: string; /** - * @member {number} [sshPort] Port open for ssh connections. + * Port open for ssh connections. */ sshPort?: number; /** - * @member {string} [address] Public IP address of the virtual machine. + * Public IP address of the virtual machine. */ address?: string; /** - * @member {VirtualMachineSshCredentials} [administratorAccount] Admin - * credentials for virtual machine + * Admin credentials for virtual machine */ administratorAccount?: VirtualMachineSshCredentials; } /** - * @interface - * An interface representing VirtualMachine. * A Machine Learning compute based on Azure Virtual Machines. - * */ export interface VirtualMachine { /** - * @member {string} computeType Polymorphic Discriminator + * Polymorphic Discriminator */ computeType: "VirtualMachine"; /** - * @member {string} [computeLocation] Location for the underlying compute + * Location for the underlying compute */ computeLocation?: string; /** - * @member {ProvisioningState} [provisioningState] The provision state of the - * cluster. Valid values are Unknown, Updating, Provisioning, Succeeded, and - * Failed. Possible values include: 'Unknown', 'Updating', 'Creating', - * 'Deleting', 'Succeeded', 'Failed', 'Canceled' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The provision state of the cluster. Valid values are Unknown, Updating, Provisioning, + * Succeeded, and Failed. Possible values include: 'Unknown', 'Updating', 'Creating', 'Deleting', + * 'Succeeded', 'Failed', 'Canceled' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: ProvisioningState; /** - * @member {string} [description] The description of the Machine Learning - * compute. + * The description of the Machine Learning compute. */ description?: string; /** - * @member {Date} [createdOn] The date and time when the compute was created. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The date and time when the compute was created. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly createdOn?: Date; /** - * @member {Date} [modifiedOn] The date and time when the compute was last - * modified. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The date and time when the compute was last modified. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly modifiedOn?: Date; /** - * @member {string} [resourceId] ARM resource id of the compute + * ARM resource id of the underlying compute */ resourceId?: string; /** - * @member {MachineLearningServiceError[]} [provisioningErrors] Errors during - * provisioning - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Errors during provisioning + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningErrors?: MachineLearningServiceError[]; /** - * @member {VirtualMachineProperties} [properties] + * Indicating whether the compute was provisioned by user and brought from outside if true, or + * machine learning service provisioned it if false. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ + readonly isAttachedCompute?: boolean; properties?: VirtualMachineProperties; } /** - * @interface * An interface representing HDInsightProperties. */ export interface HDInsightProperties { /** - * @member {number} [sshPort] Port open for ssh connections on the master - * node of the cluster. + * Port open for ssh connections on the master node of the cluster. */ sshPort?: number; /** - * @member {string} [address] Public IP address of the master node of the - * cluster. + * Public IP address of the master node of the cluster. */ address?: string; /** - * @member {VirtualMachineSshCredentials} [administratorAccount] Admin - * credentials for master node of the cluster + * Admin credentials for master node of the cluster */ administratorAccount?: VirtualMachineSshCredentials; } /** - * @interface - * An interface representing HDInsight. * A HDInsight compute. - * */ export interface HDInsight { /** - * @member {string} computeType Polymorphic Discriminator + * Polymorphic Discriminator */ computeType: "HDInsight"; /** - * @member {string} [computeLocation] Location for the underlying compute + * Location for the underlying compute */ computeLocation?: string; /** - * @member {ProvisioningState} [provisioningState] The provision state of the - * cluster. Valid values are Unknown, Updating, Provisioning, Succeeded, and - * Failed. Possible values include: 'Unknown', 'Updating', 'Creating', - * 'Deleting', 'Succeeded', 'Failed', 'Canceled' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The provision state of the cluster. Valid values are Unknown, Updating, Provisioning, + * Succeeded, and Failed. Possible values include: 'Unknown', 'Updating', 'Creating', 'Deleting', + * 'Succeeded', 'Failed', 'Canceled' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: ProvisioningState; /** - * @member {string} [description] The description of the Machine Learning - * compute. + * The description of the Machine Learning compute. */ description?: string; /** - * @member {Date} [createdOn] The date and time when the compute was created. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The date and time when the compute was created. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly createdOn?: Date; /** - * @member {Date} [modifiedOn] The date and time when the compute was last - * modified. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The date and time when the compute was last modified. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly modifiedOn?: Date; /** - * @member {string} [resourceId] ARM resource id of the compute + * ARM resource id of the underlying compute */ resourceId?: string; /** - * @member {MachineLearningServiceError[]} [provisioningErrors] Errors during - * provisioning - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Errors during provisioning + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningErrors?: MachineLearningServiceError[]; /** - * @member {HDInsightProperties} [properties] + * Indicating whether the compute was provisioned by user and brought from outside if true, or + * machine learning service provisioned it if false. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ + readonly isAttachedCompute?: boolean; properties?: HDInsightProperties; } /** - * @interface - * An interface representing DataFactory. * A DataFactory compute. - * */ export interface DataFactory { /** - * @member {string} computeType Polymorphic Discriminator + * Polymorphic Discriminator */ computeType: "DataFactory"; /** - * @member {string} [computeLocation] Location for the underlying compute + * Location for the underlying compute */ computeLocation?: string; /** - * @member {ProvisioningState} [provisioningState] The provision state of the - * cluster. Valid values are Unknown, Updating, Provisioning, Succeeded, and - * Failed. Possible values include: 'Unknown', 'Updating', 'Creating', - * 'Deleting', 'Succeeded', 'Failed', 'Canceled' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The provision state of the cluster. Valid values are Unknown, Updating, Provisioning, + * Succeeded, and Failed. Possible values include: 'Unknown', 'Updating', 'Creating', 'Deleting', + * 'Succeeded', 'Failed', 'Canceled' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: ProvisioningState; /** - * @member {string} [description] The description of the Machine Learning - * compute. + * The description of the Machine Learning compute. */ description?: string; /** - * @member {Date} [createdOn] The date and time when the compute was created. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The date and time when the compute was created. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly createdOn?: Date; /** - * @member {Date} [modifiedOn] The date and time when the compute was last - * modified. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The date and time when the compute was last modified. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly modifiedOn?: Date; /** - * @member {string} [resourceId] ARM resource id of the compute + * ARM resource id of the underlying compute */ resourceId?: string; /** - * @member {MachineLearningServiceError[]} [provisioningErrors] Errors during - * provisioning - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Errors during provisioning + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningErrors?: MachineLearningServiceError[]; + /** + * Indicating whether the compute was provisioned by user and brought from outside if true, or + * machine learning service provisioned it if false. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly isAttachedCompute?: boolean; +} + +/** + * An interface representing DatabricksProperties. + */ +export interface DatabricksProperties { + /** + * Databricks access token + */ + databricksAccessToken?: string; +} + +/** + * A DataFactory compute. + */ +export interface Databricks { + /** + * Polymorphic Discriminator + */ + computeType: "Databricks"; + /** + * Location for the underlying compute + */ + computeLocation?: string; + /** + * The provision state of the cluster. Valid values are Unknown, Updating, Provisioning, + * Succeeded, and Failed. Possible values include: 'Unknown', 'Updating', 'Creating', 'Deleting', + * 'Succeeded', 'Failed', 'Canceled' + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly provisioningState?: ProvisioningState; + /** + * The description of the Machine Learning compute. + */ + description?: string; + /** + * The date and time when the compute was created. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly createdOn?: Date; + /** + * The date and time when the compute was last modified. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly modifiedOn?: Date; + /** + * ARM resource id of the underlying compute + */ + resourceId?: string; + /** + * Errors during provisioning + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly provisioningErrors?: MachineLearningServiceError[]; + /** + * Indicating whether the compute was provisioned by user and brought from outside if true, or + * machine learning service provisioned it if false. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly isAttachedCompute?: boolean; + properties?: DatabricksProperties; +} + +/** + * An interface representing DataLakeAnalyticsProperties. + */ +export interface DataLakeAnalyticsProperties { + /** + * DataLake Store Account Name + */ + dataLakeStoreAccountName?: string; +} + +/** + * A DataLakeAnalytics compute. + */ +export interface DataLakeAnalytics { + /** + * Polymorphic Discriminator + */ + computeType: "DataLakeAnalytics"; + /** + * Location for the underlying compute + */ + computeLocation?: string; + /** + * The provision state of the cluster. Valid values are Unknown, Updating, Provisioning, + * Succeeded, and Failed. Possible values include: 'Unknown', 'Updating', 'Creating', 'Deleting', + * 'Succeeded', 'Failed', 'Canceled' + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly provisioningState?: ProvisioningState; + /** + * The description of the Machine Learning compute. + */ + description?: string; + /** + * The date and time when the compute was created. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly createdOn?: Date; + /** + * The date and time when the compute was last modified. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly modifiedOn?: Date; + /** + * ARM resource id of the underlying compute + */ + resourceId?: string; + /** + * Errors during provisioning + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly provisioningErrors?: MachineLearningServiceError[]; + /** + * Indicating whether the compute was provisioned by user and brought from outside if true, or + * machine learning service provisioned it if false. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly isAttachedCompute?: boolean; + properties?: DataLakeAnalyticsProperties; } /** - * @interface - * An interface representing ServicePrincipalCredentials. * Service principal credentials. - * */ export interface ServicePrincipalCredentials { /** - * @member {string} clientId Client Id + * Client Id */ clientId: string; /** - * @member {string} clientSecret Client secret + * Client secret */ clientSecret: string; } +/** + * AmlCompute update parameters. + */ +export interface ClusterUpdateParameters { + /** + * Scale settings. Desired scale settings for the amlCompute. + */ + scaleSettings?: ScaleSettings; +} + +/** + * Contains the possible cases for ComputeNodesInformation. + */ +export type ComputeNodesInformationUnion = ComputeNodesInformation | AmlComputeNodesInformation; + +/** + * Compute nodes information related to a Machine Learning compute. Might differ for every type of + * compute. + */ +export interface ComputeNodesInformation { + /** + * Polymorphic Discriminator + */ + computeType: "ComputeNodesInformation"; + /** + * The continuation token. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly nextLink?: string; +} + +/** + * Compute node information related to a AmlCompute. + */ +export interface AmlComputeNodeInformation { + /** + * Node ID. ID of the compute node. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly nodeId?: string; + /** + * IP address. Public IP address of the compute node. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly ipAddress?: string; + /** + * Port. SSH port number of the node. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly port?: number; +} + +/** + * Compute node information related to a AmlCompute. + */ +export interface AmlComputeNodesInformation { + /** + * Polymorphic Discriminator + */ + computeType: "AmlCompute"; + /** + * The continuation token. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly nextLink?: string; + /** + * The collection of returned AmlCompute nodes details. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly nodes?: AmlComputeNodeInformation[]; +} + /** * Contains the possible cases for ComputeSecrets. */ -export type ComputeSecretsUnion = ComputeSecrets | AksComputeSecrets | VirtualMachineSecrets; +export type ComputeSecretsUnion = ComputeSecrets | AksComputeSecrets | VirtualMachineSecrets | DatabricksComputeSecrets; /** - * @interface - * An interface representing ComputeSecrets. - * Secrets related to a Machine Learning compute. Might differ for every type - * of compute. - * + * Secrets related to a Machine Learning compute. Might differ for every type of compute. */ export interface ComputeSecrets { /** - * @member {string} computeType Polymorphic Discriminator + * Polymorphic Discriminator */ computeType: "ComputeSecrets"; } /** - * @interface - * An interface representing AksComputeSecrets. * Secrets related to a Machine Learning compute based on AKS. - * */ export interface AksComputeSecrets { /** - * @member {string} computeType Polymorphic Discriminator + * Polymorphic Discriminator */ computeType: "AKS"; /** - * @member {string} [userKubeConfig] Content of kubeconfig file that can be - * used to connect to the Kubernetes cluster. + * Content of kubeconfig file that can be used to connect to the Kubernetes cluster. */ userKubeConfig?: string; /** - * @member {string} [adminKubeConfig] Content of kubeconfig file that can be - * used to connect to the Kubernetes cluster. + * Content of kubeconfig file that can be used to connect to the Kubernetes cluster. */ adminKubeConfig?: string; /** - * @member {string} [imagePullSecretName] Image registry pull secret. + * Image registry pull secret. */ imagePullSecretName?: string; } /** - * @interface - * An interface representing VirtualMachineSecrets. * Secrets related to a Machine Learning compute based on AKS. - * */ export interface VirtualMachineSecrets { /** - * @member {string} computeType Polymorphic Discriminator + * Polymorphic Discriminator */ computeType: "VirtualMachine"; /** - * @member {VirtualMachineSshCredentials} [administratorAccount] Admin - * creadentials for virtual machine. + * Admin credentials for virtual machine. */ administratorAccount?: VirtualMachineSshCredentials; } /** - * @interface - * An interface representing WorkspacesListByResourceGroupOptionalParams. + * Secrets related to a Machine Learning compute based on Databricks. + */ +export interface DatabricksComputeSecrets { + /** + * Polymorphic Discriminator + */ + computeType: "Databricks"; + /** + * access token for databricks account. + */ + databricksAccessToken?: string; +} + +/** * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WorkspacesListByResourceGroupOptionalParams extends msRest.RequestOptionsBase { /** - * @member {string} [skiptoken] Continuation token for pagination. + * Continuation token for pagination. */ skiptoken?: string; } /** - * @interface - * An interface representing WorkspacesListBySubscriptionOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WorkspacesListBySubscriptionOptionalParams extends msRest.RequestOptionsBase { /** - * @member {string} [skiptoken] Continuation token for pagination. + * Continuation token for pagination. */ skiptoken?: string; } /** - * @interface - * An interface representing MachineLearningComputeListByWorkspaceOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface MachineLearningComputeListByWorkspaceOptionalParams extends msRest.RequestOptionsBase { /** - * @member {string} [skiptoken] Continuation token for pagination. + * Continuation token for pagination. */ skiptoken?: string; } /** - * @interface * An interface representing AzureMachineLearningWorkspacesOptions. - * @extends AzureServiceClientOptions */ export interface AzureMachineLearningWorkspacesOptions extends AzureServiceClientOptions { - /** - * @member {string} [baseUri] - */ baseUri?: string; } /** - * @interface - * An interface representing MachineLearningComputeCreateOrUpdateHeaders. * Defines headers for CreateOrUpdate operation. - * */ export interface MachineLearningComputeCreateOrUpdateHeaders { /** - * @member {string} [azureAsyncOperation] URI to poll for asynchronous - * operation status. + * URI to poll for asynchronous operation status. */ azureAsyncOperation: string; } /** - * @interface - * An interface representing MachineLearningComputeDeleteHeaders. * Defines headers for Delete operation. - * */ export interface MachineLearningComputeDeleteHeaders { /** - * @member {string} [azureAsyncOperation] URI to poll for asynchronous - * operation status. - */ - azureAsyncOperation: string; - /** - * @member {string} [location] URI to poll for asynchronous operation result. - */ - location: string; -} - -/** - * @interface - * An interface representing MachineLearningComputeSystemUpdateHeaders. - * Defines headers for SystemUpdate operation. - * - */ -export interface MachineLearningComputeSystemUpdateHeaders { - /** - * @member {string} [azureAsyncOperation] URI to poll for asynchronous - * operation status. + * URI to poll for asynchronous operation status. */ azureAsyncOperation: string; /** - * @member {string} [location] URI to poll for asynchronous operation result. + * URI to poll for asynchronous operation result. */ location: string; } - /** * @interface - * An interface representing the OperationListResult. * An array of operations supported by the resource provider. - * * @extends Array */ export interface OperationListResult extends Array { @@ -1100,31 +1358,38 @@ export interface OperationListResult extends Array { /** * @interface - * An interface representing the WorkspaceListResult. * The result of a request to list machine learning workspaces. - * * @extends Array */ export interface WorkspaceListResult extends Array { /** - * @member {string} [nextLink] The URI that can be used to request the next - * list of machine learning workspaces. + * The URI that can be used to request the next list of machine learning workspaces. */ nextLink?: string; } /** * @interface - * An interface representing the PaginatedComputeResourcesList. - * Paginated list of Machine Learning compute objects wrapped in ARM resource - * envelope. - * + * The List Usages operation response. + * @extends Array + */ +export interface ListUsagesResult extends Array { + /** + * The URI to fetch the next page of AML resource usage information. Call ListNext() with this to + * fetch the next page of AML resource usage information. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly nextLink?: string; +} + +/** + * @interface + * Paginated list of Machine Learning compute objects wrapped in ARM resource envelope. * @extends Array */ export interface PaginatedComputeResourcesList extends Array { /** - * @member {string} [nextLink] A continuation link (absolute URI) to the next - * page of results in the list. + * A continuation link (absolute URI) to the next page of results in the list. */ nextLink?: string; } @@ -1138,6 +1403,14 @@ export interface PaginatedComputeResourcesList extends Array { */ export type ProvisioningState = 'Unknown' | 'Updating' | 'Creating' | 'Deleting' | 'Succeeded' | 'Failed' | 'Canceled'; +/** + * Defines values for UsageUnit. + * Possible values include: 'Count' + * @readonly + * @enum {string} + */ +export type UsageUnit = 'Count'; + /** * Defines values for ResourceIdentityType. * Possible values include: 'SystemAssigned' @@ -1146,13 +1419,38 @@ export type ProvisioningState = 'Unknown' | 'Updating' | 'Creating' | 'Deleting' */ export type ResourceIdentityType = 'SystemAssigned'; +/** + * Defines values for VmPriority. + * Possible values include: 'Dedicated', 'LowPriority' + * @readonly + * @enum {string} + */ +export type VmPriority = 'Dedicated' | 'LowPriority'; + +/** + * Defines values for AllocationState. + * Possible values include: 'Steady', 'Resizing' + * @readonly + * @enum {string} + */ +export type AllocationState = 'Steady' | 'Resizing'; + /** * Defines values for ComputeType. - * Possible values include: 'AKS', 'BatchAI', 'DataFactory', 'VirtualMachine', 'HDInsight' + * Possible values include: 'AKS', 'AmlCompute', 'DataFactory', 'VirtualMachine', 'HDInsight', + * 'Databricks', 'DataLakeAnalytics' + * @readonly + * @enum {string} + */ +export type ComputeType = 'AKS' | 'AmlCompute' | 'DataFactory' | 'VirtualMachine' | 'HDInsight' | 'Databricks' | 'DataLakeAnalytics'; + +/** + * Defines values for UnderlyingResourceAction. + * Possible values include: 'Delete', 'Detach' * @readonly * @enum {string} */ -export type ComputeType = 'AKS' | 'BatchAI' | 'DataFactory' | 'VirtualMachine' | 'HDInsight'; +export type UnderlyingResourceAction = 'Delete' | 'Detach'; /** * Defines values for Status. @@ -1174,6 +1472,7 @@ export type OperationsListResponse = OperationListResult & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -1193,6 +1492,7 @@ export type WorkspacesGetResponse = Workspace & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -1212,6 +1512,7 @@ export type WorkspacesCreateOrUpdateResponse = Workspace & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -1231,6 +1532,7 @@ export type WorkspacesUpdateResponse = Workspace & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -1250,6 +1552,7 @@ export type WorkspacesListByResourceGroupResponse = WorkspaceListResult & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -1269,6 +1572,7 @@ export type WorkspacesListKeysResponse = ListWorkspaceKeysResult & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -1288,6 +1592,7 @@ export type WorkspacesListBySubscriptionResponse = WorkspaceListResult & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -1307,6 +1612,7 @@ export type WorkspacesListByResourceGroupNextResponse = WorkspaceListResult & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -1326,6 +1632,7 @@ export type WorkspacesListBySubscriptionNextResponse = WorkspaceListResult & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -1333,6 +1640,66 @@ export type WorkspacesListBySubscriptionNextResponse = WorkspaceListResult & { }; }; +/** + * Contains response data for the list operation. + */ +export type UsagesListResponse = ListUsagesResult & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: ListUsagesResult; + }; +}; + +/** + * Contains response data for the listNext operation. + */ +export type UsagesListNextResponse = ListUsagesResult & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: ListUsagesResult; + }; +}; + +/** + * Contains response data for the list operation. + */ +export type VirtualMachineSizesListResponse = VirtualMachineSizeListResult & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: VirtualMachineSizeListResult; + }; +}; + /** * Contains response data for the listByWorkspace operation. */ @@ -1345,6 +1712,7 @@ export type MachineLearningComputeListByWorkspaceResponse = PaginatedComputeReso * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -1364,6 +1732,7 @@ export type MachineLearningComputeGetResponse = ComputeResource & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -1383,10 +1752,32 @@ export type MachineLearningComputeCreateOrUpdateResponse = ComputeResource & Mac * The parsed HTTP response headers. */ parsedHeaders: MachineLearningComputeCreateOrUpdateHeaders; + + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: ComputeResource; + }; +}; + +/** + * Contains response data for the update operation. + */ +export type MachineLearningComputeUpdateResponse = ComputeResource & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { /** * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -1410,17 +1801,22 @@ export type MachineLearningComputeDeleteResponse = MachineLearningComputeDeleteH }; /** - * Contains response data for the systemUpdate operation. + * Contains response data for the listNodes operation. */ -export type MachineLearningComputeSystemUpdateResponse = MachineLearningComputeSystemUpdateHeaders & { +export type MachineLearningComputeListNodesResponse = AmlComputeNodesInformation & { /** * The underlying HTTP response. */ _response: msRest.HttpResponse & { /** - * The parsed HTTP response headers. + * The response body as text (string format) */ - parsedHeaders: MachineLearningComputeSystemUpdateHeaders; + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: AmlComputeNodesInformation; }; }; @@ -1436,6 +1832,7 @@ export type MachineLearningComputeListKeysResponse = ComputeSecretsUnion & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -1443,6 +1840,26 @@ export type MachineLearningComputeListKeysResponse = ComputeSecretsUnion & { }; }; +/** + * Contains response data for the beginUpdate operation. + */ +export type MachineLearningComputeBeginUpdateResponse = ComputeResource & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: ComputeResource; + }; +}; + /** * Contains response data for the listByWorkspaceNext operation. */ @@ -1455,6 +1872,7 @@ export type MachineLearningComputeListByWorkspaceNextResponse = PaginatedCompute * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ diff --git a/sdk/machinelearningservices/arm-machinelearningservices/src/models/machineLearningComputeMappers.ts b/sdk/machinelearningservices/arm-machinelearningservices/src/models/machineLearningComputeMappers.ts index b7f92bdcf288..6c8334e0a3ba 100644 --- a/sdk/machinelearningservices/arm-machinelearningservices/src/models/machineLearningComputeMappers.ts +++ b/sdk/machinelearningservices/arm-machinelearningservices/src/models/machineLearningComputeMappers.ts @@ -1,43 +1,52 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ export { discriminators, - PaginatedComputeResourcesList, - ComputeResource, - Resource, + AKS, + AksComputeSecrets, + AksNetworkingConfiguration, + AKSProperties, + AmlCompute, + AmlComputeNodeInformation, + AmlComputeNodesInformation, + AmlComputeProperties, BaseResource, - Identity, + ClusterUpdateParameters, Compute, - MachineLearningServiceError, - ErrorResponse, + ComputeNodesInformation, + ComputeResource, + ComputeSecrets, + Databricks, + DatabricksComputeSecrets, + DatabricksProperties, + DataFactory, + DataLakeAnalytics, + DataLakeAnalyticsProperties, ErrorDetail, + ErrorResponse, + HDInsight, + HDInsightProperties, + Identity, MachineLearningComputeCreateOrUpdateHeaders, MachineLearningComputeDeleteHeaders, - MachineLearningComputeSystemUpdateHeaders, - ComputeSecrets, - Workspace, - AKS, - AKSProperties, - SystemService, - SslConfiguration, - BatchAI, - BatchAIProperties, + MachineLearningServiceError, + NodeStateCounts, + PaginatedComputeResourcesList, + Resource, + ResourceId, ScaleSettings, + SslConfiguration, + SystemService, + UserAccountCredentials, VirtualMachine, VirtualMachineProperties, + VirtualMachineSecrets, VirtualMachineSshCredentials, - HDInsight, - HDInsightProperties, - DataFactory, - AksComputeSecrets, - VirtualMachineSecrets + Workspace } from "../models/mappers"; - diff --git a/sdk/machinelearningservices/arm-machinelearningservices/src/models/mappers.ts b/sdk/machinelearningservices/arm-machinelearningservices/src/models/mappers.ts index d2610660d4e9..639d21015222 100644 --- a/sdk/machinelearningservices/arm-machinelearningservices/src/models/mappers.ts +++ b/sdk/machinelearningservices/arm-machinelearningservices/src/models/mappers.ts @@ -1,11 +1,9 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ import { CloudErrorMapper, BaseResourceMapper } from "@azure/ms-rest-azure-js"; @@ -160,12 +158,6 @@ export const Workspace: msRest.CompositeMapper = { name: "DateTime" } }, - batchaiWorkspace: { - serializedName: "properties.batchaiWorkspace", - type: { - name: "String" - } - }, keyVault: { serializedName: "properties.keyVault", type: { @@ -240,6 +232,171 @@ export const WorkspaceUpdateParameters: msRest.CompositeMapper = { } }; +export const UsageName: msRest.CompositeMapper = { + serializedName: "UsageName", + type: { + name: "Composite", + className: "UsageName", + modelProperties: { + value: { + readOnly: true, + serializedName: "value", + type: { + name: "String" + } + }, + localizedValue: { + readOnly: true, + serializedName: "localizedValue", + type: { + name: "String" + } + } + } + } +}; + +export const Usage: msRest.CompositeMapper = { + serializedName: "Usage", + type: { + name: "Composite", + className: "Usage", + modelProperties: { + id: { + readOnly: true, + serializedName: "id", + type: { + name: "String" + } + }, + type: { + readOnly: true, + serializedName: "type", + type: { + name: "String" + } + }, + unit: { + readOnly: true, + serializedName: "unit", + type: { + name: "String" + } + }, + currentValue: { + readOnly: true, + serializedName: "currentValue", + type: { + name: "Number" + } + }, + limit: { + readOnly: true, + serializedName: "limit", + type: { + name: "Number" + } + }, + name: { + readOnly: true, + serializedName: "name", + type: { + name: "Composite", + className: "UsageName" + } + } + } + } +}; + +export const VirtualMachineSize: msRest.CompositeMapper = { + serializedName: "VirtualMachineSize", + type: { + name: "Composite", + className: "VirtualMachineSize", + modelProperties: { + name: { + readOnly: true, + serializedName: "name", + type: { + name: "String" + } + }, + family: { + readOnly: true, + serializedName: "family", + type: { + name: "String" + } + }, + vCPUs: { + readOnly: true, + serializedName: "vCPUs", + type: { + name: "Number" + } + }, + osVhdSizeMB: { + readOnly: true, + serializedName: "osVhdSizeMB", + type: { + name: "Number" + } + }, + maxResourceVolumeMB: { + readOnly: true, + serializedName: "maxResourceVolumeMB", + type: { + name: "Number" + } + }, + memoryGB: { + readOnly: true, + serializedName: "memoryGB", + type: { + name: "Number" + } + }, + lowPriorityCapable: { + readOnly: true, + serializedName: "lowPriorityCapable", + type: { + name: "Boolean" + } + }, + premiumIO: { + readOnly: true, + serializedName: "premiumIO", + type: { + name: "Boolean" + } + } + } + } +}; + +export const VirtualMachineSizeListResult: msRest.CompositeMapper = { + serializedName: "VirtualMachineSizeListResult", + type: { + name: "Composite", + className: "VirtualMachineSizeListResult", + modelProperties: { + amlCompute: { + serializedName: "amlCompute", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "VirtualMachineSize" + } + } + } + } + } + } +}; + export const Identity: msRest.CompositeMapper = { serializedName: "Identity", type: { @@ -273,6 +430,23 @@ export const Identity: msRest.CompositeMapper = { } }; +export const ResourceId: msRest.CompositeMapper = { + serializedName: "ResourceId", + type: { + name: "Composite", + className: "ResourceId", + modelProperties: { + id: { + required: true, + serializedName: "id", + type: { + name: "String" + } + } + } + } +}; + export const Password: msRest.CompositeMapper = { serializedName: "Password", type: { @@ -403,20 +577,21 @@ export const ErrorResponse: msRest.CompositeMapper = { className: "ErrorResponse", modelProperties: { code: { - required: true, + readOnly: true, serializedName: "code", type: { name: "String" } }, message: { - required: true, + readOnly: true, serializedName: "message", type: { name: "String" } }, details: { + readOnly: true, serializedName: "details", type: { name: "Sequence", @@ -439,6 +614,7 @@ export const MachineLearningServiceError: msRest.CompositeMapper = { className: "MachineLearningServiceError", modelProperties: { error: { + readOnly: true, serializedName: "error", type: { name: "Composite", @@ -512,6 +688,13 @@ export const Compute: msRest.CompositeMapper = { } } }, + isAttachedCompute: { + readOnly: true, + serializedName: "isAttachedCompute", + type: { + name: "Boolean" + } + }, computeType: { required: true, serializedName: "computeType", @@ -606,6 +789,49 @@ export const SslConfiguration: msRest.CompositeMapper = { } }; +export const AksNetworkingConfiguration: msRest.CompositeMapper = { + serializedName: "AksNetworkingConfiguration", + type: { + name: "Composite", + className: "AksNetworkingConfiguration", + modelProperties: { + subnetId: { + serializedName: "subnetId", + type: { + name: "String" + } + }, + serviceCidr: { + serializedName: "serviceCidr", + constraints: { + Pattern: /^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$/ + }, + type: { + name: "String" + } + }, + dnsServiceIP: { + serializedName: "dnsServiceIP", + constraints: { + Pattern: /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ + }, + type: { + name: "String" + } + }, + dockerBridgeCidr: { + serializedName: "dockerBridgeCidr", + constraints: { + Pattern: /^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$/ + }, + type: { + name: "String" + } + } + } + } +}; + export const AKSProperties: msRest.CompositeMapper = { serializedName: "AKS_properties", type: { @@ -619,6 +845,7 @@ export const AKSProperties: msRest.CompositeMapper = { } }, systemServices: { + readOnly: true, serializedName: "systemServices", type: { name: "Sequence", @@ -651,6 +878,13 @@ export const AKSProperties: msRest.CompositeMapper = { name: "Composite", className: "SslConfiguration" } + }, + aksNetworkingConfiguration: { + serializedName: "aksNetworkingConfiguration", + type: { + name: "Composite", + className: "AksNetworkingConfiguration" + } } } } @@ -683,6 +917,7 @@ export const ScaleSettings: msRest.CompositeMapper = { className: "ScaleSettings", modelProperties: { maxNodeCount: { + required: true, serializedName: "maxNodeCount", type: { name: "Number" @@ -690,25 +925,107 @@ export const ScaleSettings: msRest.CompositeMapper = { }, minNodeCount: { serializedName: "minNodeCount", + defaultValue: 0, type: { name: "Number" } }, - autoScaleEnabled: { - serializedName: "autoScaleEnabled", + nodeIdleTimeBeforeScaleDown: { + serializedName: "nodeIdleTimeBeforeScaleDown", type: { - name: "Boolean" + name: "TimeSpan" + } + } + } + } +}; + +export const UserAccountCredentials: msRest.CompositeMapper = { + serializedName: "UserAccountCredentials", + type: { + name: "Composite", + className: "UserAccountCredentials", + modelProperties: { + adminUserName: { + required: true, + serializedName: "adminUserName", + type: { + name: "String" + } + }, + adminUserSshPublicKey: { + serializedName: "adminUserSshPublicKey", + type: { + name: "String" + } + }, + adminUserPassword: { + serializedName: "adminUserPassword", + type: { + name: "String" + } + } + } + } +}; + +export const NodeStateCounts: msRest.CompositeMapper = { + serializedName: "NodeStateCounts", + type: { + name: "Composite", + className: "NodeStateCounts", + modelProperties: { + idleNodeCount: { + readOnly: true, + serializedName: "idleNodeCount", + type: { + name: "Number" + } + }, + runningNodeCount: { + readOnly: true, + serializedName: "runningNodeCount", + type: { + name: "Number" + } + }, + preparingNodeCount: { + readOnly: true, + serializedName: "preparingNodeCount", + type: { + name: "Number" + } + }, + unusableNodeCount: { + readOnly: true, + serializedName: "unusableNodeCount", + type: { + name: "Number" + } + }, + leavingNodeCount: { + readOnly: true, + serializedName: "leavingNodeCount", + type: { + name: "Number" + } + }, + preemptedNodeCount: { + readOnly: true, + serializedName: "preemptedNodeCount", + type: { + name: "Number" } } } } }; -export const BatchAIProperties: msRest.CompositeMapper = { - serializedName: "BatchAI_properties", +export const AmlComputeProperties: msRest.CompositeMapper = { + serializedName: "AmlCompute_properties", type: { name: "Composite", - className: "BatchAIProperties", + className: "AmlComputeProperties", modelProperties: { vmSize: { serializedName: "vmSize", @@ -728,25 +1045,88 @@ export const BatchAIProperties: msRest.CompositeMapper = { name: "Composite", className: "ScaleSettings" } + }, + userAccountCredentials: { + serializedName: "userAccountCredentials", + type: { + name: "Composite", + className: "UserAccountCredentials" + } + }, + subnet: { + serializedName: "subnet", + type: { + name: "Composite", + className: "ResourceId" + } + }, + allocationState: { + readOnly: true, + serializedName: "allocationState", + type: { + name: "String" + } + }, + allocationStateTransitionTime: { + readOnly: true, + serializedName: "allocationStateTransitionTime", + type: { + name: "DateTime" + } + }, + errors: { + readOnly: true, + serializedName: "errors", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "MachineLearningServiceError" + } + } + } + }, + currentNodeCount: { + readOnly: true, + serializedName: "currentNodeCount", + type: { + name: "Number" + } + }, + targetNodeCount: { + readOnly: true, + serializedName: "targetNodeCount", + type: { + name: "Number" + } + }, + nodeStateCounts: { + readOnly: true, + serializedName: "nodeStateCounts", + type: { + name: "Composite", + className: "NodeStateCounts" + } } } } }; -export const BatchAI: msRest.CompositeMapper = { - serializedName: "BatchAI", +export const AmlCompute: msRest.CompositeMapper = { + serializedName: "AmlCompute", type: { name: "Composite", polymorphicDiscriminator: Compute.type.polymorphicDiscriminator, uberParent: "Compute", - className: "BatchAI", + className: "AmlCompute", modelProperties: { ...Compute.type.modelProperties, properties: { serializedName: "properties", type: { name: "Composite", - className: "BatchAIProperties" + className: "AmlComputeProperties" } } } @@ -904,6 +1284,78 @@ export const DataFactory: msRest.CompositeMapper = { } }; +export const DatabricksProperties: msRest.CompositeMapper = { + serializedName: "Databricks_properties", + type: { + name: "Composite", + className: "DatabricksProperties", + modelProperties: { + databricksAccessToken: { + serializedName: "databricksAccessToken", + type: { + name: "String" + } + } + } + } +}; + +export const Databricks: msRest.CompositeMapper = { + serializedName: "Databricks", + type: { + name: "Composite", + polymorphicDiscriminator: Compute.type.polymorphicDiscriminator, + uberParent: "Compute", + className: "Databricks", + modelProperties: { + ...Compute.type.modelProperties, + properties: { + serializedName: "properties", + type: { + name: "Composite", + className: "DatabricksProperties" + } + } + } + } +}; + +export const DataLakeAnalyticsProperties: msRest.CompositeMapper = { + serializedName: "DataLakeAnalytics_properties", + type: { + name: "Composite", + className: "DataLakeAnalyticsProperties", + modelProperties: { + dataLakeStoreAccountName: { + serializedName: "dataLakeStoreAccountName", + type: { + name: "String" + } + } + } + } +}; + +export const DataLakeAnalytics: msRest.CompositeMapper = { + serializedName: "DataLakeAnalytics", + type: { + name: "Composite", + polymorphicDiscriminator: Compute.type.polymorphicDiscriminator, + uberParent: "Compute", + className: "DataLakeAnalytics", + modelProperties: { + ...Compute.type.modelProperties, + properties: { + serializedName: "properties", + type: { + name: "Composite", + className: "DataLakeAnalyticsProperties" + } + } + } + } +}; + export const ServicePrincipalCredentials: msRest.CompositeMapper = { serializedName: "ServicePrincipalCredentials", type: { @@ -928,6 +1380,109 @@ export const ServicePrincipalCredentials: msRest.CompositeMapper = { } }; +export const ClusterUpdateParameters: msRest.CompositeMapper = { + serializedName: "ClusterUpdateParameters", + type: { + name: "Composite", + className: "ClusterUpdateParameters", + modelProperties: { + scaleSettings: { + serializedName: "properties.scaleSettings", + type: { + name: "Composite", + className: "ScaleSettings" + } + } + } + } +}; + +export const ComputeNodesInformation: msRest.CompositeMapper = { + serializedName: "ComputeNodesInformation", + type: { + name: "Composite", + polymorphicDiscriminator: { + serializedName: "computeType", + clientName: "computeType" + }, + uberParent: "ComputeNodesInformation", + className: "ComputeNodesInformation", + modelProperties: { + nextLink: { + readOnly: true, + serializedName: "nextLink", + type: { + name: "String" + } + }, + computeType: { + required: true, + serializedName: "computeType", + type: { + name: "String" + } + } + } + } +}; + +export const AmlComputeNodeInformation: msRest.CompositeMapper = { + serializedName: "AmlCompute", + type: { + name: "Composite", + className: "AmlComputeNodeInformation", + modelProperties: { + nodeId: { + readOnly: true, + serializedName: "nodeId", + type: { + name: "String" + } + }, + ipAddress: { + readOnly: true, + serializedName: "ipAddress", + type: { + name: "String" + } + }, + port: { + readOnly: true, + serializedName: "port", + type: { + name: "Number" + } + } + } + } +}; + +export const AmlComputeNodesInformation: msRest.CompositeMapper = { + serializedName: "AmlCompute", + type: { + name: "Composite", + polymorphicDiscriminator: ComputeNodesInformation.type.polymorphicDiscriminator, + uberParent: "ComputeNodesInformation", + className: "AmlComputeNodesInformation", + modelProperties: { + ...ComputeNodesInformation.type.modelProperties, + nodes: { + readOnly: true, + serializedName: "nodes", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "AmlComputeNodeInformation" + } + } + } + } + } + } +}; + export const ComputeSecrets: msRest.CompositeMapper = { serializedName: "ComputeSecrets", type: { @@ -1001,14 +1556,17 @@ export const VirtualMachineSecrets: msRest.CompositeMapper = { } }; -export const MachineLearningComputeCreateOrUpdateHeaders: msRest.CompositeMapper = { - serializedName: "machinelearningcompute-createorupdate-headers", +export const DatabricksComputeSecrets: msRest.CompositeMapper = { + serializedName: "Databricks", type: { name: "Composite", - className: "MachineLearningComputeCreateOrUpdateHeaders", + polymorphicDiscriminator: ComputeSecrets.type.polymorphicDiscriminator, + uberParent: "ComputeSecrets", + className: "DatabricksComputeSecrets", modelProperties: { - azureAsyncOperation: { - serializedName: "azure-asyncoperation", + ...ComputeSecrets.type.modelProperties, + databricksAccessToken: { + serializedName: "databricksAccessToken", type: { name: "String" } @@ -1017,33 +1575,27 @@ export const MachineLearningComputeCreateOrUpdateHeaders: msRest.CompositeMapper } }; -export const MachineLearningComputeDeleteHeaders: msRest.CompositeMapper = { - serializedName: "machinelearningcompute-delete-headers", +export const MachineLearningComputeCreateOrUpdateHeaders: msRest.CompositeMapper = { + serializedName: "machinelearningcompute-createorupdate-headers", type: { name: "Composite", - className: "MachineLearningComputeDeleteHeaders", + className: "MachineLearningComputeCreateOrUpdateHeaders", modelProperties: { azureAsyncOperation: { serializedName: "azure-asyncoperation", type: { name: "String" } - }, - location: { - serializedName: "location", - type: { - name: "String" - } } } } }; -export const MachineLearningComputeSystemUpdateHeaders: msRest.CompositeMapper = { - serializedName: "machinelearningcompute-systemupdate-headers", +export const MachineLearningComputeDeleteHeaders: msRest.CompositeMapper = { + serializedName: "machinelearningcompute-delete-headers", type: { name: "Composite", - className: "MachineLearningComputeSystemUpdateHeaders", + className: "MachineLearningComputeDeleteHeaders", modelProperties: { azureAsyncOperation: { serializedName: "azure-asyncoperation", @@ -1111,6 +1663,36 @@ export const WorkspaceListResult: msRest.CompositeMapper = { } }; +export const ListUsagesResult: msRest.CompositeMapper = { + serializedName: "ListUsagesResult", + type: { + name: "Composite", + className: "ListUsagesResult", + modelProperties: { + value: { + readOnly: true, + serializedName: "", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "Usage" + } + } + } + }, + nextLink: { + readOnly: true, + serializedName: "nextLink", + type: { + name: "String" + } + } + } + } +}; + export const PaginatedComputeResourcesList: msRest.CompositeMapper = { serializedName: "PaginatedComputeResourcesList", type: { @@ -1142,11 +1724,17 @@ export const PaginatedComputeResourcesList: msRest.CompositeMapper = { export const discriminators = { 'Compute' : Compute, 'Compute.AKS' : AKS, - 'Compute.BatchAI' : BatchAI, + 'Compute.AmlCompute' : AmlCompute, 'Compute.VirtualMachine' : VirtualMachine, 'Compute.HDInsight' : HDInsight, 'Compute.DataFactory' : DataFactory, + 'Compute.Databricks' : Databricks, + 'Compute.DataLakeAnalytics' : DataLakeAnalytics, + 'ComputeNodesInformation' : ComputeNodesInformation, + 'ComputeNodesInformation.AmlCompute' : AmlComputeNodesInformation, 'ComputeSecrets' : ComputeSecrets, 'ComputeSecrets.AKS' : AksComputeSecrets, - 'ComputeSecrets.VirtualMachine' : VirtualMachineSecrets + 'ComputeSecrets.VirtualMachine' : VirtualMachineSecrets, + 'ComputeSecrets.Databricks' : DatabricksComputeSecrets + }; diff --git a/sdk/machinelearningservices/arm-machinelearningservices/src/models/operationsMappers.ts b/sdk/machinelearningservices/arm-machinelearningservices/src/models/operationsMappers.ts index 9d57471254c6..f1dd969a7597 100644 --- a/sdk/machinelearningservices/arm-machinelearningservices/src/models/operationsMappers.ts +++ b/sdk/machinelearningservices/arm-machinelearningservices/src/models/operationsMappers.ts @@ -1,20 +1,17 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ export { discriminators, - OperationListResult, + ErrorDetail, + ErrorResponse, + MachineLearningServiceError, Operation, OperationDisplay, - MachineLearningServiceError, - ErrorResponse, - ErrorDetail + OperationListResult } from "../models/mappers"; - diff --git a/sdk/machinelearningservices/arm-machinelearningservices/src/models/parameters.ts b/sdk/machinelearningservices/arm-machinelearningservices/src/models/parameters.ts index 52426ab7b3f4..705365dcbf19 100644 --- a/sdk/machinelearningservices/arm-machinelearningservices/src/models/parameters.ts +++ b/sdk/machinelearningservices/arm-machinelearningservices/src/models/parameters.ts @@ -40,6 +40,19 @@ export const computeName: msRest.OperationURLParameter = { } } }; +export const location: msRest.OperationURLParameter = { + parameterPath: "location", + mapper: { + required: true, + serializedName: "location", + constraints: { + Pattern: /^[-\w\._]+$/ + }, + type: { + name: "String" + } + } +}; export const nextPageLink: msRest.OperationURLParameter = { parameterPath: "nextPageLink", mapper: { @@ -83,6 +96,16 @@ export const subscriptionId: msRest.OperationURLParameter = { } } }; +export const underlyingResourceAction: msRest.OperationQueryParameter = { + parameterPath: "underlyingResourceAction", + mapper: { + required: true, + serializedName: "underlyingResourceAction", + type: { + name: "String" + } + } +}; export const workspaceName: msRest.OperationURLParameter = { parameterPath: "workspaceName", mapper: { diff --git a/sdk/machinelearningservices/arm-machinelearningservices/src/models/usagesMappers.ts b/sdk/machinelearningservices/arm-machinelearningservices/src/models/usagesMappers.ts new file mode 100644 index 000000000000..703bae5ac9ca --- /dev/null +++ b/sdk/machinelearningservices/arm-machinelearningservices/src/models/usagesMappers.ts @@ -0,0 +1,15 @@ +/* + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. + */ + +export { + discriminators, + CloudError, + ListUsagesResult, + Usage, + UsageName +} from "../models/mappers"; diff --git a/sdk/machinelearningservices/arm-machinelearningservices/src/models/virtualMachineSizesMappers.ts b/sdk/machinelearningservices/arm-machinelearningservices/src/models/virtualMachineSizesMappers.ts new file mode 100644 index 000000000000..615f58d4604f --- /dev/null +++ b/sdk/machinelearningservices/arm-machinelearningservices/src/models/virtualMachineSizesMappers.ts @@ -0,0 +1,14 @@ +/* + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. + */ + +export { + discriminators, + CloudError, + VirtualMachineSize, + VirtualMachineSizeListResult +} from "../models/mappers"; diff --git a/sdk/machinelearningservices/arm-machinelearningservices/src/models/workspacesMappers.ts b/sdk/machinelearningservices/arm-machinelearningservices/src/models/workspacesMappers.ts index cde6fd2568d9..147ed31e4a00 100644 --- a/sdk/machinelearningservices/arm-machinelearningservices/src/models/workspacesMappers.ts +++ b/sdk/machinelearningservices/arm-machinelearningservices/src/models/workspacesMappers.ts @@ -1,41 +1,46 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ export { discriminators, - Workspace, - Resource, + AKS, + AksNetworkingConfiguration, + AKSProperties, + AmlCompute, + AmlComputeProperties, BaseResource, - Identity, - MachineLearningServiceError, - ErrorResponse, + Compute, + ComputeResource, + Databricks, + DatabricksProperties, + DataFactory, + DataLakeAnalytics, + DataLakeAnalyticsProperties, ErrorDetail, - WorkspaceUpdateParameters, - WorkspaceListResult, + ErrorResponse, + HDInsight, + HDInsightProperties, + Identity, ListWorkspaceKeysResult, - RegistryListCredentialsResult, + MachineLearningServiceError, + NodeStateCounts, Password, - ComputeResource, - Compute, - AKS, - AKSProperties, - SystemService, - SslConfiguration, - BatchAI, - BatchAIProperties, + RegistryListCredentialsResult, + Resource, + ResourceId, ScaleSettings, + SslConfiguration, + SystemService, + UserAccountCredentials, VirtualMachine, VirtualMachineProperties, VirtualMachineSshCredentials, - HDInsight, - HDInsightProperties, - DataFactory + Workspace, + WorkspaceListResult, + WorkspaceUpdateParameters } from "../models/mappers"; - diff --git a/sdk/machinelearningservices/arm-machinelearningservices/src/operations/index.ts b/sdk/machinelearningservices/arm-machinelearningservices/src/operations/index.ts index f9eb952cda56..eb4867fd5155 100644 --- a/sdk/machinelearningservices/arm-machinelearningservices/src/operations/index.ts +++ b/sdk/machinelearningservices/arm-machinelearningservices/src/operations/index.ts @@ -10,4 +10,6 @@ export * from "./operations"; export * from "./workspaces"; +export * from "./usages"; +export * from "./virtualMachineSizes"; export * from "./machineLearningCompute"; diff --git a/sdk/machinelearningservices/arm-machinelearningservices/src/operations/machineLearningCompute.ts b/sdk/machinelearningservices/arm-machinelearningservices/src/operations/machineLearningCompute.ts index 340bad7fcf29..b15b0735087f 100644 --- a/sdk/machinelearningservices/arm-machinelearningservices/src/operations/machineLearningCompute.ts +++ b/sdk/machinelearningservices/arm-machinelearningservices/src/operations/machineLearningCompute.ts @@ -112,30 +112,70 @@ export class MachineLearningCompute { .then(lroPoller => lroPoller.pollUntilFinished()) as Promise; } + /** + * Updates properties of a compute. This call will overwrite a compute if it exists. This is a + * nonrecoverable operation. + * @param resourceGroupName Name of the resource group in which workspace is located. + * @param workspaceName Name of Azure Machine Learning workspace. + * @param computeName Name of the Azure Machine Learning compute. + * @param parameters Additional parameters for cluster update. + * @param [options] The optional parameters + * @returns Promise + */ + update(resourceGroupName: string, workspaceName: string, computeName: string, parameters: Models.ClusterUpdateParameters, options?: msRest.RequestOptionsBase): Promise { + return this.beginUpdate(resourceGroupName,workspaceName,computeName,parameters,options) + .then(lroPoller => lroPoller.pollUntilFinished()) as Promise; + } + /** * Deletes specified Machine Learning compute. * @param resourceGroupName Name of the resource group in which workspace is located. * @param workspaceName Name of Azure Machine Learning workspace. * @param computeName Name of the Azure Machine Learning compute. + * @param underlyingResourceAction Delete the underlying compute if 'Delete', or detach the + * underlying compute from workspace if 'Detach'. Possible values include: 'Delete', 'Detach' * @param [options] The optional parameters * @returns Promise */ - deleteMethod(resourceGroupName: string, workspaceName: string, computeName: string, options?: msRest.RequestOptionsBase): Promise { - return this.beginDeleteMethod(resourceGroupName,workspaceName,computeName,options) + deleteMethod(resourceGroupName: string, workspaceName: string, computeName: string, underlyingResourceAction: Models.UnderlyingResourceAction, options?: msRest.RequestOptionsBase): Promise { + return this.beginDeleteMethod(resourceGroupName,workspaceName,computeName,underlyingResourceAction,options) .then(lroPoller => lroPoller.pollUntilFinished()) as Promise; } /** - * System Update On Machine Learning compute. + * Get the details (e.g IP address, port etc) of all the compute nodes in the compute. * @param resourceGroupName Name of the resource group in which workspace is located. * @param workspaceName Name of Azure Machine Learning workspace. * @param computeName Name of the Azure Machine Learning compute. * @param [options] The optional parameters - * @returns Promise + * @returns Promise + */ + listNodes(resourceGroupName: string, workspaceName: string, computeName: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName Name of the resource group in which workspace is located. + * @param workspaceName Name of Azure Machine Learning workspace. + * @param computeName Name of the Azure Machine Learning compute. + * @param callback The callback + */ + listNodes(resourceGroupName: string, workspaceName: string, computeName: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the resource group in which workspace is located. + * @param workspaceName Name of Azure Machine Learning workspace. + * @param computeName Name of the Azure Machine Learning compute. + * @param options The optional parameters + * @param callback The callback */ - systemUpdate(resourceGroupName: string, workspaceName: string, computeName: string, options?: msRest.RequestOptionsBase): Promise { - return this.beginSystemUpdate(resourceGroupName,workspaceName,computeName,options) - .then(lroPoller => lroPoller.pollUntilFinished()) as Promise; + listNodes(resourceGroupName: string, workspaceName: string, computeName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + listNodes(resourceGroupName: string, workspaceName: string, computeName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + workspaceName, + computeName, + options + }, + listNodesOperationSpec, + callback) as Promise; } /** @@ -199,42 +239,48 @@ export class MachineLearningCompute { } /** - * Deletes specified Machine Learning compute. + * Updates properties of a compute. This call will overwrite a compute if it exists. This is a + * nonrecoverable operation. * @param resourceGroupName Name of the resource group in which workspace is located. * @param workspaceName Name of Azure Machine Learning workspace. * @param computeName Name of the Azure Machine Learning compute. + * @param parameters Additional parameters for cluster update. * @param [options] The optional parameters * @returns Promise */ - beginDeleteMethod(resourceGroupName: string, workspaceName: string, computeName: string, options?: msRest.RequestOptionsBase): Promise { + beginUpdate(resourceGroupName: string, workspaceName: string, computeName: string, parameters: Models.ClusterUpdateParameters, options?: msRest.RequestOptionsBase): Promise { return this.client.sendLRORequest( { resourceGroupName, workspaceName, computeName, + parameters, options }, - beginDeleteMethodOperationSpec, + beginUpdateOperationSpec, options); } /** - * System Update On Machine Learning compute. + * Deletes specified Machine Learning compute. * @param resourceGroupName Name of the resource group in which workspace is located. * @param workspaceName Name of Azure Machine Learning workspace. * @param computeName Name of the Azure Machine Learning compute. + * @param underlyingResourceAction Delete the underlying compute if 'Delete', or detach the + * underlying compute from workspace if 'Detach'. Possible values include: 'Delete', 'Detach' * @param [options] The optional parameters * @returns Promise */ - beginSystemUpdate(resourceGroupName: string, workspaceName: string, computeName: string, options?: msRest.RequestOptionsBase): Promise { + beginDeleteMethod(resourceGroupName: string, workspaceName: string, computeName: string, underlyingResourceAction: Models.UnderlyingResourceAction, options?: msRest.RequestOptionsBase): Promise { return this.client.sendLRORequest( { resourceGroupName, workspaceName, computeName, + underlyingResourceAction, options }, - beginSystemUpdateOperationSpec, + beginDeleteMethodOperationSpec, options); } @@ -321,6 +367,32 @@ const getOperationSpec: msRest.OperationSpec = { serializer }; +const listNodesOperationSpec: msRest.OperationSpec = { + httpMethod: "POST", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningServices/workspaces/{workspaceName}/computes/{computeName}/listNodes", + urlParameters: [ + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.workspaceName, + Parameters.computeName + ], + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.AmlComputeNodesInformation + }, + default: { + bodyMapper: Mappers.MachineLearningServiceError + } + }, + serializer +}; + const listKeysOperationSpec: msRest.OperationSpec = { httpMethod: "POST", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningServices/workspaces/{workspaceName}/computes/{computeName}/listKeys", @@ -385,8 +457,8 @@ const beginCreateOrUpdateOperationSpec: msRest.OperationSpec = { serializer }; -const beginDeleteMethodOperationSpec: msRest.OperationSpec = { - httpMethod: "DELETE", +const beginUpdateOperationSpec: msRest.OperationSpec = { + httpMethod: "PATCH", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningServices/workspaces/{workspaceName}/computes/{computeName}", urlParameters: [ Parameters.subscriptionId, @@ -400,12 +472,16 @@ const beginDeleteMethodOperationSpec: msRest.OperationSpec = { headerParameters: [ Parameters.acceptLanguage ], + requestBody: { + parameterPath: "parameters", + mapper: { + ...Mappers.ClusterUpdateParameters, + required: true + } + }, responses: { 200: { - headersMapper: Mappers.MachineLearningComputeDeleteHeaders - }, - 202: { - headersMapper: Mappers.MachineLearningComputeDeleteHeaders + bodyMapper: Mappers.ComputeResource }, default: { bodyMapper: Mappers.MachineLearningServiceError @@ -414,8 +490,8 @@ const beginDeleteMethodOperationSpec: msRest.OperationSpec = { serializer }; -const beginSystemUpdateOperationSpec: msRest.OperationSpec = { - httpMethod: "POST", +const beginDeleteMethodOperationSpec: msRest.OperationSpec = { + httpMethod: "DELETE", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.MachineLearningServices/workspaces/{workspaceName}/computes/{computeName}", urlParameters: [ Parameters.subscriptionId, @@ -424,17 +500,18 @@ const beginSystemUpdateOperationSpec: msRest.OperationSpec = { Parameters.computeName ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion, + Parameters.underlyingResourceAction ], headerParameters: [ Parameters.acceptLanguage ], responses: { 200: { - headersMapper: Mappers.MachineLearningComputeSystemUpdateHeaders + headersMapper: Mappers.MachineLearningComputeDeleteHeaders }, 202: { - headersMapper: Mappers.MachineLearningComputeSystemUpdateHeaders + headersMapper: Mappers.MachineLearningComputeDeleteHeaders }, default: { bodyMapper: Mappers.MachineLearningServiceError diff --git a/sdk/machinelearningservices/arm-machinelearningservices/src/operations/usages.ts b/sdk/machinelearningservices/arm-machinelearningservices/src/operations/usages.ts new file mode 100644 index 000000000000..65bf743353cb --- /dev/null +++ b/sdk/machinelearningservices/arm-machinelearningservices/src/operations/usages.ts @@ -0,0 +1,133 @@ +/* + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is + * regenerated. + */ + +import * as msRest from "@azure/ms-rest-js"; +import * as Models from "../models"; +import * as Mappers from "../models/usagesMappers"; +import * as Parameters from "../models/parameters"; +import { AzureMachineLearningWorkspacesContext } from "../azureMachineLearningWorkspacesContext"; + +/** Class representing a Usages. */ +export class Usages { + private readonly client: AzureMachineLearningWorkspacesContext; + + /** + * Create a Usages. + * @param {AzureMachineLearningWorkspacesContext} client Reference to the service client. + */ + constructor(client: AzureMachineLearningWorkspacesContext) { + this.client = client; + } + + /** + * Gets the current usage information as well as limits for AML resources for given subscription + * and location. + * @param location The location for which resource usage is queried. + * @param [options] The optional parameters + * @returns Promise + */ + list(location: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param location The location for which resource usage is queried. + * @param callback The callback + */ + list(location: string, callback: msRest.ServiceCallback): void; + /** + * @param location The location for which resource usage is queried. + * @param options The optional parameters + * @param callback The callback + */ + list(location: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + list(location: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + location, + options + }, + listOperationSpec, + callback) as Promise; + } + + /** + * Gets the current usage information as well as limits for AML resources for given subscription + * and location. + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param [options] The optional parameters + * @returns Promise + */ + listNext(nextPageLink: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param callback The callback + */ + listNext(nextPageLink: string, callback: msRest.ServiceCallback): void; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param options The optional parameters + * @param callback The callback + */ + listNext(nextPageLink: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + listNext(nextPageLink: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + nextPageLink, + options + }, + listNextOperationSpec, + callback) as Promise; + } +} + +// Operation Specifications +const serializer = new msRest.Serializer(Mappers); +const listOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + path: "subscriptions/{subscriptionId}/providers/Microsoft.MachineLearningServices/locations/{location}/usages", + urlParameters: [ + Parameters.subscriptionId, + Parameters.location + ], + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.ListUsagesResult + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + serializer +}; + +const listNextOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + baseUrl: "https://management.azure.com", + path: "{nextLink}", + urlParameters: [ + Parameters.nextPageLink + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.ListUsagesResult + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + serializer +}; diff --git a/sdk/machinelearningservices/arm-machinelearningservices/src/operations/virtualMachineSizes.ts b/sdk/machinelearningservices/arm-machinelearningservices/src/operations/virtualMachineSizes.ts new file mode 100644 index 000000000000..5b2ddc6d7e39 --- /dev/null +++ b/sdk/machinelearningservices/arm-machinelearningservices/src/operations/virtualMachineSizes.ts @@ -0,0 +1,82 @@ +/* + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is + * regenerated. + */ + +import * as msRest from "@azure/ms-rest-js"; +import * as Models from "../models"; +import * as Mappers from "../models/virtualMachineSizesMappers"; +import * as Parameters from "../models/parameters"; +import { AzureMachineLearningWorkspacesContext } from "../azureMachineLearningWorkspacesContext"; + +/** Class representing a VirtualMachineSizes. */ +export class VirtualMachineSizes { + private readonly client: AzureMachineLearningWorkspacesContext; + + /** + * Create a VirtualMachineSizes. + * @param {AzureMachineLearningWorkspacesContext} client Reference to the service client. + */ + constructor(client: AzureMachineLearningWorkspacesContext) { + this.client = client; + } + + /** + * Returns supported VM Sizes in a location + * @param location The location upon which virtual-machine-sizes is queried. + * @param [options] The optional parameters + * @returns Promise + */ + list(location: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param location The location upon which virtual-machine-sizes is queried. + * @param callback The callback + */ + list(location: string, callback: msRest.ServiceCallback): void; + /** + * @param location The location upon which virtual-machine-sizes is queried. + * @param options The optional parameters + * @param callback The callback + */ + list(location: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + list(location: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + location, + options + }, + listOperationSpec, + callback) as Promise; + } +} + +// Operation Specifications +const serializer = new msRest.Serializer(Mappers); +const listOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + path: "subscriptions/{subscriptionId}/providers/Microsoft.MachineLearningServices/locations/{location}/vmSizes", + urlParameters: [ + Parameters.location, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.VirtualMachineSizeListResult + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + serializer +}; From d7fb51af64a7e4f676c75a925cdae75c8fb81aec Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Mon, 24 Jun 2019 16:42:50 -0700 Subject: [PATCH 182/289] [core-http] Add dependency "process" (#4043) - Required if a consumer of this library uses "rollup-plugin-inject" to shim the "process" module (as is currently done in "core-amqp") --- sdk/core/core-http/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/sdk/core/core-http/package.json b/sdk/core/core-http/package.json index 6fbc0fd99764..4c63320908cd 100644 --- a/sdk/core/core-http/package.json +++ b/sdk/core/core-http/package.json @@ -113,6 +113,7 @@ "@types/tunnel": "^0.0.0", "axios": "^0.19.0", "form-data": "^2.3.2", + "process": "^0.11.10", "tough-cookie": "^2.4.3", "tslib": "^1.9.3", "tunnel": "0.0.6", From 967179650ab72200e2b2e06745f0e6074af48700 Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Mon, 24 Jun 2019 16:43:36 -0700 Subject: [PATCH 183/289] [core-http] Add "proxyPolicy" to "browser" config (#4045) - Required for consumers to generate a correct browser bundle --- sdk/core/core-http/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/sdk/core/core-http/package.json b/sdk/core/core-http/package.json index 4c63320908cd..79f39f7be662 100644 --- a/sdk/core/core-http/package.json +++ b/sdk/core/core-http/package.json @@ -43,6 +43,7 @@ ], "browser": { "./es/lib/policies/msRestUserAgentPolicy.js": "./es/lib/policies/msRestUserAgentPolicy.browser.js", + "./es/lib/policies/proxyPolicy.js": "./es/lib/policies/proxyPolicy.browser.js", "./es/lib/util/base64.js": "./es/lib/util/base64.browser.js", "./es/lib/util/xml.js": "./es/lib/util/xml.browser.js", "./es/lib/defaultHttpClient.js": "./es/lib/defaultHttpClient.browser.js" From 41e716cbcdead0ef15d4ff744ec9a1d39a24b986 Mon Sep 17 00:00:00 2001 From: David Wilson Date: Mon, 24 Jun 2019 17:53:32 -0700 Subject: [PATCH 184/289] [core-http] Update @azure/core-http version, license headers, and README for release (#4039) * Update source code license headers * Set @azure/core-http version to 1.0.0-preview.1.0 * Update README.md to conform to guidelines * Remove 'private: true' from package.json * Reset Changelog.md and add details for preview release * Fix linting errors --- .docsettings.yml | 1 - sdk/core/core-amqp/package.json | 2 +- sdk/core/core-http/Changelog.md | 217 +----------------- sdk/core/core-http/README.md | 14 +- sdk/core/core-http/lib/axiosHttpClient.ts | 4 +- sdk/core/core-http/lib/coreHttp.ts | 4 +- .../lib/credentials/apiKeyCredentials.ts | 6 +- .../basicAuthenticationCredentials.ts | 4 +- .../core-http/lib/credentials/credentials.ts | 4 +- .../credentials/serviceClientCredentials.ts | 4 +- .../lib/credentials/tokenCredential.ts | 4 +- .../lib/credentials/tokenCredentials.ts | 4 +- .../lib/credentials/topicCredentials.ts | 16 +- .../lib/defaultHttpClient.browser.ts | 4 +- sdk/core/core-http/lib/defaultHttpClient.ts | 4 +- sdk/core/core-http/lib/httpClient.ts | 4 +- sdk/core/core-http/lib/httpHeaders.ts | 4 +- .../core-http/lib/httpOperationResponse.ts | 6 +- .../core-http/lib/httpPipelineLogLevel.ts | 6 +- sdk/core/core-http/lib/httpPipelineLogger.ts | 6 +- sdk/core/core-http/lib/msRest.ts | 4 +- sdk/core/core-http/lib/operationArguments.ts | 6 +- sdk/core/core-http/lib/operationParameter.ts | 6 +- sdk/core/core-http/lib/operationResponse.ts | 6 +- sdk/core/core-http/lib/operationSpec.ts | 6 +- .../bearerTokenAuthenticationPolicy.ts | 4 +- .../lib/policies/deserializationPolicy.ts | 6 +- .../lib/policies/exponentialRetryPolicy.ts | 6 +- .../policies/generateClientRequestIdPolicy.ts | 4 +- sdk/core/core-http/lib/policies/logPolicy.ts | 6 +- .../policies/msRestUserAgentPolicy.browser.ts | 6 +- .../lib/policies/msRestUserAgentPolicy.ts | 4 +- .../lib/policies/proxyPolicy.browser.ts | 4 +- .../core-http/lib/policies/proxyPolicy.ts | 4 +- .../core-http/lib/policies/redirectPolicy.ts | 6 +- .../core-http/lib/policies/requestPolicy.ts | 6 +- .../lib/policies/rpRegistrationPolicy.ts | 4 +- .../core-http/lib/policies/signingPolicy.ts | 4 +- .../lib/policies/systemErrorRetryPolicy.ts | 12 +- .../lib/policies/throttlingRetryPolicy.ts | 4 +- .../core-http/lib/policies/userAgentPolicy.ts | 6 +- .../core-http/lib/queryCollectionFormat.ts | 4 +- sdk/core/core-http/lib/restError.ts | 6 +- sdk/core/core-http/lib/serializer.ts | 6 +- sdk/core/core-http/lib/serviceClient.ts | 4 +- sdk/core/core-http/lib/url.ts | 4 +- sdk/core/core-http/lib/util/base64.browser.ts | 4 +- sdk/core/core-http/lib/util/base64.ts | 4 +- sdk/core/core-http/lib/util/constants.ts | 4 +- sdk/core/core-http/lib/util/utils.ts | 4 +- sdk/core/core-http/lib/util/xml.browser.ts | 4 +- sdk/core/core-http/lib/util/xml.ts | 4 +- sdk/core/core-http/lib/webResource.ts | 4 +- sdk/core/core-http/lib/xhrHttpClient.ts | 4 +- sdk/core/core-http/package.json | 3 +- sdk/core/core-http/samples/node-sample.ts | 4 +- .../test/axiosHttpClientTests.node.ts | 4 +- sdk/core/core-http/test/credentialTests.ts | 4 +- .../core-http/test/defaultHttpClientTests.ts | 4 +- sdk/core/core-http/test/logFilterTests.ts | 4 +- sdk/core/core-http/test/mockHttp.ts | 4 +- sdk/core/core-http/test/msAssert.ts | 4 +- .../test/msRestUserAgentPolicyTests.ts | 8 +- .../core-http/test/operationParameterTests.ts | 4 +- .../bearerTokenAuthenticationPolicyTests.ts | 4 +- .../policies/deserializationPolicyTests.ts | 4 +- .../test/policies/proxyPolicyTests.ts | 4 +- .../policies/throttlingRetryPolicyTests.ts | 4 +- sdk/core/core-http/test/serializationTests.ts | 4 +- sdk/core/core-http/test/serviceClientTests.ts | 4 +- sdk/core/core-http/test/urlTests.ts | 4 +- sdk/core/core-http/test/xhrTests.browser.ts | 4 +- sdk/core/core-http/test/xmlTests.ts | 3 + sdk/identity/identity/package.json | 2 +- .../keyvault-certificates/package.json | 2 +- sdk/keyvault/keyvault-keys/package.json | 2 +- sdk/keyvault/keyvault-secrets/package.json | 2 +- 77 files changed, 183 insertions(+), 391 deletions(-) diff --git a/.docsettings.yml b/.docsettings.yml index 410ad0235a37..ae89c24e118c 100644 --- a/.docsettings.yml +++ b/.docsettings.yml @@ -62,7 +62,6 @@ known_content_issues: - ["sdk/cognitiveservices/cognitiveservices-websearch/README.md", "#1583"] - ["sdk/eventgrid/eventgrid/README.md", "#1583"] - ["sdk/core/abort-controller/README.md", "#1583"] - - ["sdk/core/core-http/README.md", "#1583"] - ["sdk/identity/identity/README.md", "#1583"] - ["sdk/cosmosdb/cosmos/README.md", "#1583"] - ["sdk/cosmosdb/cosmos/src/test/readme.md", "#1583"] diff --git a/sdk/core/core-amqp/package.json b/sdk/core/core-amqp/package.json index e042beaf0900..d401d788e1e3 100644 --- a/sdk/core/core-amqp/package.json +++ b/sdk/core/core-amqp/package.json @@ -66,7 +66,7 @@ "tslib": "^1.9.3", "url": "^0.11.0", "util": "^0.11.1", - "@azure/core-http": "^1.2.6" + "@azure/core-http": "^1.0.0-preview.1.0" }, "peerDependencies": { "rhea-promise": "^0.1.15" diff --git a/sdk/core/core-http/Changelog.md b/sdk/core/core-http/Changelog.md index 8da6a5f55297..292ae360d192 100644 --- a/sdk/core/core-http/Changelog.md +++ b/sdk/core/core-http/Changelog.md @@ -1,216 +1,7 @@ # Changelog -## 1.8.10 - 2019-06-05 -- `axios` changed the way it treats properties of the request config in `0.19.0`. Previously we were setting `trasnformResponse` to `undefined`. This would indicate `axios` to not transform (`JSON.parse()`) the response body. In `0.19.0`, they are setting the default response transformer if transformResponse is set to `undefined`. This breaks our pasrsing logic where we are doing `JSON.parse()` on `operationResponse.bodyAsText`. Moreover, we are exposing the `bodyAsText` property in the generated clients. -Not populating this property or setting the value of this property to a parsed JSON would be a breaking change for our users. -Hence we are setting the `transformResponse` property in the request config to an indentity function that returns the response body as-is. +## 1.0.0-preview.1 - 2019-06-25 -## 1.8.9 - 2019-06-04 -- Added build job to CI pipeline - -## 1.8.8 - 2019-06-03 -- Fixed vulnerabilities by bumping `axios` to `^0.19.0`. -- New version of axios fixed some issues hence removed one of the workarounds of uppercasing method names while following redirects [axios PR](https://github.com/axios/axios/pull/1758). - -## 1.8.7 - 2019-05-16 -- Fixed issue [#347](https://github.com/Azure/ms-rest-js/issues/347), [#348](https://github.com/Azure/ms-rest-js/issues/348) in PR [#349](https://github.com/Azure/ms-rest-js/pull/349) - -## 1.8.6 - 2019-05-10 -- Added script to run tests on dependent projects [#345](https://github.com/Azure/ms-rest-js/pull/345) - -## 1.8.4 - 2019-05-07 -- Fixed incorrect undefined check in Axios client [62b65d](https://github.com/Azure/ms-rest-js/commit/ea7ceb86f1e6e6f7879e7e7ddfe791113762b65d#diff-b9cfc7f2cdf78a7f4b91a753d10865a2) -- Added TSLint check. Fix TSLint errors [#344](https://github.com/Azure/ms-rest-js/pull/344) - -## 1.8.2 - 2019-04-25 -- Fixed http over https bug [#341](https://github.com/Azure/ms-rest-js/pull/341) - -## 1.8.1 - 2019-04-01 -- Fixed serialization issue when required object is empty [#337](https://github.com/Azure/ms-rest-js/pull/337) - -## 1.8.0 - 2019-03-18 -- Added exports to several request policy factory methods [#336](https://github.com/Azure/ms-rest-js/pull/336) - -## 1.7.0 - 2019-02-11 -- Added userAgentHeaderName to ServiceClientOptions [#330](https://github.com/Azure/ms-rest-js/pull/330) - -## 1.6.0 - 2019-01-30 -- Fixed including proxy policy in browser [0c552f](https://github.com/Azure/ms-rest-js/commit/fafa26180e591db43d43c9cf0c7e93c8030c552f#diff-b9cfc7f2cdf78a7f4b91a753d10865a2) - -# 1.5.3 - 2019-01-25 -- Brought Axios interceptors back [c33602](https://github.com/Azure/ms-rest-js/commit/c1742fe6a80ed9b794115362633e0a8307c33602#diff-b9cfc7f2cdf78a7f4b91a753d10865a2) - -## 1.5.2 - 2019-01-25 -- Added HTTP(S) over HTTP(S) proxy support [2b1844](https://github.com/Azure/ms-rest-js/commit/1ee5a40d5016e286a7492c8cbd7b08d5c92b1844#diff-b9cfc7f2cdf78a7f4b91a753d10865a2) -- Added `@types/tunnel` [0865a2](https://github.com/Azure/ms-rest-js/commit/7a9b496d04294446f940f1549fb0a44dd9b94c01#diff-b9cfc7f2cdf78a7f4b91a753d10865a2) - -## 1.5.1 - 2019-01-22 -- Fixed default HTTP client tests [c75b87](https://github.com/Azure/ms-rest-js/commit/4c2b1c5390deab989b5ec9cadb84891de9c75b87#diff-b9cfc7f2cdf78a7f4b91a753d10865a2) - -## 1.5.0 - 2019-01-15 - -- Added support to specify proxy setting in ServiceClientOptions. - -## 1.4.1 - 2019-01-15 - -- Movec browser-environment tests to Karma. - -## 1.4.0 - 2019-10-15 - -- Allowed ServiceClientOptions.requestPolicyFactories to be a function. - -## 1.3.0 - 2019-01-15 - -- Allowed ServiceClientOptions.userAgent property to be a function. - -## 1.1.1 - 2018-11-13 - -- Improved debugging by adding rollup-plugin-sourcemaps. - -## 1.1.0 - 2018-11-09 - -- Renamed NPM package to @azure/ms-rest-js. - -## 1.0.0 - 2018-10-04 - -- Moved to Rollup for node and browser bundles -- Moved browser bundle from ./msRestBundle.js to ./dist/msRest.browser.js. - -## 0.22.1 - 2018-09-27 - -- Added Authenticator type. - -## 0.22.0 - 2018-09-05 - -- Added support for EventGrid TopicCredentials object. - -## 0.21.0 - 2018-08-30 - -- Flatten response body properties, headers, etc. into one object for convenience - -## 0.20.0 - 2018-08-24 - -- Fixed bug where operationSpec.baseUrl might get mutated -- Fixed some edge cases in response headers parsing in browser -- Refinements to support LRO work in ms-rest-azure-js - -## 0.19.0 - 2018-08-22 - -- Improved type definitions of generated operation responses - -## 0.18.0 - 2018-08-08 - -- Replaced RequestPolicyCreator function with RequestPolicyFactory interface with create() method. - -## 0.17.0 - 2018-08-03 - -- Refactored mappers interfaces -- Added "sideEffects": false to package.json - -## 0.16.0 - 2018-07-26 - -- Added timeout parameter to request options -- Call onDownload/UploadProgress callbacks in nodejs - -## 0.15.0 - 2018-07-16 - -- Support x-nullable in Swagger -- Added architecture overview in docs/ folder -- Added withCredentials flag to request options - -## 0.12.0, 0.13.0, 0.14.0 - 2018-06-25 - -- Moved header deserialization to runtime -- Using XhrHttpClient in browser -- Miscellaneous internal breaking changes - -## 0.11.0 - 2018-06-21 - -- Support x-ms-header-collection-prefix in Swagger - -## 0.10.0 - 2018-06-18 - -- Export RequestPolicyOptions - -## 0.9.0 - 2018-06-14 - -- Fix base64 encoding in browser -- Add es6 module build -- withCredentials fixes -- Allow bundling individual operation groups instead of all operations - -## 0.8.0 - 2018-05-31 - -- Add onDownloadProgress/onUploadProgress handlers for browser - -## 0.7.0 - 2018-05-25 - -- Add parsed response headers support - -## 0.6.0 - 2018-05-22 - -- Added URLBuilder to parse and build URLs -- Removed fetch responses from public APIs -- Added AbortSignal optional parameter to operations for cancellation - -## 0.5.0 - 2018-05-08 - -- Replaced BaseFilter type with RequestPolicy. -- Removed ServiceClient.pipeline() in favor of ServiceClient.sendRequest(). -- Started work on OperationSpecs to replace the imperative generated operations. - -## 0.4.0 - 2018-05-03 - -- Added isomorphic-xml2js dependency to reduce browser package size -- Removed moment.js dependency, instead passing ISO 8601 strings for durations. - -## 0.2.8 - 2018-04-02 - -- Relaxed validation for object types -- Relaxed handling of unrecognized polymorphic discriminator -- Added ApiKeyCredentials type - -## 0.2.7 - 2018-03-23 - -- Updated moment to 2.21.0 -- Added support to ensure that the provided Duration is a Duration like object. (based on ms-rest 2.3.2 in https://github.com/Azure/azure-sdk-for-node) - -## 0.2.6 - 2018-02-22 - -- Added support for [de]serializing an "any" type (case when type is not present for an entity in the open api spec.). Resolves https://github.com/Azure/autorest/issues/2855 -- Updated dependency versions - -## 0.2.5 - 2018-01-25 - -- Compiled target to `ES5` for supporting IE11 #13. - -## 0.2.4 - 2018-01-24 - -- Removed dependency on detect-node and added a utility method to detect whether the app is being executed in a node.js environment. Fixes #10. - -## 0.2.3 - 2017-10-25 - -- We will return the actual response when the return type of a method in the generated code is `stream`. Hence, removing `bodyAsStream` property from `HttpOperationResponse`. - -## 0.2.2 - 2017-10-17 - -- replacing eval by traversing recursively in the object. - -## 0.2.1 - 2017-10-10 - -- moment version 2.19.0 has lot of issues. Hence fixing the dependency strictly to 2.18.1. - -## 0.2.0 - 2017-10-10 - -- Reverting the change made in #2. - -## 0.1.0 - 2017-09-16 - -- Initial version of ms-rest-js - - Provides support for basic credentials - - Supports serialization and deserialization of basic and complex types - - Supports sending requests in the node environment and also in the browser - - Builds the request pipeline by adding predefined filters - - Provides mechanism to add custom flters in the pipeline - - Provides a bundled file named [msRestBundle.js](./msRestBundle.js) that can be used in the browser - - Please take a look at the [samples](./samples) directory for node and browser samples +- Forked `@azure/ms-rest-js` to `@azure/core-http` to form the base HTTP pipeline of the Azure SDK TypeScript/JavaScript libraries. +- Added `TokenCredential` to define a simple interface for credentials that provided bearer tokens +- Added `BearerTokenAuthenticationPolicy` which can use a `TokenCredential` implementation to perform bearer token authentication against Azure services diff --git a/sdk/core/core-http/README.md b/sdk/core/core-http/README.md index b13a67029a73..b4c1bf7e78b3 100644 --- a/sdk/core/core-http/README.md +++ b/sdk/core/core-http/README.md @@ -1,10 +1,8 @@ -# Azure Core HTTP client library for JavaScript +# Azure Core HTTP client library for JS -[![Build Status](https://dev.azure.com/azure-public/adx/_apis/build/status/public.Azure.ms-rest-js)](https://dev.azure.com/azure-public/adx/_build/latest?definitionId=6) +This is the core HTTP pipeline for Azure SDK JavaScript libraries which work in the browser and Node.js. This library is primarily intended to be used in code generated by [AutoRest](https://github.com/Azure/Autorest). -Runtime for isomorphic javascript libraries (that work in the browser and node.js environemnt) generated via [Autorest](https://github.com/Azure/Autorest). - -## Getting Started +## Getting started ### Requirements - node.js version > 6.x @@ -15,7 +13,7 @@ Runtime for isomorphic javascript libraries (that work in the browser and node.j ## Key concepts -You can find an explanation of how this repository's code works by going to our [architecture overview](https://github.com/Azure/ms-rest-js/blob/master/docs/architectureOverview.md). +You can find an explanation of how this repository's code works by going to our [architecture overview](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/core/core-http/docs/architectureOverview.md). ## Examples @@ -33,9 +31,9 @@ Examples can be found in the `samples` folder. ## Troubleshooting -To be added later. +If you run into issues while using this library, please feel free to [file an issue](https://github.com/Azure/azure-sdk-for-js/issues/new). -# Contributing +## Contributing This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us diff --git a/sdk/core/core-http/lib/axiosHttpClient.ts b/sdk/core/core-http/lib/axiosHttpClient.ts index 32a121134889..a4ba6701f68f 100644 --- a/sdk/core/core-http/lib/axiosHttpClient.ts +++ b/sdk/core/core-http/lib/axiosHttpClient.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import axios, { AxiosError, AxiosRequestConfig, AxiosResponse, Method } from "axios"; import { Transform, Readable } from "stream"; diff --git a/sdk/core/core-http/lib/coreHttp.ts b/sdk/core/core-http/lib/coreHttp.ts index e1a23dc56884..a283cfc975dc 100644 --- a/sdk/core/core-http/lib/coreHttp.ts +++ b/sdk/core/core-http/lib/coreHttp.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. export { WebResource, HttpRequestBody, RequestPrepareOptions, HttpMethods, ParameterValue, RequestOptionsBase, TransferProgressEvent, AbortSignalLike } from "./webResource"; export { DefaultHttpClient } from "./defaultHttpClient"; diff --git a/sdk/core/core-http/lib/credentials/apiKeyCredentials.ts b/sdk/core/core-http/lib/credentials/apiKeyCredentials.ts index bec59bd581d6..333616a7c4d0 100644 --- a/sdk/core/core-http/lib/credentials/apiKeyCredentials.ts +++ b/sdk/core/core-http/lib/credentials/apiKeyCredentials.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { HttpHeaders } from "../httpHeaders"; import { WebResource } from "../webResource"; @@ -82,4 +82,4 @@ export class ApiKeyCredentials implements ServiceClientCredentials { return Promise.resolve(webResource); } -} \ No newline at end of file +} diff --git a/sdk/core/core-http/lib/credentials/basicAuthenticationCredentials.ts b/sdk/core/core-http/lib/credentials/basicAuthenticationCredentials.ts index 8dcfbdfd95de..0e7a90bc8206 100644 --- a/sdk/core/core-http/lib/credentials/basicAuthenticationCredentials.ts +++ b/sdk/core/core-http/lib/credentials/basicAuthenticationCredentials.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { HttpHeaders } from "../httpHeaders"; import * as base64 from "../util/base64"; diff --git a/sdk/core/core-http/lib/credentials/credentials.ts b/sdk/core/core-http/lib/credentials/credentials.ts index 7e9096bb3ed6..ad0e3e90f787 100644 --- a/sdk/core/core-http/lib/credentials/credentials.ts +++ b/sdk/core/core-http/lib/credentials/credentials.ts @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. export type Authenticator = (challenge: object) => Promise; diff --git a/sdk/core/core-http/lib/credentials/serviceClientCredentials.ts b/sdk/core/core-http/lib/credentials/serviceClientCredentials.ts index 001c23d9378e..dc2a60e67076 100644 --- a/sdk/core/core-http/lib/credentials/serviceClientCredentials.ts +++ b/sdk/core/core-http/lib/credentials/serviceClientCredentials.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { WebResource } from "../webResource"; diff --git a/sdk/core/core-http/lib/credentials/tokenCredential.ts b/sdk/core/core-http/lib/credentials/tokenCredential.ts index f68ebc4f4163..2ba7d2a5ac54 100644 --- a/sdk/core/core-http/lib/credentials/tokenCredential.ts +++ b/sdk/core/core-http/lib/credentials/tokenCredential.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { AbortSignalLike } from "../webResource"; diff --git a/sdk/core/core-http/lib/credentials/tokenCredentials.ts b/sdk/core/core-http/lib/credentials/tokenCredentials.ts index 6baf10383d43..01f4957eaabc 100644 --- a/sdk/core/core-http/lib/credentials/tokenCredentials.ts +++ b/sdk/core/core-http/lib/credentials/tokenCredentials.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { HttpHeaders } from "../httpHeaders"; import { Constants } from "../util/constants"; diff --git a/sdk/core/core-http/lib/credentials/topicCredentials.ts b/sdk/core/core-http/lib/credentials/topicCredentials.ts index 66e22fdd45f8..9a103867d334 100644 --- a/sdk/core/core-http/lib/credentials/topicCredentials.ts +++ b/sdk/core/core-http/lib/credentials/topicCredentials.ts @@ -1,15 +1,15 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { ApiKeyCredentials, ApiKeyCredentialOptions } from "./apiKeyCredentials"; export class TopicCredentials extends ApiKeyCredentials { - /** - * Creates a new EventGrid TopicCredentials object. - * - * @constructor - * @param {string} topicKey The EventGrid topic key - */ + /** + * Creates a new EventGrid TopicCredentials object. + * + * @constructor + * @param {string} topicKey The EventGrid topic key + */ constructor(topicKey: string) { if (!topicKey || (topicKey && typeof topicKey !== "string")) { throw new Error("topicKey cannot be null or undefined and must be of type string."); diff --git a/sdk/core/core-http/lib/defaultHttpClient.browser.ts b/sdk/core/core-http/lib/defaultHttpClient.browser.ts index 5ac7a79d6f3c..b1b5cbdc1093 100644 --- a/sdk/core/core-http/lib/defaultHttpClient.browser.ts +++ b/sdk/core/core-http/lib/defaultHttpClient.browser.ts @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. export { XhrHttpClient as DefaultHttpClient } from "./xhrHttpClient"; diff --git a/sdk/core/core-http/lib/defaultHttpClient.ts b/sdk/core/core-http/lib/defaultHttpClient.ts index c0809369731f..9fd2406b3054 100644 --- a/sdk/core/core-http/lib/defaultHttpClient.ts +++ b/sdk/core/core-http/lib/defaultHttpClient.ts @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. export { AxiosHttpClient as DefaultHttpClient } from "./axiosHttpClient"; diff --git a/sdk/core/core-http/lib/httpClient.ts b/sdk/core/core-http/lib/httpClient.ts index 47357ec3394a..fa0be99cfffe 100644 --- a/sdk/core/core-http/lib/httpClient.ts +++ b/sdk/core/core-http/lib/httpClient.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { RequestPolicy } from "./policies/requestPolicy"; diff --git a/sdk/core/core-http/lib/httpHeaders.ts b/sdk/core/core-http/lib/httpHeaders.ts index 06c19315ac2b..78c510343c66 100644 --- a/sdk/core/core-http/lib/httpHeaders.ts +++ b/sdk/core/core-http/lib/httpHeaders.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. /** * A collection of HttpHeaders that can be sent with a HTTP request. diff --git a/sdk/core/core-http/lib/httpOperationResponse.ts b/sdk/core/core-http/lib/httpOperationResponse.ts index 221ee6a4f21b..9b30056b32df 100644 --- a/sdk/core/core-http/lib/httpOperationResponse.ts +++ b/sdk/core/core-http/lib/httpOperationResponse.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { WebResource } from "./webResource"; import { HttpHeaders } from "./httpHeaders"; @@ -29,7 +29,7 @@ declare global { * Stub declaration of the browser-only Blob type. * Full type information can be obtained by including "lib": ["dom"] in tsconfig.json. */ - interface Blob {} + interface Blob { } } /** diff --git a/sdk/core/core-http/lib/httpPipelineLogLevel.ts b/sdk/core/core-http/lib/httpPipelineLogLevel.ts index 045be5bb2f1e..3a628263ce50 100644 --- a/sdk/core/core-http/lib/httpPipelineLogLevel.ts +++ b/sdk/core/core-http/lib/httpPipelineLogLevel.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. /** * The different levels of logs that can be used with the HttpPipelineLogger. @@ -24,4 +24,4 @@ export enum HttpPipelineLogLevel { * An information log. */ INFO -} \ No newline at end of file +} diff --git a/sdk/core/core-http/lib/httpPipelineLogger.ts b/sdk/core/core-http/lib/httpPipelineLogger.ts index ffec883fc29a..aa32472120d0 100644 --- a/sdk/core/core-http/lib/httpPipelineLogger.ts +++ b/sdk/core/core-http/lib/httpPipelineLogger.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { HttpPipelineLogLevel } from "./httpPipelineLogLevel"; @@ -53,4 +53,4 @@ export class ConsoleHttpPipelineLogger implements HttpPipelineLogger { break; } } -} \ No newline at end of file +} diff --git a/sdk/core/core-http/lib/msRest.ts b/sdk/core/core-http/lib/msRest.ts index 648471b06a97..85344f18509c 100644 --- a/sdk/core/core-http/lib/msRest.ts +++ b/sdk/core/core-http/lib/msRest.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. export { WebResource, HttpRequestBody, RequestPrepareOptions, HttpMethods, ParameterValue, RequestOptionsBase, TransferProgressEvent, AbortSignalLike } from "./webResource"; export { DefaultHttpClient } from "./defaultHttpClient"; diff --git a/sdk/core/core-http/lib/operationArguments.ts b/sdk/core/core-http/lib/operationArguments.ts index b3420a40d207..47949b774979 100644 --- a/sdk/core/core-http/lib/operationArguments.ts +++ b/sdk/core/core-http/lib/operationArguments.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { RequestOptionsBase } from "./webResource"; @@ -16,4 +16,4 @@ export interface OperationArguments { * The optional arugments that are provided to an operation. */ options?: RequestOptionsBase; -} \ No newline at end of file +} diff --git a/sdk/core/core-http/lib/operationParameter.ts b/sdk/core/core-http/lib/operationParameter.ts index f99c69ac6538..64b2670d95f5 100644 --- a/sdk/core/core-http/lib/operationParameter.ts +++ b/sdk/core/core-http/lib/operationParameter.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { QueryCollectionFormat } from "./queryCollectionFormat"; import { Mapper } from "./serializer"; @@ -68,4 +68,4 @@ export function getPathStringFromParameterPath(parameterPath: ParameterPath, map result = mapper.serializedName!; } return result; -} \ No newline at end of file +} diff --git a/sdk/core/core-http/lib/operationResponse.ts b/sdk/core/core-http/lib/operationResponse.ts index a3576eb844f5..53fe4a0131e9 100644 --- a/sdk/core/core-http/lib/operationResponse.ts +++ b/sdk/core/core-http/lib/operationResponse.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { Mapper } from "./serializer"; @@ -16,4 +16,4 @@ export interface OperationResponse { * The mapper that will be used to deserialize the response body. */ bodyMapper?: Mapper; -} \ No newline at end of file +} diff --git a/sdk/core/core-http/lib/operationSpec.ts b/sdk/core/core-http/lib/operationSpec.ts index 43c61ea8a76a..31243d839d68 100644 --- a/sdk/core/core-http/lib/operationSpec.ts +++ b/sdk/core/core-http/lib/operationSpec.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { OperationParameter, OperationQueryParameter, OperationURLParameter } from "./operationParameter"; import { OperationResponse } from "./operationResponse"; @@ -88,4 +88,4 @@ export function isStreamOperation(operationSpec: OperationSpec): boolean { } } return result; -} \ No newline at end of file +} diff --git a/sdk/core/core-http/lib/policies/bearerTokenAuthenticationPolicy.ts b/sdk/core/core-http/lib/policies/bearerTokenAuthenticationPolicy.ts index e7607013d16b..08d5f4e53999 100644 --- a/sdk/core/core-http/lib/policies/bearerTokenAuthenticationPolicy.ts +++ b/sdk/core/core-http/lib/policies/bearerTokenAuthenticationPolicy.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { TokenCredential, AccessToken, GetTokenOptions } from "../credentials/tokenCredential"; import { BaseRequestPolicy, RequestPolicy, RequestPolicyOptions, RequestPolicyFactory } from "../policies/requestPolicy"; diff --git a/sdk/core/core-http/lib/policies/deserializationPolicy.ts b/sdk/core/core-http/lib/policies/deserializationPolicy.ts index 265d3beb9cfb..2cc454d1104c 100644 --- a/sdk/core/core-http/lib/policies/deserializationPolicy.ts +++ b/sdk/core/core-http/lib/policies/deserializationPolicy.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { HttpOperationResponse } from "../httpOperationResponse"; import { OperationResponse } from "../operationResponse"; @@ -217,4 +217,4 @@ function parse(jsonContentTypes: string[], xmlContentTypes: string[], operationR } return Promise.resolve(operationResponse); -} \ No newline at end of file +} diff --git a/sdk/core/core-http/lib/policies/exponentialRetryPolicy.ts b/sdk/core/core-http/lib/policies/exponentialRetryPolicy.ts index 7c297d1ba232..305b5ed088c5 100644 --- a/sdk/core/core-http/lib/policies/exponentialRetryPolicy.ts +++ b/sdk/core/core-http/lib/policies/exponentialRetryPolicy.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { HttpOperationResponse } from "../httpOperationResponse"; import * as utils from "../util/utils"; @@ -160,4 +160,4 @@ function retry(policy: ExponentialRetryPolicy, request: WebResource, response?: } else { return Promise.resolve(response); } -} \ No newline at end of file +} diff --git a/sdk/core/core-http/lib/policies/generateClientRequestIdPolicy.ts b/sdk/core/core-http/lib/policies/generateClientRequestIdPolicy.ts index e85cafb0e76b..f4988b887c35 100644 --- a/sdk/core/core-http/lib/policies/generateClientRequestIdPolicy.ts +++ b/sdk/core/core-http/lib/policies/generateClientRequestIdPolicy.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { HttpOperationResponse } from "../httpOperationResponse"; import * as utils from "../util/utils"; diff --git a/sdk/core/core-http/lib/policies/logPolicy.ts b/sdk/core/core-http/lib/policies/logPolicy.ts index 4ab36babc489..df1f15724658 100644 --- a/sdk/core/core-http/lib/policies/logPolicy.ts +++ b/sdk/core/core-http/lib/policies/logPolicy.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { HttpOperationResponse } from "../httpOperationResponse"; import { WebResource } from "../webResource"; @@ -32,4 +32,4 @@ function logResponse(policy: LogPolicy, response: HttpOperationResponse): Promis const responseBody = response.bodyAsText; policy.logger(`>> Body: ${responseBody}`); return Promise.resolve(response); -} \ No newline at end of file +} diff --git a/sdk/core/core-http/lib/policies/msRestUserAgentPolicy.browser.ts b/sdk/core/core-http/lib/policies/msRestUserAgentPolicy.browser.ts index c667ab2e7734..491cf5d13c19 100644 --- a/sdk/core/core-http/lib/policies/msRestUserAgentPolicy.browser.ts +++ b/sdk/core/core-http/lib/policies/msRestUserAgentPolicy.browser.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. /* * NOTE: When moving this file, please update "browser" section in package.json @@ -24,4 +24,4 @@ export function getPlatformSpecificData(): TelemetryInfo[] { }; return [osInfo]; -} \ No newline at end of file +} diff --git a/sdk/core/core-http/lib/policies/msRestUserAgentPolicy.ts b/sdk/core/core-http/lib/policies/msRestUserAgentPolicy.ts index 29de62748749..4818b1f4b35a 100644 --- a/sdk/core/core-http/lib/policies/msRestUserAgentPolicy.ts +++ b/sdk/core/core-http/lib/policies/msRestUserAgentPolicy.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import * as os from "os"; import { TelemetryInfo } from "./userAgentPolicy"; diff --git a/sdk/core/core-http/lib/policies/proxyPolicy.browser.ts b/sdk/core/core-http/lib/policies/proxyPolicy.browser.ts index 9e340d42722e..0543b045062b 100644 --- a/sdk/core/core-http/lib/policies/proxyPolicy.browser.ts +++ b/sdk/core/core-http/lib/policies/proxyPolicy.browser.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { ProxySettings } from "../serviceClient"; import { BaseRequestPolicy, RequestPolicy, RequestPolicyFactory, RequestPolicyOptions } from "./requestPolicy"; diff --git a/sdk/core/core-http/lib/policies/proxyPolicy.ts b/sdk/core/core-http/lib/policies/proxyPolicy.ts index 58f58612bae1..88a40fb9d727 100644 --- a/sdk/core/core-http/lib/policies/proxyPolicy.ts +++ b/sdk/core/core-http/lib/policies/proxyPolicy.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { BaseRequestPolicy, RequestPolicy, RequestPolicyFactory, RequestPolicyOptions } from "./requestPolicy"; import { HttpOperationResponse } from "../httpOperationResponse"; diff --git a/sdk/core/core-http/lib/policies/redirectPolicy.ts b/sdk/core/core-http/lib/policies/redirectPolicy.ts index 90aa3b030edd..4b10325c96ad 100644 --- a/sdk/core/core-http/lib/policies/redirectPolicy.ts +++ b/sdk/core/core-http/lib/policies/redirectPolicy.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { HttpOperationResponse } from "../httpOperationResponse"; import { URLBuilder } from "../url"; @@ -46,4 +46,4 @@ function handleRedirect(policy: RedirectPolicy, response: HttpOperationResponse, } return Promise.resolve(response); -} \ No newline at end of file +} diff --git a/sdk/core/core-http/lib/policies/requestPolicy.ts b/sdk/core/core-http/lib/policies/requestPolicy.ts index 6089a0fd0e58..8ee6f154f4d0 100644 --- a/sdk/core/core-http/lib/policies/requestPolicy.ts +++ b/sdk/core/core-http/lib/policies/requestPolicy.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { HttpOperationResponse } from "../httpOperationResponse"; import { HttpPipelineLogger } from "../httpPipelineLogger"; @@ -72,4 +72,4 @@ export class RequestPolicyOptions { this._logger.log(logLevel, message); } } -} \ No newline at end of file +} diff --git a/sdk/core/core-http/lib/policies/rpRegistrationPolicy.ts b/sdk/core/core-http/lib/policies/rpRegistrationPolicy.ts index 13698f4cad46..bfeacc739673 100644 --- a/sdk/core/core-http/lib/policies/rpRegistrationPolicy.ts +++ b/sdk/core/core-http/lib/policies/rpRegistrationPolicy.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { HttpOperationResponse } from "../httpOperationResponse"; import * as utils from "../util/utils"; import { WebResource } from "../webResource"; diff --git a/sdk/core/core-http/lib/policies/signingPolicy.ts b/sdk/core/core-http/lib/policies/signingPolicy.ts index c0d19230c970..73fdbe86b1a2 100644 --- a/sdk/core/core-http/lib/policies/signingPolicy.ts +++ b/sdk/core/core-http/lib/policies/signingPolicy.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { ServiceClientCredentials } from "../credentials/serviceClientCredentials"; import { HttpOperationResponse } from "../httpOperationResponse"; diff --git a/sdk/core/core-http/lib/policies/systemErrorRetryPolicy.ts b/sdk/core/core-http/lib/policies/systemErrorRetryPolicy.ts index 2f4d14a9e65b..18ea88b5cf10 100644 --- a/sdk/core/core-http/lib/policies/systemErrorRetryPolicy.ts +++ b/sdk/core/core-http/lib/policies/systemErrorRetryPolicy.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { HttpOperationResponse } from "../httpOperationResponse"; import * as utils from "../util/utils"; @@ -119,9 +119,9 @@ function retry(policy: SystemErrorRetryPolicy, request: WebResource, operationRe err.code === "ECONNRESET" || err.code === "ENOENT")) { // If previous operation ended with an error and the policy allows a retry, do that return utils.delay(retryData.retryInterval) - .then(() => policy._nextPolicy.sendRequest(request.clone())) - .then(res => retry(policy, request, res, retryData, err)) - .catch(err => retry(policy, request, operationResponse, retryData, err)); + .then(() => policy._nextPolicy.sendRequest(request.clone())) + .then(res => retry(policy, request, res, retryData, err)) + .catch(err => retry(policy, request, operationResponse, retryData, err)); } else { if (err != undefined) { // If the operation failed in the end, return all errors instead of just the last one @@ -130,4 +130,4 @@ function retry(policy: SystemErrorRetryPolicy, request: WebResource, operationRe } return Promise.resolve(operationResponse); } -} \ No newline at end of file +} diff --git a/sdk/core/core-http/lib/policies/throttlingRetryPolicy.ts b/sdk/core/core-http/lib/policies/throttlingRetryPolicy.ts index 33183c0d8ac2..a866b18e9e69 100644 --- a/sdk/core/core-http/lib/policies/throttlingRetryPolicy.ts +++ b/sdk/core/core-http/lib/policies/throttlingRetryPolicy.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { BaseRequestPolicy, RequestPolicy, RequestPolicyOptions, RequestPolicyFactory } from "./requestPolicy"; import { WebResource } from "../webResource"; diff --git a/sdk/core/core-http/lib/policies/userAgentPolicy.ts b/sdk/core/core-http/lib/policies/userAgentPolicy.ts index 4705d134bfc3..3b23e66ce693 100644 --- a/sdk/core/core-http/lib/policies/userAgentPolicy.ts +++ b/sdk/core/core-http/lib/policies/userAgentPolicy.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { HttpHeaders } from "../httpHeaders"; import { HttpOperationResponse } from "../httpOperationResponse"; @@ -37,7 +37,7 @@ export function getDefaultUserAgentValue(): string { export function userAgentPolicy(userAgentData?: TelemetryInfo): RequestPolicyFactory { const key: string = (!userAgentData || userAgentData.key == undefined) ? getDefaultUserAgentKey() : userAgentData.key; - const value: string = (!userAgentData || userAgentData.value == undefined) ? getDefaultUserAgentValue() : userAgentData.value; + const value: string = (!userAgentData || userAgentData.value == undefined) ? getDefaultUserAgentValue() : userAgentData.value; return { create: (nextPolicy: RequestPolicy, options: RequestPolicyOptions) => { diff --git a/sdk/core/core-http/lib/queryCollectionFormat.ts b/sdk/core/core-http/lib/queryCollectionFormat.ts index ba6cca81d61a..965be933d8d5 100644 --- a/sdk/core/core-http/lib/queryCollectionFormat.ts +++ b/sdk/core/core-http/lib/queryCollectionFormat.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. /** * The format that will be used to join an array of values together for a query parameter value. diff --git a/sdk/core/core-http/lib/restError.ts b/sdk/core/core-http/lib/restError.ts index 44484de80c06..7609ea3e6590 100644 --- a/sdk/core/core-http/lib/restError.ts +++ b/sdk/core/core-http/lib/restError.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { HttpOperationResponse } from "./httpOperationResponse"; import { WebResource } from "./webResource"; @@ -24,4 +24,4 @@ export class RestError extends Error { Object.setPrototypeOf(this, RestError.prototype); } -} \ No newline at end of file +} diff --git a/sdk/core/core-http/lib/serializer.ts b/sdk/core/core-http/lib/serializer.ts index b6b391bee886..71c068c929be 100644 --- a/sdk/core/core-http/lib/serializer.ts +++ b/sdk/core/core-http/lib/serializer.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import * as base64 from "./util/base64"; import * as utils from "./util/utils"; @@ -870,4 +870,4 @@ export const MapperType = strEnum([ "Stream", "TimeSpan", "UnixTime" -]); \ No newline at end of file +]); diff --git a/sdk/core/core-http/lib/serviceClient.ts b/sdk/core/core-http/lib/serviceClient.ts index 792b18c98921..3cc3a42f5906 100644 --- a/sdk/core/core-http/lib/serviceClient.ts +++ b/sdk/core/core-http/lib/serviceClient.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { ServiceClientCredentials } from "./credentials/serviceClientCredentials"; import { TokenCredential, isTokenCredential } from "./credentials/tokenCredential"; diff --git a/sdk/core/core-http/lib/url.ts b/sdk/core/core-http/lib/url.ts index 6549403d86a6..1721f0d6cd8f 100644 --- a/sdk/core/core-http/lib/url.ts +++ b/sdk/core/core-http/lib/url.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { replaceAll } from "./util/utils"; diff --git a/sdk/core/core-http/lib/util/base64.browser.ts b/sdk/core/core-http/lib/util/base64.browser.ts index e6b597419509..fb607da1ba88 100644 --- a/sdk/core/core-http/lib/util/base64.browser.ts +++ b/sdk/core/core-http/lib/util/base64.browser.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. /** * Encodes a string in base64 format. diff --git a/sdk/core/core-http/lib/util/base64.ts b/sdk/core/core-http/lib/util/base64.ts index 03b3bdc60f15..435c33ef8d77 100644 --- a/sdk/core/core-http/lib/util/base64.ts +++ b/sdk/core/core-http/lib/util/base64.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. /** * Encodes a string in base64 format. diff --git a/sdk/core/core-http/lib/util/constants.ts b/sdk/core/core-http/lib/util/constants.ts index e01d0cba367a..db2927cf26ba 100644 --- a/sdk/core/core-http/lib/util/constants.ts +++ b/sdk/core/core-http/lib/util/constants.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. export const Constants = { /** diff --git a/sdk/core/core-http/lib/util/utils.ts b/sdk/core/core-http/lib/util/utils.ts index 2aebd651202e..62b50150c4b9 100644 --- a/sdk/core/core-http/lib/util/utils.ts +++ b/sdk/core/core-http/lib/util/utils.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import uuidv4 from "uuid/v4"; import { HttpOperationResponse } from "../httpOperationResponse"; diff --git a/sdk/core/core-http/lib/util/xml.browser.ts b/sdk/core/core-http/lib/util/xml.browser.ts index 5fdb2a4c79b0..059b329d141a 100644 --- a/sdk/core/core-http/lib/util/xml.browser.ts +++ b/sdk/core/core-http/lib/util/xml.browser.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. const parser = new DOMParser(); export function parseXML(str: string): Promise { diff --git a/sdk/core/core-http/lib/util/xml.ts b/sdk/core/core-http/lib/util/xml.ts index d11d75ac093a..575d9ab00da3 100644 --- a/sdk/core/core-http/lib/util/xml.ts +++ b/sdk/core/core-http/lib/util/xml.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import * as xml2js from "xml2js"; diff --git a/sdk/core/core-http/lib/webResource.ts b/sdk/core/core-http/lib/webResource.ts index 3676a6541585..17ec3eef3ea2 100644 --- a/sdk/core/core-http/lib/webResource.ts +++ b/sdk/core/core-http/lib/webResource.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { HttpHeaders } from "./httpHeaders"; import { OperationSpec } from "./operationSpec"; diff --git a/sdk/core/core-http/lib/xhrHttpClient.ts b/sdk/core/core-http/lib/xhrHttpClient.ts index 6ed86eeb5b18..a5db595b9ae9 100644 --- a/sdk/core/core-http/lib/xhrHttpClient.ts +++ b/sdk/core/core-http/lib/xhrHttpClient.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { HttpClient } from "./httpClient"; import { HttpHeaders } from "./httpHeaders"; diff --git a/sdk/core/core-http/package.json b/sdk/core/core-http/package.json index 79f39f7be662..9e4136eea1a5 100644 --- a/sdk/core/core-http/package.json +++ b/sdk/core/core-http/package.json @@ -6,7 +6,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/azure-sdk-for-js" }, - "version": "1.8.10", + "version": "1.0.0-preview.1.0", "description": "Isomorphic client Runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -109,7 +109,6 @@ ], "all": true }, - "private": true, "dependencies": { "@types/tunnel": "^0.0.0", "axios": "^0.19.0", diff --git a/sdk/core/core-http/samples/node-sample.ts b/sdk/core/core-http/samples/node-sample.ts index 44b1f00ee077..2ddce437a6df 100644 --- a/sdk/core/core-http/samples/node-sample.ts +++ b/sdk/core/core-http/samples/node-sample.ts @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + "use strict"; import * as msRest from "../lib/coreHttp"; @@ -25,4 +28,3 @@ const req: msRest.RequestPrepareOptions = { client.sendRequest(req).then(function (res: msRest.HttpOperationResponse) { console.log(res.bodyAsText); }); - diff --git a/sdk/core/core-http/test/axiosHttpClientTests.node.ts b/sdk/core/core-http/test/axiosHttpClientTests.node.ts index 16c12e186601..d0759be0ed71 100644 --- a/sdk/core/core-http/test/axiosHttpClientTests.node.ts +++ b/sdk/core/core-http/test/axiosHttpClientTests.node.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import "chai/register-should"; import { should } from "chai"; diff --git a/sdk/core/core-http/test/credentialTests.ts b/sdk/core/core-http/test/credentialTests.ts index a80aaa344d43..e874d94357a6 100644 --- a/sdk/core/core-http/test/credentialTests.ts +++ b/sdk/core/core-http/test/credentialTests.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import "chai/register-should"; import * as msRest from "../lib/coreHttp"; diff --git a/sdk/core/core-http/test/defaultHttpClientTests.ts b/sdk/core/core-http/test/defaultHttpClientTests.ts index 2293c1b0ad3c..f1f47ada3905 100644 --- a/sdk/core/core-http/test/defaultHttpClientTests.ts +++ b/sdk/core/core-http/test/defaultHttpClientTests.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { assert, AssertionError } from "chai"; import "chai/register-should"; diff --git a/sdk/core/core-http/test/logFilterTests.ts b/sdk/core/core-http/test/logFilterTests.ts index c041c2e27da0..0221fd85c82a 100644 --- a/sdk/core/core-http/test/logFilterTests.ts +++ b/sdk/core/core-http/test/logFilterTests.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { assert } from "chai"; import { HttpHeaders } from "../lib/httpHeaders"; diff --git a/sdk/core/core-http/test/mockHttp.ts b/sdk/core/core-http/test/mockHttp.ts index 0157787f0eed..2846c73df5bf 100644 --- a/sdk/core/core-http/test/mockHttp.ts +++ b/sdk/core/core-http/test/mockHttp.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import xhrMock, { proxy } from "xhr-mock"; import MockAdapter from "axios-mock-adapter"; diff --git a/sdk/core/core-http/test/msAssert.ts b/sdk/core/core-http/test/msAssert.ts index b9dfe3405a23..0b24dd2c2386 100644 --- a/sdk/core/core-http/test/msAssert.ts +++ b/sdk/core/core-http/test/msAssert.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { assert } from "chai"; import { SuiteFunction, PendingSuiteFunction, TestFunction, PendingTestFunction } from "mocha"; diff --git a/sdk/core/core-http/test/msRestUserAgentPolicyTests.ts b/sdk/core/core-http/test/msRestUserAgentPolicyTests.ts index 57e804276ab4..094991780839 100644 --- a/sdk/core/core-http/test/msRestUserAgentPolicyTests.ts +++ b/sdk/core/core-http/test/msRestUserAgentPolicyTests.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import "chai/register-should"; @@ -96,7 +96,7 @@ describe("MsRestUserAgentPolicy", () => { }); }); - browserDescribe("for browser", function() { + browserDescribe("for browser", function () { const userAgentHeaderKey = "x-ms-command-name"; const emptyRequestPolicy: RequestPolicy = { @@ -107,7 +107,7 @@ describe("MsRestUserAgentPolicy", () => { }; const getUserAgent = async (headerValue?: string): Promise => { - const factory = userAgentPolicy({ value: headerValue}); + const factory = userAgentPolicy({ value: headerValue }); const policy = factory.create(emptyRequestPolicy, new RequestPolicyOptions()); const resource = new WebResource(); await policy.sendRequest(resource); diff --git a/sdk/core/core-http/test/operationParameterTests.ts b/sdk/core/core-http/test/operationParameterTests.ts index 8937d539d964..46dedb282807 100644 --- a/sdk/core/core-http/test/operationParameterTests.ts +++ b/sdk/core/core-http/test/operationParameterTests.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { assert } from "chai"; import { getPathStringFromParameter, OperationParameter } from "../lib/operationParameter"; diff --git a/sdk/core/core-http/test/policies/bearerTokenAuthenticationPolicyTests.ts b/sdk/core/core-http/test/policies/bearerTokenAuthenticationPolicyTests.ts index 9def3f86f790..3b3ad214cde6 100644 --- a/sdk/core/core-http/test/policies/bearerTokenAuthenticationPolicyTests.ts +++ b/sdk/core/core-http/test/policies/bearerTokenAuthenticationPolicyTests.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { assert } from "chai"; import { fake } from "sinon"; diff --git a/sdk/core/core-http/test/policies/deserializationPolicyTests.ts b/sdk/core/core-http/test/policies/deserializationPolicyTests.ts index 0e9b5b490249..1e43b4a329a1 100644 --- a/sdk/core/core-http/test/policies/deserializationPolicyTests.ts +++ b/sdk/core/core-http/test/policies/deserializationPolicyTests.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { assert } from "chai"; import { HttpHeaders } from "../../lib/httpHeaders"; diff --git a/sdk/core/core-http/test/policies/proxyPolicyTests.ts b/sdk/core/core-http/test/policies/proxyPolicyTests.ts index efc1ad03fafa..5404836a2374 100644 --- a/sdk/core/core-http/test/policies/proxyPolicyTests.ts +++ b/sdk/core/core-http/test/policies/proxyPolicyTests.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import "chai/register-should"; import { should } from "chai"; diff --git a/sdk/core/core-http/test/policies/throttlingRetryPolicyTests.ts b/sdk/core/core-http/test/policies/throttlingRetryPolicyTests.ts index 1d5604804661..ab7d9c6303e9 100644 --- a/sdk/core/core-http/test/policies/throttlingRetryPolicyTests.ts +++ b/sdk/core/core-http/test/policies/throttlingRetryPolicyTests.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { assert, AssertionError } from "chai"; import sinon from "sinon"; diff --git a/sdk/core/core-http/test/serializationTests.ts b/sdk/core/core-http/test/serializationTests.ts index 63a475a33fdf..6a11f9ec4894 100644 --- a/sdk/core/core-http/test/serializationTests.ts +++ b/sdk/core/core-http/test/serializationTests.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { assert } from "chai"; import "chai/register-should"; diff --git a/sdk/core/core-http/test/serviceClientTests.ts b/sdk/core/core-http/test/serviceClientTests.ts index d45bd68c579b..926f4cef5959 100644 --- a/sdk/core/core-http/test/serviceClientTests.ts +++ b/sdk/core/core-http/test/serviceClientTests.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { assert } from "chai"; import { HttpClient } from "../lib/httpClient"; diff --git a/sdk/core/core-http/test/urlTests.ts b/sdk/core/core-http/test/urlTests.ts index 067c5dad512e..e9e6a72b52e4 100644 --- a/sdk/core/core-http/test/urlTests.ts +++ b/sdk/core/core-http/test/urlTests.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { assert } from "chai"; import { URLTokenizer, URLToken, URLBuilder, URLQuery } from "../lib/url"; diff --git a/sdk/core/core-http/test/xhrTests.browser.ts b/sdk/core/core-http/test/xhrTests.browser.ts index 20b2b6203917..8162db2217ac 100644 --- a/sdk/core/core-http/test/xhrTests.browser.ts +++ b/sdk/core/core-http/test/xhrTests.browser.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { assert } from "chai"; import { parseHeaders, XhrHttpClient } from "../lib/xhrHttpClient"; diff --git a/sdk/core/core-http/test/xmlTests.ts b/sdk/core/core-http/test/xmlTests.ts index 07bd67c69c25..cbc0c4a3e730 100644 --- a/sdk/core/core-http/test/xmlTests.ts +++ b/sdk/core/core-http/test/xmlTests.ts @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + import { parseXML } from "../lib/util/xml"; import { assert } from "chai"; import * as msAssert from "./msAssert"; diff --git a/sdk/identity/identity/package.json b/sdk/identity/identity/package.json index 38a740e3e210..5536c557a457 100644 --- a/sdk/identity/identity/package.json +++ b/sdk/identity/identity/package.json @@ -66,7 +66,7 @@ "sideEffects": false, "private": true, "dependencies": { - "@azure/core-http": "^1.2.6", + "@azure/core-http": "^1.0.0-preview.1.0", "events": "^3.0.0", "jws": "~3.2.2", "qs": "6.7.0", diff --git a/sdk/keyvault/keyvault-certificates/package.json b/sdk/keyvault/keyvault-certificates/package.json index 9bccd0c50e75..ed06e37f008e 100644 --- a/sdk/keyvault/keyvault-certificates/package.json +++ b/sdk/keyvault/keyvault-certificates/package.json @@ -65,7 +65,7 @@ }, "sideEffects": false, "dependencies": { - "@azure/core-http": "^1.2.6", + "@azure/core-http": "^1.0.0-preview.1.0", "tslib": "^1.9.3" }, "devDependencies": { diff --git a/sdk/keyvault/keyvault-keys/package.json b/sdk/keyvault/keyvault-keys/package.json index 0bc47d2b7aed..204c0125f5ec 100644 --- a/sdk/keyvault/keyvault-keys/package.json +++ b/sdk/keyvault/keyvault-keys/package.json @@ -68,7 +68,7 @@ }, "sideEffects": false, "dependencies": { - "@azure/core-http": "^1.2.6", + "@azure/core-http": "^1.0.0-preview.1.0", "@azure/core-paging": "^1.0.0", "tslib": "^1.9.3" }, diff --git a/sdk/keyvault/keyvault-secrets/package.json b/sdk/keyvault/keyvault-secrets/package.json index 15e3132ae36f..1d850cfa9abb 100644 --- a/sdk/keyvault/keyvault-secrets/package.json +++ b/sdk/keyvault/keyvault-secrets/package.json @@ -68,7 +68,7 @@ }, "sideEffects": false, "dependencies": { - "@azure/core-http": "^1.2.6", + "@azure/core-http": "^1.0.0-preview.1.0", "@azure/core-paging": "^1.0.0", "@azure/ms-rest-azure-js": "^1.3.2", "@azure/ms-rest-js": "^1.2.6", From 2eab11f1a4dbdfac94f48dad5a3c5a3709b9edcb Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Mon, 24 Jun 2019 18:09:59 -0700 Subject: [PATCH 185/289] Update rollup-plugin-node-resolve to 5.0.2 (#3997) - Required for compat with "resolve@1.11.1". - Disables tree-shaking for test code, which is required when using "rollup-plugin-node-resolve@5.0.0" and "sideEffects=false". --- common/config/rush/pnpm-lock.yaml | 273 +++++++++--------- sdk/core/abort-controller/package.json | 2 +- .../abort-controller/rollup.base.config.js | 10 + sdk/core/core-amqp/package.json | 6 +- sdk/core/core-amqp/rollup.base.config.js | 14 +- sdk/core/core-http/package.json | 2 +- sdk/eventhub/event-hubs/package.json | 2 +- sdk/eventhub/event-hubs/rollup.base.config.js | 12 +- .../event-processor-host/package.json | 2 +- .../rollup.base.config.js | 14 +- sdk/identity/identity/package.json | 2 +- sdk/identity/identity/rollup.base.config.js | 10 + .../keyvault-certificates/package.json | 2 +- sdk/keyvault/keyvault-keys/package.json | 2 +- sdk/keyvault/keyvault-secrets/package.json | 2 +- sdk/servicebus/service-bus/package.json | 2 +- .../service-bus/rollup.base.config.js | 10 + sdk/storage/storage-blob/package.json | 18 +- .../storage-blob/rollup.base.config.js | 10 + sdk/storage/storage-datalake/package.json | 44 +-- sdk/storage/storage-file/package.json | 6 +- .../storage-file/rollup.base.config.js | 10 + sdk/storage/storage-queue/package.json | 2 +- .../storage-queue/rollup.base.config.js | 10 + sdk/template/template/package.json | 2 +- sdk/template/template/rollup.base.config.js | 12 +- 26 files changed, 294 insertions(+), 187 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 6fa831417d94..c674ce6432c8 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -51,15 +51,15 @@ dependencies: '@types/sinon': 5.0.7 '@types/tough-cookie': 2.3.5 '@types/tunnel': 0.0.0 - '@types/underscore': 1.9.0 + '@types/underscore': 1.9.1 '@types/uuid': 3.4.4 - '@types/webpack': 4.4.33 + '@types/webpack': 4.4.34 '@types/webpack-dev-middleware': 2.0.2 '@types/ws': 6.0.1 '@types/xml2js': 0.4.4 '@types/yargs': 11.1.2 '@typescript-eslint/eslint-plugin': 1.9.0 - '@typescript-eslint/parser': 1.10.2 + '@typescript-eslint/parser': 1.11.0 abortcontroller-polyfill: 1.3.0 assert: 1.5.0 async-lock: 1.2.0 @@ -149,7 +149,7 @@ dependencies: rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-globals: 1.4.0 - rollup-plugin-node-resolve: 4.2.4 + rollup-plugin-node-resolve: 5.0.4 rollup-plugin-replace: 2.2.0 rollup-plugin-resolve: 0.0.1-predev.1 rollup-plugin-shim: 1.0.0 @@ -180,7 +180,7 @@ dependencies: util: 0.11.1 uuid: 3.3.2 webpack: 4.35.0 - webpack-cli: 3.3.4 + webpack-cli: 3.3.5 webpack-dev-middleware: 3.7.0 ws: 6.2.1 xhr-mock: 2.4.1 @@ -707,10 +707,10 @@ packages: dev: false resolution: integrity: sha512-SudIN9TRJ+v8g5pTG8RRCqfqTMNqgWCKKd3vtynhGzkIIjxaicNAMuY5TRadJ6tzDu3Dotf3ngaMILtmOdmWEQ== - /@types/underscore/1.9.0: + /@types/underscore/1.9.1: dev: false resolution: - integrity: sha512-1koEJ2AhXaR0HVP3VlN0pCb51n87g5QL9rUiGaY+Nte9gBd2FYf/zNvS5ZtHg7o6owYNS6QA/4ZJ/mIiz2q1hA== + integrity: sha512-ROHiJBeuXxVVaKm65tM/LHWlkcTFBQJqJgDB90Vj3fsl8Q290Z29cmEwnpvtlb0nSzuMIaIYWj0ZvmVgim8khA== /@types/uuid/3.4.4: dependencies: '@types/node': 8.10.49 @@ -722,11 +722,11 @@ packages: '@types/connect': 3.4.32 '@types/loglevel': 1.5.4 '@types/memory-fs': 0.3.2 - '@types/webpack': 4.4.33 + '@types/webpack': 4.4.34 dev: false resolution: integrity: sha512-uZ1avIbAcnspcDKKm0WfgIdvBYRqUapPmwb0MYGzzB74q2F3T4Xi+qPSoS0Oq5iQvIMVxOm7KMqHQJii4VDCsw== - /@types/webpack/4.4.33: + /@types/webpack/4.4.34: dependencies: '@types/anymatch': 1.3.1 '@types/node': 8.10.49 @@ -735,7 +735,7 @@ packages: source-map: 0.6.1 dev: false resolution: - integrity: sha512-MU5Lokm30QHF9Wn0+yq/hnToPlEBRQVa72mgn1/W8OpJu63aRDKy0aEdMI+pCk8F6zwQJfSFaVzx1JN1MLXx8A== + integrity: sha512-GnEBgjHsfO1M7DIQ0dAupSofcmDItE3Zsu3reK8SQpl/6N0rtUQxUmQzVFAS5ou/FGjsYKjXAWfItLZ0kNFTfQ== /@types/ws/6.0.1: dependencies: '@types/events': 3.0.0 @@ -792,9 +792,9 @@ packages: typescript: '*' resolution: integrity: sha512-FOgfBorxjlBGpDIw+0LaZIXRX6GEEUfzj8LXwaQIUCp+gDOvkI+1WgugJ7SmWiISqK9Vj5r8S7NDKO/LB+6X9A== - /@typescript-eslint/experimental-utils/1.10.2: + /@typescript-eslint/experimental-utils/1.11.0: dependencies: - '@typescript-eslint/typescript-estree': 1.10.2 + '@typescript-eslint/typescript-estree': 1.11.0 eslint-scope: 4.0.3 dev: false engines: @@ -803,10 +803,10 @@ packages: eslint: '*' typescript: '*' resolution: - integrity: sha512-Hf5lYcrnTH5Oc67SRrQUA7KuHErMvCf5RlZsyxXPIT6AXa8fKTyfFO6vaEnUmlz48RpbxO4f0fY3QtWkuHZNjg== - /@typescript-eslint/experimental-utils/1.10.2_eslint@5.16.0+typescript@3.5.2: + integrity: sha512-7LbfaqF6B8oa8cp/315zxKk8FFzosRzzhF8Kn/ZRsRsnpm7Qcu25cR/9RnAQo5utZ2KIWVgaALr+ZmcbG47ruw== + /@typescript-eslint/experimental-utils/1.11.0_eslint@5.16.0+typescript@3.5.2: dependencies: - '@typescript-eslint/typescript-estree': 1.10.2 + '@typescript-eslint/typescript-estree': 1.11.0 eslint: 5.16.0 eslint-scope: 4.0.3 typescript: 3.5.2 @@ -817,7 +817,7 @@ packages: eslint: '*' typescript: '*' resolution: - integrity: sha512-Hf5lYcrnTH5Oc67SRrQUA7KuHErMvCf5RlZsyxXPIT6AXa8fKTyfFO6vaEnUmlz48RpbxO4f0fY3QtWkuHZNjg== + integrity: sha512-7LbfaqF6B8oa8cp/315zxKk8FFzosRzzhF8Kn/ZRsRsnpm7Qcu25cR/9RnAQo5utZ2KIWVgaALr+ZmcbG47ruw== /@typescript-eslint/experimental-utils/1.9.0: dependencies: '@typescript-eslint/typescript-estree': 1.9.0 @@ -839,11 +839,11 @@ packages: typescript: '*' resolution: integrity: sha512-1s2dY9XxBwtS9IlSnRIlzqILPyeMly5tz1bfAmQ84Ul687xBBve5YsH5A5EKeIcGurYYqY2w6RkHETXIwnwV0A== - /@typescript-eslint/parser/1.10.2: + /@typescript-eslint/parser/1.11.0: dependencies: '@types/eslint-visitor-keys': 1.0.0 - '@typescript-eslint/experimental-utils': 1.10.2 - '@typescript-eslint/typescript-estree': 1.10.2 + '@typescript-eslint/experimental-utils': 1.11.0 + '@typescript-eslint/typescript-estree': 1.11.0 eslint-visitor-keys: 1.0.0 dev: false engines: @@ -852,12 +852,12 @@ packages: eslint: ^5.0.0 typescript: '*' resolution: - integrity: sha512-xWDWPfZfV0ENU17ermIUVEVSseBBJxKfqBcRCMZ8nAjJbfA5R7NWMZmFFHYnars5MjK4fPjhu4gwQv526oZIPQ== - /@typescript-eslint/parser/1.10.2_eslint@5.16.0+typescript@3.5.2: + integrity: sha512-5xBExyXaxVyczrZvbRKEXvaTUFFq7gIM9BynXukXZE0zF3IQP/FxF4mPmmh3gJ9egafZFqByCpPTFm3dk4SY7Q== + /@typescript-eslint/parser/1.11.0_eslint@5.16.0+typescript@3.5.2: dependencies: '@types/eslint-visitor-keys': 1.0.0 - '@typescript-eslint/experimental-utils': 1.10.2_eslint@5.16.0+typescript@3.5.2 - '@typescript-eslint/typescript-estree': 1.10.2 + '@typescript-eslint/experimental-utils': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/typescript-estree': 1.11.0 eslint: 5.16.0 eslint-visitor-keys: 1.0.0 dev: false @@ -867,7 +867,7 @@ packages: eslint: ^5.0.0 typescript: '*' resolution: - integrity: sha512-xWDWPfZfV0ENU17ermIUVEVSseBBJxKfqBcRCMZ8nAjJbfA5R7NWMZmFFHYnars5MjK4fPjhu4gwQv526oZIPQ== + integrity: sha512-5xBExyXaxVyczrZvbRKEXvaTUFFq7gIM9BynXukXZE0zF3IQP/FxF4mPmmh3gJ9egafZFqByCpPTFm3dk4SY7Q== /@typescript-eslint/parser/1.9.0: dependencies: '@typescript-eslint/experimental-utils': 1.9.0 @@ -897,7 +897,7 @@ packages: typescript: '*' resolution: integrity: sha512-CWgC1XrQ34H/+LwAU7vY5xteZDkNqeAkeidEpJnJgkKu0yqQ3ZhQ7S+dI6MX4vmmM1TKRbOrKuXc6W0fIHhdbA== - /@typescript-eslint/typescript-estree/1.10.2: + /@typescript-eslint/typescript-estree/1.11.0: dependencies: lodash.unescape: 4.0.1 semver: 5.5.0 @@ -905,7 +905,7 @@ packages: engines: node: '>=6.14.0' resolution: - integrity: sha512-Kutjz0i69qraOsWeI8ETqYJ07tRLvD9URmdrMoF10bG8y8ucLmPtSxROvVejWvlJUGl2et/plnMiKRDW+rhEhw== + integrity: sha512-fquUHF5tAx1sM2OeRCC7wVxFd1iMELWMGCzOSmJ3pLzArj9+kRixdlC4d5MncuzXpjEqc6045p3KwM0o/3FuUA== /@typescript-eslint/typescript-estree/1.9.0: dependencies: lodash.unescape: 4.0.1 @@ -1111,7 +1111,7 @@ packages: /adal-node/0.1.28: dependencies: '@types/node': 8.10.49 - async: 3.0.1 + async: 3.1.0 date-utils: 1.2.21 jws: 3.2.2 request: 2.88.0 @@ -1537,10 +1537,10 @@ packages: dev: false resolution: integrity: sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== - /async/3.0.1: + /async/3.1.0: dev: false resolution: - integrity: sha512-ZswD8vwPtmBZzbn9xyi8XBQWXH3AvOQ43Za1KWYq7JeycrZuUYzx01KvHcVbXltjqH4y0MWrQ33008uLTqXuDw== + integrity: sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ== /asynckit/0.4.0: dev: false resolution: @@ -2270,7 +2270,7 @@ packages: /browserslist/3.2.8: dependencies: caniuse-lite: 1.0.30000976 - electron-to-chromium: 1.3.167 + electron-to-chromium: 1.3.172 dev: false hasBin: true resolution: @@ -3368,10 +3368,10 @@ packages: dev: false resolution: integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - /electron-to-chromium/1.3.167: + /electron-to-chromium/1.3.172: dev: false resolution: - integrity: sha512-84IjpeRudjP43Q0+K7tlS7ESoHOl0W6CIdzs5reS9p+sAjCQEDiaAyiXN2v1qLUdL+Of6ZSaH4Cq6bl+sfzy8A== + integrity: sha512-bHgFvYeHBiQNNuY/WvoX37zLosPgMbR8nKU1r4mylHptLvuMMny/KG/L28DTIlcoOCJjMAhEimy3DHDgDayPbg== /elliptic/6.4.1: dependencies: bn.js: 4.11.8 @@ -4468,6 +4468,14 @@ packages: node: '>=0.10.0' resolution: integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + /global-modules/2.0.0: + dependencies: + global-prefix: 3.0.0 + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== /global-prefix/1.0.2: dependencies: expand-tilde: 2.0.2 @@ -4480,6 +4488,16 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + /global-prefix/3.0.0: + dependencies: + ini: 1.3.5 + kind-of: 6.0.2 + which: 1.3.1 + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== /global/4.4.0: dependencies: min-document: 2.19.0 @@ -5446,7 +5464,7 @@ packages: '@babel/traverse': 7.4.5 '@babel/types': 7.4.4 istanbul-lib-coverage: 2.0.5 - semver: 6.1.1 + semver: 6.1.2 dev: false engines: node: '>=6' @@ -8172,6 +8190,12 @@ packages: dev: false resolution: integrity: sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw== + /resolve/1.11.1: + dependencies: + path-parse: 1.0.6 + dev: false + resolution: + integrity: sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== /resolve/1.8.1: dependencies: path-parse: 1.0.6 @@ -8292,15 +8316,31 @@ packages: dev: false resolution: integrity: sha512-xRkB+W/m1KLIzPUmG0ofvR+CPNcvuCuNdjVBVS7ALKSxr3EDhnzNceGkGi1m8MToSli13AzKFYH4ie9w3I5L3g== - /rollup-plugin-node-resolve/4.2.4: + /rollup-plugin-node-resolve/5.0.4: dependencies: '@types/resolve': 0.0.8 builtin-modules: 3.1.0 is-module: 1.0.0 - resolve: 1.11.0 + resolve: 1.11.1 + rollup-pluginutils: 2.8.1 + dev: false + peerDependencies: + rollup: '>=1.11.0' + resolution: + integrity: sha512-L/fGn+uZOCk/e3uNa3MITUCA3tXndcsaH0Bc7rq7v389vEXMXAYnmF0giEUWbhYxE7PyMGglByVrR8AeIP9klw== + /rollup-plugin-node-resolve/5.0.4_rollup@1.13.1: + dependencies: + '@types/resolve': 0.0.8 + builtin-modules: 3.1.0 + is-module: 1.0.0 + resolve: 1.11.1 + rollup: 1.13.1 + rollup-pluginutils: 2.8.1 dev: false + peerDependencies: + rollup: '>=1.11.0' resolution: - integrity: sha512-t/64I6l7fZ9BxqD3XlX4ZeO6+5RLKyfpwE2CiPNUKa+GocPlQhf/C208ou8y3AwtNsc6bjSk/8/6y/YAyxCIvw== + integrity: sha512-L/fGn+uZOCk/e3uNa3MITUCA3tXndcsaH0Bc7rq7v389vEXMXAYnmF0giEUWbhYxE7PyMGglByVrR8AeIP9klw== /rollup-plugin-replace/2.2.0: dependencies: magic-string: 0.25.2 @@ -8507,11 +8547,11 @@ packages: hasBin: true resolution: integrity: sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== - /semver/6.1.1: + /semver/6.1.2: dev: false hasBin: true resolution: - integrity: sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ== + integrity: sha512-z4PqiCpomGtWj8633oeAdXm1Kn1W++3T8epkZYnwiVgIYIJ0QHszhInYSJTYxebByQH7KVCEAn8R9duzZW2PhQ== /send/0.17.1: dependencies: debug: 2.6.9 @@ -10026,53 +10066,49 @@ packages: dev: false resolution: integrity: sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== - /webpack-cli/3.3.4: + /webpack-cli/3.3.5: dependencies: chalk: 2.4.2 cross-spawn: 6.0.5 enhanced-resolve: 4.1.0 - findup-sync: 2.0.0 - global-modules: 1.0.0 + findup-sync: 3.0.0 + global-modules: 2.0.0 import-local: 2.0.0 interpret: 1.2.0 loader-utils: 1.2.3 - prettier: 1.18.2 - supports-color: 5.5.0 + supports-color: 6.1.0 v8-compile-cache: 2.0.3 - yargs: 12.0.5 + yargs: 13.2.4 dev: false engines: node: '>=6.11.5' hasBin: true peerDependencies: webpack: 4.x.x - requiresBuild: true resolution: - integrity: sha512-ubJGQEKMtBSpT+LiL5hXvn2GIOWiRWItR1DGUqJRhwRBeGhpRXjvF5f0erqdRJLErkfqS5/Ldkkedh4AL5Q1ZQ== - /webpack-cli/3.3.4_webpack@4.35.0: + integrity: sha512-w0j/s42c5UhchwTmV/45MLQnTVwRoaUTu9fM5LuyOd/8lFoCNCELDogFoecx5NzRUndO0yD/gF2b02XKMnmAWQ== + /webpack-cli/3.3.5_webpack@4.35.0: dependencies: chalk: 2.4.2 cross-spawn: 6.0.5 enhanced-resolve: 4.1.0 - findup-sync: 2.0.0 - global-modules: 1.0.0 + findup-sync: 3.0.0 + global-modules: 2.0.0 import-local: 2.0.0 interpret: 1.2.0 loader-utils: 1.2.3 - prettier: 1.18.2 - supports-color: 5.5.0 + supports-color: 6.1.0 v8-compile-cache: 2.0.3 webpack: 4.35.0 - yargs: 12.0.5 + yargs: 13.2.4 dev: false engines: node: '>=6.11.5' hasBin: true peerDependencies: webpack: 4.x.x - requiresBuild: true resolution: - integrity: sha512-ubJGQEKMtBSpT+LiL5hXvn2GIOWiRWItR1DGUqJRhwRBeGhpRXjvF5f0erqdRJLErkfqS5/Ldkkedh4AL5Q1ZQ== + integrity: sha512-w0j/s42c5UhchwTmV/45MLQnTVwRoaUTu9fM5LuyOd/8lFoCNCELDogFoecx5NzRUndO0yD/gF2b02XKMnmAWQ== /webpack-dev-middleware/3.7.0: dependencies: memory-fs: 0.4.1 @@ -10331,13 +10367,6 @@ packages: dev: false resolution: integrity: sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== - /yargs-parser/11.1.1: - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - dev: false - resolution: - integrity: sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== /yargs-parser/13.1.1: dependencies: camelcase: 5.3.1 @@ -10374,23 +10403,6 @@ packages: dev: false resolution: integrity: sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== - /yargs/12.0.5: - dependencies: - cliui: 4.1.0 - decamelize: 1.2.0 - find-up: 3.0.0 - get-caller-file: 1.0.3 - os-locale: 3.1.0 - require-directory: 2.1.1 - require-main-filename: 1.0.1 - set-blocking: 2.0.0 - string-width: 2.1.1 - which-module: 2.0.0 - y18n: 4.0.0 - yargs-parser: 11.1.1 - dev: false - resolution: - integrity: sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== /yargs/13.2.4: dependencies: cliui: 5.0.0 @@ -10506,7 +10518,7 @@ packages: rollup: 1.13.1 rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 4.2.4 + rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 rollup-plugin-uglify: 6.0.2_rollup@1.13.1 @@ -10515,7 +10527,7 @@ packages: dev: false name: '@rush-temp/abort-controller' resolution: - integrity: sha512-H8Cse6POgoCP4/zJkLoHvKbGzJy9Ac7cxUcrmGJqwVL1nSqB271EK93XNgJhaubSiY8akg5Y3KQjvjWfLhIiMg== + integrity: sha512-KGfiIH8MJknuIKxWlFzHjusZ9WViPf3KdfjttVtk4f0KWb/g7ob8Ec7LHzX/BvSJe9sjLQG+93+muRz8o2GG1w== tarball: 'file:projects/abort-controller.tgz' version: 0.0.0 'file:projects/core-amqp.tgz': @@ -10532,7 +10544,7 @@ packages: '@types/node': 8.10.49 '@types/sinon': 5.0.7 '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 - '@typescript-eslint/parser': 1.10.2_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 async-lock: 1.2.0 buffer: 5.2.1 @@ -10569,7 +10581,7 @@ packages: rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-globals: 1.4.0 - rollup-plugin-node-resolve: 4.2.4 + rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 @@ -10586,7 +10598,7 @@ packages: dev: false name: '@rush-temp/core-amqp' resolution: - integrity: sha512-nJlAlDhj4cejGe4qJXRZJcXvqHXHuTtaDZwXZj9ZEauue5jl7aC6Z/D6R9/GOsUeTzU+aNaVOup1GV/TrUPnUQ== + integrity: sha512-S4PkwShh9kZ3+6XRwSb5Ynh7EShodUeGh6Q5mIK4gyCAnN1VZgkheNbz2/7jNxVT31il5r6HIh9dy6llVKbAog== tarball: 'file:projects/core-amqp.tgz' version: 0.0.0 'file:projects/core-http.tgz': @@ -10604,7 +10616,7 @@ packages: '@types/tough-cookie': 2.3.5 '@types/tunnel': 0.0.0 '@types/uuid': 3.4.4 - '@types/webpack': 4.4.33 + '@types/webpack': 4.4.34 '@types/webpack-dev-middleware': 2.0.2 '@types/xml2js': 0.4.4 abortcontroller-polyfill: 1.3.0 @@ -10636,7 +10648,7 @@ packages: rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 4.2.4 + rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 rollup-plugin-resolve: 0.0.1-predev.1 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 rollup-plugin-visualizer: 1.1.1_rollup@1.13.1 @@ -10654,7 +10666,7 @@ packages: uglify-js: 3.6.0 uuid: 3.3.2 webpack: 4.35.0 - webpack-cli: 3.3.4_webpack@4.35.0 + webpack-cli: 3.3.5_webpack@4.35.0 webpack-dev-middleware: 3.7.0_webpack@4.35.0 xhr-mock: 2.4.1 xml2js: 0.4.19 @@ -10662,14 +10674,14 @@ packages: dev: false name: '@rush-temp/core-http' resolution: - integrity: sha512-XJsitZXsH7cVKnhXhNnw8uqVzBQkVLs6PiVwpuJkjvU1IwcBgwa8+GenYkUe7trkoo9De/l/4zyjiJJT3ue0rQ== + integrity: sha512-WAIn25SPFI6eOx6jGZKvzlNXpbjMJ0Aa0G8u7lTgBJO79PC0dvVnio2zWffytQwDKQapF1NkDcZXCS7MeT0SAA== tarball: 'file:projects/core-http.tgz' version: 0.0.0 'file:projects/core-paging.tgz': dependencies: '@types/node': 8.10.49 '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 - '@typescript-eslint/parser': 1.10.2_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 eslint: 5.16.0 eslint-config-prettier: 4.3.0_eslint@5.16.0 eslint-detailed-reporter: 0.8.0_eslint@5.16.0 @@ -10681,7 +10693,7 @@ packages: dev: false name: '@rush-temp/core-paging' resolution: - integrity: sha512-x2h8RkvKkL0wEgA4+BQocp2jbHHQaIn0gDYpb7R3L+UN11b7paUoTP2hRdHUdkyxQxat6ZdQOaYrgSb/E7b9XA== + integrity: sha512-eLAR9AN8LadE5YVf0mWhR9fdw88LmL2w9QAp+Jn1A5OMy0dgjXFyXRO2UbozpWjw/PZRoMLyPCdyhUrWzyex/A== tarball: 'file:projects/core-paging.tgz' version: 0.0.0 'file:projects/cosmos.tgz': @@ -10692,7 +10704,7 @@ packages: '@types/semaphore': 1.1.0 '@types/sinon': 5.0.7 '@types/tunnel': 0.0.0 - '@types/underscore': 1.9.0 + '@types/underscore': 1.9.1 binary-search-bounds: 2.0.3 create-hmac: 1.1.7 execa: 1.0.0 @@ -10713,17 +10725,15 @@ packages: tunnel: 0.0.6 typescript: 3.5.2 webpack: 4.35.0 - webpack-cli: 3.3.4_webpack@4.35.0 + webpack-cli: 3.3.5_webpack@4.35.0 dev: false name: '@rush-temp/cosmos' resolution: - integrity: sha512-hDPu35nMHd5kOJ1usQVlocG4FLNMv6kB2iBAZmjBUdu4+3fPqZs/Ix05f7n6hrMD94QnPIgaxoDv27IEI/SiQg== + integrity: sha512-TOCQxf0WCu5cMmRg0MctcaHctzwWutcqwTA3XgzcCtCCNwzBVphmtVm5zNNUqQcBzagPy9B2NOTdFAr0kHzs1g== tarball: 'file:projects/cosmos.tgz' version: 0.0.0 'file:projects/event-hubs.tgz': dependencies: - '@azure/amqp-common': 1.0.0-preview.5_rhea-promise@0.1.15 - '@azure/ms-rest-nodeauth': 0.9.3 '@microsoft/api-extractor': 7.2.1 '@types/async-lock': 1.1.1 '@types/chai': 4.1.7 @@ -10737,7 +10747,7 @@ packages: '@types/uuid': 3.4.4 '@types/ws': 6.0.1 '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 - '@typescript-eslint/parser': 1.10.2_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 async-lock: 1.2.0 chai: 4.2.0 @@ -10779,7 +10789,7 @@ packages: rollup-plugin-inject: 2.2.0 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 4.2.4 + rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 @@ -10793,7 +10803,7 @@ packages: dev: false name: '@rush-temp/event-hubs' resolution: - integrity: sha512-X7qgsfN6+iWW37n/cYAjmEHKpqFiMUDBoZnmMjoXdkkjltLhgK/UaCgKIdiEcx9dkz0elOw5uiD5PnTIBjVe9Q== + integrity: sha512-IseawXRVfBFQYeppyjjc1eOWxXWE99c7B+ONu67TvRgO9Wt+aXMn6EqGR5RVspeu1psp7HPG0404aDGYJQocTw== tarball: 'file:projects/event-hubs.tgz' version: 0.0.0 'file:projects/event-processor-host.tgz': @@ -10810,7 +10820,7 @@ packages: '@types/node': 8.10.49 '@types/uuid': 3.4.4 '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 - '@typescript-eslint/parser': 1.10.2_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 async-lock: 1.2.0 azure-storage: 2.10.3 chai: 4.2.0 @@ -10837,7 +10847,7 @@ packages: rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 4.2.4 + rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 rollup-plugin-uglify: 6.0.2_rollup@1.13.1 @@ -10849,7 +10859,7 @@ packages: dev: false name: '@rush-temp/event-processor-host' resolution: - integrity: sha512-dauAcYGuI48YlkBAqihRDDxTj7L3eDvQYfdtmXA8lX3LygOqvga8J0ZLnpQO8Ky17MEez/ASLz+i6eYvHKekLA== + integrity: sha512-JdZafEYumJqpTizs+cgw04xYpi38jlEtuF9GMr27rmCOwVrydZfnUOWPKBjiJpzBwh8A+K7aj/h6sw7pmmNwAw== tarball: 'file:projects/event-processor-host.tgz' version: 0.0.0 'file:projects/identity.tgz': @@ -10860,7 +10870,7 @@ packages: '@types/qs': 6.5.3 '@types/uuid': 3.4.4 '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 - '@typescript-eslint/parser': 1.10.2_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 cross-env: 5.2.0 eslint: 5.16.0 @@ -10877,7 +10887,7 @@ packages: rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 4.2.4 + rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 rollup-plugin-uglify: 6.0.2_rollup@1.13.1 @@ -10889,7 +10899,7 @@ packages: dev: false name: '@rush-temp/identity' resolution: - integrity: sha512-bvnHY0lfDMLcLhTtjYI5RepuaULz/oR+Y5stUz3bzTduBLc5SOE7U7WGRjrdjY2vtRgJGU7ttY8G+2oi7QNcWg== + integrity: sha512-tmJkM8v1YqnVyndqD9vVHQEGeUT0PKuUN4oGDZ+A8r7brpJRByrEXsDIsDsbMczrxW8AgAg6lSZ45sUj/J8vCg== tarball: 'file:projects/identity.tgz' version: 0.0.0 'file:projects/keyvault-certificates.tgz': @@ -10901,7 +10911,7 @@ packages: rimraf: 2.6.3 rollup: 1.13.1 rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 - rollup-plugin-node-resolve: 4.2.4 + rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 tslib: 1.10.0 typescript: 3.5.2 uglify-js: 3.6.0 @@ -10909,7 +10919,7 @@ packages: dev: false name: '@rush-temp/keyvault-certificates' resolution: - integrity: sha512-HZXJoGgYoJGpA3IUPN+pd3dnBoscJ0lcWyz2WeVMJxza8Px7xhCd+jjYVtYplnFHlB7JZYG74N6tI5FmXzEr7g== + integrity: sha512-jf2qNSU+UsIdb1on92zDd6GBMr3xA+Ablll0hFdTZTC5rdsYjeerJwol7TMaTVTXbsuQI0fJDNhbxWUCfGOtKg== tarball: 'file:projects/keyvault-certificates.tgz' version: 0.0.0 'file:projects/keyvault-keys.tgz': @@ -10921,7 +10931,7 @@ packages: '@types/mocha': 5.2.7 '@types/nock': 10.0.3 '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 - '@typescript-eslint/parser': 1.10.2_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 chai: 4.2.0 cross-env: 5.2.0 dotenv: 7.0.0 @@ -10939,7 +10949,7 @@ packages: rimraf: 2.6.3 rollup: 1.13.1 rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 - rollup-plugin-node-resolve: 4.2.4 + rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 ts-mocha: 6.0.0_mocha@5.2.0 tslib: 1.10.0 typescript: 3.5.2 @@ -10948,7 +10958,7 @@ packages: dev: false name: '@rush-temp/keyvault-keys' resolution: - integrity: sha512-Oo6mjfT3g77xzxM3gFxP/aVfsP0UECJwtQApW0G3HhCWtaqTZKotGNXmTyXEIm2eTnmlSgCJt8Wk+WDyXJYaaw== + integrity: sha512-goKFmM55Ab72/LrjBYNDsmIsK6NgqRfvttoTGbIoZA6K5Y6TNUKcZz8JUTFwALeUQzWOnvnyBHJHUnxCpm3O8A== tarball: 'file:projects/keyvault-keys.tgz' version: 0.0.0 'file:projects/keyvault-secrets.tgz': @@ -10962,7 +10972,7 @@ packages: '@types/mocha': 5.2.7 '@types/nock': 10.0.3 '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 - '@typescript-eslint/parser': 1.10.2_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 chai: 4.2.0 cross-env: 5.2.0 dotenv: 7.0.0 @@ -10979,7 +10989,7 @@ packages: rimraf: 2.6.3 rollup: 1.13.1 rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 - rollup-plugin-node-resolve: 4.2.4 + rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 ts-mocha: 6.0.0_mocha@5.2.0 tslib: 1.10.0 typescript: 3.5.2 @@ -10988,7 +10998,7 @@ packages: dev: false name: '@rush-temp/keyvault-secrets' resolution: - integrity: sha512-TBirMh7GCiAiHWWrm5ahXbql4CtJr8uJB4oZO3aNxhJNw9PKRFY985jG+yV5mQGG6NQB4ZLS7v9IWzsiPhXcGA== + integrity: sha512-SAkyTL9OCnyF9rMSe9HxK6BJA6Z1tkcJJSbqWCDG8CE0K1qsAFT3Py4KMoyH7Zhxan76CdwZ2Pmn200iwhLvrw== tarball: 'file:projects/keyvault-secrets.tgz' version: 0.0.0 'file:projects/service-bus.tgz': @@ -11008,7 +11018,7 @@ packages: '@types/node': 8.10.49 '@types/ws': 6.0.1 '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 - '@typescript-eslint/parser': 1.10.2_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 buffer: 5.2.1 chai: 4.2.0 @@ -11054,7 +11064,7 @@ packages: rollup-plugin-inject: 2.2.0 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 4.2.4 + rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 @@ -11066,7 +11076,7 @@ packages: dev: false name: '@rush-temp/service-bus' resolution: - integrity: sha512-4XUjuozVLDCw66qUewvs40VBuBN5FFtJVgNi/XHdeCo5lKDL+N6MhPkzKlhe+LrMIdWaNlSxj/EnVnP1/aqgFg== + integrity: sha512-woMW5RDh66mkr6uN50HKV0/SoVTL/GmT07MWw2h2hpXQCQnagrtjHLZnyy5LsykT7t6M2OLVJQ9esvduGevm4g== tarball: 'file:projects/service-bus.tgz' version: 0.0.0 'file:projects/storage-blob.tgz': @@ -11080,7 +11090,7 @@ packages: '@types/nock': 10.0.3 '@types/node': 8.10.49 '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 - '@typescript-eslint/parser': 1.10.2_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 cross-env: 5.2.0 dotenv: 7.0.0 @@ -11122,7 +11132,7 @@ packages: rollup: 1.13.1 rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 4.2.4 + rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 @@ -11136,7 +11146,7 @@ packages: dev: false name: '@rush-temp/storage-blob' resolution: - integrity: sha512-VMNSQO7EgUxKgFYMuBcJdNnmqhFFHLp4E0iVn8VS7OKnKZCwFcm9LkhVyMQ/jVy8THybMC1UFiZtn62nCqwh3A== + integrity: sha512-TbGIAb3chrULgqv+Zc/NoHP7QJ+Bh6hp+j+gDxXZHd0WL0PSgj+/AXi+WOKzE5+HZpRDW9f+l4LY6yi2Ayu1DA== tarball: 'file:projects/storage-blob.tgz' version: 0.0.0 'file:projects/storage-datalake.tgz': @@ -11144,7 +11154,7 @@ packages: '@azure/ms-rest-azure-js': 1.3.8 '@azure/ms-rest-js': 1.8.13 '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 - '@typescript-eslint/parser': 1.10.2_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 eslint: 5.16.0 eslint-config-prettier: 4.3.0_eslint@5.16.0 eslint-detailed-reporter: 0.8.0_eslint@5.16.0 @@ -11152,7 +11162,7 @@ packages: eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.1.1 rollup: 1.13.1 - rollup-plugin-node-resolve: 4.2.4 + rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 ts-node: 7.0.1 tslib: 1.10.0 typescript: 3.5.2 @@ -11161,7 +11171,7 @@ packages: dev: false name: '@rush-temp/storage-datalake' resolution: - integrity: sha512-hIuJN5ntLPQutEA8Dh2stmWs2WHtANAnc1GmkaXpUKlyGDEx5y/qnIvQfaaHP19kxxqDLUZSHF0Jf6af+TrQtw== + integrity: sha512-2q+EflR1ijWEwGwe3NtE45FcFTZ9XnjtS5Vue2b9K5d6yAGaMcw1GpuN1Wrfs7ymkv6BuMZS8IhlLYlNUqvllg== tarball: 'file:projects/storage-datalake.tgz' version: 0.0.0 'file:projects/storage-file.tgz': @@ -11175,7 +11185,7 @@ packages: '@types/nock': 10.0.3 '@types/node': 8.10.49 '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 - '@typescript-eslint/parser': 1.10.2_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 cross-env: 5.2.0 dotenv: 7.0.0 @@ -11217,7 +11227,7 @@ packages: rollup: 1.13.1 rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 4.2.4 + rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 @@ -11231,7 +11241,7 @@ packages: dev: false name: '@rush-temp/storage-file' resolution: - integrity: sha512-tp1TYru1KEXFa3QzUmsDUbWG6sjKG6vJdkEVV1L9qJglFnFEHntwvt48A6I8Mf1oDv/V4m1M8uQC6PghW02Euw== + integrity: sha512-ojDzr+k1LPeffweMopFEP/cEdSJ8PhIf1GkIqEBDNKs0wg8xrsK4jD2CHvI3YECD3xZxE2WjioLO/mK6jx4Xkg== tarball: 'file:projects/storage-file.tgz' version: 0.0.0 'file:projects/storage-queue.tgz': @@ -11245,7 +11255,7 @@ packages: '@types/nock': 10.0.3 '@types/node': 8.10.49 '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 - '@typescript-eslint/parser': 1.10.2_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 cross-env: 5.2.0 dotenv: 7.0.0 @@ -11286,7 +11296,7 @@ packages: rollup: 1.13.1 rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 4.2.4 + rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 @@ -11300,7 +11310,7 @@ packages: dev: false name: '@rush-temp/storage-queue' resolution: - integrity: sha512-hI7nRSTbI1CHZrhKz6p5XYcP30bXHn9+SBqdEBXFuvrEydK4EsqJzVQjOtsKnnWnHJZCu019OF8WCTosB6bHmw== + integrity: sha512-z44tpFHC+2/6soFw4lvje3Tjelo/sGhWijmiGzQow6OyCAGLaGBW+YevWO1+QtphCY+eHD3LUkf254xaatM9fg== tarball: 'file:projects/storage-queue.tgz' version: 0.0.0 'file:projects/template.tgz': @@ -11310,7 +11320,7 @@ packages: '@types/mocha': 5.2.7 '@types/node': 8.10.49 '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 - '@typescript-eslint/parser': 1.10.2_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 cross-env: 5.2.0 eslint: 5.16.0 @@ -11330,7 +11340,7 @@ packages: rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 4.2.4 + rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 rollup-plugin-uglify: 6.0.2_rollup@1.13.1 @@ -11341,7 +11351,7 @@ packages: dev: false name: '@rush-temp/template' resolution: - integrity: sha512-PEgIhAcw+YW01MIVExCC20nDvqSQ0LXmkM3330crTS7Q51dzXi2Zd9F03bys1oRQ4DFZss9vD4lwyv/5PZCaZw== + integrity: sha512-tJB8MrGU38lsxxYe8xNawUkUw9xE6+vMIMOkehQdJWt3oaPEMTZ4rRpOo3xJYSyt20kuH/Op01T0GUo+aeCp0w== tarball: 'file:projects/template.tgz' version: 0.0.0 'file:projects/testhub.tgz': @@ -11366,10 +11376,9 @@ packages: dev: false name: '@rush-temp/testhub' resolution: - integrity: sha512-+7/S5QILzUUjTQx8iAqLnUHRABhgKs/lVmB5/+F0s9n2n+MZZ7hHhzW3B/efbVCXv6xt+7eFwVT4g0mmX5lGyw== + integrity: sha512-c3cFI0Our99carkgcyOFLmX5QRh5fIqyVv9S75VRX7woNtBGXPvWRE8VOxEN9o8N8FjSEQzc6PPEO6YRz7ok8Q== tarball: 'file:projects/testhub.tgz' version: 0.0.0 -registry: '' specifiers: '@azure/amqp-common': ^1.0.0-preview.5 '@azure/arm-servicebus': ^0.1.0 @@ -11521,7 +11530,7 @@ specifiers: rollup-plugin-json: ^3.1.0 rollup-plugin-multi-entry: ^2.1.0 rollup-plugin-node-globals: ^1.4.0 - rollup-plugin-node-resolve: ^4.2.0 + rollup-plugin-node-resolve: ^5.0.2 rollup-plugin-replace: ^2.1.0 rollup-plugin-resolve: 0.0.1-predev.1 rollup-plugin-shim: ^1.0.0 diff --git a/sdk/core/abort-controller/package.json b/sdk/core/abort-controller/package.json index eb77b284e954..d6fcfd272f8d 100644 --- a/sdk/core/abort-controller/package.json +++ b/sdk/core/abort-controller/package.json @@ -96,7 +96,7 @@ "rollup": "~1.13.1", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-multi-entry": "^2.1.0", - "rollup-plugin-node-resolve": "^4.2.0", + "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-replace": "^2.1.0", "rollup-plugin-sourcemaps": "^0.4.2", "rollup-plugin-uglify": "^6.0.0", diff --git a/sdk/core/abort-controller/rollup.base.config.js b/sdk/core/abort-controller/rollup.base.config.js index 89f84ca77c30..067c27102485 100644 --- a/sdk/core/abort-controller/rollup.base.config.js +++ b/sdk/core/abort-controller/rollup.base.config.js @@ -51,6 +51,11 @@ export function nodeConfig(test = false) { baseConfig.onwarn = (warning) => { 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(uglify()); } @@ -104,6 +109,11 @@ export function browserConfig(test = false) { baseConfig.plugins.unshift(multiEntry({ exports: false })); baseConfig.output.file = "test-browser/index.js"; baseConfig.context = "null"; + + // 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(uglify()); } diff --git a/sdk/core/core-amqp/package.json b/sdk/core/core-amqp/package.json index d401d788e1e3..1281638522ca 100644 --- a/sdk/core/core-amqp/package.json +++ b/sdk/core/core-amqp/package.json @@ -52,6 +52,7 @@ }, "dependencies": { "@azure/abort-controller": "1.0.0-preview.1", + "@azure/core-http": "^1.0.0-preview.1.0", "@azure/ms-rest-nodeauth": "^0.9.2", "@types/async-lock": "^1.1.0", "@types/is-buffer": "^2.0.0", @@ -65,8 +66,7 @@ "stream-browserify": "^2.0.2", "tslib": "^1.9.3", "url": "^0.11.0", - "util": "^0.11.1", - "@azure/core-http": "^1.0.0-preview.1.0" + "util": "^0.11.1" }, "peerDependencies": { "rhea-promise": "^0.1.15" @@ -112,7 +112,7 @@ "rollup-plugin-json": "^3.1.0", "rollup-plugin-multi-entry": "^2.1.0", "rollup-plugin-node-globals": "^1.4.0", - "rollup-plugin-node-resolve": "^4.2.0", + "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-replace": "^2.1.0", "rollup-plugin-shim": "^1.0.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/core/core-amqp/rollup.base.config.js b/sdk/core/core-amqp/rollup.base.config.js index cfb2313ce434..64c27cfc439b 100644 --- a/sdk/core/core-amqp/rollup.base.config.js +++ b/sdk/core/core-amqp/rollup.base.config.js @@ -14,9 +14,7 @@ import shim from "rollup-plugin-shim"; import json from "rollup-plugin-json"; const pkg = require("./package.json"); -const depNames = Object.keys(pkg.dependencies).concat( - Object.keys(pkg.peerDependencies) -); +const depNames = Object.keys(pkg.dependencies).concat(Object.keys(pkg.peerDependencies)); const input = "dist-esm/src/index.js"; const production = process.env.NODE_ENV === "production"; @@ -74,6 +72,11 @@ export function nodeConfig(test = false) { // mark assert as external baseConfig.external.push(); + + // 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(uglify()); } @@ -150,6 +153,11 @@ export function browserConfig(test = false) { 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(uglify()); } diff --git a/sdk/core/core-http/package.json b/sdk/core/core-http/package.json index 9e4136eea1a5..b6b163b8299c 100644 --- a/sdk/core/core-http/package.json +++ b/sdk/core/core-http/package.json @@ -163,7 +163,7 @@ "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-json": "^3.1.0", "rollup-plugin-multi-entry": "^2.1.0", - "rollup-plugin-node-resolve": "^4.2.0", + "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-resolve": "0.0.1-predev.1", "rollup-plugin-sourcemaps": "^0.4.2", "rollup-plugin-visualizer": "^1.0.0", diff --git a/sdk/eventhub/event-hubs/package.json b/sdk/eventhub/event-hubs/package.json index 66bf9647e7e9..6532803852fa 100644 --- a/sdk/eventhub/event-hubs/package.json +++ b/sdk/eventhub/event-hubs/package.json @@ -124,7 +124,7 @@ "rollup-plugin-inject": "^2.2.0", "rollup-plugin-json": "^3.1.0", "rollup-plugin-multi-entry": "^2.1.0", - "rollup-plugin-node-resolve": "^4.2.0", + "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-replace": "^2.1.0", "rollup-plugin-shim": "^1.0.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/eventhub/event-hubs/rollup.base.config.js b/sdk/eventhub/event-hubs/rollup.base.config.js index 9b26aa4cec68..1fcbb035d694 100644 --- a/sdk/eventhub/event-hubs/rollup.base.config.js +++ b/sdk/eventhub/event-hubs/rollup.base.config.js @@ -65,6 +65,11 @@ export function nodeConfig(test = false) { 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(uglify()); } @@ -119,7 +124,7 @@ export function browserConfig(test = false) { mainFields: ["module", "browser"], preferBuiltins: false, // Following packages are de-duped in order to get module resolution to work with npm + rollup - // This will be in place until we have a solution for issue + // This will be in place until we have a solution for issue // https://github.com/Azure/azure-sdk-for-js/issues/3326 dedupe: ["buffer", "events", "util", "process", "assert"] }), @@ -148,6 +153,11 @@ export function browserConfig(test = false) { 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(uglify()); } diff --git a/sdk/eventhub/event-processor-host/package.json b/sdk/eventhub/event-processor-host/package.json index 78a4d3c0b191..04ea5a3cbf37 100644 --- a/sdk/eventhub/event-processor-host/package.json +++ b/sdk/eventhub/event-processor-host/package.json @@ -101,7 +101,7 @@ "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-json": "^3.1.0", "rollup-plugin-multi-entry": "^2.1.0", - "rollup-plugin-node-resolve": "^4.2.0", + "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-replace": "^2.1.0", "rollup-plugin-sourcemaps": "^0.4.2", "rollup-plugin-uglify": "^6.0.0", diff --git a/sdk/eventhub/event-processor-host/rollup.base.config.js b/sdk/eventhub/event-processor-host/rollup.base.config.js index 4920b6013853..11f26f65ff84 100644 --- a/sdk/eventhub/event-processor-host/rollup.base.config.js +++ b/sdk/eventhub/event-processor-host/rollup.base.config.js @@ -52,7 +52,7 @@ export function nodeConfig(test = false) { // mark assert as external baseConfig.external.push("assert", "fs", "os", "tty", "child_process"); - baseConfig.onwarn = warning => { + baseConfig.onwarn = (warning) => { if ( warning.code === "CIRCULAR_DEPENDENCY" && warning.importer.indexOf(path.normalize("node_modules/chai/lib") === 0) @@ -63,6 +63,11 @@ export function nodeConfig(test = false) { 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(uglify()); } @@ -97,7 +102,7 @@ export function browserConfig(test = false) { } ), nodeResolve({ - mainFields: ['module', 'browser'], + mainFields: ["module", "browser"], preferBuiltins: false }), cjs({ @@ -111,6 +116,11 @@ export function browserConfig(test = false) { 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(uglify()); } diff --git a/sdk/identity/identity/package.json b/sdk/identity/identity/package.json index 5536c557a457..088eb5f8a24a 100644 --- a/sdk/identity/identity/package.json +++ b/sdk/identity/identity/package.json @@ -94,7 +94,7 @@ "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-json": "^3.1.0", "rollup-plugin-multi-entry": "^2.1.0", - "rollup-plugin-node-resolve": "^4.2.0", + "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-replace": "^2.1.0", "rollup-plugin-sourcemaps": "^0.4.2", "rollup-plugin-uglify": "^6.0.0", diff --git a/sdk/identity/identity/rollup.base.config.js b/sdk/identity/identity/rollup.base.config.js index f5c33fa7268b..e0c3c867e5ad 100644 --- a/sdk/identity/identity/rollup.base.config.js +++ b/sdk/identity/identity/rollup.base.config.js @@ -43,6 +43,11 @@ export function nodeConfig(test = false) { // mark assert as external baseConfig.external.push("assert"); + + // 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(uglify()); } @@ -88,6 +93,11 @@ export function browserConfig(test = false, production = false) { 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.output.file = "browser/identity.min.js"; baseConfig.plugins.push(uglify()); diff --git a/sdk/keyvault/keyvault-certificates/package.json b/sdk/keyvault/keyvault-certificates/package.json index ed06e37f008e..c3a4fd7cfcfa 100644 --- a/sdk/keyvault/keyvault-certificates/package.json +++ b/sdk/keyvault/keyvault-certificates/package.json @@ -78,7 +78,7 @@ "rimraf": "^2.6.2", "rollup": "~1.13.1", "rollup-plugin-commonjs": "^10.0.0", - "rollup-plugin-node-resolve": "^4.2.0", + "rollup-plugin-node-resolve": "^5.0.2", "typescript": "^3.2.2", "uglify-js": "^3.4.9", "url": "^0.11.0" diff --git a/sdk/keyvault/keyvault-keys/package.json b/sdk/keyvault/keyvault-keys/package.json index 204c0125f5ec..a419ebc82ddc 100644 --- a/sdk/keyvault/keyvault-keys/package.json +++ b/sdk/keyvault/keyvault-keys/package.json @@ -100,7 +100,7 @@ "rimraf": "^2.6.2", "rollup": "~1.13.1", "rollup-plugin-commonjs": "^10.0.0", - "rollup-plugin-node-resolve": "^4.2.0", + "rollup-plugin-node-resolve": "^5.0.2", "ts-mocha": "^6.0.0", "typescript": "^3.2.2", "uglify-js": "^3.4.9", diff --git a/sdk/keyvault/keyvault-secrets/package.json b/sdk/keyvault/keyvault-secrets/package.json index 1d850cfa9abb..5b5335731236 100644 --- a/sdk/keyvault/keyvault-secrets/package.json +++ b/sdk/keyvault/keyvault-secrets/package.json @@ -102,7 +102,7 @@ "rimraf": "^2.6.2", "rollup": "~1.13.1", "rollup-plugin-commonjs": "^10.0.0", - "rollup-plugin-node-resolve": "^4.2.0", + "rollup-plugin-node-resolve": "^5.0.2", "ts-mocha": "^6.0.0", "typescript": "^3.2.2", "uglify-js": "^3.4.9", diff --git a/sdk/servicebus/service-bus/package.json b/sdk/servicebus/service-bus/package.json index 676a07d193aa..c8e249404bc6 100644 --- a/sdk/servicebus/service-bus/package.json +++ b/sdk/servicebus/service-bus/package.json @@ -129,7 +129,7 @@ "rollup-plugin-inject": "^2.2.0", "rollup-plugin-json": "^3.1.0", "rollup-plugin-multi-entry": "^2.1.0", - "rollup-plugin-node-resolve": "^4.2.0", + "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-replace": "^2.1.0", "rollup-plugin-shim": "^1.0.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/servicebus/service-bus/rollup.base.config.js b/sdk/servicebus/service-bus/rollup.base.config.js index 4d2c7b6d06b0..5478242e01cb 100644 --- a/sdk/servicebus/service-bus/rollup.base.config.js +++ b/sdk/servicebus/service-bus/rollup.base.config.js @@ -84,6 +84,11 @@ export function nodeConfig({ test = false, production = false } = {}) { ); baseConfig.onwarn = ignoreKnownWarnings; + + // 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()); } @@ -161,6 +166,11 @@ export function browserConfig({ test = false, production = false } = {}) { 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.output.file = "browser/service-bus.min.js"; baseConfig.plugins.push( diff --git a/sdk/storage/storage-blob/package.json b/sdk/storage/storage-blob/package.json index 8a17c4b7d577..64351c3c7e7d 100644 --- a/sdk/storage/storage-blob/package.json +++ b/sdk/storage/storage-blob/package.json @@ -83,6 +83,8 @@ "@types/dotenv": "^6.1.0", "@types/fs-extra": "~7.0.0", "@types/mocha": "^5.2.5", + "@types/nise": "^1.4.0", + "@types/nock": "^10.0.1", "@types/node": "^8.0.0", "@typescript-eslint/eslint-plugin": "~1.9.0", "@typescript-eslint/parser": "^1.7.0", @@ -107,6 +109,8 @@ "karma-env-preprocessor": "^0.1.1", "karma-firefox-launcher": "^1.1.0", "karma-ie-launcher": "^1.0.0", + "karma-json-preprocessor": "^0.3.3", + "karma-json-to-file-reporter": "^1.0.1", "karma-junit-reporter": "^1.2.0", "karma-mocha": "^1.3.0", "karma-mocha-reporter": "^2.2.5", @@ -114,14 +118,17 @@ "mocha": "^5.2.0", "mocha-junit-reporter": "^1.18.0", "mocha-multi": "^1.0.1", + "nise": "^1.4.10", + "nock": "^10.0.6", "nyc": "^14.0.0", "prettier": "^1.16.4", "puppeteer": "^1.11.0", + "query-string": "^6.5.0", "rimraf": "^2.6.2", "rollup": "~1.13.1", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-multi-entry": "^2.1.0", - "rollup-plugin-node-resolve": "^4.2.0", + "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-replace": "^2.1.0", "rollup-plugin-shim": "^1.0.0", "rollup-plugin-sourcemaps": "^0.4.2", @@ -130,13 +137,6 @@ "source-map-support": "^0.5.9", "ts-node": "^7.0.1", "typescript": "^3.2.2", - "util": "^0.11.1", - "@types/nise": "^1.4.0", - "@types/nock": "^10.0.1", - "karma-json-preprocessor": "^0.3.3", - "karma-json-to-file-reporter": "^1.0.1", - "nise": "^1.4.10", - "nock": "^10.0.6", - "query-string": "^6.5.0" + "util": "^0.11.1" } } diff --git a/sdk/storage/storage-blob/rollup.base.config.js b/sdk/storage/storage-blob/rollup.base.config.js index de6da602b4c1..640e0b8ae484 100644 --- a/sdk/storage/storage-blob/rollup.base.config.js +++ b/sdk/storage/storage-blob/rollup.base.config.js @@ -60,6 +60,11 @@ export function nodeConfig(test = false) { baseConfig.external.push("assert", "fs", "path"); baseConfig.context = "null"; + + // 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(uglify()); } @@ -119,6 +124,11 @@ export function browserConfig(test = false, production = false) { baseConfig.external = ["fs-extra"]; baseConfig.context = "null"; + + // 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.output.file = "browser/azure-storage-blob.min.js"; baseConfig.plugins.push( diff --git a/sdk/storage/storage-datalake/package.json b/sdk/storage/storage-datalake/package.json index 4fe400fb795c..0810f22cc503 100644 --- a/sdk/storage/storage-datalake/package.json +++ b/sdk/storage/storage-datalake/package.json @@ -3,12 +3,6 @@ "author": "Microsoft Corporation", "description": "DataLakeStorageClient Library with typescript type definitions for node.js and browser.", "version": "0.1.1", - "dependencies": { - "@azure/ms-rest-azure-js": "^1.3.2", - "@azure/ms-rest-js": "^1.2.6", - "tslib": "^1.9.3", - "uglify": "^0.1.5" - }, "keywords": [ "node", "azure", @@ -20,21 +14,6 @@ "main": "./dist/storage-datalake.js", "module": "./esm/dataLakeStorageClient.js", "types": "./esm/dataLakeStorageClient.d.ts", - "devDependencies": { - "@typescript-eslint/eslint-plugin": "~1.9.0", - "@typescript-eslint/parser": "^1.7.0", - "eslint": "^5.16.0", - "eslint-config-prettier": "^4.2.0", - "eslint-detailed-reporter": "^0.8.0", - "eslint-plugin-no-null": "^1.0.2", - "eslint-plugin-no-only-tests": "^2.3.0", - "eslint-plugin-promise": "^4.1.1", - "typescript": "^3.2.2", - "rollup": "~1.13.1", - "rollup-plugin-node-resolve": "^4.2.0", - "uglify-js": "^3.4.9", - "ts-node": "^7.0.1" - }, "homepage": "https://github.com/azure/azure-sdk-for-js/tree/master/sdk/storage/storage-datalake", "repository": { "type": "git", @@ -75,5 +54,26 @@ "unit-test": "echo skipped" }, "sideEffects": false, - "authPublish": true + "authPublish": true, + "dependencies": { + "@azure/ms-rest-azure-js": "^1.3.2", + "@azure/ms-rest-js": "^1.2.6", + "tslib": "^1.9.3", + "uglify": "^0.1.5" + }, + "devDependencies": { + "@typescript-eslint/eslint-plugin": "~1.9.0", + "@typescript-eslint/parser": "^1.7.0", + "eslint": "^5.16.0", + "eslint-config-prettier": "^4.2.0", + "eslint-detailed-reporter": "^0.8.0", + "eslint-plugin-no-null": "^1.0.2", + "eslint-plugin-no-only-tests": "^2.3.0", + "eslint-plugin-promise": "^4.1.1", + "rollup": "~1.13.1", + "rollup-plugin-node-resolve": "^5.0.2", + "ts-node": "^7.0.1", + "typescript": "^3.2.2", + "uglify-js": "^3.4.9" + } } diff --git a/sdk/storage/storage-file/package.json b/sdk/storage/storage-file/package.json index 1e25f50e6f19..b9f7f8d3f6d8 100644 --- a/sdk/storage/storage-file/package.json +++ b/sdk/storage/storage-file/package.json @@ -81,13 +81,13 @@ "devDependencies": { "@microsoft/api-extractor": "^7.1.5", "@types/dotenv": "^6.1.0", - "@typescript-eslint/eslint-plugin": "~1.9.0", - "@typescript-eslint/parser": "^1.7.0", "@types/fs-extra": "~7.0.0", "@types/mocha": "^5.2.5", "@types/nise": "^1.4.0", "@types/nock": "^10.0.1", "@types/node": "^8.0.0", + "@typescript-eslint/eslint-plugin": "~1.9.0", + "@typescript-eslint/parser": "^1.7.0", "assert": "^1.4.1", "cross-env": "^5.2.0", "dotenv": "^7.0.0", @@ -128,7 +128,7 @@ "rollup": "~1.13.1", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-multi-entry": "^2.1.0", - "rollup-plugin-node-resolve": "^4.2.0", + "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-replace": "^2.1.0", "rollup-plugin-shim": "^1.0.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/storage/storage-file/rollup.base.config.js b/sdk/storage/storage-file/rollup.base.config.js index 5938eceeffb0..07eead383aea 100644 --- a/sdk/storage/storage-file/rollup.base.config.js +++ b/sdk/storage/storage-file/rollup.base.config.js @@ -60,6 +60,11 @@ export function nodeConfig(test = false) { baseConfig.external.push("assert", "fs", "path"); baseConfig.context = "null"; + + // 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(uglify()); } @@ -128,6 +133,11 @@ export function browserConfig(test = false, production = false) { baseConfig.external = ["fs-extra"]; baseConfig.context = "null"; + + // 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.output.file = "browser/azure-storage-file.min.js"; baseConfig.plugins.push( diff --git a/sdk/storage/storage-queue/package.json b/sdk/storage/storage-queue/package.json index fe88479c0189..167aeac568c1 100644 --- a/sdk/storage/storage-queue/package.json +++ b/sdk/storage/storage-queue/package.json @@ -126,7 +126,7 @@ "rollup": "~1.13.1", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-multi-entry": "^2.1.0", - "rollup-plugin-node-resolve": "^4.2.0", + "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-replace": "^2.1.0", "rollup-plugin-shim": "^1.0.0", "rollup-plugin-sourcemaps": "^0.4.2", diff --git a/sdk/storage/storage-queue/rollup.base.config.js b/sdk/storage/storage-queue/rollup.base.config.js index d676da37d022..dff6113f8fba 100644 --- a/sdk/storage/storage-queue/rollup.base.config.js +++ b/sdk/storage/storage-queue/rollup.base.config.js @@ -60,6 +60,11 @@ export function nodeConfig(test = false) { baseConfig.external.push("assert", "fs", "path"); baseConfig.context = "null"; + + // 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(uglify()); } @@ -117,6 +122,11 @@ export function browserConfig(test = false, production = false) { baseConfig.external = ["fs-extra"]; baseConfig.context = "null"; + + // 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.output.file = "browser/azure-storage-queue.min.js"; baseConfig.plugins.push( diff --git a/sdk/template/template/package.json b/sdk/template/template/package.json index e51312ba5b69..9b300f2b1378 100644 --- a/sdk/template/template/package.json +++ b/sdk/template/template/package.json @@ -87,7 +87,7 @@ "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-json": "^3.1.0", "rollup-plugin-multi-entry": "^2.1.0", - "rollup-plugin-node-resolve": "^4.2.0", + "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-replace": "^2.1.0", "rollup-plugin-sourcemaps": "^0.4.2", "rollup-plugin-uglify": "^6.0.0", diff --git a/sdk/template/template/rollup.base.config.js b/sdk/template/template/rollup.base.config.js index 06a90fd98e38..567c8e4525c4 100644 --- a/sdk/template/template/rollup.base.config.js +++ b/sdk/template/template/rollup.base.config.js @@ -43,6 +43,11 @@ export function nodeConfig(test = false) { // mark assert as external baseConfig.external.push("assert"); + + // 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(uglify()); } @@ -74,7 +79,7 @@ export function browserConfig(test = false, production = false) { } }), nodeResolve({ - mainFields: ['module', 'browser'], + mainFields: ["module", "browser"], preferBuiltins: false }), cjs({ @@ -88,6 +93,11 @@ export function browserConfig(test = false, production = false) { 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.output.file = "browser/azure-template.min.js"; baseConfig.plugins.push(uglify()); From d27773944c5b12dfed9e1c4c3a8abef1d7c4906b Mon Sep 17 00:00:00 2001 From: chradek <51000525+chradek@users.noreply.github.com> Date: Tue, 25 Jun 2019 11:20:42 -0700 Subject: [PATCH 186/289] [Event Hubs] standardize JSDocs for public API (#4032) --- sdk/eventhub/event-hubs/src/eventHubClient.ts | 119 +++++++++++------- sdk/eventhub/event-hubs/src/eventPosition.ts | 72 ++++++----- sdk/eventhub/event-hubs/src/receiver.ts | 56 ++++++--- sdk/eventhub/event-hubs/src/sender.ts | 22 ++-- sdk/eventhub/event-hubs/test/client.spec.ts | 12 +- sdk/eventhub/event-hubs/test/iothub.spec.ts | 2 +- sdk/eventhub/event-hubs/test/misc.spec.ts | 14 +-- sdk/eventhub/event-hubs/test/receiver.spec.ts | 98 ++++++++------- 8 files changed, 243 insertions(+), 152 deletions(-) diff --git a/sdk/eventhub/event-hubs/src/eventHubClient.ts b/sdk/eventhub/event-hubs/src/eventHubClient.ts index dcb43b2c4c4e..e5c35f9d2796 100644 --- a/sdk/eventhub/event-hubs/src/eventHubClient.ts +++ b/sdk/eventhub/event-hubs/src/eventHubClient.ts @@ -28,11 +28,11 @@ import { throwTypeErrorIfParameterMissing, throwErrorIfConnectionClosed } from " */ export interface RetryOptions { /** - * Total number of times to attempt an operation. + * The maximum number of times to attempt an operation. */ retryCount?: number; /** - * Number of milliseconds to wait between retries. + * Number of milliseconds to wait between attempts. */ retryInterval?: number; // /** @@ -48,59 +48,63 @@ export interface RetryOptions { } /** - * Options to passed when creating a producer using the EventHubClient. + * The set of options to configure the behavior of an `EventHubProducer`. + * These can be specified when creating the producer via the `createProducer` method. */ export interface EventHubProducerOptions { /** * @property - * The id of the partition to which the event should be sent. If no id is provided, - * the service will determine the partition to which the event will be sent. + * The identifier of the partition that the producer will be bound to. + * If a value is provided, all events sent using the producer will reach the same partition. + * If no value is provided, the service will determine the partition to which the event will be sent. */ partitionId?: string; /** * @property - * Retry options for the send operation on the producer. If no value is provided here, the - * retry options set when creating the `EventHubClient` is used. + * The retry options used to govern retry attempts when an issue is encountered while sending events. + * If no value is provided here, the retry options set when creating the `EventHubClient` is used. */ retryOptions?: RetryOptions; } /** - * Options that can be passed when sending a batch of events using the EventHubsClient. + * The set of options to configure the send operation on the `EventHubProducer`. */ export interface SendOptions { /** * @property - * If specified, Event Hubs will hash this string to map to a partitionId. + * A value that is hashed to produce a partition assignment. * It guarantees that messages with the same partitionKey end up in the same partition. * Specifying this will throw an error if the producer was created using a `paritionId`. */ partitionKey?: string | null; /** * @property - * Can cancel the current operation. + * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation. + * For example, use the @azure/abort-controller to create an `AbortSignal`. */ abortSignal?: AbortSignalLike; } /** - * Options that can be passed to the receive operations on the EventHubsClient. - * @interface EventHubConsumerOptions + * The set of options to configure the behavior of an `EventHubConsumer`. + * These can be specified when creating the consumer using the `createConsumer` method. */ export interface EventHubConsumerOptions { /** * @property - * The level that this consumer is currently using for partition ownership. - * If another consumer is currently active for the same partition with no or lower - * level, then it will get disconnected. - * If another consumer is currently active with a higher level, then this consumer - * will fail to connect. + * The owner level associated with an exclusive consumer. + * + * When provided, the owner level indicates that a consumer is intended to be the exclusive receiver of events for the + * requested partition and the associated consumer group. + * When multiple consumers exist for the same partition/consumer group pair, then the ones with lower or no + * `ownerLevel` will get a `ReceiverDisconnectedError` during the next attempted receive operation. */ ownerLevel?: number; /** * @property - * Retry options for the receive operation on the consumer. If no value is provided here, the - * retry options set when creating the `EventHubClient` is used. + * The retry options used to govern retry attempts when an issue is encountered while receiving events. + * If no value is provided here, the retry options set when creating the `EventHubClient` is used. */ retryOptions?: RetryOptions; } @@ -127,13 +131,13 @@ export interface EventHubClientOptions { /** * @property * The user agent that will be appended to the built in user agent string that is passed as a - * connection property to the Event Hubs service + * connection property to the Event Hubs service. */ userAgent?: string; /** * @property * The WebSocket constructor used to create an AMQP connection over a WebSocket. - * This option should be provided in the below scenarios + * This option should be provided in the below scenarios: * - The TCP port 5671 which is what is used by the AMQP connection to Event Hubs is blocked in your environment. * - Your application needs to be run behind a proxy server * - Your application needs to run in the browser and you want to provide your own choice of Websocket implementation @@ -148,15 +152,17 @@ export interface EventHubClientOptions { webSocketConstructorOptions?: any; /** * @property - * Retry options for all the operations on the client/producer/consumer. + * The retry options for all the operations on the client/producer/consumer. * This can be overridden by the retry options set on the producer and consumer. */ retryOptions?: RetryOptions; } /** - * @class EventHubClient - * Describes the EventHub client. + * @class + * The client is the main point of interaction with Azure Event Hubs service. + * It offers connection to a specific Event Hub within the Event Hubs namespace along with + * operations for sending event data, receiving events, and inspecting the connected Event Hub. */ export class EventHubClient { /** @@ -180,24 +186,28 @@ export class EventHubClient { /** * @constructor - * @param connectionString - Connection string of the form 'Endpoint=sb://my-servicebus-namespace.servicebus.windows.net/;SharedAccessKeyName=my-SA-name;SharedAccessKey=my-SA-key;EntityPath=my-event-hub-name'. - * @param options - The options that can be provided during client creation. + * @param connectionString - The connection string to use for connecting to the Event Hubs namespace. + * It is expected that the shared key properties and the Event Hub path are contained in this connection string. + * e.g. 'Endpoint=sb://my-servicebus-namespace.servicebus.windows.net/;SharedAccessKeyName=my-SA-name;SharedAccessKey=my-SA-key;EntityPath=my-event-hub-name'. + * @param options - A set of options to apply when configuring the client. */ constructor(connectionString: string, options?: EventHubClientOptions); /** * @constructor - * @param connectionString - Connection string of the form 'Endpoint=sb://my-servicebus-namespace.servicebus.windows.net/;SharedAccessKeyName=my-SA-name;SharedAccessKey=my-SA-key;'. - * @param eventHubPath - EventHub path of the form 'my-event-hub-name' - * @param options - The options that can be provided during client creation. + * @param connectionString - The connection string to use for connecting to the Event Hubs namespace; + * it is expected that the shared key properties are contained in this connection string, but not the Event Hub path, + * e.g. 'Endpoint=sb://my-servicebus-namespace.servicebus.windows.net/;SharedAccessKeyName=my-SA-name;SharedAccessKey=my-SA-key;'. + * @param eventHubPath - The path of the specific Event Hub to connect the client to. + * @param options - A set of options to apply when configuring the client. */ constructor(connectionString: string, eventHubPath: string, options?: EventHubClientOptions); /** * @constructor - * @param host - Fully qualified domain name for Event Hubs. Most likely, + * @param host - The fully qualified host name for the Event Hubs namespace. This is likely to be similar to * .servicebus.windows.net - * @param eventHubPath - EventHub path of the form 'my-event-hub-name'. + * @param eventHubPath - The path of the specific Event Hub to connect the client to. * @param credential - SharedKeyCredential object or your credential that implements the TokenCredential interface. - * @param options - The options that can be provided during client creation. + * @param options - A set of options to apply when configuring the client. */ constructor(host: string, eventHubPath: string, credential: TokenCredential, options?: EventHubClientOptions); constructor( @@ -243,7 +253,7 @@ export class EventHubClient { } /** - * Closes the AMQP connection to the Event Hub for this client, + * Closes the AMQP connection to the Event Hub instance, * returning a promise that will be resolved when disconnection is completed. * @returns Promise * @throws {Error} Thrown if the underlying connection encounters an error while closing. @@ -275,10 +285,16 @@ export class EventHubClient { } /** - * Creates an EventHubProducer that can be used to send events to the Event Hub for which this client - * was created. + * Creates an Event Hub producer responsible for sending `EventData` to the Event Hub. + * If `partitionId` is specified in the `options`, all event data sent using the producer + * will be sent to the specified partition. + * Otherwise, they are automatically routed to an available partition by the Event Hubs service. + * + * Allowing automatic routing of partitions is recommended when: + * - The sending of events needs to be highly available. + * - The event data should be evenly distributed among all available partitions. * - * @param options Options to create a EventHubProducer where you can specify the id of the partition + * @param options The set of options to apply when creating the producer where you can specify the id of the partition * to which events need to be sent to, and retry options. * * @throws {Error} Thrown if the underlying connection has been closed, create a new EventHubClient. @@ -290,15 +306,20 @@ export class EventHubClient { } /** - * Creates an EventHubConsumer that can be used to receive events from the Event Hub for which this - * client was created. + * Creates an Event Hub consumer responsible for reading `EventData` from a specific Event Hub partition, + * in the context of a specific consumer group. + * + * Multiple consumers are allowed on the same partition in a consumer group. + * If there is a need to have an exclusive consumer for a partition in a consumer group, + * then specify the `ownerLevel` in the `options`. + * Exclusive consumers were previously referred to as "Epoch Receivers". + * + * Designating a consumer as exclusive may be specified in the `options` via `ownerLevel`. * - * @param consumerGroup The consumer group from which the consumer should receive events. - * @param partitionId The id of the partition from which to receive events. - * @param eventPosition The event position in the partition at which to start receiving messages. - * @param options Options to create the EventHubConsumer where you can specify the position from - * which to start receiving events, the consumer group to receive events from, retry options - * and more. + * @param consumerGroup The name of the consumer group this consumer is associated with. Events are read in the context of this group. + * @param partitionId The identifier of the Event Hub partition from which events will be received. + * @param eventPosition The position within the partition where the consumer should begin reading events. + * @param options The set of options to apply when creating the consumer where you can specify retry options and ownerLevel. * @throws {Error} Thrown if the underlying connection has been closed, create a new EventHubClient. * @throws {TypeError} Thrown if a required parameter is missing. */ @@ -318,6 +339,8 @@ export class EventHubClient { /** * Provides the Event Hub runtime information. + * @param abortSignal An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation. + * For example, use the @azure/abort-controller to create an `AbortSignal`. * @returns A promise that resolves with EventHubProperties. * @throws {Error} Thrown if the underlying connection has been closed, create a new EventHubClient. * @throws {AbortError} Thrown if the operation is cancelled via the abortSignal. @@ -337,6 +360,8 @@ export class EventHubClient { /** * Provides an array of partitionIds. + * @param abortSignal An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation. + * For example, use the @azure/abort-controller to create an `AbortSignal`. * @returns A promise that resolves with an Array of strings. * @throws {Error} Thrown if the underlying connection has been closed, create a new EventHubClient. * @throws {AbortError} Thrown if the operation is cancelled via the abortSignal. @@ -355,6 +380,8 @@ export class EventHubClient { /** * Provides information about the specified partition. * @param partitionId Partition ID for which partition information is required. + * @param abortSignal An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation. + * For example, use the @azure/abort-controller to create an `AbortSignal`. * @returns A promise that resoloves with PartitionProperties. * @throws {Error} Thrown if the underlying connection has been closed, create a new EventHubClient. * @throws {AbortError} Thrown if the operation is cancelled via the abortSignal. @@ -394,7 +421,7 @@ export class EventHubClient { /** * @property - * The name of the default consumer group for any Event Hub instance + * The name of the default consumer group in the Event Hubs service. */ - static defaultConsumerGroup: string = Constants.defaultConsumerGroup; + static defaultConsumerGroupName: string = Constants.defaultConsumerGroup; } diff --git a/sdk/eventhub/event-hubs/src/eventPosition.ts b/sdk/eventhub/event-hubs/src/eventPosition.ts index dd000494cfb0..e9ccd812d910 100644 --- a/sdk/eventhub/event-hubs/src/eventPosition.ts +++ b/sdk/eventhub/event-hubs/src/eventPosition.ts @@ -33,49 +33,58 @@ export interface EventPositionOptions { } /** - * Represents options can be set during the creation of a event hub receiver. - * Defines a position of an @link~EventData in the event hub partition. - * @class EventPosition + * Represents the position of an event in an Event Hub partition, typically used in the creation of + * an `EventHubProducer`. + * @class */ export class EventPosition { /** - * @property The offset from which events would be received: `"-1"`. + * @property The token that represents the beginning event in the stream of a partition: `"-1"`. * @static * @readonly + * @ignore */ private static readonly startOfStream: string = "-1"; /** - * @property The offset from which events would be received: `"@latest"`. + * @property The token that represents the last event in the stream of a partition: `"@latest"`. * @static * @readonly + * @ignore */ private static readonly endOfStream: string = "@latest"; /** - * @property The offset of the event at the position. It can be undefined - * if the position is just created from a sequence number or an enqueued time. + * @property The offset of the event identified by this position. + * Expected to be undefined if the position is just created from a sequence number or an enqueued time. + * + * The offset is the relative position for an event in the context of the partition. + * The offset should not be considered a stable value. + * The same offset may refer to a different event as events reach the age limit for + * retention and are no longer visible within the partition. */ offset?: string; /** - * @property Indicates if the current event at the specified offset is - * included or not. It is only applicable if offset is set. Default value: false. + * @property Indicates if the specified offset is inclusive of the event which it identifies. + * This information is only relevent if the event position was identified by an offset or sequence number. + * Default value: `false`. */ isInclusive: boolean = false; /** - * @property The enqueued time of the event at the position. It can be undefined - * if the position is just created from a sequence number or an offset. + * @property The enqueued time of the event identified by this position. + * Expected to be undefined if the position is just created from a sequence number or an offset. */ enqueuedTime?: Date | number; /** - * @property The sequence number of the event at the position. It can be undefined - * if the position is just created from an enqueued time or an offset. + * @property The sequence number of the event identified by this poistion. + * Expected to be undefined if the position is just created from an offset or enqueued time. */ sequenceNumber?: number; /** * @constructor * @internal + * @ignore * @param options */ constructor(options?: EventPositionOptions) { @@ -88,12 +97,12 @@ export class EventPosition { } /** - * Creates a position at the given offset. - * @param offset The offset of the data relative to the Event Hub partition stream. - * The offset is a marker or identifier for an event within the Event Hubs stream. - * The identifier is unique within a partition of the Event Hubs stream. + * Gets an instance of `EventPosition` corresponding to the event in the partition at the provided offset. + * + * @param offset The offset of an event with respect to its relative position in the partition. * @param isInclusive If true, the specified event is included; - * otherwise the next event is returned. Default: false. + * otherwise the next event is returned. + * Default: `false`. * @returns EventPosition */ static fromOffset(offset: string, isInclusive?: boolean): EventPosition { @@ -104,10 +113,12 @@ export class EventPosition { } /** - * Creates a position at the given sequence number. - * @param sequenceNumber The logical sequence number of the event within the partition stream of the Event Hub. - * @param isInclusive If true, the specified event is included; - * otherwise the next event is returned. Default false. + * Gets an instance of `EventPosition` corresponding to the event in the partition having a specified sequence number associated with it. + * + * @param sequenceNumber The sequence number assigned to an event when it was enqueued in the partition. + * @param isInclusive If true, event with the `sequenceNumber` is included; + * otherwise the next event in sequence will be received. + * Default `false`. * @returns EventPosition */ static fromSequenceNumber(sequenceNumber: number, isInclusive?: boolean): EventPosition { @@ -121,8 +132,10 @@ export class EventPosition { } /** - * Creates a position at the given enqueued time. - * @param enqueuedTime The enqueue time. This value represents the actual time of enqueuing the message. + * Gets an instance of `EventPosition` corresponding to a specific date and time within the partition to begin seeking an event; + * the event enqueued after the requested `enqueuedTime` will become the current position. + * + * @param enqueuedTime The date and time, in UTC, from which the next available event should be chosen. * @returns EventPosition */ static fromEnqueuedTime(enqueuedTime: Date | number): EventPosition { @@ -133,8 +146,9 @@ export class EventPosition { } /** - * Returns the position for the start of a stream. Provide this position in receiver creation to - * start receiving from the first available event in the partition. + * Gets an instance of `EventPosition` corresponding to the location of the the first event present in the partition. + * Use this position to begin receiving from the first event that was enqueued in the partition + * which has not expired due to the retention policy. * @returns EventPosition */ @@ -143,8 +157,9 @@ export class EventPosition { } /** - * Returns the position for the end of a stream. Provide this position in receiver creation to - * start receiving from the next available event in the partition after the receiver is created. + * Gets an instance of `EventPosition` corresponding to the end of the partition, where no more events are currently enqueued. + * Use this position to begin receiving from the next event to be enqueued in the partion after an ``EventHubConsumer`` + * is created with this position. * @returns EventPosition */ @@ -155,6 +170,7 @@ export class EventPosition { /** * @internal + * @ignore * Gets the expression to be set as the filter clause when creating the receiver * @return {string} filterExpression */ diff --git a/sdk/eventhub/event-hubs/src/receiver.ts b/sdk/eventhub/event-hubs/src/receiver.ts index fbde89842173..626341174e36 100644 --- a/sdk/eventhub/event-hubs/src/receiver.ts +++ b/sdk/eventhub/event-hubs/src/receiver.ts @@ -22,16 +22,24 @@ export interface EventIteratorOptions { */ // prefetchCount?: number; /** - * Signal to cancel the operation. + * An implementation of the `AbortSignalLike` interface to signal the `EventIterator` to cancel the operation. + * For example, use the @azure/abort-controller to create an `AbortSignal`. */ abortSignal?: AbortSignalLike; } /** - * The EventHubConsumer class can be used to receive messages in a batch or by registering handlers. + * A consumer is responsible for reading `EventData` from a specific Event Hub partition + * in the context of a specific consumer group. + * + * Multiple consumers are allowed on the same partition in a consumer group. + * If there is a need to have an exclusive consumer for a partition in a consumer group, + * then specify the `ownerLevel` in the `options`. + * Exclusive consumers were previously referred to as "Epoch Receivers". + * + * The consumer can be used to receive messages in a batch or by registering handlers. * Use the `createConsumer` function on the EventHubClient to instantiate an EventHubConsumer. - * The EventHubConsumer class is an abstraction over the underlying AMQP receiver link. - * @class EventHubConsumer + * @class */ export class EventHubConsumer { /** @@ -66,7 +74,8 @@ export class EventHubConsumer { } /** - * @property Returns the Partition ID to receive events from. + * @property The identifier of the Event Hub partition that this consumer is associated with. + * Events will be read only from this partition. * @readonly */ public get partitionId(): string { @@ -74,8 +83,8 @@ export class EventHubConsumer { } /** - * @property The consumer group from which the handler is receiving - * events from. + * @property The name of the consumer group that this consumer is associated with. + * Events will be read only in the context of this group. * @readonly */ get consumerGroup(): string { @@ -83,7 +92,12 @@ export class EventHubConsumer { } /** - * @property The ownerLevel value of the underlying consumer, if present. + * @property The owner level associated with an exclusive consumer; for a non-exclusive consumer, this value will be null or undefined. + * + * When provided, the owner level indicates that a consumer is intended to be the exclusive receiver of events for the + * requested partition and the associated consumer group. + * When multiple consumers exist for the same partition/consumer group pair, then the ones with lower or no + * `ownerLevel` will get a `ReceiverDisconnectedError` during the next attempted receive operation. * @readonly */ get ownerLevel(): number | undefined { @@ -107,6 +121,7 @@ export class EventHubConsumer { /** * @constructor * @internal + * @ignore */ constructor( context: ConnectionContext, @@ -128,8 +143,8 @@ export class EventHubConsumer { * @param onMessage The message handler to receive event data objects. * @param onError The error handler to receive an error that occurs * while receiving messages. - * @param abortSignal Signal to cancel current operation. - * + * @param abortSignal An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation. + * For example, use the @azure/abort-controller to create an `AbortSignal`. * @returns ReceiveHandler - An object that provides a mechanism to stop receiving more messages. * @throws {AbortError} Thrown if the operation is cancelled via the abortSignal. * @throws {TypeError} Thrown if a required parameter is missing. @@ -162,8 +177,14 @@ export class EventHubConsumer { } /** - * Gets an async iterator over events from the consumer. - * @param [options] Options to pass to the event iterator. + * Returns an async iterable that retrieves events. + * + * The async iterable cannot indicate that it is done. + * When using `for..await..of` to iterate over the events returned + * by the async iterable, take care to exit the for loop after receiving the + * desired number of messages, or provide an `AbortSignal` to control when to exit the loop. + * + * @param [options] A set of options to apply to an event iterator. */ async *getEventIterator(options?: EventIteratorOptions): AsyncIterableIterator { if (!options) { @@ -185,10 +206,11 @@ export class EventHubConsumer { * Receives a batch of EventData objects from an EventHub partition for a given count and a given max wait time in seconds, whichever * happens first. This method can be used directly after creating the consumer object and **MUST NOT** be used along with the `start()` method. * - * @param maxMessageCount The maximum message count. Must be a value greater than 0. - * @param [maxWaitTimeInSeconds] The maximum wait time in seconds for which the Receiver should wait - * to receiver the said amount of messages. If not provided, it defaults to 60 seconds. - * @param abortSignal Signal to cancel current operation. + * @param maxMessageCount The maximum number of messages to receive in this batch. Must be a value greater than 0. + * @param [maxWaitTimeInSeconds] The maximum amount of time to wait to build up the requested message count for the batch; + * If not provided, it defaults to 60 seconds. + * @param abortSignal An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation. + * For example, use the @azure/abort-controller to create an `AbortSignal`. * * @returns Promise. * @throws {AbortError} Thrown if the operation is cancelled via the abortSignal. @@ -260,7 +282,7 @@ export class EventHubConsumer { * Closes the underlying AMQP receiver link. * Once closed, the consumer cannot be used for any further operations. * Use the `createConsumer` function on the EventHubClient to instantiate - * a new EventHubConsumer + * a new EventHubConsumer. * * @returns * @throws {Error} Thrown if the underlying connection encounters an error while closing. diff --git a/sdk/eventhub/event-hubs/src/sender.ts b/sdk/eventhub/event-hubs/src/sender.ts index 49c2151424a5..506c10d76e7d 100644 --- a/sdk/eventhub/event-hubs/src/sender.ts +++ b/sdk/eventhub/event-hubs/src/sender.ts @@ -9,10 +9,17 @@ import * as log from "./log"; import { throwErrorIfConnectionClosed, throwTypeErrorIfParameterMissing } from "./util/error"; /** - * The EventHubProducer class can be used to send messages. + * A producer responsible for sending `EventData` to a specific Event Hub. + * If `partitionId` is specified in the `options`, all event data sent using the producer + * will be sent to the specified partition. + * Otherwise, they are automatically routed to an available partition by the Event Hubs service. + * + * Allowing automatic routing of partitions is recommended when: + * - The sending of events needs to be highly available. + * - The event data should be evenly distributed among all available partitions. + * * Use the `createProducer` function on the EventHubClient to instantiate an EventHubProducer. - * The EventHubProducer class is an abstraction over the underlying AMQP sender link. - * @class EventHubProducer + * @class */ export class EventHubProducer { /** @@ -39,6 +46,7 @@ export class EventHubProducer { /** * @constructor * @internal + * @ignore */ constructor(context: ConnectionContext, options?: EventHubProducerOptions) { this._context = context; @@ -49,11 +57,11 @@ export class EventHubProducer { } /** - * Send a batch of EventData to the EventHub using the options provided. + * Send a single or an array of events to the associated Event Hub. * - * @param eventData An individual EventData or array of EventData objects to be sent in a Batch message. - * @param options Options where you can specifiy the partition to send the message to along with controlling the send - * request via retry options, log level and cancellation token. + * @param eventData An individual event data or array of event data objects to send. + * @param options The set of options that can be specified to influence the way in which + * events are sent to the associated Event Hub, including an abort signal to cancel the operation. * * @returns Promise * @throws {AbortError} Thrown if the operation is cancelled via the abortSignal. diff --git a/sdk/eventhub/event-hubs/test/client.spec.ts b/sdk/eventhub/event-hubs/test/client.spec.ts index 31be8710dc89..ccb2a92112fa 100644 --- a/sdk/eventhub/event-hubs/test/client.spec.ts +++ b/sdk/eventhub/event-hubs/test/client.spec.ts @@ -126,7 +126,7 @@ describe("ServiceCommunicationError for non existent namespace", function(): voi it("should throw ServiceCommunicationError while creating a receiver", async function(): Promise { try { - const receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, "0", EventPosition.earliest()); + const receiver = client.createConsumer(EventHubClient.defaultConsumerGroupName, "0", EventPosition.earliest()); await receiver.receiveBatch(10, 5); throw new Error("Test failure"); } catch (err) { @@ -184,7 +184,7 @@ describe("MessagingEntityNotFoundError for non existent eventhub", function(): v it("should throw MessagingEntityNotFoundError while creating a receiver", async function(): Promise { try { - const receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, "0", EventPosition.earliest()); + const receiver = client.createConsumer(EventHubClient.defaultConsumerGroupName, "0", EventPosition.earliest()); await receiver.receiveBatch(10, 5); throw new Error("Test failure"); } catch (err) { @@ -269,7 +269,11 @@ describe("Errors after close()", function(): void { await sender.send({ body: "dummy send to ensure AMQP connection is opened" }); // Ensure receiver link is opened - receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, "0", EventPosition.fromEnqueuedTime(timeNow)); + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroupName, + "0", + EventPosition.fromEnqueuedTime(timeNow) + ); const msgs = await receiver.receiveBatch(1, 10); should.equal(msgs.length, 1); @@ -341,7 +345,7 @@ describe("Errors after close()", function(): void { let errorNewReceiver: string = ""; try { - receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, "0", EventPosition.earliest()); + receiver = client.createConsumer(EventHubClient.defaultConsumerGroupName, "0", EventPosition.earliest()); } catch (err) { errorNewReceiver = err.message; } diff --git a/sdk/eventhub/event-hubs/test/iothub.spec.ts b/sdk/eventhub/event-hubs/test/iothub.spec.ts index 6d106133d7a3..79561c1ee381 100644 --- a/sdk/eventhub/event-hubs/test/iothub.spec.ts +++ b/sdk/eventhub/event-hubs/test/iothub.spec.ts @@ -42,7 +42,7 @@ describe("EventHub Client with iothub connection string ", function(): void { it("should be able to receive messages from the event hub", async function(): Promise { client = await EventHubClient.createFromIotHubConnectionString(service.connectionString!); - const receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, "0", EventPosition.earliest()); + const receiver = client.createConsumer(EventHubClient.defaultConsumerGroupName, "0", EventPosition.earliest()); const datas = await receiver.receiveBatch(15, 10); debug(">>>> Received events from partition %s, %O", "0", datas); }); diff --git a/sdk/eventhub/event-hubs/test/misc.spec.ts b/sdk/eventhub/event-hubs/test/misc.spec.ts index efb1b835c82f..895dc5f5f354 100644 --- a/sdk/eventhub/event-hubs/test/misc.spec.ts +++ b/sdk/eventhub/event-hubs/test/misc.spec.ts @@ -49,7 +49,7 @@ describe("Misc tests #RunnableInBrowser", function(): void { debug("Sending one message with %d bytes.", bodysize); breceiver = BatchingReceiver.create( (client as any)._context, - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromOffset(offset) ); @@ -88,7 +88,7 @@ describe("Misc tests #RunnableInBrowser", function(): void { debug("Sending one message %O", obj); breceiver = BatchingReceiver.create( (client as any)._context, - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromOffset(offset) ); @@ -123,7 +123,7 @@ describe("Misc tests #RunnableInBrowser", function(): void { debug("Sending one message %O", obj); breceiver = BatchingReceiver.create( (client as any)._context, - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromOffset(offset) ); @@ -149,7 +149,7 @@ describe("Misc tests #RunnableInBrowser", function(): void { debug("Sending one message %O", obj); breceiver = BatchingReceiver.create( (client as any)._context, - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromOffset(offset) ); @@ -183,7 +183,7 @@ describe("Misc tests #RunnableInBrowser", function(): void { debug("Successfully sent 5 messages batched together."); const receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromOffset(offset) ); @@ -235,7 +235,7 @@ describe("Misc tests #RunnableInBrowser", function(): void { debug("Successfully sent 5 messages batched together."); const receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromOffset(offset) ); @@ -278,7 +278,7 @@ describe("Misc tests #RunnableInBrowser", function(): void { let totalReceived = 0; for (const id of partitionIds) { const receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, id, EventPosition.fromOffset(partitionOffsets[id]) ); diff --git a/sdk/eventhub/event-hubs/test/receiver.spec.ts b/sdk/eventhub/event-hubs/test/receiver.spec.ts index b074ba0852ee..910974bbf7bc 100644 --- a/sdk/eventhub/event-hubs/test/receiver.spec.ts +++ b/sdk/eventhub/event-hubs/test/receiver.spec.ts @@ -65,7 +65,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { describe("with partitionId 0 as number", function(): void { it("should not throw an error", async function(): Promise { receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, 0 as any, EventPosition.fromSequenceNumber(0) ); @@ -78,7 +78,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { // it("'from end of stream' should receive messages correctly", async function(): Promise { // const partitionId = partitionIds[0]; // debug("Creating new receiver with offset EndOfStream"); - // const receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, partitionId, EventPosition.latest()); + // const receiver = client.createConsumer(EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.latest()); // const data = await receiver.receiveBatch(10, 10); // data.length.should.equal(0, "Unexpected message received when using EventPosition.fromEnd()"); // const events: EventData[] = []; @@ -104,7 +104,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { const partitionInfo = await client.getPartitionProperties(partitionId); debug("Creating a receiver with last enqueued sequence number"); const receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromSequenceNumber(partitionInfo.lastEnqueuedSequenceNumber) ); @@ -141,7 +141,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { await client.createProducer({ partitionId: partitionId }).send([ed]); debug("Sent the new message after creating the receiver. We should only receive this message."); receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromOffset(pInfo.lastEnqueuedOffset) ); @@ -177,7 +177,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { debug(`Creating new receiver with last enqueued offset: "${pInfo.lastEnqueuedOffset}".`); breceiver = BatchingReceiver.create( (client as any)._context, - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromOffset(pInfo.lastEnqueuedOffset, true) ); @@ -210,7 +210,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { debug("Sent the new message after creating the receiver. We should only receive this message."); receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromEnqueuedTime(pInfo.lastEnqueuedTimeUtc) ); @@ -238,7 +238,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { debug(`Creating new receiver with last enqueued sequence number: "${pInfo.lastEnqueuedSequenceNumber}".`); breceiver = BatchingReceiver.create( (client as any)._context, - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromSequenceNumber(pInfo.lastEnqueuedSequenceNumber) ); @@ -277,7 +277,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { debug(`Creating new receiver with last sequence number: "${pInfo.lastEnqueuedSequenceNumber}".`); breceiver = BatchingReceiver.create( (client as any)._context, - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromSequenceNumber(pInfo.lastEnqueuedSequenceNumber, true) ); @@ -305,7 +305,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { await sender.close(); } receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromEnqueuedTime(time) ); @@ -341,7 +341,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromEnqueuedTime(time) ); @@ -387,7 +387,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromEnqueuedTime(time) ); @@ -435,7 +435,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromEnqueuedTime(time) ); @@ -493,7 +493,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { describe("in batch mode #RunnableInBrowser", function(): void { it("should receive messages correctly", async function(): Promise { const partitionId = partitionIds[0]; - receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, partitionId, EventPosition.earliest()); + receiver = client.createConsumer(EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.earliest()); const data = await receiver.receiveBatch(5, 10); debug("received messages: ", data); data.length.should.equal(5, "Failed to receive five expected messages"); @@ -511,7 +511,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromEnqueuedTime(time) ); @@ -539,7 +539,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromEnqueuedTime(time) ); @@ -568,7 +568,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromEnqueuedTime(time) ); @@ -598,7 +598,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromEnqueuedTime(time) ); @@ -639,7 +639,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromEnqueuedTime(time) ); @@ -661,7 +661,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { it("should properly drain if broken out of", async function(): Promise { const partitionId = partitionIds[0]; - receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, partitionId, EventPosition.latest()); + receiver = client.createConsumer(EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.latest()); const eventIterator = receiver.getEventIterator(); const eventPromise = eventIterator.next(); @@ -708,7 +708,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { it("should not return undefined if no messages are found", async function(): Promise { const partitionId = partitionIds[0]; - receiver = client.createConsumer(EventHubClient.defaultConsumerGroup, partitionId, EventPosition.latest()); + receiver = client.createConsumer(EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.latest()); const eventIterator = receiver.getEventIterator({ // behind the scenes, eventIterator will wait up to 60 seconds before returning. // set timeout to 70 seconds to give the iterator a chance to yield a value. @@ -742,7 +742,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromEnqueuedTime(time) ); @@ -773,7 +773,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromEnqueuedTime(time) ); @@ -805,7 +805,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromEnqueuedTime(time) ); @@ -859,7 +859,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { const data: ReceivedEventData[] = []; receiver = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.fromEnqueuedTime(time) ); @@ -922,7 +922,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { describe("Errors when calling createConsumer", function(): void { it("should throw an error if EventPosition is missing", function() { try { - client.createConsumer(EventHubClient.defaultConsumerGroup, "0", undefined as any); + client.createConsumer(EventHubClient.defaultConsumerGroupName, "0", undefined as any); throw new Error("Test failure"); } catch (err) { err.name.should.equal("TypeError"); @@ -1007,7 +1007,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { debug(">>>> ownerLevel Receiver 1", data); }; const receiver1 = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.latest(), { @@ -1039,7 +1039,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { debug(">>>> ownerLevel Receiver 2", data); }; const receiver2 = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.latest(), { @@ -1078,7 +1078,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { debug(">>>> ownerLevel Receiver 1", data); }; const receiver1 = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.latest(), { @@ -1095,9 +1095,14 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { const onMsg2 = (data: ReceivedEventData) => { debug(">>>> ownerLevel Receiver 2", data); }; - receiver2 = client.createConsumer(EventHubClient.defaultConsumerGroup, partitionId, EventPosition.latest(), { - ownerLevel: 2 - }); + receiver2 = client.createConsumer( + EventHubClient.defaultConsumerGroupName, + partitionId, + EventPosition.latest(), + { + ownerLevel: 2 + } + ); ownerLevelRcvr2 = receiver2.receive(onMsg2, onError2); debug("Created ownerLevel receiver 2 %s", ownerLevelRcvr2); }, 3000); @@ -1115,7 +1120,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { debug(">>>> ownerLevel Receiver ", data); }; const receiver1 = client.createConsumer( - EventHubClient.defaultConsumerGroup, + EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.latest(), { @@ -1145,7 +1150,11 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { const onmsg2 = (data: ReceivedEventData) => { debug(">>>> non ownerLevel Receiver", data); }; - const receiver2 = client.createConsumer(EventHubClient.defaultConsumerGroup, partitionId, EventPosition.latest()); + const receiver2 = client.createConsumer( + EventHubClient.defaultConsumerGroupName, + partitionId, + EventPosition.latest() + ); nonownerLevelRcvr = receiver2.receive(onmsg2, onerr2); debug("Created non ownerLevel receiver %s", nonownerLevelRcvr); }); @@ -1177,7 +1186,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { const onmsg3 = (data: ReceivedEventData) => { debug(">>>> non ownerLevel Receiver", data); }; - receiver1 = client.createConsumer(EventHubClient.defaultConsumerGroup, partitionId, EventPosition.latest()); + receiver1 = client.createConsumer(EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.latest()); nonownerLevelRcvr = receiver1.receive(onmsg3, onerr3); debug("Created non ownerLevel receiver %s", nonownerLevelRcvr); setTimeout(() => { @@ -1190,9 +1199,14 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { const onmsg4 = (data: ReceivedEventData) => { debug(">>>> ownerLevel Receiver ", data); }; - receiver2 = client.createConsumer(EventHubClient.defaultConsumerGroup, partitionId, EventPosition.latest(), { - ownerLevel: 1 - }); + receiver2 = client.createConsumer( + EventHubClient.defaultConsumerGroupName, + partitionId, + EventPosition.latest(), + { + ownerLevel: 1 + } + ); ownerLevelRcvr = receiver2.receive(onmsg4, onerr4); debug("Created ownerLevel receiver %s", ownerLevelRcvr); }, 3000); @@ -1207,7 +1221,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { try { debug("Created receiver and will be receiving messages from partition id ...", id); const d = await client - .createConsumer(EventHubClient.defaultConsumerGroup, id, EventPosition.latest()) + .createConsumer(EventHubClient.defaultConsumerGroupName, id, EventPosition.latest()) .receiveBatch(10, 3); debug("received messages ", d.length); throw new Error("Test failure"); @@ -1226,7 +1240,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { const id = " "; debug("Created receiver and will be receiving messages from partition id ...", id); const d = await client - .createConsumer(EventHubClient.defaultConsumerGroup, id, EventPosition.latest()) + .createConsumer(EventHubClient.defaultConsumerGroupName, id, EventPosition.latest()) .receiveBatch(10, 3); debug("received messages ", d.length); throw new Error("Test failure"); @@ -1242,7 +1256,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { it(`"${id}" should throw an error`, async function(): Promise { try { await client - .createConsumer(EventHubClient.defaultConsumerGroup, id, EventPosition.latest()) + .createConsumer(EventHubClient.defaultConsumerGroupName, id, EventPosition.latest()) .receiveBatch(10, 3); throw new Error("Test failure"); } catch (err) { @@ -1279,7 +1293,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { debug(err); }; const rcvHndlr = client - .createConsumer(EventHubClient.defaultConsumerGroup, partitionId, eventPosition) + .createConsumer(EventHubClient.defaultConsumerGroupName, partitionId, eventPosition) .receive(onMsg, onError); rcvHndlrs.push(rcvHndlr); } @@ -1308,7 +1322,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { }); }; const failedRcvHandler = client - .createConsumer(EventHubClient.defaultConsumerGroup, partitionId, eventPosition) + .createConsumer(EventHubClient.defaultConsumerGroupName, partitionId, eventPosition) .receive(onmsg2, onerr2); rcvHndlrs.push(failedRcvHandler); }, 5000); From 46902d735e2a9572123629242ea6d57b465168dc Mon Sep 17 00:00:00 2001 From: KarishmaGhiya Date: Tue, 25 Jun 2019 14:31:44 -0700 Subject: [PATCH 187/289] added env var for eventhubs (#4051) --- sdk/eventhub/event-hubs/tests.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sdk/eventhub/event-hubs/tests.yml b/sdk/eventhub/event-hubs/tests.yml index a007dfdfc2e1..30100e4a6aa2 100644 --- a/sdk/eventhub/event-hubs/tests.yml +++ b/sdk/eventhub/event-hubs/tests.yml @@ -16,11 +16,13 @@ jobs: OSVmImage: "macOS-10.13" TestType: "node" EnvVars: + AZURE_CLIENT_ID: $(aad-azure-sdk-test-client-id) + AZURE_CLIENT_SECRET: $(aad-azure-sdk-test-client-secret) + AZURE_TENANT_ID: $(aad-azure-sdk-test-tenant-id) + ENDPOINT: $(js-event-hubs-test-endpoint) EVENTHUB_CONNECTION_STRING: $(js-event-hubs-test-connection-string) EVENTHUB_NAME: $(js-event-hubs-test-name) IOTHUB_CONNECTION_STRING: $(js-event-hubs-test-iothub-connection-string) - AZURE_TENANT_ID: $(aad-azure-sdk-test-tenant-id) - AZURE_CLIENT_ID: $(aad-azure-sdk-test-client-id) - AZURE_CLIENT_SECRET: $(aad-azure-sdk-test-client-secret) + # Event Hubs tests do not support concurrent execution MaxParallel: 1 From 194f6832a91a66d2819448a0c832975987702936 Mon Sep 17 00:00:00 2001 From: David Wilson Date: Tue, 25 Jun 2019 14:59:38 -0700 Subject: [PATCH 188/289] [core-http] Set @azure/core-http version to 1.0.0-preview.1 (#4067) --- sdk/core/core-amqp/package.json | 2 +- sdk/core/core-http/package.json | 2 +- sdk/identity/identity/package.json | 2 +- sdk/keyvault/keyvault-certificates/package.json | 2 +- sdk/keyvault/keyvault-keys/package.json | 2 +- sdk/keyvault/keyvault-secrets/package.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sdk/core/core-amqp/package.json b/sdk/core/core-amqp/package.json index 1281638522ca..1d8e92c62b70 100644 --- a/sdk/core/core-amqp/package.json +++ b/sdk/core/core-amqp/package.json @@ -52,7 +52,7 @@ }, "dependencies": { "@azure/abort-controller": "1.0.0-preview.1", - "@azure/core-http": "^1.0.0-preview.1.0", + "@azure/core-http": "^1.0.0-preview.1", "@azure/ms-rest-nodeauth": "^0.9.2", "@types/async-lock": "^1.1.0", "@types/is-buffer": "^2.0.0", diff --git a/sdk/core/core-http/package.json b/sdk/core/core-http/package.json index b6b163b8299c..5e20e906f82c 100644 --- a/sdk/core/core-http/package.json +++ b/sdk/core/core-http/package.json @@ -6,7 +6,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/azure-sdk-for-js" }, - "version": "1.0.0-preview.1.0", + "version": "1.0.0-preview.1", "description": "Isomorphic client Runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", diff --git a/sdk/identity/identity/package.json b/sdk/identity/identity/package.json index 088eb5f8a24a..37b6339cc7f2 100644 --- a/sdk/identity/identity/package.json +++ b/sdk/identity/identity/package.json @@ -66,7 +66,7 @@ "sideEffects": false, "private": true, "dependencies": { - "@azure/core-http": "^1.0.0-preview.1.0", + "@azure/core-http": "^1.0.0-preview.1", "events": "^3.0.0", "jws": "~3.2.2", "qs": "6.7.0", diff --git a/sdk/keyvault/keyvault-certificates/package.json b/sdk/keyvault/keyvault-certificates/package.json index c3a4fd7cfcfa..9148a510c871 100644 --- a/sdk/keyvault/keyvault-certificates/package.json +++ b/sdk/keyvault/keyvault-certificates/package.json @@ -65,7 +65,7 @@ }, "sideEffects": false, "dependencies": { - "@azure/core-http": "^1.0.0-preview.1.0", + "@azure/core-http": "^1.0.0-preview.1", "tslib": "^1.9.3" }, "devDependencies": { diff --git a/sdk/keyvault/keyvault-keys/package.json b/sdk/keyvault/keyvault-keys/package.json index a419ebc82ddc..c22451ac9b02 100644 --- a/sdk/keyvault/keyvault-keys/package.json +++ b/sdk/keyvault/keyvault-keys/package.json @@ -68,7 +68,7 @@ }, "sideEffects": false, "dependencies": { - "@azure/core-http": "^1.0.0-preview.1.0", + "@azure/core-http": "^1.0.0-preview.1", "@azure/core-paging": "^1.0.0", "tslib": "^1.9.3" }, diff --git a/sdk/keyvault/keyvault-secrets/package.json b/sdk/keyvault/keyvault-secrets/package.json index 5b5335731236..0c94fcba22af 100644 --- a/sdk/keyvault/keyvault-secrets/package.json +++ b/sdk/keyvault/keyvault-secrets/package.json @@ -68,7 +68,7 @@ }, "sideEffects": false, "dependencies": { - "@azure/core-http": "^1.0.0-preview.1.0", + "@azure/core-http": "^1.0.0-preview.1", "@azure/core-paging": "^1.0.0", "@azure/ms-rest-azure-js": "^1.3.2", "@azure/ms-rest-js": "^1.2.6", From 762e03b49ba3e80bc1268b1de5fff8e241fce4e6 Mon Sep 17 00:00:00 2001 From: David Wilson Date: Tue, 25 Jun 2019 15:30:26 -0700 Subject: [PATCH 189/289] =?UTF-8?q?[Identity]=20Update=20@azure/identity?= =?UTF-8?q?=20version,=20license=20headers,=20and=E2=80=A6=20(#4048)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update source code license headers * Set @azure/identity version to 1.0.0-preview.1 * Remove 'private: true' from package.json * Update README.md with standard information * Update README.md based on feedback * Add JSDoc comments to exported classes --- .docsettings.yml | 1 - sdk/core/core-amqp/package.json | 2 +- sdk/eventhub/event-hubs/package.json | 2 +- sdk/identity/identity/README.md | 139 +++++++++++++----- sdk/identity/identity/package.json | 3 +- sdk/identity/identity/src/client/errors.ts | 13 +- .../identity/src/client/identityClient.ts | 4 +- .../src/credentials/chainedTokenCredential.ts | 18 ++- .../clientCertificateCredential.ts | 33 ++++- .../src/credentials/clientSecretCredential.ts | 32 +++- .../src/credentials/defaultAzureCredential.ts | 20 ++- .../src/credentials/environmentCredential.ts | 35 ++++- .../credentials/managedIdentityCredential.ts | 23 ++- sdk/identity/identity/src/index.ts | 4 +- .../test/client/identityClient.spec.ts | 4 +- .../test/credentials/authTestUtils.ts | 4 +- .../chainedTokenCredential.spec.ts | 4 +- .../clientCertificateCredential.spec.ts | 6 +- .../clientSecretCredential.spec.ts | 6 +- .../credentials/environmentCredential.spec.ts | 6 +- .../managedIdentityCredential.spec.ts | 6 +- .../keyvault-certificates/package.json | 2 +- sdk/keyvault/keyvault-keys/package.json | 2 +- sdk/keyvault/keyvault-secrets/package.json | 2 +- 24 files changed, 291 insertions(+), 80 deletions(-) diff --git a/.docsettings.yml b/.docsettings.yml index ae89c24e118c..a3a194819515 100644 --- a/.docsettings.yml +++ b/.docsettings.yml @@ -62,7 +62,6 @@ known_content_issues: - ["sdk/cognitiveservices/cognitiveservices-websearch/README.md", "#1583"] - ["sdk/eventgrid/eventgrid/README.md", "#1583"] - ["sdk/core/abort-controller/README.md", "#1583"] - - ["sdk/identity/identity/README.md", "#1583"] - ["sdk/cosmosdb/cosmos/README.md", "#1583"] - ["sdk/cosmosdb/cosmos/src/test/readme.md", "#1583"] - ["sdk/cosmosdb/cosmos/samples/readme.md", "#1583"] diff --git a/sdk/core/core-amqp/package.json b/sdk/core/core-amqp/package.json index 1d8e92c62b70..3f77b8af7828 100644 --- a/sdk/core/core-amqp/package.json +++ b/sdk/core/core-amqp/package.json @@ -72,7 +72,7 @@ "rhea-promise": "^0.1.15" }, "devDependencies": { - "@azure/identity": "^0.1.0", + "@azure/identity": "^1.0.0-preview.1", "@types/chai": "^4.1.6", "@types/chai-as-promised": "^7.1.0", "@types/debug": "^0.0.31", diff --git a/sdk/eventhub/event-hubs/package.json b/sdk/eventhub/event-hubs/package.json index 6532803852fa..2e2abfbe3a8f 100644 --- a/sdk/eventhub/event-hubs/package.json +++ b/sdk/eventhub/event-hubs/package.json @@ -73,7 +73,7 @@ "uuid": "^3.3.2" }, "devDependencies": { - "@azure/identity": "^0.1.0", + "@azure/identity": "^1.0.0-preview.1", "@microsoft/api-extractor": "^7.1.5", "@types/async-lock": "^1.1.0", "@types/chai": "^4.1.6", diff --git a/sdk/identity/identity/README.md b/sdk/identity/identity/README.md index ccf6f70f078a..fe84cc91436e 100644 --- a/sdk/identity/identity/README.md +++ b/sdk/identity/identity/README.md @@ -1,56 +1,127 @@ -## Azure Identity client library for Javascript +## Azure Identity client library for JS This library simplifies authentication against Azure Active Directory for Azure SDK libraries. It provides a set of `TokenCredential` implementations which can be passed into SDK libraries -to authenticate API requests. +to authenticate API requests. It supports token authentication using an Azure Active Directory [service principal](https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli) or [managed identity](https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview). -## Examples +## Getting started -### Examples for SDK Users +### Prerequisites -The `@azure/keyvault-keys` library supports the use of `TokenCredential` for authenticating -requests to Azure Key Vault. Here's how you would use the `ClientSecretCredential` to authenticate -SDK calls: +- an Azure subscription + - if you don't have one, you can sign up for a [free account](https://azure.microsoft.com/free/) +- Node.js 8 LTS or higher -```javascript -import { KeysClient } from "@azure/keyvault-keys"; -import { ClientSecretCredential } from "@azure/identity"; +**NOTE:** The credential implementations in this library are not yet supported in the browser. We will provide browser-supported implementations for some in a future preview release. -const clientId = process.env["CLIENT_ID"] || ""; -const clientSecret = process.env["CLIENT_SECRET"] || ""; -const tenantId = process.env["TENANT_ID"] || ""; -const vaultName = process.env["KEYVAULT_NAME"] || "" +### Install the package -const url = `https://${vaultName}.vault.azure.net`; -const credential = new ClientSecretCredential(tenantId, clientId, clientSecret) -const client = new KeysClient(url, credential); -const getResult = await client.getKey("MyKeyName"); +Install Azure Identity with `npm`: +```sh +npm install --save @azure/identity ``` -If you use the standard environment variable names `AZURE_TENANT_ID`, `AZURE_CLIENT_ID`, and -`AZURE_CLIENT_SECRET` for storing your AAD client credentials, the previous example can be simplified by using `EnvironmentCredential`: +## Key concepts + +### Credentials + +Azure Identity offers a variety of credential classes that are accepted by Azure SDK data plane clients. Each client library documents its Azure Identity integration in its README and samples. Azure SDK management plane libraries (those starting with `@azure/arm-*`) +do not accept these credentials. + +Credentials differ mostly in configuration: + +|credential class|identity|configuration +|-|-|- +|`DefaultAzureCredential`|service principal or managed identity|none for managed identity; [environment variables](#environment-variables) for service principal +|`ManagedIdentityCredential`|managed identity|none +|`EnvironmentCredential`|service principal|[environment variables](#environment-variables) +|`ClientSecretCredential`|service principal|constructor parameters +|`ClientCertificateCredential`|service principal|constructor parameters + +Credentials can be chained and tried in turn until one succeeds; see [chaining credentials](#chaining-credentials) for details. + +### DefaultAzureCredential + +`DefaultAzureCredential` is appropriate for most scenarios. It supports authenticating as a service principal or managed identity. To authenticate as a service principal, provide configuration in environment variables as described in the next section. Currently this credential attempts to use the `EnvironmentCredential` and `ManagedIdentityCredential`, in that order. + +Authenticating as a managed identity requires no configuration, but does require platform support. See the [managed identity documentation](https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/services-support-managed-identities) for more information. + +### Environment variables + +`DefaultAzureCredential` and `EnvironmentCredential` are configured for service principal authentication with these environment variables: + +|variable name|value +|-|- +|`AZURE_CLIENT_ID`|service principal's app id +|`AZURE_TENANT_ID`|id of the principal's Azure Active Directory tenant +|`AZURE_CLIENT_SECRET`|one of the service principal's client secrets + +## Examples + +### `DefaultAzureCredential` + +```javascript +// The default credential first checks environment variables for configuration as described above. +// If environment configuration is incomplete, it will try managed identity. +const { KeysClient } = require("@azure/keyvault-keys"); +const { DefaultAzureCredential } = require('@azure/identity'); + +// Azure SDK clients accept the credential as a parameter +const credential = new DefaultAzureCredential(); +const client = new KeysClient(vaultUrl, credential); +const getResult = await client.getKey("MyKeyName"); +``` +### Authenticating as a service principal: ```javascript -import { KeysClient } from "@azure/keyvault-keys"; -import { EnvironmentCredential } from "@azure/identity"; +// Using a client secret +const { ClientSecretCredential } = require('@azure/identity'); +const credential = new ClientSecretCredential(tenantId, clientId, clientSecret); -const vaultName = process.env["KEYVAULT_NAME"] || "" -const url = `https://${vaultName}.vault.azure.net`; +// Using a PEM-encoded certificate with a private key, not password protected +const { ClientCertificateCredential } = require('@azure/identity'); +const credential = new ClientCertificateCredential(tenantId, clientId, "/app/certs/certificate.pem") + +// Using environment variables (see "Environment variables" above for variable names) +const { EnvironmentCredential } = require('@azure/identity'); const credential = new EnvironmentCredential(); -const client = new KeysClient(url, credential); -const getResult = await client.getKey("MyKeyName"); ``` -### Examples for SDK Authors +### Chaining credentials: +```javascript +const { ClientSecretCredential, ChainedTokenCredential } = require('@azure/identity'); + +// When an access token is requested, the chain will try each +// credential in order, stopping when one provides a token +const firstCredential = new ClientSecretCredential(tenantId, clientId, clientSecret); +const secondCredential = new ClientSecretCredential(tenantId, anotherClientId, anotherSecret); +const credentialChain = new ChainedTokenCredential(firstCredential, secondCredential); + +// The chain can be used anywhere a credential is required +const { KeysClient } = require("@azure/keyvault-keys"); +const client = new KeysClient(vaultUrl, credentialChain); +``` + +## Troubleshooting + +### General +Credentials raise `AuthenticationError` when they fail to authenticate. This class has a `message` field which describes why authentication failed. An `AggregateAuthenticationError` will be raised by `ChainedTokenCredential` with an `errors` field containing an array of errors from each credential in the chain. + +## Next steps -To integrate this library into an Azure SDK library, you can follow these steps: +### Provide Feedback -1. Replace the `@azure/ms-rest-js` dependency with `@azure/core-http` +If you encounter bugs or have suggestions, please [open an issue](https://github.com/Azure/azure-sdk-for-js/issues). -2. Add an overload to your SDK client's constructor which accepts a `TokenCredential` +## Contributing +This project welcomes contributions and suggestions. Most contributions require you to agree to a +Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us +the rights to use your contribution. For details, visit [https://cla.microsoft.com](https://cla.microsoft.com). -3. When constructing your `ServiceClient`, pass in the `TokenCredential` in the `credentials` parameter. - If you're building your own `RequestPolicyFactory` list, you can use `@azure/core-http`'s `bearerTokenAuthenticationPolicy` - instead of `signingPolicy` as it takes a `TokenCredential` parameter. +When you submit a pull request, a CLA-bot will automatically determine whether you need to provide +a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions +provided by the bot. You will only need to do this once across all repos using our CLA. -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/identity/identity/README.png) +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) +or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/sdk/identity/identity/package.json b/sdk/identity/identity/package.json index 37b6339cc7f2..1a4985aa2516 100644 --- a/sdk/identity/identity/package.json +++ b/sdk/identity/identity/package.json @@ -1,7 +1,7 @@ { "name": "@azure/identity", "sdk-type": "client", - "version": "0.1.0", + "version": "1.0.0-preview.1.0", "description": "Provides credential implementations for Azure SDK libraries that can authenticate with Azure Active Directory", "main": "dist/index.js", "module": "dist-esm/src/index.js", @@ -64,7 +64,6 @@ }, "homepage": "https://github.com/azure/azure-sdk-for-js/tree/master/sdk/core/identity", "sideEffects": false, - "private": true, "dependencies": { "@azure/core-http": "^1.0.0-preview.1", "events": "^3.0.0", diff --git a/sdk/identity/identity/src/client/errors.ts b/sdk/identity/identity/src/client/errors.ts index 65e8d38efba1..3f4ce0e1933f 100644 --- a/sdk/identity/identity/src/client/errors.ts +++ b/sdk/identity/identity/src/client/errors.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. /** * See the official documentation for more details: @@ -18,6 +18,11 @@ export interface ErrorResponse { correlation_id?: string; } +/** + * Provides details about a failure to authenticate with Azure Active + * Directory. The `errorResponse` field contains more details about + * the specific failure. + */ export class AuthenticationError extends Error { public readonly statusCode: number; public readonly errorResponse: ErrorResponse; @@ -68,6 +73,10 @@ export class AuthenticationError extends Error { } } +/** + * Provides an `errors` array containing {@link AuthenticationError} instance + * for authentication failures from credentials in a {@link ChainedTokenCredential}. + */ export class AggregateAuthenticationError extends Error { public errors: any[]; constructor(errors: any[]) { diff --git a/sdk/identity/identity/src/client/identityClient.ts b/sdk/identity/identity/src/client/identityClient.ts index e973ac59d6d6..21574589c3bc 100644 --- a/sdk/identity/identity/src/client/identityClient.ts +++ b/sdk/identity/identity/src/client/identityClient.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import qs from "qs"; import jws from "jws"; diff --git a/sdk/identity/identity/src/credentials/chainedTokenCredential.ts b/sdk/identity/identity/src/credentials/chainedTokenCredential.ts index 97346532f200..2988ff9223cd 100644 --- a/sdk/identity/identity/src/credentials/chainedTokenCredential.ts +++ b/sdk/identity/identity/src/credentials/chainedTokenCredential.ts @@ -1,9 +1,13 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { AccessToken, TokenCredential, GetTokenOptions } from "@azure/core-http"; import { AggregateAuthenticationError } from "../client/errors"; +/** + * Enables multiple {@link TokenCredential} implementations to be tried in order + * until one of the getToken methods returns an {@link AccessToken}. + */ export class ChainedTokenCredential implements TokenCredential { private _sources: TokenCredential[] = []; @@ -11,6 +15,16 @@ export class ChainedTokenCredential implements TokenCredential { this._sources = sources; } + /** + * Returns the first {@link AccessToken} returned by one of the chained + * {@link TokenCredential} implementations. Throws an {@link AggregateAuthenticationError} + * when one or more credentials throws an {@link AuthenticationError} and + * no credentials have returned an {@link AccessToken}. + * + * @param scopes The list of scopes for which the token will have access. + * @param options The options used to configure any requests this + * TokenCredential implementation might make. + */ async getToken( scopes: string | string[], options?: GetTokenOptions diff --git a/sdk/identity/identity/src/credentials/clientCertificateCredential.ts b/sdk/identity/identity/src/credentials/clientCertificateCredential.ts index 34e96f505ec7..3ea6583d04f5 100644 --- a/sdk/identity/identity/src/credentials/clientCertificateCredential.ts +++ b/sdk/identity/identity/src/credentials/clientCertificateCredential.ts @@ -1,11 +1,19 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { readFileSync } from "fs"; import { createHash } from "crypto"; import { TokenCredential, GetTokenOptions, AccessToken } from "@azure/core-http"; import { IdentityClientOptions, IdentityClient } from "../client/identityClient"; +/** + * Enables authentication to Azure Active Directory using a PEM-encoded + * certificate that is assigned to an App Registration. More information + * on how to configure certificate authentication can be found here: + * + * https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-certificate-credentials#register-your-certificate-with-azure-ad + * + */ export class ClientCertificateCredential implements TokenCredential { private identityClient: IdentityClient; private _tenantId: string; @@ -15,6 +23,15 @@ export class ClientCertificateCredential implements TokenCredential { public certificateThumbprint: string; public certificateX5t: string; + /** + * Creates an instance of the ClientCertificateCredential with the details + * needed to authenticate against Azure Active Directory with a certificate. + * + * @param tenantId The Azure Active Directory tenant (directory) ID. + * @param clientId The client (application) ID of an App Registration in the tenant. + * @param certificatePath The path to a PEM-encoded public/private key certificate on the filesystem. + * @param options Options for configuring the client which makes the authentication request. + */ constructor( tenantId: string, clientId: string, @@ -32,7 +49,7 @@ export class ClientCertificateCredential implements TokenCredential { const publicKey = matchCert ? matchCert[3] : ""; if (!publicKey) { throw new Error( - "The file at the specified path does not contain a PEM-formatted certificate." + "The file at the specified path does not contain a PEM-encoded certificate." ); } @@ -44,6 +61,16 @@ export class ClientCertificateCredential implements TokenCredential { this.certificateX5t = Buffer.from(this.certificateThumbprint, "hex").toString("base64"); } + /** + * Authenticates with Azure Active Directory and returns an {@link AccessToken} if + * successful. If authentication cannot be performed at this time, this method may + * return null. If an error occurs during authentication, an {@link AuthenticationError} + * containing failure details will be thrown. + * + * @param scopes The list of scopes for which the token will have access. + * @param options The options used to configure any requests this + * TokenCredential implementation might make. + */ public getToken( scopes: string | string[], options?: GetTokenOptions diff --git a/sdk/identity/identity/src/credentials/clientSecretCredential.ts b/sdk/identity/identity/src/credentials/clientSecretCredential.ts index f118dc4f7a2e..695fd48729e6 100644 --- a/sdk/identity/identity/src/credentials/clientSecretCredential.ts +++ b/sdk/identity/identity/src/credentials/clientSecretCredential.ts @@ -1,15 +1,33 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { TokenCredential, GetTokenOptions, AccessToken } from "@azure/core-http"; import { IdentityClientOptions, IdentityClient } from "../client/identityClient"; +/** + * Enables authentication to Azure Active Directory using a client secret + * that was generated for an App Registration. More information on how + * to configure a client secret can be found here: + * + * https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-configure-app-access-web-apis#add-credentials-to-your-web-application + * + */ export class ClientSecretCredential implements TokenCredential { private identityClient: IdentityClient; private _tenantId: string; private _clientId: string; private _clientSecret: string; + /** + * Creates an instance of the ClientSecretCredential with the details + * needed to authenticate against Azure Active Directory with a client + * secret. + * + * @param tenantId The Azure Active Directory tenant (directory) ID. + * @param clientId The client (application) ID of an App Registration in the tenant. + * @param clientSecret A client secret that was generated for the App Registration. + * @param options Options for configuring the client which makes the authentication request. + */ constructor( tenantId: string, clientId: string, @@ -22,6 +40,16 @@ export class ClientSecretCredential implements TokenCredential { this._clientSecret = clientSecret; } + /** + * Authenticates with Azure Active Directory and returns an {@link AccessToken} if + * successful. If authentication cannot be performed at this time, this method may + * return null. If an error occurs during authentication, an {@link AuthenticationError} + * containing failure details will be thrown. + * + * @param scopes The list of scopes for which the token will have access. + * @param options The options used to configure any requests this + * TokenCredential implementation might make. + */ public getToken( scopes: string | string[], options?: GetTokenOptions diff --git a/sdk/identity/identity/src/credentials/defaultAzureCredential.ts b/sdk/identity/identity/src/credentials/defaultAzureCredential.ts index 8e5746319608..f14412b3c9e7 100644 --- a/sdk/identity/identity/src/credentials/defaultAzureCredential.ts +++ b/sdk/identity/identity/src/credentials/defaultAzureCredential.ts @@ -1,12 +1,28 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { IdentityClientOptions } from "../client/identityClient"; import { ChainedTokenCredential } from "./chainedTokenCredential"; import { EnvironmentCredential } from "./environmentCredential"; import { ManagedIdentityCredential } from "./managedIdentityCredential"; +/** + * Provides a default {@link ChainedTokenCredential} configuration for + * applications that will be deployed to Azure. The following credential + * types will be tried, in order: + * + * - {@link EnvironmentCredential} + * - {@link ManagedIdentityCredential} + * + * Consult the documentation of these credential types for more information + * on how they attempt authentication. + */ export class DefaultAzureCredential extends ChainedTokenCredential { + /** + * Creates an instance of the DefaultAzureCredential class. + * + * @param options Options for configuring the client which makes the authentication request. + */ constructor(identityClientOptions?: IdentityClientOptions) { super( new EnvironmentCredential(identityClientOptions), diff --git a/sdk/identity/identity/src/credentials/environmentCredential.ts b/sdk/identity/identity/src/credentials/environmentCredential.ts index 10fdd0921bcc..b72976e9068f 100644 --- a/sdk/identity/identity/src/credentials/environmentCredential.ts +++ b/sdk/identity/identity/src/credentials/environmentCredential.ts @@ -1,13 +1,32 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { AccessToken, TokenCredential, isNode, GetTokenOptions } from "@azure/core-http"; import { IdentityClientOptions } from "../client/identityClient"; import { ClientSecretCredential } from "./clientSecretCredential"; +/** + * Enables authentication to Azure Active Directory using client secret + * details configured in the following environment variables: + * + * - AZURE_TENANT_ID: The Azure Active Directory tenant (directory) ID. + * - AZURE_CLIENT_ID: The client (application) ID of an App Registration in the tenant. + * - AZURE_CLIENT_SECRET: A client secret that was generated for the App Registration. + * + * This credential ultimately uses a {@link ClientSecretCredential} to + * perform the authentication using these details. Please consult the + * documentation of that class for more details. + */ export class EnvironmentCredential implements TokenCredential { private _credential?: TokenCredential = undefined; - + /** + * Creates an instance of the EnvironmentCredential class and reads + * client secret details from environment variables. If the expected + * environment variables are not found at this time, the getToken method + * will return null when invoked. + * + * @param options Options for configuring the client which makes the authentication request. + */ constructor(options?: IdentityClientOptions) { if (!isNode) { throw "EnvironmentCredential is only supported when running in Node.js."; @@ -22,6 +41,16 @@ export class EnvironmentCredential implements TokenCredential { } } + /** + * Authenticates with Azure Active Directory and returns an {@link AccessToken} if + * successful. If authentication cannot be performed at this time, this method may + * return null. If an error occurs during authentication, an {@link AuthenticationError} + * containing failure details will be thrown. + * + * @param scopes The list of scopes for which the token will have access. + * @param options The options used to configure any requests this + * TokenCredential implementation might make. + */ getToken(scopes: string | string[], options?: GetTokenOptions): Promise { if (this._credential) { return this._credential.getToken(scopes, options); diff --git a/sdk/identity/identity/src/credentials/managedIdentityCredential.ts b/sdk/identity/identity/src/credentials/managedIdentityCredential.ts index e89c182a8792..70e9d5d8e5ed 100644 --- a/sdk/identity/identity/src/credentials/managedIdentityCredential.ts +++ b/sdk/identity/identity/src/credentials/managedIdentityCredential.ts @@ -1,9 +1,18 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-http"; import { IdentityClientOptions, IdentityClient } from "../client/identityClient"; +/** + * Attempts authentication using a managed identity that has been assigned + * to the deployment environment. This authentication type works in Azure VMs, + * App Service and Azure Functions applications, and inside of Azure Cloud Shell. + * + * More information about configuring managed identities can be found here: + * + * https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview + */ export class ManagedIdentityCredential implements TokenCredential { private identityClient: IdentityClient; private _clientId: string | undefined; @@ -13,6 +22,16 @@ export class ManagedIdentityCredential implements TokenCredential { this._clientId = clientId; } + /** + * Authenticates with Azure Active Directory and returns an {@link AccessToken} if + * successful. If authentication cannot be performed at this time, this method may + * return null. If an error occurs during authentication, an {@link AuthenticationError} + * containing failure details will be thrown. + * + * @param scopes The list of scopes for which the token will have access. + * @param options The options used to configure any requests this + * TokenCredential implementation might make. + */ public getToken( scopes: string | string[], options?: GetTokenOptions diff --git a/sdk/identity/identity/src/index.ts b/sdk/identity/identity/src/index.ts index e8a736845486..c83481de93fb 100644 --- a/sdk/identity/identity/src/index.ts +++ b/sdk/identity/identity/src/index.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { TokenCredential } from "@azure/core-http"; import { DefaultAzureCredential } from "./credentials/defaultAzureCredential"; diff --git a/sdk/identity/identity/test/client/identityClient.spec.ts b/sdk/identity/identity/test/client/identityClient.spec.ts index 222210f209f7..9cf83d1d3b9c 100644 --- a/sdk/identity/identity/test/client/identityClient.spec.ts +++ b/sdk/identity/identity/test/client/identityClient.spec.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import assert from "assert"; import { assertRejects } from "../credentials/authTestUtils"; diff --git a/sdk/identity/identity/test/credentials/authTestUtils.ts b/sdk/identity/identity/test/credentials/authTestUtils.ts index 7d26d41123d4..fcbfcc657887 100644 --- a/sdk/identity/identity/test/credentials/authTestUtils.ts +++ b/sdk/identity/identity/test/credentials/authTestUtils.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import assert from "assert"; import { IdentityClientOptions } from "../../src"; diff --git a/sdk/identity/identity/test/credentials/chainedTokenCredential.spec.ts b/sdk/identity/identity/test/credentials/chainedTokenCredential.spec.ts index 9c6201a905ac..0eba79558636 100644 --- a/sdk/identity/identity/test/credentials/chainedTokenCredential.spec.ts +++ b/sdk/identity/identity/test/credentials/chainedTokenCredential.spec.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import assert from "assert"; import { assertRejects } from "./authTestUtils"; diff --git a/sdk/identity/identity/test/credentials/clientCertificateCredential.spec.ts b/sdk/identity/identity/test/credentials/clientCertificateCredential.spec.ts index 794823de23dd..1010577d00f4 100644 --- a/sdk/identity/identity/test/credentials/clientCertificateCredential.spec.ts +++ b/sdk/identity/identity/test/credentials/clientCertificateCredential.spec.ts @@ -1,5 +1,5 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import qs from "qs"; import jws from "jws"; @@ -8,7 +8,7 @@ import assert from "assert"; import { ClientCertificateCredential } from "../../src"; import { MockAuthHttpClient } from "./authTestUtils"; -describe("ClientCertificateCredential", function() { +describe("ClientCertificateCredential", function () { it("loads a PEM-formatted certificate from a file", () => { const credential = new ClientCertificateCredential( "tenant", diff --git a/sdk/identity/identity/test/credentials/clientSecretCredential.spec.ts b/sdk/identity/identity/test/credentials/clientSecretCredential.spec.ts index a6b868e72760..0ad4b5a2319c 100644 --- a/sdk/identity/identity/test/credentials/clientSecretCredential.spec.ts +++ b/sdk/identity/identity/test/credentials/clientSecretCredential.spec.ts @@ -1,10 +1,10 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { ClientSecretCredential } from "../../src"; import { MockAuthHttpClient, assertClientCredentials } from "./authTestUtils"; -describe("ClientSecretCredential", function() { +describe("ClientSecretCredential", function () { it("sends an authorization request with the given credentials", async () => { const mockHttpClient = new MockAuthHttpClient(); diff --git a/sdk/identity/identity/test/credentials/environmentCredential.spec.ts b/sdk/identity/identity/test/credentials/environmentCredential.spec.ts index 19be2df9fd9e..17e30d93166b 100644 --- a/sdk/identity/identity/test/credentials/environmentCredential.spec.ts +++ b/sdk/identity/identity/test/credentials/environmentCredential.spec.ts @@ -1,10 +1,10 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import { EnvironmentCredential } from "../../src"; import { MockAuthHttpClient, assertClientCredentials } from "./authTestUtils"; -describe("EnvironmentCredential", function() { +describe("EnvironmentCredential", function () { it("finds and uses client credential environment variables", async () => { process.env.AZURE_TENANT_ID = "tenant"; process.env.AZURE_CLIENT_ID = "client"; diff --git a/sdk/identity/identity/test/credentials/managedIdentityCredential.spec.ts b/sdk/identity/identity/test/credentials/managedIdentityCredential.spec.ts index ed6245f507c8..2abe1a44e14a 100644 --- a/sdk/identity/identity/test/credentials/managedIdentityCredential.spec.ts +++ b/sdk/identity/identity/test/credentials/managedIdentityCredential.spec.ts @@ -1,12 +1,12 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. import assert from "assert"; import { ManagedIdentityCredential } from "../../src"; import { MockAuthHttpClient } from "./authTestUtils"; import { WebResource } from "@azure/core-http"; -describe("ManagedIdentityCredential", function() { +describe("ManagedIdentityCredential", function () { it("sends an authorization request with a modified resource name", async () => { const authRequest = await getMsiTokenAuthRequest(["https://service/.default"], "client"); assert.ok(authRequest.query, "No query string parameters on request"); diff --git a/sdk/keyvault/keyvault-certificates/package.json b/sdk/keyvault/keyvault-certificates/package.json index 9148a510c871..d9a6f1ebffb8 100644 --- a/sdk/keyvault/keyvault-certificates/package.json +++ b/sdk/keyvault/keyvault-certificates/package.json @@ -69,7 +69,7 @@ "tslib": "^1.9.3" }, "devDependencies": { - "@azure/identity": "^0.1.0", + "@azure/identity": "^1.0.0-preview.1", "@microsoft/api-extractor": "^7.1.5", "@types/chai": "^4.1.6", "@types/node": "^8.0.0", diff --git a/sdk/keyvault/keyvault-keys/package.json b/sdk/keyvault/keyvault-keys/package.json index c22451ac9b02..5199606dac84 100644 --- a/sdk/keyvault/keyvault-keys/package.json +++ b/sdk/keyvault/keyvault-keys/package.json @@ -74,7 +74,7 @@ }, "devDependencies": { "@azure/core-paging": "^1.0.0", - "@azure/identity": "^0.1.0", + "@azure/identity": "^1.0.0-preview.1", "@microsoft/api-extractor": "^7.1.5", "@types/chai": "^4.1.6", "@types/dotenv": "^6.1.0", diff --git a/sdk/keyvault/keyvault-secrets/package.json b/sdk/keyvault/keyvault-secrets/package.json index 0c94fcba22af..68cdfa8bb175 100644 --- a/sdk/keyvault/keyvault-secrets/package.json +++ b/sdk/keyvault/keyvault-secrets/package.json @@ -76,7 +76,7 @@ }, "devDependencies": { "@azure/core-paging": "^1.0.0", - "@azure/identity": "^0.1.0", + "@azure/identity": "^1.0.0-preview.1", "@microsoft/api-extractor": "^7.1.5", "@types/chai": "^4.1.6", "@types/dotenv": "^6.1.0", From 95d09d62e794e7dcad5b54c8b16d3f035943cc45 Mon Sep 17 00:00:00 2001 From: chradek <51000525+chradek@users.noreply.github.com> Date: Tue, 25 Jun 2019 15:56:08 -0700 Subject: [PATCH 190/289] [Event Hubs] update docs with explicit ignores (#4073) --- sdk/eventhub/event-hubs/review/event-hubs.api.md | 2 +- sdk/eventhub/event-hubs/src/batchingReceiver.ts | 1 + sdk/eventhub/event-hubs/src/connectionContext.ts | 1 + sdk/eventhub/event-hubs/src/eventHubReceiver.ts | 5 +++++ sdk/eventhub/event-hubs/src/eventHubSender.ts | 4 ++++ sdk/eventhub/event-hubs/src/eventPosition.ts | 1 + sdk/eventhub/event-hubs/src/linkEntity.ts | 1 + sdk/eventhub/event-hubs/src/managementClient.ts | 1 + sdk/eventhub/event-hubs/src/streamingReceiver.ts | 1 + sdk/eventhub/event-hubs/src/util/constants.ts | 3 +++ sdk/eventhub/event-hubs/src/util/error.ts | 2 ++ 11 files changed, 21 insertions(+), 1 deletion(-) diff --git a/sdk/eventhub/event-hubs/review/event-hubs.api.md b/sdk/eventhub/event-hubs/review/event-hubs.api.md index 4b933a217fe6..efd16983efe6 100644 --- a/sdk/eventhub/event-hubs/review/event-hubs.api.md +++ b/sdk/eventhub/event-hubs/review/event-hubs.api.md @@ -45,7 +45,7 @@ export class EventHubClient { createConsumer(consumerGroup: string, partitionId: string, eventPosition: EventPosition, options?: EventHubConsumerOptions): EventHubConsumer; static createFromIotHubConnectionString(iothubConnectionString: string, options?: EventHubClientOptions): Promise; createProducer(options?: EventHubProducerOptions): EventHubProducer; - static defaultConsumerGroup: string; + static defaultConsumerGroupName: string; readonly eventHubName: string; getPartitionIds(abortSignal?: AbortSignalLike): Promise>; getPartitionProperties(partitionId: string, abortSignal?: AbortSignalLike): Promise; diff --git a/sdk/eventhub/event-hubs/src/batchingReceiver.ts b/sdk/eventhub/event-hubs/src/batchingReceiver.ts index 026275c987b9..ea5dc7bfeb99 100644 --- a/sdk/eventhub/event-hubs/src/batchingReceiver.ts +++ b/sdk/eventhub/event-hubs/src/batchingReceiver.ts @@ -25,6 +25,7 @@ import { EventPosition } from "./eventPosition"; * @class BatchingReceiver * @extends EventHubReceiver * @internal + * @ignore */ export class BatchingReceiver extends EventHubReceiver { /** diff --git a/sdk/eventhub/event-hubs/src/connectionContext.ts b/sdk/eventhub/event-hubs/src/connectionContext.ts index f7232ae424c5..49c591a9ef81 100644 --- a/sdk/eventhub/event-hubs/src/connectionContext.ts +++ b/sdk/eventhub/event-hubs/src/connectionContext.ts @@ -22,6 +22,7 @@ import { Dictionary, OnAmqpEvent, EventContext, ConnectionEvents } from "rhea-pr /** * @interface ConnectionContext * @internal + * @ignore * Provides contextual information like the underlying amqp connection, cbs session, management session, * tokenProvider, senders, receivers, etc. about the EventHub client. */ diff --git a/sdk/eventhub/event-hubs/src/eventHubReceiver.ts b/sdk/eventhub/event-hubs/src/eventHubReceiver.ts index fc3853aee9f4..d746515a41fa 100644 --- a/sdk/eventhub/event-hubs/src/eventHubReceiver.ts +++ b/sdk/eventhub/event-hubs/src/eventHubReceiver.ts @@ -19,6 +19,9 @@ import { LinkEntity } from "./linkEntity"; import { EventPosition, getEventPositionFilter } from "./eventPosition"; import { AbortSignalLike, AbortError } from "@azure/abort-controller"; +/** + * @ignore + */ interface CreateReceiverOptions { onMessage: OnAmqpEvent; onError: OnAmqpEvent; @@ -31,6 +34,7 @@ interface CreateReceiverOptions { /** * @internal + * @ignore * Represents the approximate receiver runtime information for a logical partition of an Event Hub. * @interface ReceiverRuntimeInfo */ @@ -67,6 +71,7 @@ export type OnError = (error: MessagingError | Error) => void; * Describes the EventHubReceiver that will receive event data from EventHub. * @class EventHubReceiver * @internal + * @ignore */ export class EventHubReceiver extends LinkEntity { /** diff --git a/sdk/eventhub/event-hubs/src/eventHubSender.ts b/sdk/eventhub/event-hubs/src/eventHubSender.ts index ca7283ed075e..fcb03529394e 100644 --- a/sdk/eventhub/event-hubs/src/eventHubSender.ts +++ b/sdk/eventhub/event-hubs/src/eventHubSender.ts @@ -31,6 +31,9 @@ import { LinkEntity } from "./linkEntity"; import { SendOptions, EventHubProducerOptions } from "./eventHubClient"; import { AbortSignalLike, AbortError } from "@azure/abort-controller"; +/** + * @ignore + */ interface CreateSenderOptions { newName?: boolean; } @@ -39,6 +42,7 @@ interface CreateSenderOptions { * Describes the EventHubSender that will send event data to EventHub. * @class EventHubSender * @internal + * @ignore */ export class EventHubSender extends LinkEntity { /** diff --git a/sdk/eventhub/event-hubs/src/eventPosition.ts b/sdk/eventhub/event-hubs/src/eventPosition.ts index e9ccd812d910..e403fb8e34ed 100644 --- a/sdk/eventhub/event-hubs/src/eventPosition.ts +++ b/sdk/eventhub/event-hubs/src/eventPosition.ts @@ -6,6 +6,7 @@ import { translate, Constants, ErrorNameConditionMapper } from "@azure/core-amqp /** * Describes the options that can be set while creating an EventPosition. * @internal + * @ignore * @interface EventPositionOptions */ export interface EventPositionOptions { diff --git a/sdk/eventhub/event-hubs/src/linkEntity.ts b/sdk/eventhub/event-hubs/src/linkEntity.ts index aa980d47a60c..591ee0844639 100644 --- a/sdk/eventhub/event-hubs/src/linkEntity.ts +++ b/sdk/eventhub/event-hubs/src/linkEntity.ts @@ -33,6 +33,7 @@ export interface LinkEntityOptions { /** * Describes the base class for entities like EventHub Sender, Receiver and Management link. * @internal + * @ignore * @class LinkEntity */ export class LinkEntity { diff --git a/sdk/eventhub/event-hubs/src/managementClient.ts b/sdk/eventhub/event-hubs/src/managementClient.ts index e1bfa5e02bef..9054e242e6d4 100644 --- a/sdk/eventhub/event-hubs/src/managementClient.ts +++ b/sdk/eventhub/event-hubs/src/managementClient.ts @@ -71,6 +71,7 @@ export interface ManagementClientOptions { /** * @class ManagementClient * @internal + * @ignore * Descibes the EventHubs Management Client that talks * to the $management endpoint over AMQP connection. */ diff --git a/sdk/eventhub/event-hubs/src/streamingReceiver.ts b/sdk/eventhub/event-hubs/src/streamingReceiver.ts index 5be2975fc397..8887a2cdd716 100644 --- a/sdk/eventhub/event-hubs/src/streamingReceiver.ts +++ b/sdk/eventhub/event-hubs/src/streamingReceiver.ts @@ -82,6 +82,7 @@ export class ReceiveHandler { * Describes the streaming receiver where the user can receive the message * by providing handler functions. * @internal + * @ignore * @class StreamingReceiver * @extends EventHubReceiver */ diff --git a/sdk/eventhub/event-hubs/src/util/constants.ts b/sdk/eventhub/event-hubs/src/util/constants.ts index 4cc282ff0520..10311506f3bb 100644 --- a/sdk/eventhub/event-hubs/src/util/constants.ts +++ b/sdk/eventhub/event-hubs/src/util/constants.ts @@ -1,6 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +/** + * @ignore + */ export const packageJsonInfo = { name: "@azure/event-hubs", version: "3.0.0-preview.1" diff --git a/sdk/eventhub/event-hubs/src/util/error.ts b/sdk/eventhub/event-hubs/src/util/error.ts index 1364cb252beb..c3ff4344f41f 100644 --- a/sdk/eventhub/event-hubs/src/util/error.ts +++ b/sdk/eventhub/event-hubs/src/util/error.ts @@ -6,6 +6,7 @@ import { ConnectionContext } from "../connectionContext"; /** * @internal + * @ignore * Logs and throws Error if the current AMQP connection is closed. * @param context The ConnectionContext associated with the current AMQP connection. */ @@ -20,6 +21,7 @@ export function throwErrorIfConnectionClosed(context: ConnectionContext): void { /** * @internal + * @ignore * Logs and Throws TypeError if given parameter is undefined or null * @param connectionId Id of the underlying AMQP connection used for logging * @param parameterName Name of the parameter to check From 3d70755271ae1991617fe6b45aaf41bf1943f25f Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Tue, 25 Jun 2019 16:19:43 -0700 Subject: [PATCH 191/289] Update dev dependency "resolve" to latest (#4072) - Repo has been updated to "rollup-plugin-node-resolve@5.0.2", which is compatible with "resolve@1.11.1" - Added trailing slash to named exports of modules with built-in names - Required when using "rollup-plugin-commonjs@10.0.0" with "resolve@1.11.1" - https://github.com/rollup/rollup-plugin-commonjs/issues/394 - Fixes #3589 --- common/config/rush/common-versions.json | 5 +- common/config/rush/pnpm-lock.yaml | 199 +++++++++--------- .../abort-controller/rollup.base.config.js | 7 +- sdk/core/core-amqp/rollup.base.config.js | 5 +- sdk/eventhub/event-hubs/rollup.base.config.js | 5 +- .../rollup.base.config.js | 5 +- sdk/identity/identity/rollup.base.config.js | 5 +- .../service-bus/rollup.base.config.js | 5 +- .../storage-blob/rollup.base.config.js | 7 +- .../storage-file/rollup.base.config.js | 7 +- .../storage-queue/rollup.base.config.js | 5 +- sdk/template/template/rollup.base.config.js | 5 +- 12 files changed, 139 insertions(+), 121 deletions(-) diff --git a/common/config/rush/common-versions.json b/common/config/rush/common-versions.json index e3230598a8a5..db91414d9877 100644 --- a/common/config/rush/common-versions.json +++ b/common/config/rush/common-versions.json @@ -12,13 +12,11 @@ * SemVer range specifier. See the Rush documentation for details about this feature. */ "preferredVersions": { - /** * When someone asks for "^1.0.0" make sure they get "1.2.3" when working in this repo, * instead of the latest version. */ // "some-library": "1.2.3" - "resolve": "1.11.0" }, /** @@ -31,8 +29,7 @@ * USUAL VERSION (WHICH IS INFERRED BY LOOKING AT ALL PROJECTS IN THE REPO). * This design avoids unnecessary churn in this file. */ - "allowedAlternativeVersions": { - + "allowedAlternativeVersions": { /** * For example, allow some projects to use an older TypeScript compiler * (in addition to whatever "usual" version is being used by other projects in the repo): diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index c674ce6432c8..708237be7121 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -54,7 +54,7 @@ dependencies: '@types/underscore': 1.9.1 '@types/uuid': 3.4.4 '@types/webpack': 4.4.34 - '@types/webpack-dev-middleware': 2.0.2 + '@types/webpack-dev-middleware': 2.0.3 '@types/ws': 6.0.1 '@types/xml2js': 0.4.4 '@types/yargs': 11.1.2 @@ -83,7 +83,7 @@ dependencies: eslint-detailed-reporter: 0.8.0 eslint-plugin-no-null: 1.0.2 eslint-plugin-no-only-tests: 2.3.1 - eslint-plugin-promise: 4.1.1 + eslint-plugin-promise: 4.2.1 events: 3.0.0 execa: 1.0.0 express: 4.17.1 @@ -138,7 +138,6 @@ dependencies: qs: 6.7.0 query-string: 6.8.1 requirejs: 2.3.6 - resolve: 1.11.0 rhea: 1.0.7 rhea-promise: 0.1.15 rimraf: 2.6.3 @@ -149,7 +148,7 @@ dependencies: rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-globals: 1.4.0 - rollup-plugin-node-resolve: 5.0.4 + rollup-plugin-node-resolve: 5.1.0 rollup-plugin-replace: 2.2.0 rollup-plugin-resolve: 0.0.1-predev.1 rollup-plugin-shim: 1.0.0 @@ -602,10 +601,6 @@ packages: dev: false resolution: integrity: sha512-mkJejrAacgignkBce2+qD9S4VncjEfAT0Dion0fRcqpav3Sd2KiLTHODZOXRP3S8b0ZY5sXr9meDB3P8MSH8Cg== - /@types/loglevel/1.5.4: - dev: false - resolution: - integrity: sha512-8dx4ckP0vndJeN+iKZwdGiapLqFjVQ3JLOt92uqK0C63acs5NcPLbUOpfXCJkKVRjZLBQjw8NIGNBSsnatFnFQ== /@types/long/4.0.0: dev: false resolution: @@ -717,15 +712,15 @@ packages: dev: false resolution: integrity: sha512-tPIgT0GUmdJQNSHxp0X2jnpQfBSTfGxUMc/2CXBU2mnyTFVYVa2ojpoQ74w0U2yn2vw3jnC640+77lkFFpdVDw== - /@types/webpack-dev-middleware/2.0.2: + /@types/webpack-dev-middleware/2.0.3: dependencies: '@types/connect': 3.4.32 - '@types/loglevel': 1.5.4 '@types/memory-fs': 0.3.2 '@types/webpack': 4.4.34 + loglevel: 1.6.3 dev: false resolution: - integrity: sha512-uZ1avIbAcnspcDKKm0WfgIdvBYRqUapPmwb0MYGzzB74q2F3T4Xi+qPSoS0Oq5iQvIMVxOm7KMqHQJii4VDCsw== + integrity: sha512-DzNJJ6ah/6t1n8sfAgQyEbZ/OMmFcF9j9P3aesnm7G6/iBFR/qiGin8K89J0RmaWIBzhTMdDg3I5PmKmSv7N9w== /@types/webpack/4.4.34: dependencies: '@types/anymatch': 1.3.1 @@ -2100,7 +2095,7 @@ packages: component-emitter: 1.3.0 define-property: 1.0.0 isobject: 3.0.1 - mixin-deep: 1.3.1 + mixin-deep: 1.3.2 pascalcase: 0.1.1 dev: false engines: @@ -2269,8 +2264,8 @@ packages: integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== /browserslist/3.2.8: dependencies: - caniuse-lite: 1.0.30000976 - electron-to-chromium: 1.3.172 + caniuse-lite: 1.0.30000977 + electron-to-chromium: 1.3.173 dev: false hasBin: true resolution: @@ -2379,9 +2374,9 @@ packages: get-value: 2.0.6 has-value: 1.0.0 isobject: 3.0.1 - set-value: 2.0.0 + set-value: 2.0.1 to-object-path: 0.3.0 - union-value: 1.0.0 + union-value: 1.0.1 unset-value: 1.0.0 dev: false engines: @@ -2458,10 +2453,10 @@ packages: node: '>=6' resolution: integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - /caniuse-lite/1.0.30000976: + /caniuse-lite/1.0.30000977: dev: false resolution: - integrity: sha512-tleNB1IwPRqZiod6nUNum63xQCMN96BUO2JTeiwuRM7p9d616EHsMBjBWJMudX39qCaPuWY8KEWzMZq7A9XQMQ== + integrity: sha512-RTXL32vdfAc2g9aoDL6vnBzbOO/3sM+T+YX4m7W9iFZnl3qIz7WYoZZpcZpALud8xq4+N56rnruX/NQy9HQu6A== /caseless/0.12.0: dev: false resolution: @@ -3368,10 +3363,10 @@ packages: dev: false resolution: integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - /electron-to-chromium/1.3.172: + /electron-to-chromium/1.3.173: dev: false resolution: - integrity: sha512-bHgFvYeHBiQNNuY/WvoX37zLosPgMbR8nKU1r4mylHptLvuMMny/KG/L28DTIlcoOCJjMAhEimy3DHDgDayPbg== + integrity: sha512-weH16m8as+4Fy4XJxrn/nFXsIqB7zkxERhvj/5YX2HE4HB8MCu98Wsef4E3mu0krIT27ic0bGsr+TvqYrUn6Qg== /elliptic/6.4.1: dependencies: bn.js: 4.11.8 @@ -3627,12 +3622,12 @@ packages: node: '>=4.0.0' resolution: integrity: sha512-LzCzeQrlkNjEwUWEoGhfjz+Kgqe0080W6qC8I8eFwSMXIsr1zShuIQnRuSZc4Oi7k1vdUaNGDc+/GFvg6IHSHA== - /eslint-plugin-promise/4.1.1: + /eslint-plugin-promise/4.2.1: dev: false engines: node: '>=6' resolution: - integrity: sha512-faAHw7uzlNPy7b45J1guyjazw28M+7gJokKUjC5JSFoYfUEyy6Gw/i7YQvmv2Yk00sUjWcmzXQLpU1Ki/C2IZQ== + integrity: sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw== /eslint-scope/4.0.3: dependencies: esrecurse: 4.2.1 @@ -4139,7 +4134,7 @@ packages: integrity: sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== /flat-cache/2.0.1: dependencies: - flatted: 2.0.0 + flatted: 2.0.1 rimraf: 2.6.3 write: 1.0.3 dev: false @@ -4147,10 +4142,10 @@ packages: node: '>=4' resolution: integrity: sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - /flatted/2.0.0: + /flatted/2.0.1: dev: false resolution: - integrity: sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== + integrity: sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== /flush-write-stream/1.1.1: dependencies: inherits: 2.0.4 @@ -4925,6 +4920,18 @@ packages: node: '>= 0.6' resolution: integrity: sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + /http-errors/1.7.3: + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.1.1 + statuses: 1.5.0 + toidentifier: 1.0.0 + dev: false + engines: + node: '>= 0.6' + resolution: + integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== /http-proxy/1.17.0: dependencies: eventemitter3: 3.1.2 @@ -5934,7 +5941,7 @@ packages: core-js: 2.6.9 di: 0.0.1 dom-serialize: 2.2.1 - flatted: 2.0.0 + flatted: 2.0.1 glob: 7.1.4 graceful-fs: 4.1.15 http-proxy: 1.17.0 @@ -6055,7 +6062,7 @@ packages: is-plain-object: 2.0.4 object.map: 1.0.1 rechoir: 0.6.2 - resolve: 1.11.0 + resolve: 1.11.1 dev: false engines: node: '>= 0.8' @@ -6187,7 +6194,7 @@ packages: dependencies: date-format: 2.0.0 debug: 4.1.1 - flatted: 2.0.0 + flatted: 2.0.1 rfdc: 1.1.4 streamroller: 1.0.5 dev: false @@ -6329,7 +6336,7 @@ packages: dependencies: findup-sync: 2.0.0 micromatch: 3.1.10 - resolve: 1.11.0 + resolve: 1.11.1 stack-trace: 0.0.10 dev: false engines: @@ -6622,16 +6629,15 @@ packages: node: '>=4.0.0' resolution: integrity: sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - /mixin-deep/1.3.1: + /mixin-deep/1.3.2: dependencies: for-in: 1.0.2 is-extendable: 1.0.1 - deprecated: 'Critical bug fixed in v2.0.1, please upgrade to the latest version.' dev: false engines: node: '>=0.10.0' resolution: - integrity: sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== /mkdirp/0.5.1: dependencies: minimist: 0.0.8 @@ -6948,7 +6954,7 @@ packages: /normalize-package-data/2.5.0: dependencies: hosted-git-info: 2.7.1 - resolve: 1.11.0 + resolve: 1.11.1 semver: 5.7.0 validate-npm-package-license: 3.0.4 dev: false @@ -7920,7 +7926,7 @@ packages: integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== /rechoir/0.6.2: dependencies: - resolve: 1.11.0 + resolve: 1.11.1 dev: false engines: node: '>= 0.10' @@ -8184,12 +8190,6 @@ packages: dev: false resolution: integrity: sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - /resolve/1.11.0: - dependencies: - path-parse: 1.0.6 - dev: false - resolution: - integrity: sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw== /resolve/1.11.1: dependencies: path-parse: 1.0.6 @@ -8265,7 +8265,7 @@ packages: estree-walker: 0.6.1 is-reference: 1.1.2 magic-string: 0.25.2 - resolve: 1.11.0 + resolve: 1.11.1 rollup-pluginutils: 2.8.1 dev: false peerDependencies: @@ -8277,7 +8277,7 @@ packages: estree-walker: 0.6.1 is-reference: 1.1.2 magic-string: 0.25.2 - resolve: 1.11.0 + resolve: 1.11.1 rollup: 1.13.1 rollup-pluginutils: 2.8.1 dev: false @@ -8316,7 +8316,7 @@ packages: dev: false resolution: integrity: sha512-xRkB+W/m1KLIzPUmG0ofvR+CPNcvuCuNdjVBVS7ALKSxr3EDhnzNceGkGi1m8MToSli13AzKFYH4ie9w3I5L3g== - /rollup-plugin-node-resolve/5.0.4: + /rollup-plugin-node-resolve/5.1.0: dependencies: '@types/resolve': 0.0.8 builtin-modules: 3.1.0 @@ -8327,8 +8327,8 @@ packages: peerDependencies: rollup: '>=1.11.0' resolution: - integrity: sha512-L/fGn+uZOCk/e3uNa3MITUCA3tXndcsaH0Bc7rq7v389vEXMXAYnmF0giEUWbhYxE7PyMGglByVrR8AeIP9klw== - /rollup-plugin-node-resolve/5.0.4_rollup@1.13.1: + integrity: sha512-2hwwHNj0s8UEtUNT+lJq8rFWEznP7yJm3GCHBicadF6hiNX1aRARRZIjz2doeTlTGg/hOvJr4C/8+3k9Y/J5Hg== + /rollup-plugin-node-resolve/5.1.0_rollup@1.13.1: dependencies: '@types/resolve': 0.0.8 builtin-modules: 3.1.0 @@ -8340,7 +8340,7 @@ packages: peerDependencies: rollup: '>=1.11.0' resolution: - integrity: sha512-L/fGn+uZOCk/e3uNa3MITUCA3tXndcsaH0Bc7rq7v389vEXMXAYnmF0giEUWbhYxE7PyMGglByVrR8AeIP9klw== + integrity: sha512-2hwwHNj0s8UEtUNT+lJq8rFWEznP7yJm3GCHBicadF6hiNX1aRARRZIjz2doeTlTGg/hOvJr4C/8+3k9Y/J5Hg== /rollup-plugin-replace/2.2.0: dependencies: magic-string: 0.25.2 @@ -8561,7 +8561,7 @@ packages: escape-html: 1.0.3 etag: 1.8.1 fresh: 0.5.2 - http-errors: 1.7.2 + http-errors: 1.7.3 mime: 1.6.0 ms: 2.1.1 on-finished: 2.3.0 @@ -8591,30 +8591,17 @@ packages: dev: false resolution: integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - /set-value/0.4.3: - dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - to-object-path: 0.3.0 - deprecated: 'Critical bug fixed in v3.0.1, please upgrade to the latest version.' - dev: false - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-fbCPnT0i3H945Trzw79GZuzfzPE= - /set-value/2.0.0: + /set-value/2.0.1: dependencies: extend-shallow: 2.0.1 is-extendable: 0.1.1 is-plain-object: 2.0.4 split-string: 3.1.0 - deprecated: 'Critical bug fixed in v3.0.1, please upgrade to the latest version.' dev: false engines: node: '>=0.10.0' resolution: - integrity: sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== + integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== /setimmediate/1.0.5: dev: false resolution: @@ -9575,7 +9562,7 @@ packages: js-yaml: 3.13.1 minimatch: 3.0.4 mkdirp: 0.5.1 - resolve: 1.11.0 + resolve: 1.11.1 semver: 5.7.0 tslib: 1.10.0 tsutils: 2.29.0 @@ -9598,7 +9585,7 @@ packages: js-yaml: 3.13.1 minimatch: 3.0.4 mkdirp: 0.5.1 - resolve: 1.11.0 + resolve: 1.11.1 semver: 5.7.0 tslib: 1.10.0 tsutils: 2.29.0_typescript@3.5.2 @@ -9826,17 +9813,17 @@ packages: node: '>= 0.10' resolution: integrity: sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA== - /union-value/1.0.0: + /union-value/1.0.1: dependencies: arr-union: 3.1.0 get-value: 2.0.6 is-extendable: 0.1.1 - set-value: 0.4.3 + set-value: 2.0.1 dev: false engines: node: '>=0.10.0' resolution: - integrity: sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== /unique-filename/1.1.1: dependencies: unique-slug: 2.0.2 @@ -10518,7 +10505,7 @@ packages: rollup: 1.13.1 rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 + rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 rollup-plugin-uglify: 6.0.2_rollup@1.13.1 @@ -10558,7 +10545,7 @@ packages: eslint-detailed-reporter: 0.8.0_eslint@5.16.0 eslint-plugin-no-null: 1.0.2_eslint@5.16.0 eslint-plugin-no-only-tests: 2.3.1 - eslint-plugin-promise: 4.1.1 + eslint-plugin-promise: 4.2.1 events: 3.0.0 is-buffer: 2.0.3 jssha: 2.3.1 @@ -10581,7 +10568,7 @@ packages: rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-globals: 1.4.0 - rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 + rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 @@ -10598,7 +10585,7 @@ packages: dev: false name: '@rush-temp/core-amqp' resolution: - integrity: sha512-S4PkwShh9kZ3+6XRwSb5Ynh7EShodUeGh6Q5mIK4gyCAnN1VZgkheNbz2/7jNxVT31il5r6HIh9dy6llVKbAog== + integrity: sha512-1u2xINxLM36rIfPfmQF5QqgM+8d6A9kUdzRCS8VDFxeUUZex4UXeIrc1LL252dzLq+onveygfQqOK7dqHDxrLA== tarball: 'file:projects/core-amqp.tgz' version: 0.0.0 'file:projects/core-http.tgz': @@ -10617,7 +10604,7 @@ packages: '@types/tunnel': 0.0.0 '@types/uuid': 3.4.4 '@types/webpack': 4.4.34 - '@types/webpack-dev-middleware': 2.0.2 + '@types/webpack-dev-middleware': 2.0.3 '@types/xml2js': 0.4.4 abortcontroller-polyfill: 1.3.0 axios: 0.19.0 @@ -10641,6 +10628,7 @@ packages: npm-run-all: 4.1.5 nyc: 14.1.1 opn-cli: 4.1.0 + process: 0.11.10 puppeteer: 1.18.0 rimraf: 2.6.3 rollup: 1.13.1 @@ -10648,7 +10636,7 @@ packages: rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 + rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 rollup-plugin-resolve: 0.0.1-predev.1 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 rollup-plugin-visualizer: 1.1.1_rollup@1.13.1 @@ -10674,7 +10662,7 @@ packages: dev: false name: '@rush-temp/core-http' resolution: - integrity: sha512-WAIn25SPFI6eOx6jGZKvzlNXpbjMJ0Aa0G8u7lTgBJO79PC0dvVnio2zWffytQwDKQapF1NkDcZXCS7MeT0SAA== + integrity: sha512-jKUV5PQCbPdIm2WIY/KQKz9RxK2FCpW+SSUqnJ3Qky1lvI/eIBx5gumoKtqxQpPk5tinRdXQ/v5uamf5edfOCA== tarball: 'file:projects/core-http.tgz' version: 0.0.0 'file:projects/core-paging.tgz': @@ -10687,7 +10675,7 @@ packages: eslint-detailed-reporter: 0.8.0_eslint@5.16.0 eslint-plugin-no-null: 1.0.2_eslint@5.16.0 eslint-plugin-no-only-tests: 2.3.1 - eslint-plugin-promise: 4.1.1 + eslint-plugin-promise: 4.2.1 prettier: 1.18.2 typescript: 3.5.2 dev: false @@ -10761,7 +10749,7 @@ packages: eslint-detailed-reporter: 0.8.0_eslint@5.16.0 eslint-plugin-no-null: 1.0.2_eslint@5.16.0 eslint-plugin-no-only-tests: 2.3.1 - eslint-plugin-promise: 4.1.1 + eslint-plugin-promise: 4.2.1 https-proxy-agent: 2.2.1 is-buffer: 2.0.3 jssha: 2.3.1 @@ -10789,11 +10777,12 @@ packages: rollup-plugin-inject: 2.2.0 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 + rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 rollup-plugin-uglify: 6.0.2_rollup@1.13.1 + ts-mocha: 6.0.0_mocha@5.2.0 ts-node: 7.0.1 tslib: 1.10.0 tslint: 5.18.0_typescript@3.5.2 @@ -10803,7 +10792,7 @@ packages: dev: false name: '@rush-temp/event-hubs' resolution: - integrity: sha512-IseawXRVfBFQYeppyjjc1eOWxXWE99c7B+ONu67TvRgO9Wt+aXMn6EqGR5RVspeu1psp7HPG0404aDGYJQocTw== + integrity: sha512-Alp0kNBSfYO7xjDdy0S38g9Ran1bSOHtlbcQNbesfvD803YL4qCBvWFwDDo08qABplqOj5OLwskq6d5Faj5tVQ== tarball: 'file:projects/event-hubs.tgz' version: 0.0.0 'file:projects/event-processor-host.tgz': @@ -10834,7 +10823,7 @@ packages: eslint-detailed-reporter: 0.8.0_eslint@5.16.0 eslint-plugin-no-null: 1.0.2_eslint@5.16.0 eslint-plugin-no-only-tests: 2.3.1 - eslint-plugin-promise: 4.1.1 + eslint-plugin-promise: 4.2.1 mocha: 5.2.0 mocha-junit-reporter: 1.23.0_mocha@5.2.0 mocha-multi: 1.1.0_mocha@5.2.0 @@ -10847,7 +10836,7 @@ packages: rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 + rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 rollup-plugin-uglify: 6.0.2_rollup@1.13.1 @@ -10887,7 +10876,7 @@ packages: rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 + rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 rollup-plugin-uglify: 6.0.2_rollup@1.13.1 @@ -10899,19 +10888,20 @@ packages: dev: false name: '@rush-temp/identity' resolution: - integrity: sha512-tmJkM8v1YqnVyndqD9vVHQEGeUT0PKuUN4oGDZ+A8r7brpJRByrEXsDIsDsbMczrxW8AgAg6lSZ45sUj/J8vCg== + integrity: sha512-CmC6hyAqaRzDogWyTTK+nyeytUE4ThbgQiR4TYN0vyihtF9b0W6JXwSM+O4zIKwoFkhGztaK6iINCe4jmPmTJg== tarball: 'file:projects/identity.tgz' version: 0.0.0 'file:projects/keyvault-certificates.tgz': dependencies: '@microsoft/api-extractor': 7.2.1 '@types/chai': 4.1.7 + '@types/node': 8.10.49 chai: 4.2.0 prettier: 1.18.2 rimraf: 2.6.3 rollup: 1.13.1 rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 - rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 + rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 tslib: 1.10.0 typescript: 3.5.2 uglify-js: 3.6.0 @@ -10919,7 +10909,7 @@ packages: dev: false name: '@rush-temp/keyvault-certificates' resolution: - integrity: sha512-jf2qNSU+UsIdb1on92zDd6GBMr3xA+Ablll0hFdTZTC5rdsYjeerJwol7TMaTVTXbsuQI0fJDNhbxWUCfGOtKg== + integrity: sha512-rtHAu32lG7NDuVgoWi2L7yGhj2R+wmcvaOue9lZOFtk5XwUrt5m0AGGBwCjJttO7LTwcFlaQv99y3rPvgGO5HA== tarball: 'file:projects/keyvault-certificates.tgz' version: 0.0.0 'file:projects/keyvault-keys.tgz': @@ -10930,6 +10920,7 @@ packages: '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 '@types/nock': 10.0.3 + '@types/node': 8.10.49 '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 chai: 4.2.0 @@ -10940,16 +10931,15 @@ packages: eslint-detailed-reporter: 0.8.0_eslint@5.16.0 eslint-plugin-no-null: 1.0.2_eslint@5.16.0 eslint-plugin-no-only-tests: 2.3.1 - eslint-plugin-promise: 4.1.1 + eslint-plugin-promise: 4.2.1 fs-extra: 8.0.1 mocha: 5.2.0 nock: 10.0.6 prettier: 1.18.2 - query-string: 6.8.1 rimraf: 2.6.3 rollup: 1.13.1 rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 - rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 + rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 ts-mocha: 6.0.0_mocha@5.2.0 tslib: 1.10.0 typescript: 3.5.2 @@ -10958,7 +10948,7 @@ packages: dev: false name: '@rush-temp/keyvault-keys' resolution: - integrity: sha512-goKFmM55Ab72/LrjBYNDsmIsK6NgqRfvttoTGbIoZA6K5Y6TNUKcZz8JUTFwALeUQzWOnvnyBHJHUnxCpm3O8A== + integrity: sha512-ew3OR+3xkP9hIHi9zXfFJ8FZo9PGWO+REJ1TcRljBgZw18+l3qMd27qhJrsO/8xJPr4G2lgs0k4Q4TGauskAtg== tarball: 'file:projects/keyvault-keys.tgz' version: 0.0.0 'file:projects/keyvault-secrets.tgz': @@ -10971,6 +10961,7 @@ packages: '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 '@types/nock': 10.0.3 + '@types/node': 8.10.49 '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 chai: 4.2.0 @@ -10981,7 +10972,7 @@ packages: eslint-detailed-reporter: 0.8.0_eslint@5.16.0 eslint-plugin-no-null: 1.0.2_eslint@5.16.0 eslint-plugin-no-only-tests: 2.3.1 - eslint-plugin-promise: 4.1.1 + eslint-plugin-promise: 4.2.1 fs-extra: 8.0.1 mocha: 5.2.0 nock: 10.0.6 @@ -10989,7 +10980,7 @@ packages: rimraf: 2.6.3 rollup: 1.13.1 rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 - rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 + rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 ts-mocha: 6.0.0_mocha@5.2.0 tslib: 1.10.0 typescript: 3.5.2 @@ -10998,7 +10989,7 @@ packages: dev: false name: '@rush-temp/keyvault-secrets' resolution: - integrity: sha512-SAkyTL9OCnyF9rMSe9HxK6BJA6Z1tkcJJSbqWCDG8CE0K1qsAFT3Py4KMoyH7Zhxan76CdwZ2Pmn200iwhLvrw== + integrity: sha512-7lxQwmnE7+8MH0uJUtUEMNaATGdEZo9DRsqstP0YlVHHEfCo1axiQSRBREMJVKAWY7jpHE9v3suRa2GqO0u1Xg== tarball: 'file:projects/keyvault-secrets.tgz' version: 0.0.0 'file:projects/service-bus.tgz': @@ -11032,7 +11023,7 @@ packages: eslint-detailed-reporter: 0.8.0_eslint@5.16.0 eslint-plugin-no-null: 1.0.2_eslint@5.16.0 eslint-plugin-no-only-tests: 2.3.1 - eslint-plugin-promise: 4.1.1 + eslint-plugin-promise: 4.2.1 https-proxy-agent: 2.2.1 is-buffer: 2.0.3 karma: 4.1.0 @@ -11064,7 +11055,7 @@ packages: rollup-plugin-inject: 2.2.0 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 + rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 @@ -11100,7 +11091,7 @@ packages: eslint-detailed-reporter: 0.8.0_eslint@5.16.0 eslint-plugin-no-null: 1.0.2_eslint@5.16.0 eslint-plugin-no-only-tests: 2.3.1 - eslint-plugin-promise: 4.1.1 + eslint-plugin-promise: 4.2.1 events: 3.0.0 fs-extra: 8.0.1 gulp: 4.0.2 @@ -11132,7 +11123,7 @@ packages: rollup: 1.13.1 rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 + rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 @@ -11160,9 +11151,9 @@ packages: eslint-detailed-reporter: 0.8.0_eslint@5.16.0 eslint-plugin-no-null: 1.0.2_eslint@5.16.0 eslint-plugin-no-only-tests: 2.3.1 - eslint-plugin-promise: 4.1.1 + eslint-plugin-promise: 4.2.1 rollup: 1.13.1 - rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 + rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 ts-node: 7.0.1 tslib: 1.10.0 typescript: 3.5.2 @@ -11195,7 +11186,7 @@ packages: eslint-detailed-reporter: 0.8.0_eslint@5.16.0 eslint-plugin-no-null: 1.0.2_eslint@5.16.0 eslint-plugin-no-only-tests: 2.3.1 - eslint-plugin-promise: 4.1.1 + eslint-plugin-promise: 4.2.1 events: 3.0.0 fs-extra: 8.0.1 gulp: 4.0.2 @@ -11227,7 +11218,7 @@ packages: rollup: 1.13.1 rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 + rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 @@ -11265,7 +11256,7 @@ packages: eslint-detailed-reporter: 0.8.0_eslint@5.16.0 eslint-plugin-no-null: 1.0.2_eslint@5.16.0 eslint-plugin-no-only-tests: 2.3.1 - eslint-plugin-promise: 4.1.1 + eslint-plugin-promise: 4.2.1 fs-extra: 8.0.1 gulp: 4.0.2 gulp-zip: 4.2.0 @@ -11296,7 +11287,7 @@ packages: rollup: 1.13.1 rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 + rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 @@ -11328,7 +11319,7 @@ packages: eslint-detailed-reporter: 0.8.0_eslint@5.16.0 eslint-plugin-no-null: 1.0.2_eslint@5.16.0 eslint-plugin-no-only-tests: 2.3.1 - eslint-plugin-promise: 4.1.1 + eslint-plugin-promise: 4.2.1 events: 3.0.0 inherits: 2.0.4 mocha: 5.2.0 @@ -11340,7 +11331,7 @@ packages: rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.0.4_rollup@1.13.1 + rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 rollup-plugin-uglify: 6.0.2_rollup@1.13.1 @@ -11379,6 +11370,7 @@ packages: integrity: sha512-c3cFI0Our99carkgcyOFLmX5QRh5fIqyVv9S75VRX7woNtBGXPvWRE8VOxEN9o8N8FjSEQzc6PPEO6YRz7ok8Q== tarball: 'file:projects/testhub.tgz' version: 0.0.0 +registry: '' specifiers: '@azure/amqp-common': ^1.0.0-preview.5 '@azure/arm-servicebus': ^0.1.0 @@ -11519,7 +11511,6 @@ specifiers: qs: 6.7.0 query-string: ^6.5.0 requirejs: ^2.3.5 - resolve: 1.11.0 rhea: ^1.0.4 rhea-promise: ^0.1.15 rimraf: ^2.6.2 diff --git a/sdk/core/abort-controller/rollup.base.config.js b/sdk/core/abort-controller/rollup.base.config.js index 067c27102485..c640b10794f8 100644 --- a/sdk/core/abort-controller/rollup.base.config.js +++ b/sdk/core/abort-controller/rollup.base.config.js @@ -94,9 +94,12 @@ export function browserConfig(test = false) { preferBuiltins: false }), cjs({ + // When "rollup-plugin-commonjs@10.0.0" is used with "resolve@1.11.1", named exports of + // modules with built-in names must have a trailing slash. + // https://github.com/rollup/rollup-plugin-commonjs/issues/394 namedExports: { - events: ["EventEmitter"], - assert: ["ok", "deepEqual", "equal", "fail", "deepStrictEqual", "notDeepEqual"] + "events/": ["EventEmitter"], + "assert/": ["ok", "deepEqual", "equal", "fail", "deepStrictEqual", "notDeepEqual"] } }) ] diff --git a/sdk/core/core-amqp/rollup.base.config.js b/sdk/core/core-amqp/rollup.base.config.js index 64c27cfc439b..87872a0c05ff 100644 --- a/sdk/core/core-amqp/rollup.base.config.js +++ b/sdk/core/core-amqp/rollup.base.config.js @@ -130,9 +130,12 @@ export function browserConfig(test = false) { }), cjs({ + // When "rollup-plugin-commonjs@10.0.0" is used with "resolve@1.11.1", named exports of + // modules with built-in names must have a trailing slash. + // https://github.com/rollup/rollup-plugin-commonjs/issues/394 namedExports: { chai: ["should"], - assert: ["equal", "deepEqual", "notEqual"] + "assert/": ["equal", "deepEqual", "notEqual"] } }), diff --git a/sdk/eventhub/event-hubs/rollup.base.config.js b/sdk/eventhub/event-hubs/rollup.base.config.js index 1fcbb035d694..cbe88122daf9 100644 --- a/sdk/eventhub/event-hubs/rollup.base.config.js +++ b/sdk/eventhub/event-hubs/rollup.base.config.js @@ -130,8 +130,11 @@ export function browserConfig(test = false) { }), cjs({ + // When "rollup-plugin-commonjs@10.0.0" is used with "resolve@1.11.1", named exports of + // modules with built-in names must have a trailing slash. + // https://github.com/rollup/rollup-plugin-commonjs/issues/394 namedExports: { - events: ["EventEmitter"] + "events/": ["EventEmitter"] } }), diff --git a/sdk/eventhub/event-processor-host/rollup.base.config.js b/sdk/eventhub/event-processor-host/rollup.base.config.js index 11f26f65ff84..ae1ce6365061 100644 --- a/sdk/eventhub/event-processor-host/rollup.base.config.js +++ b/sdk/eventhub/event-processor-host/rollup.base.config.js @@ -106,7 +106,10 @@ export function browserConfig(test = false) { preferBuiltins: false }), cjs({ - namedExports: { events: ["EventEmitter"] } + // When "rollup-plugin-commonjs@10.0.0" is used with "resolve@1.11.1", named exports of + // modules with built-in names must have a trailing slash. + // https://github.com/rollup/rollup-plugin-commonjs/issues/394 + namedExports: { "events/": ["EventEmitter"] } }), json() ] diff --git a/sdk/identity/identity/rollup.base.config.js b/sdk/identity/identity/rollup.base.config.js index e0c3c867e5ad..1eb501c178a8 100644 --- a/sdk/identity/identity/rollup.base.config.js +++ b/sdk/identity/identity/rollup.base.config.js @@ -83,7 +83,10 @@ export function browserConfig(test = false, production = false) { preferBuiltins: false }), cjs({ - namedExports: { events: ["EventEmitter"] } + // When "rollup-plugin-commonjs@10.0.0" is used with "resolve@1.11.1", named exports of + // modules with built-in names must have a trailing slash. + // https://github.com/rollup/rollup-plugin-commonjs/issues/394 + namedExports: { "events/": ["EventEmitter"] } }), viz({ filename: "browser/browser-stats.html", sourcemap: false }) ] diff --git a/sdk/servicebus/service-bus/rollup.base.config.js b/sdk/servicebus/service-bus/rollup.base.config.js index 5478242e01cb..b5be1ddfca88 100644 --- a/sdk/servicebus/service-bus/rollup.base.config.js +++ b/sdk/servicebus/service-bus/rollup.base.config.js @@ -143,7 +143,10 @@ export function browserConfig({ test = false, production = false } = {}) { dedupe: ["buffer"] }), cjs({ - namedExports: { events: ["EventEmitter"], long: ["ZERO"] } + // When "rollup-plugin-commonjs@10.0.0" is used with "resolve@1.11.1", named exports of + // modules with built-in names must have a trailing slash. + // https://github.com/rollup/rollup-plugin-commonjs/issues/394 + namedExports: { "events/": ["EventEmitter"], long: ["ZERO"] } }), // rhea and rhea-promise use the Buffer global which requires diff --git a/sdk/storage/storage-blob/rollup.base.config.js b/sdk/storage/storage-blob/rollup.base.config.js index 640e0b8ae484..87d7066374e5 100644 --- a/sdk/storage/storage-blob/rollup.base.config.js +++ b/sdk/storage/storage-blob/rollup.base.config.js @@ -108,9 +108,12 @@ export function browserConfig(test = false, production = false) { preferBuiltins: false }), cjs({ + // When "rollup-plugin-commonjs@10.0.0" is used with "resolve@1.11.1", named exports of + // modules with built-in names must have a trailing slash. + // https://github.com/rollup/rollup-plugin-commonjs/issues/394 namedExports: { - events: ["EventEmitter"], - assert: ["ok", "deepEqual", "equal", "fail", "deepStrictEqual", "notDeepEqual"] + "events/": ["EventEmitter"], + "assert/": ["ok", "deepEqual", "equal", "fail", "deepStrictEqual", "notDeepEqual"] } }) ] diff --git a/sdk/storage/storage-file/rollup.base.config.js b/sdk/storage/storage-file/rollup.base.config.js index 07eead383aea..4a6369191d3f 100644 --- a/sdk/storage/storage-file/rollup.base.config.js +++ b/sdk/storage/storage-file/rollup.base.config.js @@ -108,9 +108,12 @@ export function browserConfig(test = false, production = false) { preferBuiltins: false }), cjs({ + // When "rollup-plugin-commonjs@10.0.0" is used with "resolve@1.11.1", named exports of + // modules with built-in names must have a trailing slash. + // https://github.com/rollup/rollup-plugin-commonjs/issues/394 namedExports: { - events: ["EventEmitter"], - assert: [ + "events/": ["EventEmitter"], + "assert/": [ "ok", "deepEqual", "equal", diff --git a/sdk/storage/storage-queue/rollup.base.config.js b/sdk/storage/storage-queue/rollup.base.config.js index dff6113f8fba..ead2ec18453f 100644 --- a/sdk/storage/storage-queue/rollup.base.config.js +++ b/sdk/storage/storage-queue/rollup.base.config.js @@ -108,7 +108,10 @@ export function browserConfig(test = false, production = false) { }), cjs({ namedExports: { - assert: ["ok", "deepEqual", "equal", "fail", "deepStrictEqual"] + // When "rollup-plugin-commonjs@10.0.0" is used with "resolve@1.11.1", named exports of + // modules with built-in names must have a trailing slash. + // https://github.com/rollup/rollup-plugin-commonjs/issues/394 + "assert/": ["ok", "deepEqual", "equal", "fail", "deepStrictEqual"] } }) ] diff --git a/sdk/template/template/rollup.base.config.js b/sdk/template/template/rollup.base.config.js index 567c8e4525c4..25bb67d0163f 100644 --- a/sdk/template/template/rollup.base.config.js +++ b/sdk/template/template/rollup.base.config.js @@ -83,7 +83,10 @@ export function browserConfig(test = false, production = false) { preferBuiltins: false }), cjs({ - namedExports: { events: ["EventEmitter"] } + // When "rollup-plugin-commonjs@10.0.0" is used with "resolve@1.11.1", named exports of + // modules with built-in names must have a trailing slash. + // https://github.com/rollup/rollup-plugin-commonjs/issues/394 + namedExports: { "events/": ["EventEmitter"] } }), viz({ filename: "browser/browser-stats.html", sourcemap: false }) ] From b7480d845d99e988a3b96f773eb1b68a7b667b06 Mon Sep 17 00:00:00 2001 From: KarishmaGhiya Date: Tue, 25 Jun 2019 17:27:10 -0700 Subject: [PATCH 192/289] Document generation (#4008) * added script for generating the docs with all the checks and flag for output to docGen folder, template for index generation, docs.yml for doc generation pipeline --- common/config/rush/command-line.json | 10 +- common/scripts/generate-doc.js | 227 +++++++++++++++++++++ documentation/templateDocGen/template.html | 198 ++++++++++++++++++ eng/pipelines/docs.yml | 50 +++++ 4 files changed, 484 insertions(+), 1 deletion(-) create mode 100644 common/scripts/generate-doc.js create mode 100644 documentation/templateDocGen/template.html create mode 100644 eng/pipelines/docs.yml diff --git a/common/config/rush/command-line.json b/common/config/rush/command-line.json index ea6ab149a256..deb68e06d8ed 100644 --- a/common/config/rush/command-line.json +++ b/common/config/rush/command-line.json @@ -127,6 +127,14 @@ "ignoreMissingScript": true }, + { + "commandKind": "bulk", + "name": "generate-doc", + "summary": "Run typedoc on projects and generate documentation", + "enableParallelism": true, + "ignoreMissingScript": true + }, + // Global Commands { "commandKind": "global", @@ -165,7 +173,7 @@ "parameterKind": "flag", "longName": "--sync-peers", "description": "Also sync peer dependency versions with those in the working directory.", - "associatedCommands": [ "sync-versions" ] + "associatedCommands": ["sync-versions"] } ] } diff --git a/common/scripts/generate-doc.js b/common/scripts/generate-doc.js new file mode 100644 index 000000000000..9857fad0bc40 --- /dev/null +++ b/common/scripts/generate-doc.js @@ -0,0 +1,227 @@ +const fs = require("fs-extra"); +const path = require("path"); +const childProcess = require("child_process"); +const nunjucks = require("nunjucks"); + +nunjucks.configure("documentation/templateDocGen", { autoescape: true }); + +function walk(dir, checks) { + var list = fs.readdirSync(dir); + for (const fileName of list) { + const filePath = path.join(dir, fileName); + if (fileName == "node_modules") { + checks.isRush = true; + continue; + } + if (fileName == "src") { + checks.srcPresent = true; + } + if (fileName == "package.json") { + let data = fs.readFileSync(filePath, "utf8"); + let settings = JSON.parse(data); + if (settings["private"] === true) { + checks.isPrivate = true; + } + } + if (fileName == "typedoc.json") { + checks.typedocPresent = true; + } + const stat = fs.statSync(filePath); + if (stat && stat.isDirectory()) { + checks = walk(filePath, checks); + } else { + // console.log(path.resolve(filePath)); //For-debug + } + } + return checks; +} + +const [ + nodePath /* Ex: /bin/node */, + scriptPath /* /repo/common/scripts/generate-doc.js */, + docGen /* -dg */ +] = process.argv; +let docOutputFolder = "--out ./dist/docs ./src"; + +console.log("process.cwd = " + process.cwd()); +try { + const result = childProcess.spawnSync("rush", ["install"], { + cwd: process.cwd(), + env: process.env, + shell: true + }); + console.log('result.output for "rush install":' + result.output); + //process.exit(result.status); //For-debug +} catch (e) { + console.error(`\n\n${e.toString()}\n\n`); + process.exit(1); +} + +let workingDir = path.join(process.cwd(), "sdk"); +let pathToAssets = ""; + +const serviceFolders = fs.readdirSync(workingDir); +console.log("Service folders:"); //For-debug +console.log(serviceFolders); //For-debug + +//Initializing package list for template index generation +let serviceList = []; +let count = 0; +for (const eachService of serviceFolders) { + count++; + //if(count > 5) //For-debug + //break; //For-debug + + console.log("count = " + count); + const eachServicePath = path.join(workingDir, eachService); + const stat = fs.statSync(eachServicePath); + + if (stat && stat.isDirectory()) { + var packageList = fs.readdirSync(eachServicePath); + //Initializing package list for template index generation + let indexPackageList = []; + for (const eachPackage of packageList) { + let checks = { + isRush: false, + isPrivate: false, + srcPresent: false, + typedocPresent: false + }; + console.log( + "checks before walk: checks.isRush = " + + checks.isRush + + " , checks.isPrivate = " + + checks.isPrivate + + ", checks.srcPresent = " + + checks.srcPresent + + ", typedocPresent = " + + checks.typedocPresent + ); + eachPackagePath = path.join(eachServicePath, eachPackage); + pathToAssets = eachPackagePath + "/assets"; + const packageStat = fs.statSync(eachPackagePath); + if (packageStat && packageStat.isDirectory()) { + checks = walk(eachPackagePath, checks); + + console.log( + "checks after walk: checks.isRush = " + + checks.isRush + + " , checks.isPrivate = " + + checks.isPrivate + + ", checks.srcPresent = " + + checks.srcPresent + + ", typedocPresent = " + + checks.typedocPresent + ); + console.log("Path: " + eachPackagePath); + if (!checks.isPrivate) { + if (checks.srcPresent) { + if (!checks.isRush) { + try { + const result2 = childProcess.spawnSync("npm", ["install"], { + stdio: "inherit", + cwd: eachPackagePath, + shell: true + }); + console.log( + 'result2.output for "npm install":' + result2.output + ); + } catch (e) { + console.error(`\n\n${e.toString()}\n\n`); + process.exit(1); + } + } + if (docGen === "-dg") { + docOutputFolder = + "--out ../../../docGen/" + eachPackage + " ./src"; + } + + try { + if (checks.typedocPresent) { + const result3 = childProcess.spawnSync( + "typedoc", + [docOutputFolder], + { + cwd: eachPackagePath, + shell: true + } + ); + console.log( + 'result3.output for "typedoc ' + + docOutputFolder + + ' ":' + + result3.output + ); + } else { + const result3 = childProcess.spawnSync( + "typedoc", + [ + "--excludePrivate", + "--excludeNotExported", + '--exclude "node_modules/**/*"', + "--ignoreCompilerErrors", + "--mode file", + docOutputFolder + ], + { + cwd: eachPackagePath, + shell: true + } + ); + console.log( + 'result3.output for "typedoc --excludePrivate --excludeNotExported --exclude "node_modules/**/*" -ignoreCompilerErrors --mode file ' + + docOutputFolder + + ' ":' + + result3.output + ); + } + } catch (e) { + console.error(`\n\n${e.toString()}\n\n`); + process.exit(1); + } + //Adding package to packageList for the template index generation + indexPackageList.push(eachPackage); + } else { + console.log("...SKIPPING Since src folder could not be found....."); + } + } else { + console.log("...SKIPPING Since package marked as private..."); + } + } + } + //Adding service entry for the template index generation + serviceList.push({ name: eachService, packageList: indexPackageList }); + } +} // end-for ServiceFolders + +var renderedIndex = nunjucks.render("template.html", { + serviceList: serviceList +}); +//console.log(serviceList); +//console.log("rendered html:"); //For-debug +//console.log(renderedIndex); //For-debug +var dest = process.cwd() + "/docGen/index.html"; +fs.writeFile(dest, renderedIndex, function(err, result) { + if (err) + console.log( + "error in writing the generated html to docGen/index.html", + err + ); + console.log("Generated html written to docGen/index.html"); +}); +console.log(serviceList[0].packageList[0]); +console.log("serviceList length = " + serviceList.length); +if (serviceList.length > 0) { + //copy from pathToAssets to docGen/assets + pathToAssets = + process.cwd() + "/docGen/" + serviceList[0].packageList[0] + "/assets"; + var assetsDest = process.cwd() + "/docGen/assets/"; + fs.copy(pathToAssets, assetsDest, err => { + if (err) + return console.error( + "error copying the assets folder to docGen/assets/", + err + ); + console.log("assets folder copied to docGen!"); + }); +} diff --git a/documentation/templateDocGen/template.html b/documentation/templateDocGen/template.html new file mode 100644 index 000000000000..5f1479096b25 --- /dev/null +++ b/documentation/templateDocGen/template.html @@ -0,0 +1,198 @@ + + + + + + azure-sdk-for-js + + + + + +
+
+

Azure SDK for Javascript

+
+
+
+
+
+
+
+
+
+ {% for service in serviceList %} +

+ {{ service.name }} +

+
    + {% for package in service.packageList %} +
  • + "{{ package }}" +
  • + {% endfor %} +
+ {% endfor %} +
+
+
+
+
+
+
+
+
+

Legend

+
+
    +
  • + Module +
  • +
  • + Object literal +
  • +
  • + Variable +
  • +
  • + Function +
  • +
  • + Function with type parameter +
  • +
  • + Index signature +
  • +
  • + Type alias +
  • +
+
    +
  • + Enumeration +
  • +
  • + Enumeration member +
  • +
  • + Property +
  • +
  • + Method +
  • +
+
    +
  • + Interface +
  • +
  • + Interface with type parameter +
  • +
  • + Constructor +
  • +
  • + Property +
  • +
  • + Method +
  • +
  • + Index signature +
  • +
+
    +
  • + Class +
  • +
  • + Class with type parameter +
  • +
  • + Constructor +
  • +
  • + Property +
  • +
  • + Method +
  • +
  • + Accessor +
  • +
  • + Index signature +
  • +
+
    +
  • + Inherited constructor +
  • +
  • + Inherited property +
  • +
  • + Inherited method +
  • +
  • + Inherited accessor +
  • +
+
    +
  • + Protected property +
  • +
  • + Protected method +
  • +
  • + Protected accessor +
  • +
+
    +
  • + Private property +
  • +
  • + Private method +
  • +
  • + Private accessor +
  • +
+
    +
  • + Static property +
  • +
  • + Static method +
  • +
+
+
+
+
+

+ Generated using + TypeDoc +

+
+
+ + diff --git a/eng/pipelines/docs.yml b/eng/pipelines/docs.yml new file mode 100644 index 000000000000..dcad48fffaf9 --- /dev/null +++ b/eng/pipelines/docs.yml @@ -0,0 +1,50 @@ +trigger: + - master + +variables: + NodeVersion: "10.x" + +jobs: + - job: "DocGen" + variables: + skipComponentGovernanceDetection: true + timeoutInMinutes: 120 + pool: + vmImage: "vs2017-win2016" + + steps: + - task: NodeTool@0 + inputs: + versionSpec: "$(NodeVersion)" + displayName: "Install Node.js $(NodeVersion)" + + - script: | + npm install -g npm@6.9.0 + displayName: "Install npm version 6.9.0" + + - script: | + node common/scripts/install-run-rush.js install + displayName: "Install dependencies" + + - script: | + npm i -g typedoc + displayName: "Install typedoc" + + - script: | + npm install nunjucks + displayName: "Install nunjucks" + + - script: | + npm install fs-extra + displayName: "Install fs-extra" + + - powershell: | + cd $(Build.SourcesDirectory) + node .\common\scripts\generate-doc.js -dg + Copy-Item -Path $(Build.SourcesDirectory)/docGen/* -Destination $(Build.ArtifactStagingDirectory) -Recurse -Force + displayName: "Generate Typedoc Docs" + + - upload: $(Build.ArtifactStagingDirectory) + artifact: docfolder + condition: succeededOrFailed() + displayName: "Publish Artifacts" From e61dc609577cb314e9e0e49b6da621c87b74e25f Mon Sep 17 00:00:00 2001 From: ShivangiReja <45216704+ShivangiReja@users.noreply.github.com> Date: Tue, 25 Jun 2019 17:59:32 -0700 Subject: [PATCH 193/289] [Event Hubs] [Preview 1] Version and copyright updates (#4065) --- sdk/core/core-amqp/samples/cbsAuth.ts | 2 +- .../core-amqp/samples/eventHubSendUsingAAD.ts | 2 +- sdk/core/core-amqp/samples/eventhubReceive.ts | 2 +- sdk/core/core-amqp/samples/eventhubSend.ts | 2 +- sdk/core/core-amqp/samples/receive.ts | 2 +- sdk/core/core-amqp/samples/send.ts | 2 +- .../core-amqp/src/ConnectionContextBase.ts | 6 +-- sdk/core/core-amqp/src/auth/iotSas.ts | 2 +- sdk/core/core-amqp/src/auth/sas.ts | 2 +- sdk/core/core-amqp/src/auth/token.ts | 2 +- sdk/core/core-amqp/src/cbs.ts | 2 +- .../src/connectionConfig/connectionConfig.ts | 26 +++--------- .../eventhubConnectionConfig.ts | 42 +++++-------------- .../iothubConnectionConfig.ts | 19 +++------ sdk/core/core-amqp/src/dataTransformer.ts | 12 ++---- sdk/core/core-amqp/src/errors.ts | 2 +- sdk/core/core-amqp/src/index.ts | 2 +- sdk/core/core-amqp/src/log.ts | 2 +- sdk/core/core-amqp/src/messageHeader.ts | 6 +-- sdk/core/core-amqp/src/messageProperties.ts | 10 ++--- sdk/core/core-amqp/src/requestResponseLink.ts | 2 +- sdk/core/core-amqp/src/retry.ts | 2 +- sdk/core/core-amqp/src/shims.d.ts | 2 +- sdk/core/core-amqp/src/util/constants.ts | 3 +- sdk/core/core-amqp/src/util/utils.ts | 26 ++++-------- sdk/eventhub/event-hubs/package.json | 2 +- sdk/eventhub/event-hubs/src/util/constants.ts | 2 +- .../event-hubs/test/packageInfo.spec.ts | 3 ++ .../event-hubs/test/utils/testUtils.ts | 3 ++ 29 files changed, 65 insertions(+), 127 deletions(-) diff --git a/sdk/core/core-amqp/samples/cbsAuth.ts b/sdk/core/core-amqp/samples/cbsAuth.ts index 07bda5782894..96c44f2a5a17 100644 --- a/sdk/core/core-amqp/samples/cbsAuth.ts +++ b/sdk/core/core-amqp/samples/cbsAuth.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import { ConnectionContextBase, diff --git a/sdk/core/core-amqp/samples/eventHubSendUsingAAD.ts b/sdk/core/core-amqp/samples/eventHubSendUsingAAD.ts index 9dd5acbc8237..4259aa199593 100644 --- a/sdk/core/core-amqp/samples/eventHubSendUsingAAD.ts +++ b/sdk/core/core-amqp/samples/eventHubSendUsingAAD.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import { ConnectionContextBase, diff --git a/sdk/core/core-amqp/samples/eventhubReceive.ts b/sdk/core/core-amqp/samples/eventhubReceive.ts index c57fd7a33d5a..c9140c7f6012 100644 --- a/sdk/core/core-amqp/samples/eventhubReceive.ts +++ b/sdk/core/core-amqp/samples/eventhubReceive.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import { ConnectionContextBase, diff --git a/sdk/core/core-amqp/samples/eventhubSend.ts b/sdk/core/core-amqp/samples/eventhubSend.ts index 3dbf9e06d3b8..87e614ce6e51 100644 --- a/sdk/core/core-amqp/samples/eventhubSend.ts +++ b/sdk/core/core-amqp/samples/eventhubSend.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import { ConnectionContextBase, diff --git a/sdk/core/core-amqp/samples/receive.ts b/sdk/core/core-amqp/samples/receive.ts index 5156cbe4daff..f2e72f591fff 100644 --- a/sdk/core/core-amqp/samples/receive.ts +++ b/sdk/core/core-amqp/samples/receive.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import * as dotenv from "dotenv"; dotenv.config(); // Optional for loading environment configuration from a .env (config) file diff --git a/sdk/core/core-amqp/samples/send.ts b/sdk/core/core-amqp/samples/send.ts index 260542be443d..f1528b2a940e 100644 --- a/sdk/core/core-amqp/samples/send.ts +++ b/sdk/core/core-amqp/samples/send.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import * as dotenv from "dotenv"; dotenv.config(); // Optional for loading environment configuration from a .env (config) file diff --git a/sdk/core/core-amqp/src/ConnectionContextBase.ts b/sdk/core/core-amqp/src/ConnectionContextBase.ts index 1dc82962d567..9389017eb82e 100644 --- a/sdk/core/core-amqp/src/ConnectionContextBase.ts +++ b/sdk/core/core-amqp/src/ConnectionContextBase.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import { Connection, ConnectionOptions, generate_uuid } from "rhea-promise"; import { CbsClient } from "./cbs"; @@ -137,9 +137,7 @@ export module ConnectionContextBase { const userAgent = parameters.connectionProperties.userAgent; if (userAgent.length > Constants.maxUserAgentLength) { throw new Error( - `The user-agent string cannot be more than ${ - Constants.maxUserAgentLength - } characters in length.` + + `The user-agent string cannot be more than ${Constants.maxUserAgentLength} characters in length.` + `The given user-agent string is: ${userAgent} with length: ${userAgent.length}` ); } diff --git a/sdk/core/core-amqp/src/auth/iotSas.ts b/sdk/core/core-amqp/src/auth/iotSas.ts index 18e87dbd0ad1..ff94efafbdd0 100644 --- a/sdk/core/core-amqp/src/auth/iotSas.ts +++ b/sdk/core/core-amqp/src/auth/iotSas.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import { SharedKeyCredential } from "./sas"; import { AccessToken } from "@azure/core-http"; diff --git a/sdk/core/core-amqp/src/auth/sas.ts b/sdk/core/core-amqp/src/auth/sas.ts index 084710c2e038..b108f22bca88 100644 --- a/sdk/core/core-amqp/src/auth/sas.ts +++ b/sdk/core/core-amqp/src/auth/sas.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import { parseConnectionString, ServiceBusConnectionStringModel } from "../util/utils"; import { AccessToken } from "@azure/core-http"; diff --git a/sdk/core/core-amqp/src/auth/token.ts b/sdk/core/core-amqp/src/auth/token.ts index aede3c1f4ac9..af4784918d63 100644 --- a/sdk/core/core-amqp/src/auth/token.ts +++ b/sdk/core/core-amqp/src/auth/token.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. /** * Describes the type of supported tokens. * @enum TokenType diff --git a/sdk/core/core-amqp/src/cbs.ts b/sdk/core/core-amqp/src/cbs.ts index a9de3210a31c..4aa1deb90d4e 100644 --- a/sdk/core/core-amqp/src/cbs.ts +++ b/sdk/core/core-amqp/src/cbs.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import { TokenType } from "./auth/token"; import { AccessToken } from "@azure/core-http"; diff --git a/sdk/core/core-amqp/src/connectionConfig/connectionConfig.ts b/sdk/core/core-amqp/src/connectionConfig/connectionConfig.ts index f25988f1c7f3..09dd02f4698e 100644 --- a/sdk/core/core-amqp/src/connectionConfig/connectionConfig.ts +++ b/sdk/core/core-amqp/src/connectionConfig/connectionConfig.ts @@ -1,10 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. -import { - parseConnectionString, - ServiceBusConnectionStringModel -} from "../util/utils"; +import { parseConnectionString, ServiceBusConnectionStringModel } from "../util/utils"; import { WebSocketImpl } from "rhea-promise"; /** @@ -85,15 +82,10 @@ export namespace ConnectionConfig { * if present. * @returns {ConnectionConfig} ConnectionConfig */ - export function create( - connectionString: string, - path?: string - ): ConnectionConfig { + export function create(connectionString: string, path?: string): ConnectionConfig { connectionString = String(connectionString); - const parsedCS = parseConnectionString( - connectionString - ); + const parsedCS = parseConnectionString(connectionString); if (!parsedCS.Endpoint) { throw new TypeError("Missing Endpoint in Connection String."); } @@ -103,10 +95,7 @@ export namespace ConnectionConfig { const result: ConnectionConfig = { connectionString: connectionString, endpoint: parsedCS.Endpoint, - host: - parsedCS && parsedCS.Endpoint - ? (parsedCS.Endpoint.match("sb://([^/]*)") || [])[1] - : "", + host: parsedCS && parsedCS.Endpoint ? (parsedCS.Endpoint.match("sb://([^/]*)") || [])[1] : "", sharedAccessKeyName: parsedCS.SharedAccessKeyName, sharedAccessKey: parsedCS.SharedAccessKey }; @@ -122,10 +111,7 @@ export namespace ConnectionConfig { * @param {ConnectionConfig} config The connection config to be validated. * @returns {void} void */ - export function validate( - config: ConnectionConfig, - options?: ConnectionConfigOptions - ): void { + export function validate(config: ConnectionConfig, options?: ConnectionConfigOptions): void { if (!options) options = {}; if (!config) { diff --git a/sdk/core/core-amqp/src/connectionConfig/eventhubConnectionConfig.ts b/sdk/core/core-amqp/src/connectionConfig/eventhubConnectionConfig.ts index a1336a353dcb..3d0d01838ce7 100644 --- a/sdk/core/core-amqp/src/connectionConfig/eventhubConnectionConfig.ts +++ b/sdk/core/core-amqp/src/connectionConfig/eventhubConnectionConfig.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import { ConnectionConfig } from "./connectionConfig"; @@ -39,10 +39,7 @@ export interface EventHubConnectionConfig extends ConnectionConfig { * @param consumergroup The consumergoup in the EventHub from which the messages will * be received. Default: `$default`. */ - getReceiverAddress( - partitionId: string | number, - consumergroup?: string - ): string; + getReceiverAddress(partitionId: string | number, consumergroup?: string): string; /** * Provides the EventHub Receiver audience. * - `"sb://.servicebus.windows.net//ConsumerGroups//Partitions/"` @@ -51,10 +48,7 @@ export interface EventHubConnectionConfig extends ConnectionConfig { * @param consumergroup The consumergoup in the EventHub from which the messages will * be received. Default: `$default`. */ - getReceiverAudience( - partitionId: string | number, - consumergroup?: string - ): string; + getReceiverAudience(partitionId: string | number, consumergroup?: string): string; /** * Provides the EventHub Management address. * - `"/$management"` @@ -83,10 +77,7 @@ export module EventHubConnectionConfig { * if present. * @returns {EventHubConnectionConfig} EventHubConnectionConfig */ - export function create( - connectionString: string, - path?: string - ): EventHubConnectionConfig { + export function create(connectionString: string, path?: string): EventHubConnectionConfig { const config = ConnectionConfig.create(connectionString, path); if (!config.entityPath) { throw new TypeError( @@ -103,9 +94,7 @@ export module EventHubConnectionConfig { * created. * @returns EventHubConnectionConfig */ - export function createFromConnectionConfig( - config: ConnectionConfig - ): EventHubConnectionConfig { + export function createFromConnectionConfig(config: ConnectionConfig): EventHubConnectionConfig { ConnectionConfig.validate(config, { isEntityPathRequired: true }); (config as EventHubConnectionConfig).getManagementAudience = () => { @@ -115,21 +104,15 @@ export module EventHubConnectionConfig { return `${config.entityPath}/$management`; }; - (config as EventHubConnectionConfig).getSenderAudience = ( - partitionId?: string | number - ) => { + (config as EventHubConnectionConfig).getSenderAudience = (partitionId?: string | number) => { if (partitionId != undefined) { - return `${config.endpoint}${ - config.entityPath - }/Partitions/${partitionId}`; + return `${config.endpoint}${config.entityPath}/Partitions/${partitionId}`; } else { return `${config.endpoint}${config.entityPath}`; } }; - (config as EventHubConnectionConfig).getSenderAddress = ( - partitionId?: string | number - ) => { + (config as EventHubConnectionConfig).getSenderAddress = (partitionId?: string | number) => { if (partitionId != undefined) { return `${config.entityPath}/Partitions/${partitionId}`; } else { @@ -143,9 +126,8 @@ export module EventHubConnectionConfig { ) => { if (!consumergroup) consumergroup = "$default"; return ( - `${config.endpoint}${ - config.entityPath - }/ConsumerGroups/${consumergroup}/` + `Partitions/${partitionId}` + `${config.endpoint}${config.entityPath}/ConsumerGroups/${consumergroup}/` + + `Partitions/${partitionId}` ); }; @@ -154,9 +136,7 @@ export module EventHubConnectionConfig { consumergroup?: string ) => { if (!consumergroup) consumergroup = "$default"; - return `${ - config.entityPath - }/ConsumerGroups/${consumergroup}/Partitions/${partitionId}`; + return `${config.entityPath}/ConsumerGroups/${consumergroup}/Partitions/${partitionId}`; }; return config as EventHubConnectionConfig; } diff --git a/sdk/core/core-amqp/src/connectionConfig/iothubConnectionConfig.ts b/sdk/core/core-amqp/src/connectionConfig/iothubConnectionConfig.ts index 0e141fe52860..6dfd46921d3d 100644 --- a/sdk/core/core-amqp/src/connectionConfig/iothubConnectionConfig.ts +++ b/sdk/core/core-amqp/src/connectionConfig/iothubConnectionConfig.ts @@ -1,12 +1,9 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import { ConnectionConfig } from "./connectionConfig"; import { EventHubConnectionConfig } from "./eventhubConnectionConfig"; -import { - parseConnectionString, - IotHubConnectionStringModel -} from "../util/utils"; +import { parseConnectionString, IotHubConnectionStringModel } from "../util/utils"; /** * @interface IotHubConnectionConfig @@ -54,23 +51,17 @@ export namespace IotHubConnectionConfig { * @param {string} connectionString - The event hub connection string * @param {string} [path] - The name/path of the entity (hub name) to which the connection needs to happen */ - export function create( - connectionString: string, - path?: string - ): IotHubConnectionConfig { + export function create(connectionString: string, path?: string): IotHubConnectionConfig { connectionString = String(connectionString); - const parsedCS = parseConnectionString( - connectionString - ); + const parsedCS = parseConnectionString(connectionString); if (!path) { path = "messages/events"; } const result: IotHubConnectionConfig = { connectionString: connectionString, hostName: parsedCS.HostName, - host: - parsedCS && parsedCS.HostName ? parsedCS.HostName.split(".")[0] : "", + host: parsedCS && parsedCS.HostName ? parsedCS.HostName.split(".")[0] : "", entityPath: path, sharedAccessKeyName: parsedCS.SharedAccessKeyName, sharedAccessKey: parsedCS.SharedAccessKey, diff --git a/sdk/core/core-amqp/src/dataTransformer.ts b/sdk/core/core-amqp/src/dataTransformer.ts index d1eba02eaa29..798adf6669ac 100644 --- a/sdk/core/core-amqp/src/dataTransformer.ts +++ b/sdk/core/core-amqp/src/dataTransformer.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import { message } from "rhea-promise"; import * as log from "./log"; @@ -42,10 +42,7 @@ export class DefaultDataTransformer implements DataTransformer { */ encode(body: any): any { let result: any; - log.transformer( - "[encode] The given message body that needs to be encoded is: ", - body - ); + log.transformer("[encode] The given message body that needs to be encoded is: ", body); if (isBuffer(body)) { result = message.data_section(body); } else { @@ -80,10 +77,7 @@ export class DefaultDataTransformer implements DataTransformer { decode(body: any): any { let processedBody: any = body; try { - log.transformer( - "[decode] Received message body for decoding is: %O", - body - ); + log.transformer("[decode] Received message body for decoding is: %O", body); if (body.content && isBuffer(body.content)) { // This indicates that we are getting the AMQP described type. Let us try decoding it. processedBody = body.content; diff --git a/sdk/core/core-amqp/src/errors.ts b/sdk/core/core-amqp/src/errors.ts index d01444cc9c15..eb74f0189b7a 100644 --- a/sdk/core/core-amqp/src/errors.ts +++ b/sdk/core/core-amqp/src/errors.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import { AmqpResponseStatusCode, isAmqpError, AmqpError } from "rhea-promise"; import { isNode } from "../src/util/utils"; diff --git a/sdk/core/core-amqp/src/index.ts b/sdk/core/core-amqp/src/index.ts index 502d8af3fb48..a7660bbdccf1 100644 --- a/sdk/core/core-amqp/src/index.ts +++ b/sdk/core/core-amqp/src/index.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. /// diff --git a/sdk/core/core-amqp/src/log.ts b/sdk/core/core-amqp/src/log.ts index 507c790c500b..ef15ec818eb5 100644 --- a/sdk/core/core-amqp/src/log.ts +++ b/sdk/core/core-amqp/src/log.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import debugModule from "debug"; /** diff --git a/sdk/core/core-amqp/src/messageHeader.ts b/sdk/core/core-amqp/src/messageHeader.ts index 040544a38285..92e57ff36a09 100644 --- a/sdk/core/core-amqp/src/messageHeader.ts +++ b/sdk/core/core-amqp/src/messageHeader.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import { MessageHeader as AmqpMessageHeader } from "rhea-promise"; import * as log from "./log"; @@ -70,9 +70,7 @@ export namespace MessageHeader { * @param {AmqpMessageHeader} props Amqp Message Header * @returns {MessageHeader} MessageHeader. */ - export function fromAmqpMessageHeader( - props: AmqpMessageHeader - ): MessageHeader { + export function fromAmqpMessageHeader(props: AmqpMessageHeader): MessageHeader { const msgHeader: MessageHeader = {}; if (props.delivery_count != undefined) { msgHeader.deliveryCount = props.delivery_count; diff --git a/sdk/core/core-amqp/src/messageProperties.ts b/sdk/core/core-amqp/src/messageProperties.ts index 79c99874ee6e..29730c3efe83 100644 --- a/sdk/core/core-amqp/src/messageProperties.ts +++ b/sdk/core/core-amqp/src/messageProperties.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import { MessageProperties as AmqpMessageProperties } from "rhea-promise"; import * as log from "./log"; @@ -76,9 +76,7 @@ export namespace MessageProperties { * @param {MessageProperties} props Message properties. * @returns {AmqpMessageProperties} AmqpMessageProperties. */ - export function toAmqpMessageProperties( - props: MessageProperties - ): AmqpMessageProperties { + export function toAmqpMessageProperties(props: MessageProperties): AmqpMessageProperties { const amqpProperties: AmqpMessageProperties = {}; if (props.absoluteExpiryTime != undefined) { amqpProperties.absolute_expiry_time = props.absoluteExpiryTime; @@ -129,9 +127,7 @@ export namespace MessageProperties { * @param {AmqpMessageProperties} props Amqp message properties. * @returns {MessageProperties} MessageProperties. */ - export function fromAmqpMessageProperties( - props: AmqpMessageProperties - ): MessageProperties { + export function fromAmqpMessageProperties(props: AmqpMessageProperties): MessageProperties { const msgProperties: MessageProperties = {}; if (props.absolute_expiry_time != undefined) { msgProperties.absoluteExpiryTime = props.absolute_expiry_time; diff --git a/sdk/core/core-amqp/src/requestResponseLink.ts b/sdk/core/core-amqp/src/requestResponseLink.ts index 12e5d3d21389..eca70c1a050c 100644 --- a/sdk/core/core-amqp/src/requestResponseLink.ts +++ b/sdk/core/core-amqp/src/requestResponseLink.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import { AbortSignalLike, AbortError } from "@azure/abort-controller"; import * as Constants from "./util/constants"; diff --git a/sdk/core/core-amqp/src/retry.ts b/sdk/core/core-amqp/src/retry.ts index c4e95ab1bbec..001a1d157d9e 100644 --- a/sdk/core/core-amqp/src/retry.ts +++ b/sdk/core/core-amqp/src/retry.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import { translate, MessagingError } from "./errors"; import { delay, isNode } from "./util/utils"; diff --git a/sdk/core/core-amqp/src/shims.d.ts b/sdk/core/core-amqp/src/shims.d.ts index a59e5d25b50d..ac7d2447b938 100644 --- a/sdk/core/core-amqp/src/shims.d.ts +++ b/sdk/core/core-amqp/src/shims.d.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. // d.ts shims provide types for things we use internally but are not part // of amqp-common's surface area. diff --git a/sdk/core/core-amqp/src/util/constants.ts b/sdk/core/core-amqp/src/util/constants.ts index 73c79315690d..e5619bff3f32 100644 --- a/sdk/core/core-amqp/src/util/constants.ts +++ b/sdk/core/core-amqp/src/util/constants.ts @@ -1,5 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. + export const associatedLinkName = "associated-link-name"; export const partitionKey = "x-opt-partition-key"; export const sequenceNumber = "x-opt-sequence-number"; diff --git a/sdk/core/core-amqp/src/util/utils.ts b/sdk/core/core-amqp/src/util/utils.ts index 5e5057387f89..a44877a12517 100644 --- a/sdk/core/core-amqp/src/util/utils.ts +++ b/sdk/core/core-amqp/src/util/utils.ts @@ -1,5 +1,5 @@ // Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. +// Licensed under the MIT License. import AsyncLock from "async-lock"; export { AsyncLock }; @@ -30,10 +30,7 @@ export interface AsyncLockOptions { * A constant that indicates whether the environment is node.js or browser based. */ export const isNode = - !!process && - !!process.version && - !!process.versions && - !!process.versions.node; + !!process && !!process.version && !!process.versions && !!process.versions.node; /** * Describes the servicebus connection string model. @@ -102,9 +99,7 @@ export type ParsedOutput = { [P in keyof T]: T[P] }; * @param {string} connectionString The connection string to be parsed. * @returns {ParsedOutput} ParsedOutput. */ -export function parseConnectionString( - connectionString: string -): ParsedOutput { +export function parseConnectionString(connectionString: string): ParsedOutput { const output: { [k: string]: string } = {}; const parts = connectionString.trim().split(";"); @@ -125,9 +120,7 @@ export function parseConnectionString( const key = part.substring(0, splitIndex).trim(); if (key === "") { - throw new Error( - "Connection string malformed: missing key for assignment" - ); + throw new Error("Connection string malformed: missing key for assignment"); } const value = part.substring(splitIndex + 1).trim(); @@ -210,7 +203,7 @@ export class Timeout { * @returns {Promise} - Resolved promise */ export function delay(t: number, value?: T): Promise { - return new Promise(resolve => setTimeout(() => resolve(value), t)); + return new Promise((resolve) => setTimeout(() => resolve(value), t)); } /** @@ -244,7 +237,7 @@ export function executePromisesSequentially( kickstart?: any ): Promise { let result = Promise.resolve(kickstart); - promiseFactories.forEach(promiseFactory => { + promiseFactories.forEach((promiseFactory) => { result = result.then(promiseFactory); }); return result; @@ -260,12 +253,7 @@ export function isIotHubConnectionString(connectionString: string): boolean { let result: boolean = false; const model: any = parseConnectionString(connectionString); - if ( - model && - model.HostName && - model.SharedAccessKey && - model.SharedAccessKeyName - ) { + if (model && model.HostName && model.SharedAccessKey && model.SharedAccessKeyName) { result = true; } return result; diff --git a/sdk/eventhub/event-hubs/package.json b/sdk/eventhub/event-hubs/package.json index 2e2abfbe3a8f..ec510cce29ea 100644 --- a/sdk/eventhub/event-hubs/package.json +++ b/sdk/eventhub/event-hubs/package.json @@ -1,7 +1,7 @@ { "name": "@azure/event-hubs", "sdk-type": "client", - "version": "3.0.0-preview.1", + "version": "5.0.0-preview.1", "description": "Azure Event Hubs SDK for JS.", "author": "Microsoft Corporation", "license": "MIT", diff --git a/sdk/eventhub/event-hubs/src/util/constants.ts b/sdk/eventhub/event-hubs/src/util/constants.ts index 10311506f3bb..4c70dd2e4a3d 100644 --- a/sdk/eventhub/event-hubs/src/util/constants.ts +++ b/sdk/eventhub/event-hubs/src/util/constants.ts @@ -6,5 +6,5 @@ */ export const packageJsonInfo = { name: "@azure/event-hubs", - version: "3.0.0-preview.1" + version: "5.0.0-preview.1" }; diff --git a/sdk/eventhub/event-hubs/test/packageInfo.spec.ts b/sdk/eventhub/event-hubs/test/packageInfo.spec.ts index 36eb8b7d30dd..c42bc831c256 100644 --- a/sdk/eventhub/event-hubs/test/packageInfo.spec.ts +++ b/sdk/eventhub/event-hubs/test/packageInfo.spec.ts @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + import chai from "chai"; const should = chai.should(); import fs from "fs"; diff --git a/sdk/eventhub/event-hubs/test/utils/testUtils.ts b/sdk/eventhub/event-hubs/test/utils/testUtils.ts index db72248c1bca..8c65b34a2260 100644 --- a/sdk/eventhub/event-hubs/test/utils/testUtils.ts +++ b/sdk/eventhub/event-hubs/test/utils/testUtils.ts @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + import * as dotenv from "dotenv"; dotenv.config(); From 98533220d3bc1d9a57ddeee2724db537af24c948 Mon Sep 17 00:00:00 2001 From: chradek <51000525+chradek@users.noreply.github.com> Date: Tue, 25 Jun 2019 18:01:34 -0700 Subject: [PATCH 194/289] [Event Hubs] update tests to use rollup (#4075) --- sdk/eventhub/event-hubs/package.json | 4 ++-- sdk/eventhub/event-hubs/rollup.base.config.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sdk/eventhub/event-hubs/package.json b/sdk/eventhub/event-hubs/package.json index ec510cce29ea..7b9f63f6079d 100644 --- a/sdk/eventhub/event-hubs/package.json +++ b/sdk/eventhub/event-hubs/package.json @@ -40,7 +40,7 @@ "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", + "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", @@ -48,7 +48,7 @@ "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": "ts-mocha -p test/tsconfig.test.json test/*.ts --timeout 1200000 --reporter mocha-multi --reporter-options spec=-,mocha-junit-reporter=-", + "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 node_modules/eslint-detailed-reporter/lib/detailed.js -o event-hubs-lintReport.html || exit 0", diff --git a/sdk/eventhub/event-hubs/rollup.base.config.js b/sdk/eventhub/event-hubs/rollup.base.config.js index cbe88122daf9..8b481bbbff3b 100644 --- a/sdk/eventhub/event-hubs/rollup.base.config.js +++ b/sdk/eventhub/event-hubs/rollup.base.config.js @@ -52,7 +52,7 @@ export function nodeConfig(test = false) { baseConfig.output.file = "test-dist/index.js"; // mark assert as external - baseConfig.external.push("assert", "fs", "path", "os", "tty", "child_process"); + baseConfig.external.push("assert", "fs", "path", "os", "tty", "child_process", "@azure/identity"); baseConfig.onwarn = warning => { if ( From 4285e1859ba9fcabeacdc5832a128e1516d39c26 Mon Sep 17 00:00:00 2001 From: Harsha Nalluru Date: Wed, 26 Jun 2019 11:01:29 -0700 Subject: [PATCH 195/289] [Storage] Guidelines for record and playback (#3504) * rebase on to master branch * removed the storage-queue info * function call that affects http requests or generates [unique information] * address comments * Update CONTRIBUTING.md --- sdk/storage/CONTRIBUTING.md | 62 +++++++--- sdk/storage/RecordAndPlayback.md | 195 +++++++++++++++++++++++++++++++ 2 files changed, 240 insertions(+), 17 deletions(-) create mode 100644 sdk/storage/RecordAndPlayback.md diff --git a/sdk/storage/CONTRIBUTING.md b/sdk/storage/CONTRIBUTING.md index 22bbdd5af144..9058530817f2 100644 --- a/sdk/storage/CONTRIBUTING.md +++ b/sdk/storage/CONTRIBUTING.md @@ -10,9 +10,9 @@ The Azure Storage development team uses Visual Studio Code. However, any preferr ### Install -* Node.js valid LTS versions (>=6.5.0) -* Browsers like Chrome, Edge or Firefox -* Clone the source code from GitHub +- Node.js valid LTS versions (>=6.5.0) +- Browsers like Chrome, Edge or Firefox +- Clone the source code from GitHub ## Tests @@ -32,11 +32,11 @@ You need to set up CORS rules for your storage account if you need to develop fo For example, you can create following CORS settings for debugging. But please customize the settings carefully according to your requirements in production environment. -* Allowed origins: * -* Allowed verbs: DELETE,GET,HEAD,MERGE,POST,OPTIONS,PUT -* Allowed headers: * -* Exposed headers: * -* Maximum age (seconds): 86400 +- Allowed origins: \* +- Allowed verbs: DELETE,GET,HEAD,MERGE,POST,OPTIONS,PUT +- Allowed headers: \* +- Exposed headers: \* +- Maximum age (seconds): 86400 ### Building @@ -71,22 +71,50 @@ Browser testing is based on Karma, you can change default testing browser by mod As you develop a feature, you'll need to write tests to ensure quality. You should also run existing tests related to your change to address any unexpected breaks in both Node.js and Browsers. +### Unit Tests + +New env variable for recordings - TEST_MODE [Supposed to be added in the `.env` file to be able to do record and playback] + +- If TEST_MODE = "record", + + - Tests hit the live-service + - We record the request-responses for future use by leveraging + - If recordings are already present, forces re-recording + +- Else If TEST_MODE = "playback", + + - Existing recordings(present in the `/recordings` folder) are used to verify the tests + +- Else, + + - Tests hit the live-service, we don't record the requests/responses + +```bash +npm install +npm run test +``` + +`npm run test` would run the the tests in both node and the browser. + +**Link** - [Guidelines for record and playback](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/storage/RecordAndPlayback.md) + ## Pull Requests ### Guidelines The following are the minimum requirements for any pull request that must be met before contributions can be accepted. -* Make sure you've signed the CLA before you start working on any change. -* Discuss any proposed contribution with the team via a GitHub issue **before** starting development. -* Code must be professional quality - * No style issues - * You should strive to mimic the style with which we have written the library - * Clean, well-commented, well-designed code - * Try to limit the number of commits for a feature to 1-2. If you end up having too many we may ask you to squash your changes into fewer commits. +- Make sure you've signed the CLA before you start working on any change. +- Discuss any proposed contribution with the team via a GitHub issue **before** starting development. +- Code must be professional quality + + - No style issues + - You should strive to mimic the style with which we have written the library + - Clean, well-commented, well-designed code + - Try to limit the number of commits for a feature to 1-2. If you end up having too many we may ask you to squash your changes into fewer commits. -* ChangeLog.md needs to be updated describing the new change -* Thoroughly test your feature +- ChangeLog.md needs to be updated describing the new change +- Thoroughly test your feature ### Branching Policy diff --git a/sdk/storage/RecordAndPlayback.md b/sdk/storage/RecordAndPlayback.md new file mode 100644 index 000000000000..d5188e42e8a3 --- /dev/null +++ b/sdk/storage/RecordAndPlayback.md @@ -0,0 +1,195 @@ +# GUIDELINES FOR RECORD AND PLAYBACK + +## NOCK [for node tests] + +- [nock](https://www.npmjs.com/package/nock)-package is being used to test modules that perform HTTP requests. +- To mock an existing live system, we record and playback the HTTP calls using `nock.recorder`. +- Recording relies on intercepting real requests and responses and then persisting them for later use. + +--- + +## NISE [for browser tests] + +- Nock has no support for browsers. For them, we're using [nise](https://www.npmjs.com/package/nise). +- Nise works in a way similar to Nock, intercepting HTTP requests and mocking responses. +- Unlike Nock, Nise does not have a native record/playback feature. +- Some Nise functions are being overwritten to enable record and playback. +- Added new Karma plugins to access the disk and write/read recording files ([karma-json-to-file-reporter](https://www.npmjs.com/package/karma-json-to-file-reporter) to write and [karma-json-preprocessor](https://www.npmjs.com/package/karma-json-preprocessor) to read). + +--- + +## Setup for record and playback + +**New env variable for recordings - TEST_MODE** [Supposed to be added in the `.env` file to be able to do record and playback] + +- If TEST_MODE = "record", + - Tests hit the live-service + - Nock/Nise are used for recording the request-responses for future use + - If recordings are already present, forces re-recording +- Else If TEST_MODE = "playback", + - Existing recordings are used +- Else + - Tests hit the live-service, we don't record the requests/responses + +--- + +## Skipped tests + +- Some tests are skipped because record and playback do not work properly when running them. +- The reasons for skipping every test are listed in the code [ `test/utils/recorder.ts` ] . Possible reasons for skipping a test: + + - **Abort:** browser testing unexpectedly finishes when a request is aborted during playback (unknown reason; probably related to the way nise handles it) + - **Character:** there are characters in the message that are not supported in browser logging or in ECMAScript + - **Progress:** Nock does not record a request if it's aborted in a 'progress' callback + - **Size:** the generated recording file is too big and would considerably increase the size of the package + - **Tempfile:** the request makes use of a random tempfile created locally, and the recorder does not support recording it as unique information + - **UUID:** a UUID is randomly generated within the SDK and used in an HTTP request, resulting in Nock being unable to recognize it + +- We leverage mocha's `.skip()` functionality to skip the test + `this.skip()` - https://mochajs.org/#inclusive-tests + By this, the tests in the skip list will only be executed if the `TEST_MODE` is neither `"record"` nor `"playback"`. + +--- + +## Recordings + +- Recordings are being saved in one folder for each describe-block test suite + recording file structure + - `recordings/node//recording_.js` for node tests and + - `recordings/browsers//recording_.json` for browser tests. +- The file name of the recording for a test preserves the title of the `describe`-block and the corresponding `it`-block (with special characters appropriated). The recordings for browser tests go into the `./recordings/browsers/` folder(Similarly, node recordings in the `./recordings/node/` folder). + + For example + + ```typescript + describe("Aborter", () => { + it("should abort when abort() is called", async () => { + ... + ... + }); + }); + ``` + + (Browser Test) Recording corresponding to the above test is placed at + `./recordings/browsers/aborter/recording_should_abort_when_abort_is_called.json` + + [ Following this rule - `./recordings/browsers//recording_.json` ] + +- Just like the test recordings, we save the requests and responses from the before and after sections of the describe block in - `recordings/{node|browsers}//recording_before_all_hook.{js|json}`. +- In node recordings(Nock), the query parameters are being skipped and only the SAS Token query parameters are being skipped in browser recordings(Nise). +- ENV Variables - As an additional layer of security, any potential secrets in the recordings are replaced with dummy values. In case of storage-packages, `ACCOUNT_NAME` is replaced with "fakestorageaccount", secret part of `ACCOUNT_SAS` and `ACCOUNT_KEY` are replaced with "aaaaa". These dummy values are used as the secrets during the playback mode. + +--- + +## Updating an existing test/test-suite + +- Recordings are saved in `./recordings/` folder. +- If a test is modified, we might need to record it again in order to equip the recording to accommodate any updates in the function calls that invoke http requests. + + - execute the test/test-suite script(or all the tests) by setting the env variable `TEST_MODE = record` + +- If only the test title is updated, + + - we can either execute that specific test again to generate the recording + + or + + - we can just update the file name of the recording accordingly + +- **Commit** the generated recordings. + +--- + +## Adding a new test/test-suite + +- Any function call that affects http requests or generates [unique information](#UniqueInfo) that is not in the `it`-block and belongs to a `describe`-block must go in one of the `beforeEach`, `afterEach`, `before` or `after` sections. + +- Recordings corresponding to `before` or `after` sections are saved under `recordings/{node|browsers}//recording_before_all_hook.{js|json}`. + +- Recordings corresponding to `beforeEach` or `afterEach` sections are saved along with the test recordings(`recordings/{node|browsers}//recording_.{js|json}`). + +- Follow the below template for adding any new test. `before` and `after` sections are optional, `beforeEach` and `afterEach` sections are compulsory. + + ```typescript + import { record } from "./utils/recorder"; + + describe("", () => { + // before section is optional + before(async function() { + recorder = record(this); + /*Place your code here*/ + recorder.stop(); + }); + + // after section is optional + after(async function() { + recorder = record(this); + /*Place your code here*/ + recorder.stop(); + }); + + beforeEach(async function() { + recorder = record(this); + /*Place your code here*/ + }); + + afterEach(async () => { + /*Place your code here*/ + recorder.stop(); + }); + + it("", async () => { + /*Place your code here*/ + }); + }); + ``` + +- **Saving randomly generated information/unique info of a test run. Example - `getUniqueName` in storage-queue** + + - Before Record and Playback, `getUniqueName` was being imported from `utils` in the `.spec.ts` test files. `getUniqueName` generates a new value each time we run. + + - Retaining that unique value is crucial in order to replay the http request during `"playback"` mode, which also implies that any unique information related to the test must be saved in order to replay the http requests. + + - When `recorder.stop();` is called for a test, we save that unique information corresponding to the test run along with the test recording. + + - During `playback` mode, the saved unique information must be pulled out from the existing recording in order to replay the http requests. + + For the case of `getUniqueName`, to keep things clean in the `spec.ts` files, we have moved the `getUniqueName` into the `recorder.ts`. + i.e., a wrapper is added around `getUniqueName` in `recorder.ts` which takes care of the `TEST_MODE` + + - if `TEST_MODE` = `"record"`, `recorder.getUniqueName()` will work the same as the usual `getUniqueName()`. + - if `TEST_MODE` = `"playback"`, `recorder.getUniqueName()` will pull out the value from existing recording. + + [Same is the case with `newDate` function] + + - Any unique information of the test run that is important for playing back the http request must be saved along with the recordings in the record mode. + +- If a new test/test-suite is added, execute the test/test-suite(or all the tests) by setting the env variable `TEST_MODE = record` and **commit** the generated recording files. + +- If the new test is supposed to skipped, it must be added in the skip list as described in the earlier section. Doing this would allow the tests in the skip list to be executed only if the `TEST_MODE` is neither `"record"` nor `"playback"`. + +- Importing the `delay` from recorder.ts + - This `delay` has no effect if the `TEST_MODE` is `"playback"`. + - `delay` works as expected(`await delay()`) if the `TEST_MODE` is not `"playback"`. + +--- + +## Note - `console.log()` for browser tests + +- In browser, once the content to be recorded is ready, recordings are supposed to be sent to the appropriate karma reporter in order to generate the corresponding recording file. The way of doing this is by printing the recordings to `console.log()`. As a result, the console gets filled with lots of prints while recording. +- To avoid the issue, we have currently disabled `console.log()` in karma.conf.js (karma configuration) for storage packages in `"record"` mode. + + ```javascript + browserConsoleLogOptions: { + // IMPORTANT: Comment the following line if you want to print debug logs in your browsers in record mode!! + terminal: process.env.TEST_MODE !== "record"; + } + ``` + +- In `record` mode, comment the above specified line in `karma.conf.js` to enable `console.log()` in browsers. + +--- + +## References + +- https://github.com/Azure/azure-sdk-for-js/pull/2227 From 9003ff39d6e19f09ec34b6c9c734adb21034e976 Mon Sep 17 00:00:00 2001 From: David Wilson Date: Wed, 26 Jun 2019 11:26:01 -0700 Subject: [PATCH 196/289] [Identity] Enable managed identity auth for App Service and Cloud Shell (#4037) * Enable managed identity auth for App Service and Cloud Shell * Rename constants for accuracy and consistency across languages * Add IMDS endpoint ping logic with timeout --- .../identity/src/client/identityClient.ts | 161 +++++++++++++++--- .../credentials/managedIdentityCredential.ts | 24 ++- .../test/client/identityClient.spec.ts | 14 +- .../test/credentials/authTestUtils.ts | 32 +++- .../managedIdentityCredential.spec.ts | 123 ++++++++++++- 5 files changed, 312 insertions(+), 42 deletions(-) diff --git a/sdk/identity/identity/src/client/identityClient.ts b/sdk/identity/identity/src/client/identityClient.ts index 21574589c3bc..3a7eb1a19a3b 100644 --- a/sdk/identity/identity/src/client/identityClient.ts +++ b/sdk/identity/identity/src/client/identityClient.ts @@ -10,15 +10,17 @@ import { ServiceClientOptions, GetTokenOptions, WebResource, - RequestPrepareOptions + RequestPrepareOptions, + RestError } from "@azure/core-http"; import { AuthenticationError } from "./errors"; const SelfSignedJwtLifetimeMins = 10; const DefaultAuthorityHost = "https://login.microsoftonline.com"; -const ImdsEndpoint = "http://169.254.169.254/metadata/identity/oauth2/token"; -const MsiApiVersion = "2018-02-01"; const DefaultScopeSuffix = "/.default"; +export const ImdsEndpoint = "http://169.254.169.254/metadata/identity/oauth2/token"; +export const ImdsApiVersion = "2018-02-01"; +export const AppServiceMsiApiVersion = "2017-09-01"; export class IdentityClient extends ServiceClient { constructor(options?: IdentityClientOptions) { @@ -35,13 +37,19 @@ export class IdentityClient extends ServiceClient { } private async sendTokenRequest( - requestOptions: RequestPrepareOptions + webResource: WebResource, + expiresOnParser?: (responseBody: any) => number, ): Promise { - const response = await this.sendRequest(requestOptions); + const response = await this.sendRequest(webResource); + + expiresOnParser = expiresOnParser || ((responseBody: any) => { + return Date.now() + responseBody.expires_in * 1000 + }); + if (response.status === 200 || response.status === 201) { return { token: response.parsedBody.access_token, - expiresOnTimestamp: Date.now() + response.parsedBody.expires_in * 1000 + expiresOnTimestamp: expiresOnParser(response.parsedBody) }; } else { throw new AuthenticationError(response.status, response.bodyAsText); @@ -76,6 +84,98 @@ export class IdentityClient extends ServiceClient { return date; } + private createImdsAuthRequest(resource: string, clientId?: string): RequestPrepareOptions { + const queryParameters: any = { + resource, + "api-version": ImdsApiVersion + }; + + if (clientId) { + queryParameters.client_id = clientId; + } + + return { + url: ImdsEndpoint, + method: "GET", + queryParameters, + headers: { + Accept: "application/json", + Metadata: true + } + }; + } + + private createAppServiceMsiAuthRequest(resource: string, clientId?: string): RequestPrepareOptions { + const queryParameters: any = { + resource, + "api-version": AppServiceMsiApiVersion, + }; + + if (clientId) { + queryParameters.client_id = clientId; + } + + return { + url: process.env.MSI_ENDPOINT, + method: "GET", + queryParameters, + headers: { + Accept: "application/json", + secret: process.env.MSI_SECRET + } + }; + } + + private createCloudShellMsiAuthRequest(resource: string, clientId?: string): RequestPrepareOptions { + const body: any = { + resource + }; + + if (clientId) { + body.client_id = clientId; + } + + return { + url: process.env.MSI_ENDPOINT, + method: "POST", + body: qs.stringify(body), + headers: { + Accept: "application/json", + Metadata: true, + "Content-Type": "application/x-www-form-urlencoded" + } + }; + } + + private async pingImdsEndpoint(resource: string, clientId?: string): Promise { + const request = this.createImdsAuthRequest(resource, clientId); + + // This will always be populated, but let's make TypeScript happy + if (request.headers) { + // Remove the Metadata header to invoke a request error from + // IMDS endpoint + delete request.headers.Metadata; + } + + // Create a request with a 500 msec timeout since we expect that + // not having a "Metadata" header should cause an error to be + // returned quickly from the endpoint, proving its availability. + const webResource = this.createWebResource(request); + webResource.timeout = 500; + + try { + await this.sendRequest(webResource); + } catch (err) { + if (err instanceof RestError && err.code === RestError.REQUEST_SEND_ERROR) { + // Either request failed or IMDS endpoint isn't available + return false; + } + } + + // If we received any response, the endpoint is available + return true; + } + authenticateClientSecret( tenantId: string, clientId: string, @@ -105,34 +205,51 @@ export class IdentityClient extends ServiceClient { return this.sendTokenRequest(webResource); } - authenticateManagedIdentity( + async authenticateManagedIdentity( scopes: string | string[], + checkIfImdsEndpointAvailable: boolean, clientId?: string, getTokenOptions?: GetTokenOptions ): Promise { - const queryParameters: any = { - resource: this.mapScopesToResource(scopes), - "api-version": MsiApiVersion - }; + let authRequestOptions: RequestPrepareOptions; + const resource = this.mapScopesToResource(scopes); + let expiresInParser: ((requestBody: any) => number) | undefined; - if (clientId) { - queryParameters.client_id = clientId; + // Detect which type of environment we are running in + if (process.env.MSI_ENDPOINT) { + if (process.env.MSI_SECRET) { + // Running in App Service + authRequestOptions = this.createAppServiceMsiAuthRequest(resource, clientId); + expiresInParser = (requestBody: any) => { + // Parse a date format like "06/20/2019 02:57:58 +00:00" and + // convert it into a JavaScript-formatted date + const m = requestBody.expires_on.match(/(\d\d)\/(\d\d)\/(\d\d\d\d) (\d\d):(\d\d):(\d\d) (\+|-)(\d\d):(\d\d)/) + return Date.parse(`${m[3]}-${m[1]}-${m[2]}T${m[4]}:${m[5]}:${m[6]}${m[7]}${m[8]}:${m[9]}`) + }; + } else { + // Running in Cloud Shell + authRequestOptions = this.createCloudShellMsiAuthRequest(resource, clientId); + } + } else { + // Ping the IMDS endpoint to see if it's available + if (!checkIfImdsEndpointAvailable || await this.pingImdsEndpoint(resource, clientId)) { + // Running in an Azure VM + authRequestOptions = this.createImdsAuthRequest(resource, clientId); + } else { + // Returning null tells the ManagedIdentityCredential that + // no MSI authentication endpoints are available + return null; + } } const webResource = this.createWebResource({ - url: ImdsEndpoint, - method: "GET", disableJsonStringifyOnBody: true, deserializationMapper: undefined, - queryParameters, - headers: { - Accept: "application/json", - Metadata: true - }, - abortSignal: getTokenOptions && getTokenOptions.abortSignal + abortSignal: getTokenOptions && getTokenOptions.abortSignal, + ...authRequestOptions }); - return this.sendTokenRequest(webResource); + return this.sendTokenRequest(webResource, expiresInParser); } authenticateClientCertificate( diff --git a/sdk/identity/identity/src/credentials/managedIdentityCredential.ts b/sdk/identity/identity/src/credentials/managedIdentityCredential.ts index 70e9d5d8e5ed..0050c91c7649 100644 --- a/sdk/identity/identity/src/credentials/managedIdentityCredential.ts +++ b/sdk/identity/identity/src/credentials/managedIdentityCredential.ts @@ -16,6 +16,7 @@ import { IdentityClientOptions, IdentityClient } from "../client/identityClient" export class ManagedIdentityCredential implements TokenCredential { private identityClient: IdentityClient; private _clientId: string | undefined; + private isEndpointUnavailable: boolean | null = null; constructor(clientId?: string, options?: IdentityClientOptions) { this.identityClient = new IdentityClient(options); @@ -32,10 +33,29 @@ export class ManagedIdentityCredential implements TokenCredential { * @param options The options used to configure any requests this * TokenCredential implementation might make. */ - public getToken( + public async getToken( scopes: string | string[], options?: GetTokenOptions ): Promise { - return this.identityClient.authenticateManagedIdentity(scopes, this._clientId, options); + let result: AccessToken | null = null; + + // isEndpointAvailable can be true, false, or null, + // the latter indicating that we don't yet know whether + // the endpoint is available and need to check for it. + if (this.isEndpointUnavailable !== true) { + result = + await this.identityClient.authenticateManagedIdentity( + scopes, + this.isEndpointUnavailable === null, + this._clientId, + options); + + // If authenticateManagedIdentity returns null, it means no MSI + // endpoints are available. In this case, don't try them in future + // requests. + this.isEndpointUnavailable = result === null; + } + + return result; } } diff --git a/sdk/identity/identity/test/client/identityClient.spec.ts b/sdk/identity/identity/test/client/identityClient.spec.ts index 9cf83d1d3b9c..7a869e123bf9 100644 --- a/sdk/identity/identity/test/client/identityClient.spec.ts +++ b/sdk/identity/identity/test/client/identityClient.spec.ts @@ -19,8 +19,10 @@ function isExpectedError(expectedErrorName: string): (error: any) => boolean { describe("IdentityClient", function () { it("throws an exception when an authentication request fails", async () => { const mockHttp = new MockAuthHttpClient({ - status: 400, - bodyAsText: `{ "error": "test_error", "error_description": "This is a test error" }` + authResponse: { + status: 400, + bodyAsText: `{ "error": "test_error", "error_description": "This is a test error" }` + } }); const client = new IdentityClient(mockHttp.identityClientOptions); @@ -34,7 +36,13 @@ describe("IdentityClient", function () { }); it("returns a usable error when the authentication response doesn't contain a body", async () => { - const mockHttp = new MockAuthHttpClient({ status: 500, bodyAsText: '' }); + const mockHttp = new MockAuthHttpClient({ + authResponse: { + status: 500, + bodyAsText: '' + } + }); + const client = new IdentityClient(mockHttp.identityClientOptions); await assertRejects( client.authenticateClientSecret("tenant", "client", "secret", "https://test/.default"), diff --git a/sdk/identity/identity/test/credentials/authTestUtils.ts b/sdk/identity/identity/test/credentials/authTestUtils.ts index fcbfcc657887..f8bccfb309ca 100644 --- a/sdk/identity/identity/test/credentials/authTestUtils.ts +++ b/sdk/identity/identity/test/credentials/authTestUtils.ts @@ -3,7 +3,7 @@ import assert from "assert"; import { IdentityClientOptions } from "../../src"; -import { HttpHeaders, HttpOperationResponse, WebResource, HttpClient } from "@azure/core-http"; +import { HttpHeaders, HttpOperationResponse, WebResource, HttpClient, delay, RestError } from "@azure/core-http"; export interface MockAuthResponse { status: number; @@ -12,20 +12,29 @@ export interface MockAuthResponse { bodyAsText?: string; } +export interface MockAuthHttpClientOptions { + authResponse?: MockAuthResponse, + mockTimeout?: boolean +} + export class MockAuthHttpClient implements HttpClient { private requestPromise: Promise; private requestResolve: (request: WebResource) => void; + private authResponse: MockAuthResponse; + private mockTimeout: boolean; public identityClientOptions: IdentityClientOptions; + public sendRequestCount: number = 0; - constructor(authResponse?: MockAuthResponse) { + constructor(options?: MockAuthHttpClientOptions) { + options = options || {}; this.requestResolve = () => { }; this.requestPromise = new Promise((resolve) => { this.requestResolve = resolve; }); - this.authResponse = authResponse || { + this.authResponse = options.authResponse || { status: 200, headers: new HttpHeaders(), parsedBody: { @@ -34,6 +43,11 @@ export class MockAuthHttpClient implements HttpClient { } }; + this.mockTimeout = + options.mockTimeout !== undefined + ? options.mockTimeout + : false; + this.identityClientOptions = { authorityHost: "https://authority", httpClient: this, @@ -41,13 +55,19 @@ export class MockAuthHttpClient implements HttpClient { }; } - sendRequest(httpRequest: WebResource): Promise { + async sendRequest(httpRequest: WebResource): Promise { + this.sendRequestCount++; this.requestResolve(httpRequest); - return Promise.resolve({ + + if (this.mockTimeout) { + await delay(httpRequest.timeout); + throw new RestError("Request timed out", RestError.REQUEST_SEND_ERROR); + } + return { request: httpRequest, headers: this.authResponse.headers || new HttpHeaders(), ...this.authResponse - }); + }; } getAuthRequest(): Promise { diff --git a/sdk/identity/identity/test/credentials/managedIdentityCredential.spec.ts b/sdk/identity/identity/test/credentials/managedIdentityCredential.spec.ts index 2abe1a44e14a..a97b0184ebfb 100644 --- a/sdk/identity/identity/test/credentials/managedIdentityCredential.spec.ts +++ b/sdk/identity/identity/test/credentials/managedIdentityCredential.spec.ts @@ -1,23 +1,43 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import qs from "qs"; import assert from "assert"; import { ManagedIdentityCredential } from "../../src"; -import { MockAuthHttpClient } from "./authTestUtils"; -import { WebResource } from "@azure/core-http"; +import { ImdsEndpoint, ImdsApiVersion, AppServiceMsiApiVersion } from "../../src/client/identityClient"; +import { MockAuthHttpClient, MockAuthHttpClientOptions } from "./authTestUtils"; +import { WebResource, AccessToken } from "@azure/core-http"; + +interface AuthRequestDetails { + request: WebResource, + token: AccessToken | null, + sendRequestCount: number +}; describe("ManagedIdentityCredential", function () { + afterEach(() => { + delete process.env.MSI_ENDPOINT + delete process.env.MSI_SECRET + }); + it("sends an authorization request with a modified resource name", async () => { - const authRequest = await getMsiTokenAuthRequest(["https://service/.default"], "client"); + const authDetails = await getMsiTokenAuthRequest(["https://service/.default"], "client"); + const authRequest = authDetails.request; + assert.ok(authRequest.query, "No query string parameters on request"); if (authRequest.query) { + assert.equal(authRequest.method, "GET"); assert.equal(authRequest.query["client_id"], "client"); assert.equal(decodeURIComponent(authRequest.query["resource"]), "https://service"); + assert.ok(authRequest.url.startsWith(ImdsEndpoint), "URL does not start with expected host and path"); + assert.ok(authRequest.url.indexOf(`api-version=${ImdsApiVersion}`) > -1, "URL does not have expected version"); } }); it("sends an authorization request with an unmodified resource name", async () => { - const authRequest = await getMsiTokenAuthRequest("someResource"); + const authDetails = await getMsiTokenAuthRequest("someResource"); + const authRequest = authDetails.request; + assert.ok(authRequest.query, "No query string parameters on request"); if (authRequest.query) { assert.equal(authRequest.query["client_id"], undefined); @@ -25,17 +45,102 @@ describe("ManagedIdentityCredential", function () { } }); + it("returns null when IMDS endpoint can't be detected", async function () { + // Mock a timeout so that the endpoint ping fails + const authDetails = + await getMsiTokenAuthRequest( + ["https://service/.default"], + "client", + { mockTimeout: true }); + + assert.strictEqual(authDetails.request.timeout, 500); + assert.strictEqual(authDetails.token, null); + }); + + it("doesn't try IMDS endpoint again once it can't be detected", async function () { + const mockHttpClient = new MockAuthHttpClient({ mockTimeout: true }); + const credential = new ManagedIdentityCredential( + "client", + mockHttpClient.identityClientOptions + ); + + // Run getToken twice and verify that an auth request is only + // attempted the first time. It should be skipped the second + // time after no IMDS endpoint was found. + const firstGetToken = await credential.getToken("scopes"); + const secondGetToken = await credential.getToken("scopes"); + + assert.strictEqual(firstGetToken, null); + assert.strictEqual(secondGetToken, null); + assert.strictEqual(mockHttpClient.sendRequestCount, 1); + }); + + it("sends an authorization request correctly in an App Service environment", async () => { + // Trigger App Service behavior by setting environment variables + process.env.MSI_ENDPOINT = "https://endpoint"; + process.env.MSI_SECRET = "secret"; + + const authDetails = await getMsiTokenAuthRequest(["https://service/.default"], "client", { + authResponse: { + status: 200, + parsedBody: { + token: "token", + expires_on: "06/20/2019 02:57:58 +00:00" + } + } + }); + const authRequest = authDetails.request; + + assert.ok(authRequest.query, "No query string parameters on request"); + if (authRequest.query) { + assert.equal(authRequest.method, "GET"); + assert.equal(authRequest.query["client_id"], "client"); + assert.equal(decodeURIComponent(authRequest.query["resource"]), "https://service"); + assert.ok(authRequest.url.startsWith(process.env.MSI_ENDPOINT), "URL does not start with expected host and path"); + assert.equal(authRequest.headers.get("secret"), process.env.MSI_SECRET); + assert.ok(authRequest.url.indexOf(`api-version=${AppServiceMsiApiVersion}`) > -1, "URL does not have expected version"); + if (authDetails.token) { + assert.equal(authDetails.token.expiresOnTimestamp, 1560999478000); + } else { + assert.fail("No token was returned!"); + } + } + }); + + it("sends an authorization request correctly in an Cloud Shell environment", async () => { + // Trigger Cloud Shell behavior by setting environment variables + process.env.MSI_ENDPOINT = "https://endpoint"; + + const authDetails = await getMsiTokenAuthRequest(["https://service/.default"], "client"); + const authRequest = authDetails.request; + + assert.ok(authRequest.body !== undefined, "No body on request"); + if (authRequest.body) { + const bodyParams = qs.parse(authRequest.body); + assert.equal(authRequest.method, "POST"); + assert.equal(bodyParams.client_id, "client"); + assert.equal(decodeURIComponent(bodyParams.resource), "https://service"); + assert.ok(authRequest.url.startsWith(process.env.MSI_ENDPOINT), "URL does not start with expected host and path"); + assert.equal(authRequest.headers.get("secret"), undefined); + } + }); + async function getMsiTokenAuthRequest( scopes: string | string[], - clientId?: string - ): Promise { - const mockHttpClient = new MockAuthHttpClient(); + clientId?: string, + mockAuthOptions?: MockAuthHttpClientOptions + ): Promise { + const mockHttpClient = new MockAuthHttpClient(mockAuthOptions); const credential = new ManagedIdentityCredential( clientId, mockHttpClient.identityClientOptions ); - await credential.getToken(scopes); - return mockHttpClient.getAuthRequest(); + const token = await credential.getToken(scopes); + return { + token, + request: await mockHttpClient.getAuthRequest(), + sendRequestCount: mockHttpClient.sendRequestCount + }; } }); From 92896216bd8651019e0ab43bf2ca58539ee07d31 Mon Sep 17 00:00:00 2001 From: Jonathan Turner Date: Thu, 27 Jun 2019 07:13:22 +1200 Subject: [PATCH 197/289] Async iter (#4080) Add asyncIterator polyfill and bump versions --- rush.json | 4 ++ sdk/core/core-asynciterator-polyfill/LICENSE | 21 +++++++ .../core-asynciterator-polyfill/README.md | 52 ++++++++++++++++ .../core-asynciterator-polyfill/package.json | 59 +++++++++++++++++++ .../core-asynciterator-polyfill/src/index.ts | 3 + .../core-asynciterator-polyfill/tsconfig.json | 32 ++++++++++ sdk/core/core-paging/package.json | 10 +++- sdk/core/core-paging/src/index.ts | 1 + sdk/core/core-paging/tsconfig.json | 58 ++++++++++-------- sdk/core/core-paging/types/corePaging.d.ts | 54 ++++++++--------- sdk/keyvault/keyvault-keys/package.json | 7 +-- sdk/keyvault/keyvault-keys/src/index.ts | 1 + sdk/keyvault/keyvault-secrets/package.json | 7 +-- sdk/keyvault/keyvault-secrets/src/index.ts | 1 + 14 files changed, 246 insertions(+), 64 deletions(-) create mode 100644 sdk/core/core-asynciterator-polyfill/LICENSE create mode 100644 sdk/core/core-asynciterator-polyfill/README.md create mode 100644 sdk/core/core-asynciterator-polyfill/package.json create mode 100644 sdk/core/core-asynciterator-polyfill/src/index.ts create mode 100644 sdk/core/core-asynciterator-polyfill/tsconfig.json create mode 100644 sdk/core/core-paging/src/index.ts diff --git a/rush.json b/rush.json index 6dc44f2908cc..c88380c2bd45 100644 --- a/rush.json +++ b/rush.json @@ -326,6 +326,10 @@ "packageName": "@azure/core-paging", "projectFolder": "sdk/core/core-paging" }, + { + "packageName": "@azure/core-asynciterator-polyfill", + "projectFolder": "sdk/core/core-asynciterator-polyfill" + }, { "packageName": "@azure/cosmos", "projectFolder": "sdk/cosmosdb/cosmos" diff --git a/sdk/core/core-asynciterator-polyfill/LICENSE b/sdk/core/core-asynciterator-polyfill/LICENSE new file mode 100644 index 000000000000..21071075c245 --- /dev/null +++ b/sdk/core/core-asynciterator-polyfill/LICENSE @@ -0,0 +1,21 @@ + 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/core/core-asynciterator-polyfill/README.md b/sdk/core/core-asynciterator-polyfill/README.md new file mode 100644 index 000000000000..5035bf437240 --- /dev/null +++ b/sdk/core/core-asynciterator-polyfill/README.md @@ -0,0 +1,52 @@ +# Azure Async Iterator Polyfill client library for JS + +This library acts to polyfill for Symbol.asyncIterator + +## Getting started + +### Requirements +- node.js version > 6.x +- npm install -g typescript + +### Installation +- After cloning the repo, execute `rush install` + +## Key concepts + +This is a polyfill for Symbol.asyncIterator for platforms that do not have support for it by default. + +## Examples + +To use this polyfill, just include an import of this library in your code + +```typescript +import "@azure/core-asynciterator-polyfill"; +``` + +## Next steps + +### node.js +- Set the subscriptionId and token +- Run `node samples/node-sample.js` + +### In the browser +- Set the subscriptionId and token and then run +- Open index.html file in the browser. It should show the response from GET request on the storage account. From Chrome type Ctrl + Shift + I and you can see the logs in console. + +## Troubleshooting + +To be added later. + +# Contributing + +This project welcomes contributions and suggestions. Most contributions require you to agree to a +Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us +the rights to use your contribution. For details, visit https://cla.microsoft.com. + +When you submit a pull request, a CLA-bot will automatically determine whether you need to provide +a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions +provided by the bot. You will only need to do this once across all repos using our CLA. + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or +contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/sdk/core/core-asynciterator-polyfill/package.json b/sdk/core/core-asynciterator-polyfill/package.json new file mode 100644 index 000000000000..1f733a47cee0 --- /dev/null +++ b/sdk/core/core-asynciterator-polyfill/package.json @@ -0,0 +1,59 @@ +{ + "name": "@azure/core-asynciterator-polyfill", + "author": { + "name": "Microsoft Corporation", + "email": "azsdkteam@microsoft.com", + "url": "https://github.com/Azure/azure-sdk-for-js" + }, + "version": "1.0.0-preview.1", + "description": "Polyfill for IE/Node 8 for Symbol.asyncIterator", + "tags": [ + "microsoft", + "clientruntime" + ], + "keywords": [ + "microsoft", + "clientruntime" + ], + "main": "./dist-esm/index.js", + "files": [ + "dist-esm/**/*.js", + "LICENSE", + "README.md", + "ThirdPartyNotices.txt" + ], + "license": "MIT", + "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/core/core-asynciterator-polyfill", + "repository": { + "type": "git", + "url": "git@github.com:Azure/azure-sdk-for-js.git" + }, + "bugs": { + "url": "http://github.com/Azure/azure-sdk-for-js/issues" + }, + "scripts": { + "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", + "build": "tsc -p .", + "build:test": "echo skipped", + "check-format": "prettier --list-different --config ../../.prettierrc.json \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "clean": "echo skipped", + "format": "prettier --write --config ../../.prettierrc.json \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "integration-test:browser": "echo skipped", + "integration-test:node": "echo skipped", + "integration-test": "npm run integration-test:node && npm run integration-test:browser", + "lint": "eslint -c ../../.eslintrc.json src test --ext .ts -f node_modules/eslint-detailed-reporter/lib/detailed.js -o template-lintReport.html || exit 0", + "lint:fix": "eslint \"src/**/*.ts\" \"test/**/*.ts\" -c ../../.eslintrc.json --fix --fix-type [problem,suggestion]", + "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" + }, + "sideEffects": true, + "private": true, + "dependencies": {}, + "devDependencies": {} +} diff --git a/sdk/core/core-asynciterator-polyfill/src/index.ts b/sdk/core/core-asynciterator-polyfill/src/index.ts new file mode 100644 index 000000000000..594527e5d36c --- /dev/null +++ b/sdk/core/core-asynciterator-polyfill/src/index.ts @@ -0,0 +1,3 @@ +if (typeof Symbol === undefined || !(Symbol as any).asyncIterator) { + (Symbol as any).asyncIterator = Symbol.for("Symbol.asyncIterator"); +} diff --git a/sdk/core/core-asynciterator-polyfill/tsconfig.json b/sdk/core/core-asynciterator-polyfill/tsconfig.json new file mode 100644 index 000000000000..ec89f714a5cb --- /dev/null +++ b/sdk/core/core-asynciterator-polyfill/tsconfig.json @@ -0,0 +1,32 @@ +{ + "compilerOptions": { + "module": "commonjs", + "sourceMap": true, + "newLine": "LF", + "target": "es5", + "moduleResolution": "node", + "noImplicitReturns": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "outDir": "./dist-esm", + "strict": true, + "declaration": true, + "declarationMap": true, + "importHelpers": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "lib": [ + "dom", + "dom.iterable", + "es5", + "es6", + "es7", + "esnext", + "esnext.asynciterable", + "es2015.iterable" + ] + }, + "compileOnSave": true, + "exclude": ["node_modules"], + "include": ["./src/**/*.ts"] +} diff --git a/sdk/core/core-paging/package.json b/sdk/core/core-paging/package.json index fe08c2b48554..d1e94c1bb22b 100644 --- a/sdk/core/core-paging/package.json +++ b/sdk/core/core-paging/package.json @@ -5,7 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/azure-sdk-for-js" }, - "version": "1.0.0", + "version": "1.0.0-preview.1", "description": "Core types for paging async iterable iterators", "tags": [ "microsoft", @@ -15,9 +15,11 @@ "microsoft", "clientruntime" ], + "main": "./dist-esm/index.js", "types": "./types/corePaging.d.ts", "files": [ "types/*.d.ts", + "dist-esm/**/*.js", "LICENSE", "README.md", "ThirdPartyNotices.txt" @@ -52,9 +54,11 @@ "unit-test:node": "echo skipped", "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, - "sideEffects": false, + "sideEffects": true, "private": true, - "dependencies": {}, + "dependencies": { + "@azure/core-asynciterator-polyfill": "^1.0.0-preview.1" + }, "devDependencies": { "@types/node": "^8.0.0", "@typescript-eslint/eslint-plugin": "~1.9.0", diff --git a/sdk/core/core-paging/src/index.ts b/sdk/core/core-paging/src/index.ts new file mode 100644 index 000000000000..92cf181b580d --- /dev/null +++ b/sdk/core/core-paging/src/index.ts @@ -0,0 +1 @@ +import "@azure/core-asynciterator-polyfill"; diff --git a/sdk/core/core-paging/tsconfig.json b/sdk/core/core-paging/tsconfig.json index c5867c0fdec8..d5bd64fbe1f9 100644 --- a/sdk/core/core-paging/tsconfig.json +++ b/sdk/core/core-paging/tsconfig.json @@ -1,32 +1,38 @@ { "compilerOptions": { - "module": "commonjs", - "sourceMap": true, - "newLine": "LF", - "target": "es5", - "moduleResolution": "node", - "noImplicitReturns": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "outDir": "dist", - "strict": true, - "declaration": true, - "declarationMap": true, - "importHelpers": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "lib": [ - "dom", - "dom.iterable", - "es5", - "es6", - "es7", - "esnext", - "esnext.asynciterable", - "es2015.iterable" - ] + /* Basic Options */ + "target": "es5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */, + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, + "lib": [] /* lib dependencies are triple-slash directives in lib/index.ts */, + "declaration": false /* Generates corresponding '.d.ts' file. */, + "declarationMap": false /* Generates a sourcemap for each corresponding '.d.ts' file. */, + "sourceMap": false /* Generates corresponding '.map' file. */, + + "outDir": "./dist-esm", + "stripInternal": true /* Do not emit declarations for code with @internal annotation*/, + "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"], - "include": ["./types/**/*.ts"] + "include": ["./src/**/*.ts"] } diff --git a/sdk/core/core-paging/types/corePaging.d.ts b/sdk/core/core-paging/types/corePaging.d.ts index 176fabd00130..5e98e7314ef9 100644 --- a/sdk/core/core-paging/types/corePaging.d.ts +++ b/sdk/core/core-paging/types/corePaging.d.ts @@ -1,36 +1,36 @@ +import "@azure/core-asynciterator-polyfill"; /** * @interface * An interface that tracks the settings for paged iteration */ export interface PageSettings { - /** - * @member {string} [continuationToken] The token that keeps track of where to continue the iterator - */ - continuationToken?: string; - /** - * @member {number} [pageSize] The size of the page during paged iteration - */ - maxPageSize?: number; + /** + * @member {string} [continuationToken] The token that keeps track of where to continue the iterator + */ + continuationToken?: string; + /** + * @member {number} [pageSize] The size of the page during paged iteration + */ + maxPageSize?: number; } - /** - * @interface - * An interface that allows async iterable iteration both to completion and by page. - */ +* @interface +* An interface that allows async iterable iteration both to completion and by page. +*/ export interface PagedAsyncIterableIterator { - /** - * @member {Promise} [next] The next method, part of the iteration protocol - */ - next(): Promise<{ - done: boolean; - value: T; - }>; - /** - * @member {Symbol} [asyncIterator] The connection to the async iterator, part of the iteration protocol - */ - [Symbol.asyncIterator](): PagedAsyncIterableIterator; - /** - * @member {Function} [byPage] Return an AsyncIterableIterator that works a page at a time - */ - byPage: (settings?: PageSettings) => AsyncIterableIterator; + /** + * @member {Promise} [next] The next method, part of the iteration protocol + */ + next(): Promise<{ + done: boolean; + value: T; + }>; + /** + * @member {Symbol} [asyncIterator] The connection to the async iterator, part of the iteration protocol + */ + [Symbol.asyncIterator](): PagedAsyncIterableIterator; + /** + * @member {Function} [byPage] Return an AsyncIterableIterator that works a page at a time + */ + byPage: (settings?: PageSettings) => AsyncIterableIterator; } diff --git a/sdk/keyvault/keyvault-keys/package.json b/sdk/keyvault/keyvault-keys/package.json index 5199606dac84..15d07a8c943f 100644 --- a/sdk/keyvault/keyvault-keys/package.json +++ b/sdk/keyvault/keyvault-keys/package.json @@ -2,7 +2,7 @@ "name": "@azure/keyvault-keys", "sdk-type": "client", "author": "Microsoft Corporation", - "version": "0.0.1", + "version": "4.0.0-preview.1", "license": "MIT", "description": "Isomorphic client library for Azure KeyVault's keys.", "homepage": "https://github.com/Azure/azure-sdk-for-js#readme", @@ -69,12 +69,11 @@ "sideEffects": false, "dependencies": { "@azure/core-http": "^1.0.0-preview.1", - "@azure/core-paging": "^1.0.0", + "@azure/core-paging": "^1.0.0-preview.1", + "@azure/identity": "^1.0.0-preview.1", "tslib": "^1.9.3" }, "devDependencies": { - "@azure/core-paging": "^1.0.0", - "@azure/identity": "^1.0.0-preview.1", "@microsoft/api-extractor": "^7.1.5", "@types/chai": "^4.1.6", "@types/dotenv": "^6.1.0", diff --git a/sdk/keyvault/keyvault-keys/src/index.ts b/sdk/keyvault/keyvault-keys/src/index.ts index 18126b9d9831..5dc8588aeac7 100644 --- a/sdk/keyvault/keyvault-keys/src/index.ts +++ b/sdk/keyvault/keyvault-keys/src/index.ts @@ -21,6 +21,7 @@ import { } from "@azure/core-http"; import { getDefaultUserAgentValue } from "@azure/core-http"; +import "@azure/core-paging"; import { PageSettings, PagedAsyncIterableIterator } from "@azure/core-paging"; import { TelemetryOptions, ProxyOptions, RetryOptions } from "./core"; diff --git a/sdk/keyvault/keyvault-secrets/package.json b/sdk/keyvault/keyvault-secrets/package.json index 68cdfa8bb175..6a9e636bb4c7 100644 --- a/sdk/keyvault/keyvault-secrets/package.json +++ b/sdk/keyvault/keyvault-secrets/package.json @@ -2,7 +2,7 @@ "name": "@azure/keyvault-secrets", "sdk-type": "client", "author": "Microsoft Corporation", - "version": "0.0.1", + "version": "4.0.0-preview.1", "license": "MIT", "description": "Isomorphic client library for Azure KeyVault's secrets.", "homepage": "https://github.com/Azure/azure-sdk-for-js#readme", @@ -69,14 +69,13 @@ "sideEffects": false, "dependencies": { "@azure/core-http": "^1.0.0-preview.1", - "@azure/core-paging": "^1.0.0", + "@azure/core-paging": "^1.0.0-preview.1", + "@azure/identity": "^1.0.0-preview.1", "@azure/ms-rest-azure-js": "^1.3.2", "@azure/ms-rest-js": "^1.2.6", "tslib": "^1.9.3" }, "devDependencies": { - "@azure/core-paging": "^1.0.0", - "@azure/identity": "^1.0.0-preview.1", "@microsoft/api-extractor": "^7.1.5", "@types/chai": "^4.1.6", "@types/dotenv": "^6.1.0", diff --git a/sdk/keyvault/keyvault-secrets/src/index.ts b/sdk/keyvault/keyvault-secrets/src/index.ts index ba6085d1838e..6966e841b197 100644 --- a/sdk/keyvault/keyvault-secrets/src/index.ts +++ b/sdk/keyvault/keyvault-secrets/src/index.ts @@ -21,6 +21,7 @@ import { userAgentPolicy } from "@azure/core-http"; +import "@azure/core-paging"; import { PageSettings, PagedAsyncIterableIterator } from "@azure/core-paging"; import { SecretBundle, From a10f5ffdc4c4255d21c0d90bd7f4828c0057e9ae Mon Sep 17 00:00:00 2001 From: Jonathan Turner Date: Thu, 27 Jun 2019 10:51:57 +1200 Subject: [PATCH 198/289] "Un-private packages so we can publish" (#4092) --- sdk/core/core-asynciterator-polyfill/package.json | 2 +- sdk/core/core-paging/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/core/core-asynciterator-polyfill/package.json b/sdk/core/core-asynciterator-polyfill/package.json index 1f733a47cee0..d03f6866c513 100644 --- a/sdk/core/core-asynciterator-polyfill/package.json +++ b/sdk/core/core-asynciterator-polyfill/package.json @@ -53,7 +53,7 @@ "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "sideEffects": true, - "private": true, + "private": false, "dependencies": {}, "devDependencies": {} } diff --git a/sdk/core/core-paging/package.json b/sdk/core/core-paging/package.json index d1e94c1bb22b..1649ac5ba88b 100644 --- a/sdk/core/core-paging/package.json +++ b/sdk/core/core-paging/package.json @@ -55,7 +55,7 @@ "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "sideEffects": true, - "private": true, + "private": false, "dependencies": { "@azure/core-asynciterator-polyfill": "^1.0.0-preview.1" }, From 78e28b3de81b3e84ee659cceee29aabd41db305f Mon Sep 17 00:00:00 2001 From: chradek <51000525+chradek@users.noreply.github.com> Date: Thu, 27 Jun 2019 13:07:18 -0700 Subject: [PATCH 199/289] [core-amqp] removes ms-rest-nodeauth dependency (#4104) --- sdk/core/core-amqp/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/sdk/core/core-amqp/package.json b/sdk/core/core-amqp/package.json index 3f77b8af7828..30eddefdeeed 100644 --- a/sdk/core/core-amqp/package.json +++ b/sdk/core/core-amqp/package.json @@ -53,7 +53,6 @@ "dependencies": { "@azure/abort-controller": "1.0.0-preview.1", "@azure/core-http": "^1.0.0-preview.1", - "@azure/ms-rest-nodeauth": "^0.9.2", "@types/async-lock": "^1.1.0", "@types/is-buffer": "^2.0.0", "async-lock": "^1.1.3", From ea8b637b1c5c83732d58ac6fb39a2b4840220b83 Mon Sep 17 00:00:00 2001 From: ShivangiReja <45216704+ShivangiReja@users.noreply.github.com> Date: Thu, 27 Jun 2019 13:08:21 -0700 Subject: [PATCH 200/289] [core-amqp] Update samples (#3998) --- sdk/core/core-amqp/.vscode/launch.json | 13 ++- sdk/core/core-amqp/package.json | 1 + sdk/core/core-amqp/samples/cbsAuthUsingAad.ts | 78 +++++++++++++ .../{cbsAuth.ts => cbsAuthUsingSas.ts} | 42 ++++--- .../core-amqp/samples/eventHubSendUsingAAD.ts | 62 ----------- sdk/core/core-amqp/samples/eventhubReceive.ts | 105 ------------------ sdk/core/core-amqp/samples/eventhubSend.ts | 95 ---------------- sdk/core/core-amqp/samples/receive.ts | 64 +++++++++-- sdk/core/core-amqp/samples/send.ts | 60 ++++++++-- 9 files changed, 215 insertions(+), 305 deletions(-) create mode 100644 sdk/core/core-amqp/samples/cbsAuthUsingAad.ts rename sdk/core/core-amqp/samples/{cbsAuth.ts => cbsAuthUsingSas.ts} (65%) delete mode 100644 sdk/core/core-amqp/samples/eventHubSendUsingAAD.ts delete mode 100644 sdk/core/core-amqp/samples/eventhubReceive.ts delete mode 100644 sdk/core/core-amqp/samples/eventhubSend.ts diff --git a/sdk/core/core-amqp/.vscode/launch.json b/sdk/core/core-amqp/.vscode/launch.json index 4c7f6e84b3ef..a10582e732fb 100644 --- a/sdk/core/core-amqp/.vscode/launch.json +++ b/sdk/core/core-amqp/.vscode/launch.json @@ -24,11 +24,14 @@ }, { "type": "node", - "request": "launch", - "name": "Example", - "program": "${workspaceFolder}/examples/cbsAuth.ts", - "outFiles": ["${workspaceFolder}/dist/**/*.js"], - "envFile": "${workspaceFolder}/.env" // You can take a look at the sample.env file for supported environment variables. + "request": "launch", + "name": "Example", + "program": "${file}", + "preLaunchTask": "npm: build:samples", + "outFiles": [ + "${workspaceFolder}/dist-esm/**/*.js" + ], + "envFile": "${workspaceFolder}/.env" } ] } diff --git a/sdk/core/core-amqp/package.json b/sdk/core/core-amqp/package.json index 30eddefdeeed..b48b39d087c3 100644 --- a/sdk/core/core-amqp/package.json +++ b/sdk/core/core-amqp/package.json @@ -23,6 +23,7 @@ ], "scripts": { "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", + "build:samples": "cd samples && tsc -p .", "build:test": "tsc -p . && rollup -c rollup.test.config.js 2>&1", "build": "tsc -p . && rollup -c 2>&1", "check-format": "prettier --list-different --config .prettierrc.json \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", diff --git a/sdk/core/core-amqp/samples/cbsAuthUsingAad.ts b/sdk/core/core-amqp/samples/cbsAuthUsingAad.ts new file mode 100644 index 000000000000..883bae7163b3 --- /dev/null +++ b/sdk/core/core-amqp/samples/cbsAuthUsingAad.ts @@ -0,0 +1,78 @@ +/*Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the MIT License. See License.txt in the project root for license information. + +This sample utilizes Event Hubs and demonstrates how to authenticate using AAD token credentials +obtained from using Service Principal Secrets. + +Setup : + Please ensure that your Azure Event Hubs resource is in US East, US East 2, or West Europe + region. AAD Role Based Access Control is not supported in other regions yet. + +Register a new application in AAD and assign the "owner" role to it + - See https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app + to register a new application in the Azure Active Directory. + - Note down the CLIENT_ID and TENANT_ID from the above step. + - In the "Certificates & Secrets" tab, create a secret and note that down. + - In the Azure portal, go to your Even Hubs resource and click on the Access control(IAM) + tab.Here, assign "owner" role to the registered application. +*/ + +import { + ConnectionContextBase, + CbsResponse, + EventHubConnectionConfig, + TokenType, + Constants +} from "@azure/core-amqp"; +import { EnvironmentCredential } from "@azure/identity"; + +// Define connection string and related Event Hubs entity name here +const connectionString = ""; +const eventHubName = ""; + +// Define AZURE_TENANT_ID, AZURE_CLIENT_ID and AZURE_CLIENT_SECRET of your AAD application in your environment + +const ehConnectionConfig = EventHubConnectionConfig.create(connectionString, eventHubName); +const parameters = { + config: ehConnectionConfig, + connectionProperties: { + product: "MSJSClient", + userAgent: "/js-core-amqp", + version: "0.1.0" + } +}; +const connectionContext = ConnectionContextBase.create(parameters); + +async function authenticate( + audience: string, + closeConnection: boolean = false +): Promise { + await connectionContext.cbsSession.init(); + const credential = new EnvironmentCredential(); + const tokenObject = await credential.getToken(Constants.aadEventHubsScope); + if (!tokenObject) { + throw new Error("Aad token cannot be null"); + } + const result = await connectionContext.cbsSession.negotiateClaim( + audience, + tokenObject, + TokenType.CbsTokenTypeJwt + ); + console.log("Result is: %O", result); + if (closeConnection) { + await connectionContext.connection.close(); + console.log("Successfully closed the connection."); + } + return result; +} + +async function main(): Promise { + await authenticate(ehConnectionConfig.getSenderAudience()); + /* + Add code here to create a sender or receiver link for which you have + just sent the authentication request +*/ + await connectionContext.connection.close(); +} + +main().catch((err) => console.log(err)); diff --git a/sdk/core/core-amqp/samples/cbsAuth.ts b/sdk/core/core-amqp/samples/cbsAuthUsingSas.ts similarity index 65% rename from sdk/core/core-amqp/samples/cbsAuth.ts rename to sdk/core/core-amqp/samples/cbsAuthUsingSas.ts index 96c44f2a5a17..a38bfb29f0a3 100644 --- a/sdk/core/core-amqp/samples/cbsAuth.ts +++ b/sdk/core/core-amqp/samples/cbsAuthUsingSas.ts @@ -1,21 +1,24 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +/* + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the MIT Licence. + + This sample utilizes Service Bus/Event Hubs and demonstrates how to authenticate using SharedKeyCredential. +*/ import { ConnectionContextBase, - CreateConnectionContextBaseParameters, ConnectionConfig, CbsResponse, TokenType, SharedKeyCredential -} from "../src"; -import * as dotenv from "dotenv"; -dotenv.config(); // Optional for loading environment configuration from a .env (config) file +} from "@azure/core-amqp"; + +// Define connection string and related entity path here +const connectionString = ""; +const path = ""; -export const str = process.env.CONNECTION_STRING || ""; -export const path = process.env.ENTITY_PATH; -export const connectionConfig = ConnectionConfig.create(str, path); -const parameters: CreateConnectionContextBaseParameters = { +const connectionConfig = ConnectionConfig.create(connectionString, path); +const parameters = { config: connectionConfig, connectionProperties: { product: "MSJSClient", @@ -23,7 +26,7 @@ const parameters: CreateConnectionContextBaseParameters = { version: "0.1.0" } }; -export const connectionContext = ConnectionContextBase.create(parameters); +const connectionContext = ConnectionContextBase.create(parameters); /** * audience The entity token audience in one of the following forms: @@ -57,8 +60,8 @@ export async function authenticate( closeConnection: boolean ): Promise { await connectionContext.cbsSession.init(); - const sharedTokenCredential = connectionContext.tokenCredential; - const tokenObject = sharedTokenCredential.getToken(audience); + const sharedKeyCredential = connectionContext.tokenCredential; + const tokenObject = sharedKeyCredential.getToken(audience); const result = await connectionContext.cbsSession.negotiateClaim( audience, tokenObject, @@ -72,6 +75,13 @@ export async function authenticate( return result; } -// Audience is for an EventHub or ServiceBus sender. -// You can uncomment the following line and just run this sample, if required. -// authenticate(`${config.endpoint}${path}`).catch((err) => console.log(err)); +async function main(): Promise { + await authenticate(`${connectionConfig.endpoint}${connectionConfig.entityPath}`, false); + /* + Add code here to create a sender or receiver link for which you have + just sent the authentication request +*/ + await connectionContext.connection.close(); +} + +main().catch((err) => console.log(err)); diff --git a/sdk/core/core-amqp/samples/eventHubSendUsingAAD.ts b/sdk/core/core-amqp/samples/eventHubSendUsingAAD.ts deleted file mode 100644 index 4259aa199593..000000000000 --- a/sdk/core/core-amqp/samples/eventHubSendUsingAAD.ts +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -import { - ConnectionContextBase, - CreateConnectionContextBaseParameters, - CbsResponse, - EventHubConnectionConfig, - TokenType, - Constants -} from "../src"; -import * as dotenv from "dotenv"; -dotenv.config(); // Optional for loading environment configuration from a .env (config) file -import { EnvironmentCredential } from "@azure/identity"; - -const str = process.env.CONNECTION_STRING || ""; -const path = process.env.ENTITY_PATH || ""; - -const ehConnectionConfig = EventHubConnectionConfig.create(str, path); -const parameters: CreateConnectionContextBaseParameters = { - config: ehConnectionConfig, - connectionProperties: { - product: "MSJSClient", - userAgent: "/js-core-amqp", - version: "0.1.0" - } -}; -const connectionContext = ConnectionContextBase.create(parameters); - -async function authenticate( - audience: string, - closeConnection: boolean = false -): Promise { - await connectionContext.cbsSession.init(); - const credential = new EnvironmentCredential(); - const tokenObject = await credential.getToken(Constants.aadEventHubsScope); - if (!tokenObject) { - throw new Error("Aad token cannot be null"); - } - const result = await connectionContext.cbsSession.negotiateClaim( - audience, - tokenObject, - TokenType.CbsTokenTypeJwt - ); - console.log("Result is: %O", result); - if (closeConnection) { - await connectionContext.connection.close(); - console.log("Successfully closed the connection."); - } - return result; -} - -async function main(): Promise { - await authenticate(ehConnectionConfig.getSenderAudience()); - /* - Refer to other event hub samples, and place your code here - to send/receive events -*/ - await connectionContext.connection.close(); -} - -main().catch((err) => console.log(err)); diff --git a/sdk/core/core-amqp/samples/eventhubReceive.ts b/sdk/core/core-amqp/samples/eventhubReceive.ts deleted file mode 100644 index c9140c7f6012..000000000000 --- a/sdk/core/core-amqp/samples/eventhubReceive.ts +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -import { - ConnectionContextBase, - CreateConnectionContextBaseParameters, - CbsResponse, - EventHubConnectionConfig, - TokenType, - SharedKeyCredential -} from "../src"; -import * as dotenv from "dotenv"; -dotenv.config(); // Optional for loading environment configuration from a .env (config) file -import { - Receiver, - ReceiverOptions, - EventContext, - types, - ReceiverEvents, - delay -} from "rhea-promise"; - -const str = process.env.CONNECTION_STRING || ""; -const path = process.env.ENTITY_PATH || ""; - -const ehConnectionConfig = EventHubConnectionConfig.create(str, path); -const parameters: CreateConnectionContextBaseParameters = { - config: ehConnectionConfig, - connectionProperties: { - product: "MSJSClient", - userAgent: "/js-core-amqp", - version: "0.1.0" - } -}; -const connectionContext = ConnectionContextBase.create(parameters); - -async function authenticate( - audience: string, - closeConnection: boolean = false -): Promise { - await connectionContext.cbsSession.init(); - const sharedTokenCredential = connectionContext.tokenCredential; - const tokenObject = sharedTokenCredential.getToken(audience); - const result = await connectionContext.cbsSession.negotiateClaim( - audience, - tokenObject, - TokenType.CbsTokenTypeSas - ); - console.log("Result is: %O", result); - if (closeConnection) { - await connectionContext.connection.close(); - console.log("Successfully closed the connection."); - } - return result; -} - -async function main(): Promise { - await authenticate(ehConnectionConfig.getReceiverAudience("0")); - const receiverName = "receiver-1"; - // Get messages from the past hour - const filterClause = `amqp.annotation.x-opt-enqueued-time > '${Date.now() - 3600 * 1000}'`; - const receiverAddress = ehConnectionConfig.getReceiverAddress("0"); - const receiverOptions: ReceiverOptions = { - name: receiverName, - source: { - address: receiverAddress, - filter: { - "apache.org:selector-filter:string": types.wrap_described(filterClause, 0x468c00000004) - } - }, - onSessionError: (context: EventContext) => { - const sessionError = context.session && context.session.error; - if (sessionError) { - console.log( - ">>>>> [%s] An error occurred for session of receiver '%s': %O.", - connectionContext.connection.id, - receiverName, - sessionError - ); - } - } - }; - - const receiver: Receiver = await connectionContext.connection.createReceiver(receiverOptions); - receiver.on(ReceiverEvents.message, (context: EventContext) => { - console.log("Received message: %O", context.message); - }); - receiver.on(ReceiverEvents.receiverError, (context: EventContext) => { - const receiverError = context.receiver && context.receiver.error; - if (receiverError) { - console.log( - ">>>>> [%s] An error occurred for receiver '%s': %O.", - connectionContext.connection.id, - receiverName, - receiverError - ); - } - }); - // sleeping for 2 mins to let the receiver receive messages and then closing it. - await delay(120000); - await receiver.close(); - await connectionContext.connection.close(); -} - -main().catch((err) => console.log(err)); diff --git a/sdk/core/core-amqp/samples/eventhubSend.ts b/sdk/core/core-amqp/samples/eventhubSend.ts deleted file mode 100644 index 87e614ce6e51..000000000000 --- a/sdk/core/core-amqp/samples/eventhubSend.ts +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -import { - ConnectionContextBase, - CreateConnectionContextBaseParameters, - CbsResponse, - EventHubConnectionConfig, - TokenType, - SharedKeyCredential -} from "../src"; -import * as dotenv from "dotenv"; -dotenv.config(); // Optional for loading environment configuration from a .env (config) file -import { Sender, SenderOptions, EventContext, Message, Delivery } from "rhea-promise"; - -const str = process.env.CONNECTION_STRING || ""; -const path = process.env.ENTITY_PATH || ""; - -const ehConnectionConfig = EventHubConnectionConfig.create(str, path); -const parameters: CreateConnectionContextBaseParameters = { - config: ehConnectionConfig, - connectionProperties: { - product: "MSJSClient", - userAgent: "/js-core-amqp", - version: "0.1.0" - } -}; -const connectionContext = ConnectionContextBase.create(parameters); - -async function authenticate( - audience: string, - closeConnection: boolean = false -): Promise { - await connectionContext.cbsSession.init(); - const sharedTokenCredential = connectionContext.tokenCredential; - const tokenObject = sharedTokenCredential.getToken(audience); - const result = await connectionContext.cbsSession.negotiateClaim( - audience, - tokenObject, - TokenType.CbsTokenTypeSas - ); - console.log("Result is: %O", result); - if (closeConnection) { - await connectionContext.connection.close(); - console.log("Successfully closed the connection."); - } - return result; -} - -async function main(): Promise { - await authenticate(ehConnectionConfig.getSenderAudience()); - const senderName = "sender-1"; - const senderOptions: SenderOptions = { - name: senderName, - target: { - address: ehConnectionConfig.getSenderAddress() - }, - onError: (context: EventContext) => { - const senderError = context.sender && context.sender.error; - if (senderError) { - console.log( - ">>>>> [%s] An error occurred for sender '%s': %O.", - connectionContext.connection.id, - senderName, - senderError - ); - } - }, - onSessionError: (context: EventContext) => { - const sessionError = context.session && context.session.error; - if (sessionError) { - console.log( - ">>>>> [%s] An error occurred for session of sender '%s': %O.", - connectionContext.connection.id, - senderName, - sessionError - ); - } - } - }; - - const sender: Sender = await connectionContext.connection.createSender(senderOptions); - const message: Message = { - body: "Hello World!!", - message_id: "12343434343434" - }; - - const delivery: Delivery = await sender.send(message); - console.log(">>>>>[%s] Delivery id: ", connectionContext.connection.id, delivery.id); - - await sender.close(); - await connectionContext.connection.close(); -} - -main().catch((err) => console.log(err)); diff --git a/sdk/core/core-amqp/samples/receive.ts b/sdk/core/core-amqp/samples/receive.ts index f2e72f591fff..b73174a1c7a6 100644 --- a/sdk/core/core-amqp/samples/receive.ts +++ b/sdk/core/core-amqp/samples/receive.ts @@ -1,23 +1,63 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +/* + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the MIT Licence. + + This sample demonstrates how to receive messages/events from Service Bus/Event Hubs + by authenticating the receiver link using the shared key information in the connection string +*/ -import * as dotenv from "dotenv"; -dotenv.config(); // Optional for loading environment configuration from a .env (config) file import { Receiver, ReceiverOptions, - EventContext, ReceiverEvents, delay, - types + types, + EventContext } from "rhea-promise"; -import { authenticate, connectionContext, connectionConfig, path } from "./cbsAuth"; + +import { + ConnectionContextBase, + CbsResponse, + ConnectionConfig, + TokenType, + SharedKeyCredential +} from "@azure/core-amqp"; + +// Define connection string and related entity path here +const connectionString = ""; +const path = ""; + +const connectionConfig = ConnectionConfig.create(connectionString, path); +const parameters = { + config: connectionConfig, + connectionProperties: { + product: "MSJSClient", + userAgent: "/js-core-amqp", + version: "0.1.0" + } +}; +const connectionContext = ConnectionContextBase.create(parameters); + +async function authenticate(audience: string): Promise { + await connectionContext.cbsSession.init(); + // We use the shared key information in the connection string to perform the authentication. + // If you want to use Azure Active Directory, then refer `cbsAuthUsingAad.ts` sample. + const sharedKeyCredential = connectionContext.tokenCredential; + const tokenObject = sharedKeyCredential.getToken(audience); + const result = await connectionContext.cbsSession.negotiateClaim( + audience, + tokenObject, + TokenType.CbsTokenTypeSas + ); + console.log("Result is: %O", result); + return result; +} async function main(): Promise { - await authenticate(`${connectionConfig.endpoint}${path}`, false); + await authenticate(`${connectionConfig.endpoint}${connectionConfig.entityPath}`); const receiverName = "receiver-1"; const filterClause = `amqp.annotation.x-opt-enqueued-time > '${Date.now() - 3600 * 1000}'`; // Get messages from the past hour - const receiverAddress = `${path}/ConsumerGroups/$default/Partitions/0`; // For ServiceBus "" + const receiverAddress = `${connectionConfig.entityPath}/ConsumerGroups/$default/Partitions/0`; // For ServiceBus "" const receiverOptions: ReceiverOptions = { name: receiverName, source: { @@ -31,7 +71,7 @@ async function main(): Promise { const sessionError = context.session && context.session.error; if (sessionError) { console.log( - ">>>>> [%s] An error occurred for session of receiver '%s': %O.", + "[%s] An error occurred for session of receiver '%s': %O.", connectionContext.connection.id, receiverName, sessionError @@ -48,14 +88,14 @@ async function main(): Promise { const receiverError = context.receiver && context.receiver.error; if (receiverError) { console.log( - ">>>>> [%s] An error occurred for receiver '%s': %O.", + "[%s] An error occurred for receiver '%s': %O.", connectionContext.connection.id, receiverName, receiverError ); } }); - // sleeping for 2 mins to let the receiver receive messages and then closing it. + // Waiting long enough before closing the receiver to receive messages/events await delay(120000); await receiver.close(); await connectionContext.connection.close(); diff --git a/sdk/core/core-amqp/samples/send.ts b/sdk/core/core-amqp/samples/send.ts index f1528b2a940e..1901f3a7e202 100644 --- a/sdk/core/core-amqp/samples/send.ts +++ b/sdk/core/core-amqp/samples/send.ts @@ -1,26 +1,66 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. +/* + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the MIT Licence. + + This sample demonstrates how to send messages/events to Service Bus/Event Hubs + by authenticating the sender link using the shared key information in the connection string +*/ + +import { + ConnectionContextBase, + CbsResponse, + ConnectionConfig, + TokenType, + SharedKeyCredential +} from "@azure/core-amqp"; -import * as dotenv from "dotenv"; -dotenv.config(); // Optional for loading environment configuration from a .env (config) file import { Sender, SenderOptions, EventContext, Message, Delivery } from "rhea-promise"; -import { authenticate, connectionContext, connectionConfig, path } from "./cbsAuth"; + +// Define connection string and related entity path here +const connectionString = ""; +const path = ""; + +const connectionConfig = ConnectionConfig.create(connectionString, path); +const parameters = { + config: connectionConfig, + connectionProperties: { + product: "MSJSClient", + userAgent: "/js-core-amqp", + version: "0.1.0" + } +}; +const connectionContext = ConnectionContextBase.create(parameters); + +async function authenticate(audience: string): Promise { + await connectionContext.cbsSession.init(); + // We use the shared key information in the connection string to perform the authentication. + // If you want to use Azure Active Directory, then refer `cbsAuthUsingAad.ts` sample. + const sharedKeyCredential = connectionContext.tokenCredential; + const tokenObject = sharedKeyCredential.getToken(audience); + const result = await connectionContext.cbsSession.negotiateClaim( + audience, + tokenObject, + TokenType.CbsTokenTypeSas + ); + console.log("Result is: %O", result); + return result; +} async function main(): Promise { - await authenticate(`${connectionConfig.endpoint}${path}`, false); + await authenticate(`${connectionConfig.endpoint}${connectionConfig.entityPath}`); const senderName = "sender-1"; const senderOptions: SenderOptions = { name: senderName, target: { // Address for EventHub Sender, it can be "" or "/Partitions/" // For ServiceBus Queue, it will be "" - address: `${path}` + address: `${connectionConfig.entityPath}` }, onError: (context: EventContext) => { const senderError = context.sender && context.sender.error; if (senderError) { console.log( - ">>>>> [%s] An error occurred for sender '%s': %O.", + "[%s] An error occurred for sender '%s': %O.", connectionContext.connection.id, senderName, senderError @@ -31,7 +71,7 @@ async function main(): Promise { const sessionError = context.session && context.session.error; if (sessionError) { console.log( - ">>>>> [%s] An error occurred for session of sender '%s': %O.", + "[%s] An error occurred for session of sender '%s': %O.", connectionContext.connection.id, senderName, sessionError @@ -47,7 +87,7 @@ async function main(): Promise { }; const delivery: Delivery = await sender.send(message); - console.log(">>>>>[%s] Delivery id: ", connectionContext.connection.id, delivery.id); + console.log("[%s] Delivery id: ", connectionContext.connection.id, delivery.id); await sender.close(); await connectionContext.connection.close(); From f944f51e3e220c8251ef2d5acffb0e423775f2bf Mon Sep 17 00:00:00 2001 From: Ramya Rao Date: Thu, 27 Jun 2019 13:52:33 -0700 Subject: [PATCH 201/289] Improvements to abort-controller readme (#4103) --- sdk/core/abort-controller/README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/sdk/core/abort-controller/README.md b/sdk/core/abort-controller/README.md index 8ae68e8d017c..d52dbcff03ba 100644 --- a/sdk/core/abort-controller/README.md +++ b/sdk/core/abort-controller/README.md @@ -1,15 +1,16 @@ # Azure Abort Controller library for JS -The `@azure/abort-controller` package provides `AbortController` and `AbortSignal` classes that are compatible -with the `AbortController` built into modern browsers and the `AbortSignal` used by `fetch`. -These classes are provided for use with APIs in the Azure SDK for JavaScript that accept an `AbortSignalLike` -parameter to cancel an operation. +The `@azure/abort-controller` package provides `AbortController` and `AbortSignal` classes. These classes are compatible +with the [AbortController](https://developer.mozilla.org/docs/Web/API/AbortController) built into modern browsers +and the `AbortSignal` used by [fetch](https://developer.mozilla.org/docs/Web/API/Fetch_API). +Use the `AbortController` class to create an instance of the `AbortSignal` class that can be used to cancel an operation +in an Azure SDK that accept a parameter of type `AbortSignalLike`. ## Getting started ### Installation -- Installing this library +Install this libray using npm as follows ``` npm install @azure/abort-controller @@ -28,13 +29,16 @@ Any subsequent calls to `abort()` on the same controller will have no effect. The `AbortSignal.none` static property returns an `AbortSignal` that can not be aborted. -`AbortSignals` can also be linked so that when `abort()` is called on parent signal, -it also fires on all linked signals. +Multiple instances of an `AbortSignal` can be linked so that calling `abort()` on the parent signal, +aborts all linked signals. This linkage is one-way, meaning that a parent signal can affect a linked signal, but not the other way around. To link `AbortSignals` together, pass in the parent signals to the `AbortController` constructor. ## Examples +The below examples assume that `doAsyncWork` is a function that takes a bag of properties, one of which is +of the abort signal. + ### Example 1 - basic usage ```js @@ -85,10 +89,6 @@ allTasksController.abort(); // aborts allTasksSignal, subTask subTask.abort(); // aborts only subTask ``` -## Next Steps - -Please take a look at the Examples section above to use this package. - ## Contributing This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor From a43f54b702b00f3247e39c10988c88327fe68733 Mon Sep 17 00:00:00 2001 From: Mitch Denny Date: Thu, 27 Jun 2019 13:59:28 -0700 Subject: [PATCH 202/289] Muted testhub. (#4101) --- sdk/eventhub/testhub/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/eventhub/testhub/package.json b/sdk/eventhub/testhub/package.json index e392ebcbb006..4048fbb962b2 100644 --- a/sdk/eventhub/testhub/package.json +++ b/sdk/eventhub/testhub/package.json @@ -1,8 +1,8 @@ { "name": "testhub", - "sdk-type": "client", "version": "0.1.0", "license": "MIT", + "private": true, "engine": { "node": ">=6.0.0" }, From 017c96313aa2d5fdc28fbd38b17848c5e6a694a2 Mon Sep 17 00:00:00 2001 From: chradek <51000525+chradek@users.noreply.github.com> Date: Thu, 27 Jun 2019 14:04:40 -0700 Subject: [PATCH 203/289] [Event Hubs] update readme (#4100) --- sdk/eventhub/event-hubs/README.md | 58 +++++++++++++++++-------------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/sdk/eventhub/event-hubs/README.md b/sdk/eventhub/event-hubs/README.md index 32f4f5937c2e..ffa737854939 100644 --- a/sdk/eventhub/event-hubs/README.md +++ b/sdk/eventhub/event-hubs/README.md @@ -1,13 +1,10 @@ # Azure Event Hubs client library for Javascript -Azure Event Hubs is a scalable event processing service that ingests and processes large volumes of events and data, with low latency and high reliability. +Azure Event Hubs is a highly scalable publish-subscribe service that can ingest millions of events per second and stream them to multiple consumers. This lets you process and analyze the massive amounts of data produced by your connected devices and applications. If you would like to know more about Azure Event Hubs, you may wish to review: [What is Event Hubs](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-about)? -Use the client library for Azure Event Hubs in your Node.js application to +The Azure Event Hubs client library allows you to send and receive events in your Node.js application. -- Send events to Event Hub -- Receive events from Event Hub - -[Source code](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/eventhub/event-hubs) | [Package (npm)](https://www.npmjs.com/package/@azure/event-hubs) | [API Reference Documentation](https://docs.microsoft.com/en-us/javascript/api/%40azure/event-hubs/index?view=azure-node-latest) | [Product documentation](https://azure.microsoft.com/en-us/services/event-hubs/) | [Samples](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/eventhub/event-hubs/samples) +[Source code](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/eventhub/event-hubs) | [Package (npm)](https://www.npmjs.com/package/@azure/event-hubs) | [API Reference Documentation](https://azure.github.io/azure-sdk-for-js/event-hubs/index.html) | [Product documentation](https://azure.microsoft.com/en-us/services/event-hubs/) | [Samples](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/eventhub/event-hubs/samples) **NOTE**: If you are using version 2.1.0 or lower, then please use the below links instead @@ -19,7 +16,7 @@ Use the client library for Azure Event Hubs in your Node.js application to Install the Azure Event Hubs client library using npm -`npm install @azure/event-hubs` +`npm install @azure/event-hubs@5.0.0-preview.1` **Prerequisites**: You must have an [Azure subscription](https://azure.microsoft.com/free/) and a [Event Hubs Namespace](https://docs.microsoft.com/en-us/azure/event-hubs/) to use this package. @@ -51,34 +48,34 @@ For more concepts and deeper discussion, see: [Event Hubs Features](https://docs ### Authenticate the client -Interaction with Event Hubs starts with an instance of the [EventHubClient](https://docs.microsoft.com/en-us/javascript/api/%40azure/event-hubs/eventhubclient?view=azure-node-latest) class. You can instantiate +Interaction with Event Hubs starts with an instance of the [EventHubClient](https://azure.github.io/azure-sdk-for-js/event-hubs/classes/eventhubclient.html#constructor) class. You can instantiate this class using one of the below ```javascript const client = new EventHubClient("my-connection-string", "my-event-hub"); ``` -- This constructor takes the connection string of the form 'Endpoint=sb://my-servicebus-namespace.servicebus.windows.net/;SharedAccessKeyName=my-SA-name;SharedAccessKey=my-SA-key;' and entity name to your Event Hub instance. You can get the connection string from the [Azure portal](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-get-connection-string#get-connection-string-from-the-portal) +- This constructor takes the connection string of the form 'Endpoint=sb://my-servicebus-namespace.servicebus.windows.net/;SharedAccessKeyName=my-SA-name;SharedAccessKey=my-SA-key;' and entity name to your Event Hub instance. You can get the connection string from the [Azure portal](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-get-connection-string#get-connection-string-from-the-portal). ```javascript const client = new EventHubClient("my-connection-string-with-entity-path"); ``` -- The [connection string from Azure Portal](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-get-connection-string#get-connection-string-from-the-portal) is for the entire Event Hubs namespace and will not contain the path to the desired Event Hub instance which is needed for this constructor overload. In this case, the path can be added manually by adding ";EntityPath=[[ EVENT HUB NAME ]]" to the end of the connection string. For example, ";EntityPath=my-event-hub-name". +- The [connection string from the Azure Portal](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-get-connection-string#get-connection-string-from-the-portal) is for the entire Event Hubs namespace and will not contain the path to the desired Event Hub instance which is needed for this constructor overload. In this case, the path can be added manually by adding ";EntityPath=[[ EVENT HUB NAME ]]" to the end of the connection string. For example, ";EntityPath=my-event-hub-name". If you have defined a shared access policy directly on the Event Hub itself, then copying the connection string from that Event Hub will result in a connection string that contains the path. ```javascript -const client = new EventHubClient("my-host-name", "my-event-hub", "credential"); +const client = new EventHubClient("my-host-name", "my-event-hub", credential); ``` -- This constructor takes the host name and entity name of your Event Hub instance and credential that implements the TokenCredential interface. The host name is of the format `.servicebus.windows.net`. +- This constructor takes the host name and entity name of your Event Hub instance and credential that implements the TokenCredential interface. There are implementations of the `TokenCredential` interface available in the `@azure/identity` package. The host name is of the format `.servicebus.windows.net`. ### Examples The following sections provide code snippets that cover some of the common tasks using Azure Event Hubs -- [Publish events to an Event Hub](#publish-events-to-an-hvent-hub) +- [Publish events to an Event Hub](#publish-events-to-an-event-hub) - [Consume events from an Event Hub](#consume-events-from-an-event-hub) - [Use EventHubClient to work with IotHub](#use-eventHubClient-to-work-with-IotHub) @@ -86,7 +83,7 @@ The following sections provide code snippets that cover some of the common tasks In order to publish events, you'll need to create an `EventHubProducer`. Producers may be dedicated to a specific partition, or allow the Event Hubs service to decide which partition events should be published to. It is recommended to use automatic routing when the publishing of events needs to be highly available or when event data should be distributed evenly among the partitions. In the our example, we will take advantage of automatic routing. -You can also use the [send](link) method to send multiple events using a single call. +You can also use the [send](https://azure.github.io/azure-sdk-for-js/event-hubs/classes/eventhubproducer.html#send) method to send multiple events using a single call. ```javascript const client = new EventHubClient("connectionString", "eventHubName"); @@ -94,13 +91,14 @@ const producer = client.createProducer(); await producer.send({ body: "my-event-body" }); ``` -To send events to a particular partition, use the optional parameter `partitionId` on the `createProducer` function. -Many Event Hub operations take place within the scope of a specific partition. Because partitions are owned by the Event Hub, their names are assigned at the time of creation. To understand what partitions are available, You can use the [getPartitionIds](link) +Many Event Hub operations take place within the scope of a specific partition. Because partitions are owned by the Event Hub, their names are assigned at the time of creation. To understand what partitions are available, You can use the [getPartitionIds](https://azure.github.io/azure-sdk-for-js/event-hubs/classes/eventhubclient.html#getpartitionids) function to get the ids of all available partitions in your Event Hub instance. -`createProducer` method takes an optional parameter of type [EventHubProducerOptions](link) which you can use to specify the retry options for the send operation. +The `createProducer` method takes an optional parameter of type [EventHubProducerOptions](https://azure.github.io/azure-sdk-for-js/event-hubs/interfaces/eventhubproduceroptions.html) which you can use to specify the retry options and partition id for the send operation. -`send` method takes an optional parameter of type [SendOptions](link) which you can use to specify `abortSignal` to cancel current operation. +The `send` method takes an optional parameter of type [SendOptions](https://azure.github.io/azure-sdk-for-js/event-hubs/interfaces/sendoptions.html) which you can use to specify `abortSignal` to cancel current operation. +You can also specify `partitionKey` if you did not specify a partition id when creating the producer. +All events that use the same partition key will be sent to the same partition. **Note**: When working with Azure Stream Analytics, the body of the event being sent should be a JSON object as well. For example: `body: { "message": "Hello World" }` @@ -111,12 +109,16 @@ In order to consume events, you'll need to create an `EventHubConsumer` for a sp ```javascript const client = new EventHubClient("connectionString", "eventHubName"); -const consumer = client.createConsumer("$Default", partitionIds[0], EventPosition.latest()); +const consumer = client.createConsumer( + EventHubClient.defaultConsumerGroupName, + partitionIds[0], + EventPosition.latest() +); ``` -You can use the [getPartitionIds](https://docs.microsoft.com/en-us/javascript/api/@azure/event-hubs/eventhubclient?view=azure-node-latest#getpartitionids--) function to get the ids of all available partitions in your Event Hub instance. +You can use the [getPartitionIds](https://azure.github.io/azure-sdk-for-js/event-hubs/classes/eventhubclient.html#getpartitionids) function to get the ids of all available partitions in your Event Hub instance. -`createConsumer` method takes an optional parameter of type [EventHubConsumerOptions](link) which you can use to specify the ownerLevel, the level that this consumer is currently using for partition ownership. If another consumer is currently active for the same partition with no or lower level, then it will get disconnected. If another consumer is currently active with a higher level, then this consumer will fail to connect. You can also specify retryOptions for the receive operation on the consumer. +The `createConsumer` method takes an optional parameter of type [EventHubConsumerOptions](https://azure.github.io/azure-sdk-for-js/event-hubs/interfaces/eventhubconsumeroptions.html) which you can use to specify the ownerLevel, the level that this consumer is currently using for partition ownership. If another consumer is currently active for the same partition with no or lower level, then it will get disconnected. If another consumer is currently active with a higher level, then this consumer will fail to connect. You can also specify retryOptions for the receive operation on the consumer. You can use this consumer in one of 3 ways to receive events: @@ -126,17 +128,18 @@ You can use this consumer in one of 3 ways to receive events: #### Get an array of events -Use the [receiveBatch](link) function which returns a promise that resolves to an array of events. +Use the [receiveBatch](https://azure.github.io/azure-sdk-for-js/event-hubs/classes/eventhubconsumer.html#receivebatch) function which returns a promise that resolves to an array of events. This function takes an optional parameter called `abortSignal` to cancel current operation. ```javascript -const myEvents = await consumer.receiveBatch(10); +const maxMessageCount = 10; +const myEvents = await consumer.receiveBatch(maxMessageCount); ``` #### Register event handler -Use the [receive](link) to set up event handlers and have it running as long as you need. +Use the [receive](https://azure.github.io/azure-sdk-for-js/event-hubs/classes/eventhubconsumer.html#receive) to set up event handlers and have it running as long as you need. This function takes an optional parameter called `abortSignal` to cancel current operation. @@ -155,9 +158,9 @@ await receiveHandler.stop(); #### Use async iterator -Use the [getMessageIterator](link) to get an async iterator over events +Use the [getMessageIterator](https://azure.github.io/azure-sdk-for-js/event-hubs/classes/eventhubconsumer.html#geteventiterator) to get an async iterator over events. -This function takes an optional parameter called `abortSignal` to cancel current operation. +This function takes an optional [EventIteratorOptions](https://azure.github.io/azure-sdk-for-js/event-hubs/interfaces/eventiteratoroptions.html) parameter that includes `abortSignal` to cancel the current operation. ```javascript for await (const events of consumer.getEventIterator()){ @@ -170,7 +173,7 @@ for await (const events of consumer.getEventIterator()){ You can use `EventHubClient` to work with IotHub as well. This is useful for receiving telemetry data of IotHub from the linked EventHub. Most likely the associated connection string will not have send claims. Hence getting HubRuntimeInfo or PartitionRuntimeInfo and receiving events would be the possible operations. -- Please notice that we are awaiting on the [createFromIotHubConnectionString](https://docs.microsoft.com/en-us/javascript/api/%40azure/event-hubs/eventhubclient?view=azure-node-latest#createfromiothubconnectionstring-string--clientoptions-) method to get an instance of the EventHubClient. This is different from other static methods on the client. The method talks to the IotHub endpoint to get a redirect error which contains the EventHub endpoint to talk to. It then constructs the right EventHub connection string based on the information in the redirect error and returns an instance of the EventHubClient that you can play with. +- Please notice that we are awaiting on the [createFromIotHubConnectionString](https://azure.github.io/azure-sdk-for-js/event-hubs/classes/eventhubclient.html#createfromiothubconnectionstring) method to get an instance of the EventHubClient. This is different from other static methods on the client. The method talks to the IotHub endpoint to get a redirect error which contains the EventHub endpoint to talk to. It then constructs the right EventHub connection string based on the information in the redirect error and returns an instance of the EventHubClient that you can play with. ```javascript const client = await EventHubClient.createFromIotHubConnectionString("connectionString"); @@ -213,6 +216,7 @@ export DEBUG=azure:event-hubs:error,azure-amqp-common:error,rhea-promise:error,r ### Logging to a file - Set the `DEBUG` environment variable as shown above and then run your test script as follows: + - Logging statements from your test script go to `out.log` and logging statements from the sdk go to `debug.log`. ```bash node your-test-script.js > out.log 2>debug.log From 5c7ddb38f8b2874d625f88e80413cb2ad10f81d4 Mon Sep 17 00:00:00 2001 From: David Wilson Date: Thu, 27 Jun 2019 14:08:32 -0700 Subject: [PATCH 204/289] Migrate over fixes from @azure/ms-rest-js for storage libs (#4106) These changes come from the following two commits: Azure/ms-rest-js@bbeb122 Azure/ms-rest-js@d7ed995 --- sdk/core/core-http/lib/axiosHttpClient.ts | 9 +++++++++ sdk/core/core-http/test/mockHttp.ts | 6 +++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/sdk/core/core-http/lib/axiosHttpClient.ts b/sdk/core/core-http/lib/axiosHttpClient.ts index a4ba6701f68f..164d48b97993 100644 --- a/sdk/core/core-http/lib/axiosHttpClient.ts +++ b/sdk/core/core-http/lib/axiosHttpClient.ts @@ -143,6 +143,15 @@ export class AxiosHttpClient implements HttpClient { config.httpAgent = agent.agent; } } + // This hack is still required with 0.19.0 version of axios since axios tries to merge the + // Content-Type header from it's config[""] where the method name is lower-case, + // into the request header. It could be possible that the Content-Type header is not present + // in the original request and this would create problems while creating the signature for + // storage data plane sdks. + axios.interceptors.request.use((config: AxiosRequestConfig) => ({ + ...config, + method: (config.method as Method) && (config.method as Method).toUpperCase() as Method + })); res = await axios.request(config); } catch (err) { diff --git a/sdk/core/core-http/test/mockHttp.ts b/sdk/core/core-http/test/mockHttp.ts index 2846c73df5bf..1600d54541cd 100644 --- a/sdk/core/core-http/test/mockHttp.ts +++ b/sdk/core/core-http/test/mockHttp.ts @@ -4,7 +4,7 @@ import xhrMock, { proxy } from "xhr-mock"; import MockAdapter from "axios-mock-adapter"; import { isNode, HttpMethods } from "../lib/coreHttp"; -import { AxiosRequestConfig, AxiosInstance } from "axios"; +import { AxiosRequestConfig, AxiosInstance, Method } from "axios"; export type UrlFilter = string | RegExp; @@ -41,6 +41,10 @@ class NodeHttpMock implements HttpMockFacade { throw new Error("Axios instance cannot be undefined"); } this._mockAdapter = new MockAdapter(axiosInstance); + axiosInstance.interceptors.request.use((config: AxiosRequestConfig) => ({ + ...config, + method: (config.method as Method) && (config.method as Method).toLowerCase() as Method + })); } setup(): void { From 11d178ffb0f6fb521d7989c4ba5d07a619838796 Mon Sep 17 00:00:00 2001 From: David Wilson Date: Thu, 27 Jun 2019 14:12:27 -0700 Subject: [PATCH 205/289] Set @azure/identity version to 1.0.0-preview.1 (#4107) --- sdk/identity/identity/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/identity/identity/package.json b/sdk/identity/identity/package.json index 1a4985aa2516..45b9f8bd0924 100644 --- a/sdk/identity/identity/package.json +++ b/sdk/identity/identity/package.json @@ -1,7 +1,7 @@ { "name": "@azure/identity", "sdk-type": "client", - "version": "1.0.0-preview.1.0", + "version": "1.0.0-preview.1", "description": "Provides credential implementations for Azure SDK libraries that can authenticate with Azure Active Directory", "main": "dist/index.js", "module": "dist-esm/src/index.js", From 1349b2c0d95dcd7669bcf4c947e32732b130f562 Mon Sep 17 00:00:00 2001 From: Ramya Rao Date: Thu, 27 Jun 2019 14:36:58 -0700 Subject: [PATCH 206/289] Improve README for polyfill and core-paging library (#4105) --- .../core-asynciterator-polyfill/README.md | 34 ++++++++++--------- sdk/core/core-paging/README.md | 30 +++++++--------- 2 files changed, 31 insertions(+), 33 deletions(-) diff --git a/sdk/core/core-asynciterator-polyfill/README.md b/sdk/core/core-asynciterator-polyfill/README.md index 5035bf437240..0618bd80e822 100644 --- a/sdk/core/core-asynciterator-polyfill/README.md +++ b/sdk/core/core-asynciterator-polyfill/README.md @@ -1,19 +1,26 @@ # Azure Async Iterator Polyfill client library for JS -This library acts to polyfill for Symbol.asyncIterator +This library provides a polyfill for [Symbol.asyncIterator](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator) +for platforms that do not have support for it by default. ## Getting started -### Requirements -- node.js version > 6.x -- npm install -g typescript - ### Installation -- After cloning the repo, execute `rush install` + +If using this as part of another project in the [azure-sdk-for-js](https://github.com/Azure/azure-sdk-for-js) repo, +then run `rush install` after cloning the repo. + +Otherwise, use npm to install this package in your application as follows + +``` +npm install @azure/core-asynciterator-polyfill +``` ## Key concepts -This is a polyfill for Symbol.asyncIterator for platforms that do not have support for it by default. +[Symbol.asyncIterator](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator) is not supported +in all platforms and therefore you might need a polyfill in order to get it working on such platforms. Importing the polyfill from +this library lets you use the iterator in your applications. ## Examples @@ -25,19 +32,14 @@ import "@azure/core-asynciterator-polyfill"; ## Next steps -### node.js -- Set the subscriptionId and token -- Run `node samples/node-sample.js` - -### In the browser -- Set the subscriptionId and token and then run -- Open index.html file in the browser. It should show the response from GET request on the storage account. From Chrome type Ctrl + Shift + I and you can see the logs in console. +Try out this package in your application if you are working on platforms that do not have support for +[Symbol.asyncIterator](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator) and provide feedback! ## Troubleshooting -To be added later. +Log an issue at https://github.com/Azure/azure-sdk-for-js/issues -# Contributing +## Contributing This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us diff --git a/sdk/core/core-paging/README.md b/sdk/core/core-paging/README.md index f01b5bf86965..b98586f2f192 100644 --- a/sdk/core/core-paging/README.md +++ b/sdk/core/core-paging/README.md @@ -1,17 +1,19 @@ # Azure Core Paging client library for JS -[![Build Status](https://dev.azure.com/azure-public/adx/_apis/build/status/public.Azure.ms-rest-js)](https://dev.azure.com/azure-public/adx/_build/latest?definitionId=6) - -Core types for paging async iterable iterators +This library provides core types for paging async iterable iterators. ## Getting started -### Requirements -- node.js version > 6.x -- npm install -g typescript - ### Installation -- After cloning the repo, execute `rush install` + +If using this as part of another project in the [azure-sdk-for-js](https://github.com/Azure/azure-sdk-for-js) repo, +then run `rush install` after cloning the repo. + +Otherwise, use npm to install this package in your application as follows + +```javascript +npm install @azure/core-paging +``` ## Key concepts @@ -49,19 +51,13 @@ And using the types: ## Next steps -### node.js -- Set the subscriptionId and token -- Run `node samples/node-sample.js` - -### In the browser -- Set the subscriptionId and token and then run -- Open index.html file in the browser. It should show the response from GET request on the storage account. From Chrome type Ctrl + Shift + I and you can see the logs in console. +Try out this package in your application when dealing with async iterable iterators and provide feedback! ## Troubleshooting -To be added later. +Log an issue at https://github.com/Azure/azure-sdk-for-js/issues -# Contributing +## Contributing This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us From 02e4344f378fbf81b0a3837ac1217890e8ef7c02 Mon Sep 17 00:00:00 2001 From: chradek <51000525+chradek@users.noreply.github.com> Date: Thu, 27 Jun 2019 16:21:56 -0700 Subject: [PATCH 207/289] [Event Hubs] adds asyncIterator symbol pollyfill (#4109) --- sdk/eventhub/event-hubs/README.md | 2 +- sdk/eventhub/event-hubs/package.json | 3 ++- sdk/eventhub/event-hubs/src/receiver.ts | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/sdk/eventhub/event-hubs/README.md b/sdk/eventhub/event-hubs/README.md index ffa737854939..b22e661c1dd6 100644 --- a/sdk/eventhub/event-hubs/README.md +++ b/sdk/eventhub/event-hubs/README.md @@ -20,7 +20,7 @@ Install the Azure Event Hubs client library using npm **Prerequisites**: You must have an [Azure subscription](https://azure.microsoft.com/free/) and a [Event Hubs Namespace](https://docs.microsoft.com/en-us/azure/event-hubs/) to use this package. -If you are using this package in a Node.js application, then use Node.js 6.x or higher. +If you are using this package in a Node.js application, then use Node.js 8.x or higher. ### Configure Typescript diff --git a/sdk/eventhub/event-hubs/package.json b/sdk/eventhub/event-hubs/package.json index 7b9f63f6079d..00731d0cd6c9 100644 --- a/sdk/eventhub/event-hubs/package.json +++ b/sdk/eventhub/event-hubs/package.json @@ -24,7 +24,7 @@ "./dist/index.js": "./browser/index.js" }, "engine": { - "node": ">=6.0.0" + "node": ">=8.0.0" }, "files": [ "dist/", @@ -64,6 +64,7 @@ "dependencies": { "@azure/abort-controller": "1.0.0-preview.1", "@azure/core-amqp": "^1.0.0-preview.1", + "@azure/core-asynciterator-polyfill": "^1.0.0-preview.1", "async-lock": "^1.1.3", "debug": "^3.1.0", "is-buffer": "^2.0.3", diff --git a/sdk/eventhub/event-hubs/src/receiver.ts b/sdk/eventhub/event-hubs/src/receiver.ts index 626341174e36..c14c95995f47 100644 --- a/sdk/eventhub/event-hubs/src/receiver.ts +++ b/sdk/eventhub/event-hubs/src/receiver.ts @@ -12,6 +12,7 @@ import { BatchingReceiver } from "./batchingReceiver"; import { AbortSignalLike } from "@azure/abort-controller"; import { throwErrorIfConnectionClosed } from "./util/error"; import { EventPosition } from "./eventPosition"; +import "@azure/core-asynciterator-polyfill"; /** * Options to pass when creating an iterator to iterate over events From 5f045911be01aacbdce3025a9dd5bb0dab223f7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez?= Date: Fri, 28 Jun 2019 13:59:54 -0400 Subject: [PATCH 208/289] [JS] [KeyVault] CHANGELOG files (#4118) * [JS] [KeyVault] CHANGELOG Added the reference to the release notes for 4.0.0-preview.1 --- sdk/keyvault/keyvault-keys/CHANGELOG.md | 5 +++++ sdk/keyvault/keyvault-secrets/CHANGELOG.md | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 sdk/keyvault/keyvault-keys/CHANGELOG.md create mode 100644 sdk/keyvault/keyvault-secrets/CHANGELOG.md diff --git a/sdk/keyvault/keyvault-keys/CHANGELOG.md b/sdk/keyvault/keyvault-keys/CHANGELOG.md new file mode 100644 index 000000000000..ca1936b72834 --- /dev/null +++ b/sdk/keyvault/keyvault-keys/CHANGELOG.md @@ -0,0 +1,5 @@ +# Release History + +## 4.0.0-preview.1 (2019-06-28) +For release notes and more information please visit +https://aka.ms/azure-sdk-preview1-js diff --git a/sdk/keyvault/keyvault-secrets/CHANGELOG.md b/sdk/keyvault/keyvault-secrets/CHANGELOG.md new file mode 100644 index 000000000000..ca1936b72834 --- /dev/null +++ b/sdk/keyvault/keyvault-secrets/CHANGELOG.md @@ -0,0 +1,5 @@ +# Release History + +## 4.0.0-preview.1 (2019-06-28) +For release notes and more information please visit +https://aka.ms/azure-sdk-preview1-js From 799428d0ebb4f34dca45e0fae7d235a95131fedf Mon Sep 17 00:00:00 2001 From: Ramya Rao Date: Fri, 28 Jun 2019 12:30:40 -0700 Subject: [PATCH 209/289] [core-amqp] Improved README and Changelog (#4119) --- sdk/core/core-amqp/README.md | 240 ++++++++++---------------------- sdk/core/core-amqp/changelog.md | 20 +++ 2 files changed, 93 insertions(+), 167 deletions(-) diff --git a/sdk/core/core-amqp/README.md b/sdk/core/core-amqp/README.md index b4d84cd2f163..faa73d23f10f 100644 --- a/sdk/core/core-amqp/README.md +++ b/sdk/core/core-amqp/README.md @@ -1,182 +1,102 @@ # Azure Core AMQP client library for AMQP operations -Library that provides common functionality for different **Azure** Javascript libraries using amqp protocol. -Some of the common functionalities include: - -- CBS Auth -- Request-Response link for sending request and receiving response over AMQP -- Error translation of different AMQP error codes. -- Creation of `ConnectionConfig` by parsing the connection-string -- AMQP message header and message property transformation -- AMQP message data transformation (encoding/decoding) that most AMQP based Azure services use for communication -- RetryPolicy for retrying different operations +Azure Core AMQP is a library that provides common functionality for **Azure** Javascript +libraries that use [AMQP protocol](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-amqp-protocol-guide) +like the ones for Azure Service Bus and Azure Event Hubs. ## Getting started -### Pre-requisite - -- **Node.js version: 6.x or higher.** -- We would **still encourage you** to install the latest available LTS version at any given time from https://nodejs.org. **It is a good practice to always install the latest available LTS version of node.js.** -- Installing node.js on **Windows or macOS** is very simple with available installers on the [node.js website](https://nodejs.org). If you are using a **linux based OS**, then you can find easy to follow, one step installation instructions over [here](https://nodejs.org/en/download/package-manager/). - ### Installation -- Installing this library +Install this library using npm as follows: ```bash npm install @azure/core-amqp ``` -- [`rhea-promise`](https://github.com/amqp/rhea-promise) is a peer dependency. You need to explicitly install this library as a dependency - in your application. - -### IDE - -This sdk has been developed in [TypeScript](https://typescriptlang.org) and has good source code documentation. It is highly recommended to use [vscode](https://code.visualstudio.com) -or any other IDE that provides better intellisense and exposes the full power of source code documentation. +**Note**: [`rhea-promise`](https://github.com/amqp/rhea-promise) is a peer dependency. You need to explicitly install this library as a dependency +in your application. ## Key concepts -This SDK houses core AMQP common related functionality in use bu Azure SDKs that use the protocol. - -## Examples +Some of the key features of Azure Core AMQP library are: -Please take a look at the [samples](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/core/core-amqp/samples) directory for detailed samples. -You can run the samples by cloning the repo or copy pasting the below sample in your sample.js file. +- [Claims based Authorization](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-amqp-protocol-guide#claims-based-authorization) +- Request-Response link for [sending request and receiving response over AMQP](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-amqp-protocol-guide#amqp-management) +- A Data Transformer class to encode given data to an AMQP message and decode a given AMQP message. Useful for sending and receiving messages that are not of type Buffer. +- Error translation of AMQP error codes along with errors specific to Azure Service Bus and Azure Event Hubs. +- RetryPolicy for retrying a given operation if a retryable error was encountered. -```bash -- git clone https://github.com/Azure/azure-sdk-for-js.git -- cd azure-sdk-for-js/sdk/core/core-amqp -- npm i -- npm i -g typescript #This is optional. However it is useful to have typescript installed globally on your box -- npm i -g ts-node #This is optional. However it is useful to have ts-node installed globally on your box -# Make sure to set the environment variables and then run -- ts-node ./samples/cbsAuth.ts -``` +## Examples -The samples below are generic for EventHubs and Servicebus. You can find EventHub specific samples, -in the [samples](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/core/core-amqp/samples) directory. +The examples below expect a connection string to a Azure Service Bus or Azure Event Hubs instance. +The entity path refers to an Event Hub name in case of Azure Event Hubs and a queue or a topic name +in case of Azure Service Bus. -## Example 1 - CBS (Claims Based Authorization Specification) example +## Claims Based Authorization -You can find more information about cbs authorization over [here](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-amqp-protocol-guide#claims-based-authorization). +[Claims Based Authorization](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-amqp-protocol-guide#claims-based-authorization) +need to be done for every AMQP link that your application creates. The claims also has to be renewed periodically. +For more details on CBS, please see the [CBS Specification](https://www.oasis-open.org/committees/download.php/62097/amqp-cbs-v1.0-wd05.doc). -NOTE: The code block below has been later referred to as "./cbsAuth". +In the below example, we use the Shared Key details present in the connection string to create a SAS token. +This token is then used to make a request on the \$cbs link to carry out Claims Based Authorization for a link to the given entity +in Azure Service Bus or Azure Event Hubs. ```js -const { ConnectionContextBase, ConnectionConfig, CbsResponse } = require("@azure/core-amqp"); -const dotenv = require("dotenv"); -dotenv.config(); // Optional for loading environment configuration from a .env (config) file - -export const str = process.env.CONNECTION_STRING || ""; -export const path = process.env.ENTITY_PATH; -export const connectionConfig = ConnectionConfig.create(str, path); -const parameters = { - config: connectionConfig, - connectionProperties: { - product: "MSJSClient", - userAgent: "/js-core-amqp", - version: "0.1.0" - } -}; -export const connectionContext = ConnectionContextBase.create(parameters); - -/** - * audience The entity token audience in one of the following forms: - * - * - **ServiceBus** - * - **Sender** - * - `"sb://.servicebus.windows.net/"` - * - `"sb://.servicebus.windows.net/"` - * - * - **Receiver** - * - `"sb://.servicebus.windows.net/"` - * - `"sb://.servicebus.windows.net/"` - * - * - **ManagementClient** - * - `"sb://.servicebus.windows.net//$management"`. - * - `"sb://.servicebus.windows.net//$management"`. - * - * - **EventHubs** - * - **Sender** - * - `"sb://.servicebus.windows.net/"` - * - `"sb://.servicebus.windows.net//Partitions/"`. - * - * - **Receiver** - * - `"sb://.servicebus.windows.net//ConsumerGroups//Partitions/"`. - * - * - **ManagementClient** - * - `"sb://.servicebus.windows.net//$management"`. - */ -export async function authenticate(audience, closeConnection = false) { - await connectionContext.cbsSession.init(); - const tokenObject = await connectionContext.tokenProvider.getToken(audience); - const result = await connectionContext.cbsSession.negotiateClaim(audience, tokenObject); - console.log(`Result is: ${result}`); - if (closeConnection) { - await connectionContext.connection.close(); - console.log("Successfully closed the connection."); - } - return result; -} - -//Audience is for an EventHub or ServiceBus sender. -// You can uncomment the following line and just run this sample, if required. -// authenticate(`${config.endpoint}${path}`).catch((err) => console.log(err)); +const connectionConfig = ConnectionConfig.create( + "your-connection-string-with-shared-key", + "entity-path" +); +const connectionContext = ConnectionContextBase.create({ config: connectionConfig }); +const audience = `${connectionConfig.endpoint}${connectionConfig.entityPath}`; + +// Initialize a $cbs link with the service +await connectionContext.cbsSession.init(); + +// Use the SharedKeyCredential on the ConnectionContext to get the SAS token +const token = await connectionContext.tokenCredential.getToken(audience); + +// Use the SAS token to carry out the Claims Based Authorization +const result = await connectionContext.cbsSession.negotiateClaim(audience, tokenObject); +console.log(`Result is: ${result}`); ``` -## Example 2 - Send a message +## Create a sender link -Building on the above mentioned cbs auth sample, after authentication, we can send a message to EventHub or ServiceBus. +After you have run the sample code in the [Claims Based Authorization example](#claims-based-authorization), +you can use the `ConnectionContext.connection` to create a sender link as shown below. ```js -const dotenv = require("dotenv"); -dotenv.config(); // Optional for loading environment configuration from a .env (config) file -const { Sender, SenderOptions, EventContext, Message, Delivery } = require("rhea-promise"); -const { authenticate, connectionContext, connectionConfig, path } = require("./cbsAuth"); - async function main() { - await authenticate(`${connectionConfig.endpoint}${path}`); - const senderName = "sender-1"; + const connectionConfig = ConnectionConfig.create( + "your-connection-string-with-shared-key", + "entity-path" + ); + const connectionContext = ConnectionContextBase.create({ config: connectionConfig }); + const senderName = "your-sender-name"; const senderOptions = { name: senderName, target: { - // Address for EventHub Sender, it can be "" or "/Partitions/" - // For ServiceBus Queue, it will be "" - address: `${path}` + // For an EventHub Sender bound to a partition, the address will be "/Partitions/" + address: `${connectionConfig.entityPath}` }, onError: (context) => { const senderError = context.sender && context.sender.error; if (senderError) { - console.log( - ">>>>> [%s] An error occurred for sender '%s': %O.", - connectionContext.connection.id, - senderName, - senderError - ); + console.log("An error occurred for sender '%s': %O.", senderName, senderError); } }, onSessionError: (context) => { const sessionError = context.session && context.session.error; if (sessionError) { - console.log( - ">>>>> [%s] An error occurred for session of sender '%s': %O.", - connectionContext.connection.id, - senderName, - sessionError - ); + console.log("An error occurred for session of sender '%s': %O.", senderName, sessionError); } } }; const sender = await connectionContext.connection.createSender(senderOptions); - const message = { - body: "Hello World!!", - message_id: "12343434343434" - }; - - const delivery = await sender.send(message); - console.log(">>>>>[%s] Delivery id: ", connectionContext.connection.id, delivery.id); + const delivery = await sender.send({ body: "your-message-body" }); await sender.close(); await connectionContext.connection.close(); @@ -185,29 +105,19 @@ async function main() { main().catch((err) => console.log(err)); ``` -## Example 3 - Receiving a message +## Create a receiver link -Building on the auth sample, post authentication we can receive messages from an EventHub or ServiceBus. +After you have run the sample code in the [Claims Based Authorization example](#claims-based-authorization), +you can use the `ConnectionContext.connection` to create a receiver link as shown below. ```js -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for license information. - -const dotenv = require("dotenv"); -dotenv.config(); // Optional for loading environment configuration from a .env (config) file -const { - Receiver, - ReceiverOptions, - EventContext, - ReceiverEvents, - delay, - types -} = require("rhea-promise"); -const { authenticate, connectionContext, connectionConfig, path } = require("./cbsAuth"); - async function main() { - await authenticate(`${connectionConfig.endpoint}${path}`); - const receiverName = "receiver-1"; + const connectionConfig = ConnectionConfig.create( + "your-connection-string-with-shared-key", + "entity-path" + ); + const connectionContext = ConnectionContextBase.create({ config: connectionConfig }); + const receiverName = "your-receiver-name"; const filterClause = `amqp.annotation.x-opt-enqueued-time > '${Date.now() - 3600 * 1000}'`; // Get messages from the past hour const receiverAddress = `${path}/ConsumerGroups/$default/Partitions/0`; // For ServiceBus "" const receiverOptions = { @@ -219,12 +129,17 @@ async function main() { "apache.org:selector-filter:string": types.wrap_described(filterClause, 0x468c00000004) } }, + onError: (context) => { + const receiverError = context.receiver && context.receiver.error; + if (receiverError) { + console.log("An error occurred for receiver '%s': %O.", receiverName, receiverError); + } + }, onSessionError: (context) => { const sessionError = context.session && context.session.error; if (sessionError) { console.log( - ">>>>> [%s] An error occurred for session of receiver '%s': %O.", - connectionContext.connection.id, + "An error occurred for session of receiver '%s': %O.", receiverName, sessionError ); @@ -236,20 +151,11 @@ async function main() { receiver.on(ReceiverEvents.message, (context) => { console.log("Received message: %O", context.message); }); - receiver.on(ReceiverEvents.receiverError, (context) => { - const receiverError = context.receiver && context.receiver.error; - if (receiverError) { - console.log( - ">>>>> [%s] An error occurred for receiver '%s': %O.", - connectionContext.connection.id, - receiverName, - receiverError - ); - } - }); + // sleeping for 2 mins to let the receiver receive messages and then closing it. await delay(120000); await receiver.close(); + await connectionContext.connection.close(); } @@ -260,7 +166,7 @@ main().catch((err) => console.log(err)); You can set the following environment variable to get the debug logs. -- Getting debug logs from the Event Hub SDK +- Getting debug logs from the Event Hub SDK. ```bash export DEBUG=azure:core-amqp* @@ -302,7 +208,7 @@ export DEBUG=azure-core-amqp:error,rhea-promise:error,rhea:events,rhea:frames,rh # Next steps -Please take a look at Examples section above to use the package. +Please take a look at the [samples](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/core/core-amqp/samples) directory for detailed samples. # Contributing diff --git a/sdk/core/core-amqp/changelog.md b/sdk/core/core-amqp/changelog.md index e69de29bb2d1..f27c5b4c337d 100644 --- a/sdk/core/core-amqp/changelog.md +++ b/sdk/core/core-amqp/changelog.md @@ -0,0 +1,20 @@ +## 1.0.0-preview.1.0 - 28th June, 2019 + +This library is based off of the [@azure/amqp-common](https://www.npmjs.com/package/@azure/amqp-common) +library. Both are meant to contain common functionality required by Azure Javascript libraries that +use the [AMQP protocol](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-amqp-protocol-guide) +like the ones for Azure Service Bus and Azure Event Hubs. + +Key differences between this library and the older @azure/amqp-common are: + +- Supports the new [@azure/identity](https://www.npmjs.com/package/@azure/identity) library instead of + the [@azure/ms-restnodeauth](https://www.npmjs.com/package/@azure/ms-rest-nodeauth). Therefore, the + `AADTokenProvider` class no longer exists as the credentials from the @azure/identity library can be + directly used to get the tokens. +- The `SASTokenProvider` is renamed to `SharedKeyCredential` to keep in sync with the use of the term + "credential" as used by @azure/identity to get tokens. + +New features in this library compared to the older @azure/amqp-common are: + +- The `sendRequest()` function in the `RequestResponseLink` class now supports the use of an abort + signal via the `SendRequestOptions` so that the request can be cancelled. From 85ac7486fdbd4a840036cad09653e44ba8ca2328 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Fri, 28 Jun 2019 12:37:58 -0700 Subject: [PATCH 210/289] Generate @azure/arm-netapp package (#4120) * Generate @azure/arm-netapp package * Bump the version --- sdk/netapp/arm-netapp/README.md | 2 + sdk/netapp/arm-netapp/package.json | 8 +- .../src/azureNetAppFilesManagementClient.ts | 80 +++++++++++++++++-- ...azureNetAppFilesManagementClientContext.ts | 4 +- sdk/netapp/arm-netapp/src/models/index.ts | 46 ++++++----- sdk/netapp/arm-netapp/src/models/mappers.ts | 25 +++++- .../arm-netapp/src/models/parameters.ts | 2 +- .../arm-netapp/src/operations/accounts.ts | 1 + sdk/netapp/arm-netapp/src/operations/pools.ts | 1 + .../arm-netapp/src/operations/snapshots.ts | 1 + .../arm-netapp/src/operations/volumes.ts | 1 + 11 files changed, 134 insertions(+), 37 deletions(-) diff --git a/sdk/netapp/arm-netapp/README.md b/sdk/netapp/arm-netapp/README.md index 30a0e6b785ae..4dd5a8703480 100644 --- a/sdk/netapp/arm-netapp/README.md +++ b/sdk/netapp/arm-netapp/README.md @@ -94,3 +94,5 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to ## Related projects - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) + +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/netapp/arm-netapp/README.png) diff --git a/sdk/netapp/arm-netapp/package.json b/sdk/netapp/arm-netapp/package.json index 0c68e18c46d1..d0472f7ebbb3 100644 --- a/sdk/netapp/arm-netapp/package.json +++ b/sdk/netapp/arm-netapp/package.json @@ -2,7 +2,7 @@ "name": "@azure/arm-netapp", "author": "Microsoft Corporation", "description": "AzureNetAppFilesManagementClient Library with typescript type definitions for node.js and browser.", - "version": "3.0.0", + "version": "4.0.0", "dependencies": { "@azure/ms-rest-azure-js": "^1.3.2", "@azure/ms-rest-js": "^1.8.1", @@ -26,13 +26,13 @@ "rollup-plugin-sourcemaps": "^0.4.2", "uglify-js": "^3.4.9" }, - "homepage": "https://github.com/azure/azure-sdk-for-js", + "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/netapp/arm-netapp", "repository": { "type": "git", - "url": "https://github.com/azure/azure-sdk-for-js.git" + "url": "https://github.com/Azure/azure-sdk-for-js.git" }, "bugs": { - "url": "https://github.com/azure/azure-sdk-for-js/issues" + "url": "https://github.com/Azure/azure-sdk-for-js/issues" }, "files": [ "dist/**/*.js", diff --git a/sdk/netapp/arm-netapp/src/azureNetAppFilesManagementClient.ts b/sdk/netapp/arm-netapp/src/azureNetAppFilesManagementClient.ts index 7dab36053434..e84f158ea48d 100644 --- a/sdk/netapp/arm-netapp/src/azureNetAppFilesManagementClient.ts +++ b/sdk/netapp/arm-netapp/src/azureNetAppFilesManagementClient.ts @@ -46,25 +46,46 @@ class AzureNetAppFilesManagementClient extends AzureNetAppFilesManagementClientC * Check if a resource name is available. * @summary Check resource name availability * @param location The location + * @param name Resource name to verify. + * @param type Resource type used for verification. Possible values include: + * 'Microsoft.NetApp/netAppAccounts', 'Microsoft.NetApp/netAppAccounts/capacityPools', + * 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes', + * 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes/snapshots' + * @param resourceGroup Resource group name. * @param [options] The optional parameters * @returns Promise */ - checkNameAvailability(location: string, options?: msRest.RequestOptionsBase): Promise; + checkNameAvailability(location: string, name: string, type: Models.CheckNameResourceTypes, resourceGroup: string, options?: msRest.RequestOptionsBase): Promise; /** * @param location The location + * @param name Resource name to verify. + * @param type Resource type used for verification. Possible values include: + * 'Microsoft.NetApp/netAppAccounts', 'Microsoft.NetApp/netAppAccounts/capacityPools', + * 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes', + * 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes/snapshots' + * @param resourceGroup Resource group name. * @param callback The callback */ - checkNameAvailability(location: string, callback: msRest.ServiceCallback): void; + checkNameAvailability(location: string, name: string, type: Models.CheckNameResourceTypes, resourceGroup: string, callback: msRest.ServiceCallback): void; /** * @param location The location + * @param name Resource name to verify. + * @param type Resource type used for verification. Possible values include: + * 'Microsoft.NetApp/netAppAccounts', 'Microsoft.NetApp/netAppAccounts/capacityPools', + * 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes', + * 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes/snapshots' + * @param resourceGroup Resource group name. * @param options The optional parameters * @param callback The callback */ - checkNameAvailability(location: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; - checkNameAvailability(location: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + checkNameAvailability(location: string, name: string, type: Models.CheckNameResourceTypes, resourceGroup: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + checkNameAvailability(location: string, name: string, type: Models.CheckNameResourceTypes, resourceGroup: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { return this.sendOperationRequest( { location, + name, + type, + resourceGroup, options }, checkNameAvailabilityOperationSpec, @@ -75,25 +96,46 @@ class AzureNetAppFilesManagementClient extends AzureNetAppFilesManagementClientC * Check if a file path is available. * @summary Check file path availability * @param location The location + * @param name Resource name to verify. + * @param type Resource type used for verification. Possible values include: + * 'Microsoft.NetApp/netAppAccounts', 'Microsoft.NetApp/netAppAccounts/capacityPools', + * 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes', + * 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes/snapshots' + * @param resourceGroup Resource group name. * @param [options] The optional parameters * @returns Promise */ - checkFilePathAvailability(location: string, options?: msRest.RequestOptionsBase): Promise; + checkFilePathAvailability(location: string, name: string, type: Models.CheckNameResourceTypes, resourceGroup: string, options?: msRest.RequestOptionsBase): Promise; /** * @param location The location + * @param name Resource name to verify. + * @param type Resource type used for verification. Possible values include: + * 'Microsoft.NetApp/netAppAccounts', 'Microsoft.NetApp/netAppAccounts/capacityPools', + * 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes', + * 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes/snapshots' + * @param resourceGroup Resource group name. * @param callback The callback */ - checkFilePathAvailability(location: string, callback: msRest.ServiceCallback): void; + checkFilePathAvailability(location: string, name: string, type: Models.CheckNameResourceTypes, resourceGroup: string, callback: msRest.ServiceCallback): void; /** * @param location The location + * @param name Resource name to verify. + * @param type Resource type used for verification. Possible values include: + * 'Microsoft.NetApp/netAppAccounts', 'Microsoft.NetApp/netAppAccounts/capacityPools', + * 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes', + * 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes/snapshots' + * @param resourceGroup Resource group name. * @param options The optional parameters * @param callback The callback */ - checkFilePathAvailability(location: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; - checkFilePathAvailability(location: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + checkFilePathAvailability(location: string, name: string, type: Models.CheckNameResourceTypes, resourceGroup: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + checkFilePathAvailability(location: string, name: string, type: Models.CheckNameResourceTypes, resourceGroup: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { return this.sendOperationRequest( { location, + name, + type, + resourceGroup, options }, checkFilePathAvailabilityOperationSpec, @@ -116,6 +158,17 @@ const checkNameAvailabilityOperationSpec: msRest.OperationSpec = { headerParameters: [ Parameters.acceptLanguage ], + requestBody: { + parameterPath: { + name: "name", + type: "type", + resourceGroup: "resourceGroup" + }, + mapper: { + ...Mappers.ResourceNameAvailabilityRequest, + required: true + } + }, responses: { 200: { bodyMapper: Mappers.ResourceNameAvailability @@ -140,6 +193,17 @@ const checkFilePathAvailabilityOperationSpec: msRest.OperationSpec = { headerParameters: [ Parameters.acceptLanguage ], + requestBody: { + parameterPath: { + name: "name", + type: "type", + resourceGroup: "resourceGroup" + }, + mapper: { + ...Mappers.ResourceNameAvailabilityRequest, + required: true + } + }, responses: { 200: { bodyMapper: Mappers.ResourceNameAvailability diff --git a/sdk/netapp/arm-netapp/src/azureNetAppFilesManagementClientContext.ts b/sdk/netapp/arm-netapp/src/azureNetAppFilesManagementClientContext.ts index 8e489393f7d7..ab68c798062d 100644 --- a/sdk/netapp/arm-netapp/src/azureNetAppFilesManagementClientContext.ts +++ b/sdk/netapp/arm-netapp/src/azureNetAppFilesManagementClientContext.ts @@ -13,7 +13,7 @@ import * as msRest from "@azure/ms-rest-js"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-netapp"; -const packageVersion = "3.0.0"; +const packageVersion = "4.0.0"; export class AzureNetAppFilesManagementClientContext extends msRestAzure.AzureServiceClient { credentials: msRest.ServiceClientCredentials; @@ -45,7 +45,7 @@ export class AzureNetAppFilesManagementClientContext extends msRestAzure.AzureSe super(credentials, options); - this.apiVersion = '2019-05-01'; + this.apiVersion = '2019-06-01'; this.acceptLanguage = 'en-US'; this.longRunningOperationRetryTimeout = 30; this.baseUri = options.baseUri || this.baseUri || "https://management.azure.com"; diff --git a/sdk/netapp/arm-netapp/src/models/index.ts b/sdk/netapp/arm-netapp/src/models/index.ts index 0ba442fb12c1..690ca4e1f14e 100644 --- a/sdk/netapp/arm-netapp/src/models/index.ts +++ b/sdk/netapp/arm-netapp/src/models/index.ts @@ -155,9 +155,9 @@ export interface ResourceNameAvailabilityRequest { name: string; /** * Resource type used for verification. Possible values include: - * 'Microsoft.NetApp/netAppAccount', 'Microsoft.NetApp/netAppAccount/capacityPools', - * 'Microsoft.NetApp/netAppAccount/capacityPools/volumes', - * 'Microsoft.NetApp/netAppAccount/capacityPools/volumes/snapshots' + * 'Microsoft.NetApp/netAppAccounts', 'Microsoft.NetApp/netAppAccounts/capacityPools', + * 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes', + * 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes/snapshots' */ type: CheckNameResourceTypes; /** @@ -315,14 +315,14 @@ export interface CapacityPool extends BaseResource { readonly poolId?: string; /** * size. Provisioned size of the pool (in bytes). Allowed values are in 4TiB chunks (value must - * be multiply of 4398046511104). Default value: 4398046511104. + * be multiply of 4398046511104). */ - size?: number; + size: number; /** * serviceLevel. The service level of the file system. Possible values include: 'Standard', * 'Premium', 'Ultra'. Default value: 'Premium'. */ - serviceLevel?: ServiceLevel; + serviceLevel: ServiceLevel; /** * Azure lifecycle management * **NOTE: This property will not be serialized. It can only be populated by the server.** @@ -456,24 +456,28 @@ export interface Volume extends BaseResource { * serviceLevel. The service level of the file system. Possible values include: 'Standard', * 'Premium', 'Ultra'. Default value: 'Premium'. */ - serviceLevel: ServiceLevel; + serviceLevel?: ServiceLevel; /** * usageThreshold. Maximum storage quota allowed for a file system in bytes. This is a soft quota - * used for alerting only. Minimum size is 100 GiB. Upper limit is 100TiB. Default value: - * 107374182400. + * used for alerting only. Minimum size is 100 GiB. Upper limit is 100TiB. Specified in bytes. + * Default value: 107374182400. */ - usageThreshold?: number; + usageThreshold: number; /** * exportPolicy. Set of export policy rules */ exportPolicy?: VolumePropertiesExportPolicy; + /** + * protocolTypes. Set of protocol types + */ + protocolTypes?: string[]; /** * Azure lifecycle management * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: string; /** - * Snapshot ID. UUID v4 used to identify the Snapshot + * Snapshot ID. UUID v4 or resource identifier used to identify the Snapshot. */ snapshotId?: string; /** @@ -485,7 +489,11 @@ export interface Volume extends BaseResource { * The Azure Resource URI for a delegated subnet. Must have the delegation * Microsoft.NetApp/volumes */ - subnetId?: string; + subnetId: string; + /** + * mountTargets. List of mount targets + */ + mountTargets?: any; } /** @@ -533,8 +541,8 @@ export interface VolumePatch extends BaseResource { serviceLevel?: ServiceLevel; /** * usageThreshold. Maximum storage quota allowed for a file system in bytes. This is a soft quota - * used for alerting only. Minimum size is 100 GiB. Upper limit is 100TiB. Default value: - * 107374182400. + * used for alerting only. Minimum size is 100 GiB. Upper limit is 100TiB. Specified in bytes. + * Default value: 107374182400. */ usageThreshold?: number; /** @@ -744,14 +752,14 @@ export type InAvailabilityReasonType = 'Invalid' | 'AlreadyExists'; /** * Defines values for CheckNameResourceTypes. - * Possible values include: 'Microsoft.NetApp/netAppAccount', - * 'Microsoft.NetApp/netAppAccount/capacityPools', - * 'Microsoft.NetApp/netAppAccount/capacityPools/volumes', - * 'Microsoft.NetApp/netAppAccount/capacityPools/volumes/snapshots' + * Possible values include: 'Microsoft.NetApp/netAppAccounts', + * 'Microsoft.NetApp/netAppAccounts/capacityPools', + * 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes', + * 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes/snapshots' * @readonly * @enum {string} */ -export type CheckNameResourceTypes = 'Microsoft.NetApp/netAppAccount' | 'Microsoft.NetApp/netAppAccount/capacityPools' | 'Microsoft.NetApp/netAppAccount/capacityPools/volumes' | 'Microsoft.NetApp/netAppAccount/capacityPools/volumes/snapshots'; +export type CheckNameResourceTypes = 'Microsoft.NetApp/netAppAccounts' | 'Microsoft.NetApp/netAppAccounts/capacityPools' | 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes' | 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes/snapshots'; /** * Defines values for ServiceLevel. diff --git a/sdk/netapp/arm-netapp/src/models/mappers.ts b/sdk/netapp/arm-netapp/src/models/mappers.ts index ab5f61be3020..f41e9534c751 100644 --- a/sdk/netapp/arm-netapp/src/models/mappers.ts +++ b/sdk/netapp/arm-netapp/src/models/mappers.ts @@ -491,8 +491,8 @@ export const CapacityPool: msRest.CompositeMapper = { } }, size: { + required: true, serializedName: "properties.size", - defaultValue: 4398046511104, constraints: { InclusiveMaximum: 549755813888000, InclusiveMinimum: 4398046511104 @@ -502,6 +502,7 @@ export const CapacityPool: msRest.CompositeMapper = { } }, serviceLevel: { + required: true, serializedName: "properties.serviceLevel", defaultValue: 'Premium', type: { @@ -714,7 +715,6 @@ export const Volume: msRest.CompositeMapper = { } }, serviceLevel: { - required: true, serializedName: "properties.serviceLevel", defaultValue: 'Premium', type: { @@ -722,6 +722,7 @@ export const Volume: msRest.CompositeMapper = { } }, usageThreshold: { + required: true, serializedName: "properties.usageThreshold", defaultValue: 107374182400, constraints: { @@ -739,6 +740,17 @@ export const Volume: msRest.CompositeMapper = { className: "VolumePropertiesExportPolicy" } }, + protocolTypes: { + serializedName: "properties.protocolTypes", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + }, provisioningState: { readOnly: true, serializedName: "properties.provisioningState", @@ -751,7 +763,7 @@ export const Volume: msRest.CompositeMapper = { constraints: { MaxLength: 36, MinLength: 36, - Pattern: /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/ + Pattern: /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}|(\\?([^\/]*[\/])*)([^\/]+)$/ }, type: { name: "String" @@ -770,10 +782,17 @@ export const Volume: msRest.CompositeMapper = { } }, subnetId: { + required: true, serializedName: "properties.subnetId", type: { name: "String" } + }, + mountTargets: { + serializedName: "properties.mountTargets", + type: { + name: "Object" + } } } } diff --git a/sdk/netapp/arm-netapp/src/models/parameters.ts b/sdk/netapp/arm-netapp/src/models/parameters.ts index 627fa23dfcec..5deaf27ae7d0 100644 --- a/sdk/netapp/arm-netapp/src/models/parameters.ts +++ b/sdk/netapp/arm-netapp/src/models/parameters.ts @@ -35,7 +35,7 @@ export const apiVersion: msRest.OperationQueryParameter = { mapper: { required: true, serializedName: "api-version", - defaultValue: '2017-08-15', + defaultValue: '2019-06-01', type: { name: "String" } diff --git a/sdk/netapp/arm-netapp/src/operations/accounts.ts b/sdk/netapp/arm-netapp/src/operations/accounts.ts index 6a38638291cb..a23a3450562c 100644 --- a/sdk/netapp/arm-netapp/src/operations/accounts.ts +++ b/sdk/netapp/arm-netapp/src/operations/accounts.ts @@ -270,6 +270,7 @@ const updateOperationSpec: msRest.OperationSpec = { 200: { bodyMapper: Mappers.NetAppAccount }, + 202: {}, default: { bodyMapper: Mappers.CloudError } diff --git a/sdk/netapp/arm-netapp/src/operations/pools.ts b/sdk/netapp/arm-netapp/src/operations/pools.ts index 7830c25820c7..d6e190205762 100644 --- a/sdk/netapp/arm-netapp/src/operations/pools.ts +++ b/sdk/netapp/arm-netapp/src/operations/pools.ts @@ -291,6 +291,7 @@ const updateOperationSpec: msRest.OperationSpec = { 200: { bodyMapper: Mappers.CapacityPool }, + 202: {}, default: { bodyMapper: Mappers.CloudError } diff --git a/sdk/netapp/arm-netapp/src/operations/snapshots.ts b/sdk/netapp/arm-netapp/src/operations/snapshots.ts index 05dde9bfc8c5..95e9c8c916bf 100644 --- a/sdk/netapp/arm-netapp/src/operations/snapshots.ts +++ b/sdk/netapp/arm-netapp/src/operations/snapshots.ts @@ -334,6 +334,7 @@ const updateOperationSpec: msRest.OperationSpec = { 200: { bodyMapper: Mappers.Snapshot }, + 202: {}, default: { bodyMapper: Mappers.CloudError } diff --git a/sdk/netapp/arm-netapp/src/operations/volumes.ts b/sdk/netapp/arm-netapp/src/operations/volumes.ts index 31680fbc6dea..7720d4eae10b 100644 --- a/sdk/netapp/arm-netapp/src/operations/volumes.ts +++ b/sdk/netapp/arm-netapp/src/operations/volumes.ts @@ -312,6 +312,7 @@ const updateOperationSpec: msRest.OperationSpec = { 200: { bodyMapper: Mappers.Volume }, + 202: {}, default: { bodyMapper: Mappers.CloudError } From 3c36b8dd00673ef81f26345559d19f77442c7017 Mon Sep 17 00:00:00 2001 From: chradek <51000525+chradek@users.noreply.github.com> Date: Fri, 28 Jun 2019 12:51:24 -0700 Subject: [PATCH 211/289] [Event Hubs] updates README authentication and examples (#4121) --- sdk/eventhub/event-hubs/README.md | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/sdk/eventhub/event-hubs/README.md b/sdk/eventhub/event-hubs/README.md index b22e661c1dd6..ac320ebf1f86 100644 --- a/sdk/eventhub/event-hubs/README.md +++ b/sdk/eventhub/event-hubs/README.md @@ -66,19 +66,33 @@ const client = new EventHubClient("my-connection-string-with-entity-path"); If you have defined a shared access policy directly on the Event Hub itself, then copying the connection string from that Event Hub will result in a connection string that contains the path. ```javascript +const { DefaultAzureCredential } = require("@azure/identity"); +const credential = new DefaultAzureCredential(); const client = new EventHubClient("my-host-name", "my-event-hub", credential); ``` -- This constructor takes the host name and entity name of your Event Hub instance and credential that implements the TokenCredential interface. There are implementations of the `TokenCredential` interface available in the `@azure/identity` package. The host name is of the format `.servicebus.windows.net`. +- This constructor takes the host name and entity name of your Event Hub instance and credential that implements the TokenCredential interface. There are implementations of the `TokenCredential` interface available in the [@azure/identity](https://www.npmjs.com/package/@azure/identity) package. The host name is of the format `.servicebus.windows.net`. ### Examples The following sections provide code snippets that cover some of the common tasks using Azure Event Hubs +- [Inspect an Event Hub](#inspect-an-event-hub) - [Publish events to an Event Hub](#publish-events-to-an-event-hub) - [Consume events from an Event Hub](#consume-events-from-an-event-hub) - [Use EventHubClient to work with IotHub](#use-eventHubClient-to-work-with-IotHub) +### Inspect an Event Hub + +Many Event Hub operations take place within the scope of a specific partition. +Because partitions are owned by the Event Hub, their names are assigned at the time of creation. +To understand what partitions are available, you query the Event Hub using the client. + +```javascript +const client = new EventHubCLient("connectionString", "eventHubName"); +const partitionIds = await client.getPartitionIds(); +``` + ### Publish events to an Event Hub In order to publish events, you'll need to create an `EventHubProducer`. Producers may be dedicated to a specific partition, or allow the Event Hubs service to decide which partition events should be published to. It is recommended to use automatic routing when the publishing of events needs to be highly available or when event data should be distributed evenly among the partitions. In the our example, we will take advantage of automatic routing. @@ -91,8 +105,7 @@ const producer = client.createProducer(); await producer.send({ body: "my-event-body" }); ``` -Many Event Hub operations take place within the scope of a specific partition. Because partitions are owned by the Event Hub, their names are assigned at the time of creation. To understand what partitions are available, You can use the [getPartitionIds](https://azure.github.io/azure-sdk-for-js/event-hubs/classes/eventhubclient.html#getpartitionids) -function to get the ids of all available partitions in your Event Hub instance. +The [Inspect an Event Hub](#inspect-an-event-hub) example shows how to get the list of partition ids should you wish to specify one for a producer. The `createProducer` method takes an optional parameter of type [EventHubProducerOptions](https://azure.github.io/azure-sdk-for-js/event-hubs/interfaces/eventhubproduceroptions.html) which you can use to specify the retry options and partition id for the send operation. @@ -116,7 +129,7 @@ const consumer = client.createConsumer( ); ``` -You can use the [getPartitionIds](https://azure.github.io/azure-sdk-for-js/event-hubs/classes/eventhubclient.html#getpartitionids) function to get the ids of all available partitions in your Event Hub instance. +The [Inspect an Event Hub](#inspect-an-event-hub) example shows how to get the list of partition ids. The `createConsumer` method takes an optional parameter of type [EventHubConsumerOptions](https://azure.github.io/azure-sdk-for-js/event-hubs/interfaces/eventhubconsumeroptions.html) which you can use to specify the ownerLevel, the level that this consumer is currently using for partition ownership. If another consumer is currently active for the same partition with no or lower level, then it will get disconnected. If another consumer is currently active with a higher level, then this consumer will fail to connect. You can also specify retryOptions for the receive operation on the consumer. From b8af0ab8e67a1e4659e2b4413dd6564bed0eaf03 Mon Sep 17 00:00:00 2001 From: chradek <51000525+chradek@users.noreply.github.com> Date: Fri, 28 Jun 2019 14:13:29 -0700 Subject: [PATCH 212/289] [Core AMQP] update samples in readme (#4125) --- sdk/core/core-amqp/README.md | 90 ++++++++++++++++++++---------------- 1 file changed, 50 insertions(+), 40 deletions(-) diff --git a/sdk/core/core-amqp/README.md b/sdk/core/core-amqp/README.md index faa73d23f10f..e35bd4dae294 100644 --- a/sdk/core/core-amqp/README.md +++ b/sdk/core/core-amqp/README.md @@ -29,43 +29,23 @@ Some of the key features of Azure Core AMQP library are: ## Examples -The examples below expect a connection string to a Azure Service Bus or Azure Event Hubs instance. -The entity path refers to an Event Hub name in case of Azure Event Hubs and a queue or a topic name -in case of Azure Service Bus. - -## Claims Based Authorization - [Claims Based Authorization](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-amqp-protocol-guide#claims-based-authorization) need to be done for every AMQP link that your application creates. The claims also has to be renewed periodically. For more details on CBS, please see the [CBS Specification](https://www.oasis-open.org/committees/download.php/62097/amqp-cbs-v1.0-wd05.doc). -In the below example, we use the Shared Key details present in the connection string to create a SAS token. +In the below examples, we use the Shared Key details present in the connection string to create a SAS token. This token is then used to make a request on the \$cbs link to carry out Claims Based Authorization for a link to the given entity in Azure Service Bus or Azure Event Hubs. -```js -const connectionConfig = ConnectionConfig.create( - "your-connection-string-with-shared-key", - "entity-path" -); -const connectionContext = ConnectionContextBase.create({ config: connectionConfig }); -const audience = `${connectionConfig.endpoint}${connectionConfig.entityPath}`; - -// Initialize a $cbs link with the service -await connectionContext.cbsSession.init(); - -// Use the SharedKeyCredential on the ConnectionContext to get the SAS token -const token = await connectionContext.tokenCredential.getToken(audience); - -// Use the SAS token to carry out the Claims Based Authorization -const result = await connectionContext.cbsSession.negotiateClaim(audience, tokenObject); -console.log(`Result is: ${result}`); -``` +The examples below expect a connection string to a Azure Service Bus or Azure Event Hubs instance. +The entity path refers to an Event Hub name in case of Azure Event Hubs and a queue or a topic name +in case of Azure Service Bus. ## Create a sender link -After you have run the sample code in the [Claims Based Authorization example](#claims-based-authorization), -you can use the `ConnectionContext.connection` to create a sender link as shown below. +In the below example, we first create a `ConnectionContext` which is used to carry out the claims +based authorization. Then, we create a sender link using the `ConnectionContext.connection` to +send a message. ```js async function main() { @@ -73,7 +53,21 @@ async function main() { "your-connection-string-with-shared-key", "entity-path" ); - const connectionContext = ConnectionContextBase.create({ config: connectionConfig }); + const connectionContext = ConnectionContextBase.create({ + config: connectionConfig, + connectionProperties: { + product: "product", + userAgent: "/user-agent", + version: "0.0.0" + } + }); + + // Carry out the Claims Based Authorization + await connectionContext.cbsSession.init(); + const token = await connectionContext.tokenCredential.getToken(audience); + await connectionContext.cbsSession.negotiateClaim(audience, token, TokenType.CbsTokenTypeSas); + + // Create a sender const senderName = "your-sender-name"; const senderOptions = { name: senderName, @@ -94,8 +88,9 @@ async function main() { } } }; - const sender = await connectionContext.connection.createSender(senderOptions); + + // Send a message const delivery = await sender.send({ body: "your-message-body" }); await sender.close(); @@ -107,8 +102,9 @@ main().catch((err) => console.log(err)); ## Create a receiver link -After you have run the sample code in the [Claims Based Authorization example](#claims-based-authorization), -you can use the `ConnectionContext.connection` to create a receiver link as shown below. +In the below example, we first create a `ConnectionContext` which is used to carry out the claims +based authorization. Then, we create a receiver link using the `ConnectionContext.connection` to +receive messages for 30 seconds. ```js async function main() { @@ -116,10 +112,24 @@ async function main() { "your-connection-string-with-shared-key", "entity-path" ); - const connectionContext = ConnectionContextBase.create({ config: connectionConfig }); + const connectionContext = ConnectionContextBase.create({ + config: connectionConfig, + connectionProperties: { + product: "product", + userAgent: "/user-agent", + version: "0.0.0" + } + }); + + // Carry out the Claims Based Authorization + await connectionContext.cbsSession.init(); + const token = await connectionContext.tokenCredential.getToken(audience); + await connectionContext.cbsSession.negotiateClaim(audience, token, TokenType.CbsTokenTypeSas); + + // Create a receiver const receiverName = "your-receiver-name"; const filterClause = `amqp.annotation.x-opt-enqueued-time > '${Date.now() - 3600 * 1000}'`; // Get messages from the past hour - const receiverAddress = `${path}/ConsumerGroups/$default/Partitions/0`; // For ServiceBus "" + const receiverAddress = `${connectionConfig.entityPath}/ConsumerGroups/$default/Partitions/0`; // For ServiceBus "" const receiverOptions = { name: receiverName, source: { @@ -135,6 +145,9 @@ async function main() { console.log("An error occurred for receiver '%s': %O.", receiverName, receiverError); } }, + onMessage: (context) => { + console.log("Received message: %O", context.message); + }, onSessionError: (context) => { const sessionError = context.session && context.session.error; if (sessionError) { @@ -146,16 +159,13 @@ async function main() { } } }; - const receiver = await connectionContext.connection.createReceiver(receiverOptions); - receiver.on(ReceiverEvents.message, (context) => { - console.log("Received message: %O", context.message); - }); - // sleeping for 2 mins to let the receiver receive messages and then closing it. - await delay(120000); - await receiver.close(); + // sleeping for 30 seconds to let the receiver receive messages + await new Promise((r) => setTimeout(r, 30000)); + // Close the receiver to stop receiving messages + await receiver.close(); await connectionContext.connection.close(); } From a980e2a55492dcf3e1a39afe204c13d5fddbffea Mon Sep 17 00:00:00 2001 From: Ramya Rao Date: Fri, 28 Jun 2019 14:36:32 -0700 Subject: [PATCH 213/289] [Event Hubs] Changelog for Event Hubs Preview 1 (#4124) --- sdk/eventhub/event-hubs/changelog.md | 44 ++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/sdk/eventhub/event-hubs/changelog.md b/sdk/eventhub/event-hubs/changelog.md index e5e36293e893..71b412ce1276 100644 --- a/sdk/eventhub/event-hubs/changelog.md +++ b/sdk/eventhub/event-hubs/changelog.md @@ -1,3 +1,47 @@ +### 2019-06-28 5.0.0-preview.1 + +Version 5.0.0-preview.1 is a preview of our efforts to create a client library that is user friendly and +idiomatic to the Javascript ecosystem. The reasons for most of the changes in this update can be found in the +[Azure SDK Design Guidelines for TypeScript](https://azuresdkspecs.z5.web.core.windows.net/TypeScriptSpec.html). +For more information, please visit https://aka.ms/azure-sdk-preview1-js + +#### Breaking changes +- Creating an instance of `EventHubClient` is now done using construtor overloads instead of static helpers. + - If you previously used the `createFromTokenProvider` static helper to provide your own custom token provider, + you will now need to update the provider to follow the new `TokenCredential` interface instead. + - If you previously used the `@azure/ms-rest-nodeauth` library to provide AAD credentials, you will now need to use the new + `@azure/identity` library instead. +- The send methods are moved from the `EventHubClient` class to the new `EventHubProducer` class. + - Use the `createProducer()` function on the `EventHubClient` to create an instance of a `EventHubProducer`. A producer can be bound to a partition at the time of creation such that all events sent from it land in the given partition. + - Each producer represents a dedicated AMQP sender link to Azure Event Hubs. + - The `EventData` type used for the data being sent only supports a `body` for the content being sent and a + `properties` bag to hold any custom metadata you want to send. The properties corresponding to a received event are + removed from this type and a separate type `ReceivedEventData` is used for received events. +- The receive methods are moved from the `EventHubClient` class to the new `EventHubConsumer` class. + - Use the `createConsumer()` function on the `EventHubClient` to create an instance of a `EventHubConsumer`. + - Each consumer represents a dedicated AMQP receiver link to Azure Event Hubs based + on the flavor of receive function being used i.e `receiveBatch()` that receives events in a batch vs `receive()` that provides + a streaming receiver. + - The static methods `EventPosition.fromStart()` and `EventPosition.fromEnd()` are renamed to `EventPosition.earliest()` and `EventPosition.latest()` respectively. +- Inspecting Event Hub + - The methods `getHubRuntimeInformation()` and `getPartitionInformation()` on the `EventHubClient` are renamed to + `getProperties()` and `getPartitionProperties()` respectively. Please refer to the return types of these functions to ensure + you are using the right property names. + +#### New features +- You can now configure retry options that are used to govern retry attempts when a retryable error occurs. These can be +set when creating the `EventHubClient`, `EventHubProducer` and `EventHubConsumer` +- You can now pass an abort signal to any of the async operations. This signal can be used to cancel such operations. Use +the package `@azure/abort-controller` to create such abort signals. +- An async iterator is now available to receive events after you create an instance of `EventHubConsumer`. Use the function +`getEventIterator()` on the consumer to get a `AsyncIterableIterator` which you can then use in a for loop or use it's `next()` function to receive events. + +#### Next Steps + +- Refer to the [API reference documentation](https://azure.github.io/azure-sdk-for-js/event-hubs/index.html) to get +an overview of the entire API surface. +- Refer to our [samples](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/eventhub/event-hubs/samples) to understand the usage of the new APIs. + ### 2019-06-10 2.1.0 - Added support for WebSockets. WebSockets enable Event Hubs to work over an HTTP proxy and in environments where the standard AMQP port 5671 is blocked. From 6780a8687c2a4194f4035797f1702f1eaae3be48 Mon Sep 17 00:00:00 2001 From: ShivangiReja <45216704+ShivangiReja@users.noreply.github.com> Date: Fri, 28 Jun 2019 15:12:49 -0700 Subject: [PATCH 214/289] [Event Hubs] Remove browserSample (#4126) * [Event Hubs] Remove browserSample and tsconfig.test --- .../event-hubs/samples/browserSample.html | 37 ------------------- .../event-hubs/test/tsconfig.test.json | 6 --- 2 files changed, 43 deletions(-) delete mode 100644 sdk/eventhub/event-hubs/samples/browserSample.html delete mode 100644 sdk/eventhub/event-hubs/test/tsconfig.test.json diff --git a/sdk/eventhub/event-hubs/samples/browserSample.html b/sdk/eventhub/event-hubs/samples/browserSample.html deleted file mode 100644 index ddc360fa7faf..000000000000 --- a/sdk/eventhub/event-hubs/samples/browserSample.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - diff --git a/sdk/eventhub/event-hubs/test/tsconfig.test.json b/sdk/eventhub/event-hubs/test/tsconfig.test.json deleted file mode 100644 index 0e7afc685537..000000000000 --- a/sdk/eventhub/event-hubs/test/tsconfig.test.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "module": "commonjs" - } -} From c1240b8f2fa2ab274ff5ef37c8b89e6374edbb08 Mon Sep 17 00:00:00 2001 From: Ramya Rao Date: Fri, 28 Jun 2019 15:22:57 -0700 Subject: [PATCH 215/289] [Event Hubs] Add links in changelog (#4127) --- sdk/eventhub/event-hubs/changelog.md | 30 +++++++++++++++++----------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/sdk/eventhub/event-hubs/changelog.md b/sdk/eventhub/event-hubs/changelog.md index 71b412ce1276..813a6e14380a 100644 --- a/sdk/eventhub/event-hubs/changelog.md +++ b/sdk/eventhub/event-hubs/changelog.md @@ -6,35 +6,41 @@ idiomatic to the Javascript ecosystem. The reasons for most of the changes in th For more information, please visit https://aka.ms/azure-sdk-preview1-js #### Breaking changes -- Creating an instance of `EventHubClient` is now done using construtor overloads instead of static helpers. +- Creating an instance of [EventHubClient](https://azure.github.io/azure-sdk-for-js/event-hubs/classes/eventhubclient.html) +is now done using construtor overloads instead of static helpers. - If you previously used the `createFromTokenProvider` static helper to provide your own custom token provider, you will now need to update the provider to follow the new `TokenCredential` interface instead. - If you previously used the `@azure/ms-rest-nodeauth` library to provide AAD credentials, you will now need to use the new - `@azure/identity` library instead. -- The send methods are moved from the `EventHubClient` class to the new `EventHubProducer` class. - - Use the `createProducer()` function on the `EventHubClient` to create an instance of a `EventHubProducer`. A producer can be bound to a partition at the time of creation such that all events sent from it land in the given partition. + [@azure/identity](https://www.npmjs.com/package/@azure/identity) library instead. +- The send methods are moved from the `EventHubClient` class to the new [EventHubProducer](https://azure.github.io/azure-sdk-for-js/event-hubs/classes/eventhubproducer.html) class. + - Use the [createProducer()](https://azure.github.io/azure-sdk-for-js/event-hubs/classes/eventhubclient.html#createproducer) + function on the `EventHubClient` to create an instance of a `EventHubProducer`. - Each producer represents a dedicated AMQP sender link to Azure Event Hubs. - - The `EventData` type used for the data being sent only supports a `body` for the content being sent and a + - The [EventData](https://azure.github.io/azure-sdk-for-js/event-hubs/interfaces/eventdata.html) type used for + the data being sent only supports a `body` for the content being sent and a `properties` bag to hold any custom metadata you want to send. The properties corresponding to a received event are - removed from this type and a separate type `ReceivedEventData` is used for received events. -- The receive methods are moved from the `EventHubClient` class to the new `EventHubConsumer` class. - - Use the `createConsumer()` function on the `EventHubClient` to create an instance of a `EventHubConsumer`. + removed from this type and a separate type [ReceivedEventData](https://azure.github.io/azure-sdk-for-js/event-hubs/interfaces/receivedeventdata.html) + is used for received events. +- The receive methods are moved from the `EventHubClient` class to the new [EventHubConsumer](https://azure.github.io/azure-sdk-for-js/event-hubs/classes/eventhubconsumer.html) class. + - Use the [createConsumer()](https://azure.github.io/azure-sdk-for-js/event-hubs/classes/eventhubclient.html#createconsumer) + function on the `EventHubClient` to create an instance of a `EventHubConsumer`. - Each consumer represents a dedicated AMQP receiver link to Azure Event Hubs based on the flavor of receive function being used i.e `receiveBatch()` that receives events in a batch vs `receive()` that provides a streaming receiver. - The static methods `EventPosition.fromStart()` and `EventPosition.fromEnd()` are renamed to `EventPosition.earliest()` and `EventPosition.latest()` respectively. - Inspecting Event Hub - The methods `getHubRuntimeInformation()` and `getPartitionInformation()` on the `EventHubClient` are renamed to - `getProperties()` and `getPartitionProperties()` respectively. Please refer to the return types of these functions to ensure - you are using the right property names. + [getProperties()](https://azure.github.io/azure-sdk-for-js/event-hubs/classes/eventhubclient.html#getproperties) and + [getPartitionProperties()](https://azure.github.io/azure-sdk-for-js/event-hubs/classes/eventhubclient.html#getpartitionproperties) + respectively. Please refer to the return types of these functions to ensure you are using the right property names. #### New features - You can now configure retry options that are used to govern retry attempts when a retryable error occurs. These can be set when creating the `EventHubClient`, `EventHubProducer` and `EventHubConsumer` - You can now pass an abort signal to any of the async operations. This signal can be used to cancel such operations. Use -the package `@azure/abort-controller` to create such abort signals. +the package [@azure/abort-controller](https://www.npmjs.com/package/@azure/abort-controller) to create such abort signals. - An async iterator is now available to receive events after you create an instance of `EventHubConsumer`. Use the function -`getEventIterator()` on the consumer to get a `AsyncIterableIterator` which you can then use in a for loop or use it's `next()` function to receive events. +[getEventIterator()](https://azure.github.io/azure-sdk-for-js/event-hubs/classes/eventhubconsumer.html#geteventiterator) on the consumer to get a `AsyncIterableIterator` which you can then use in a loop or use it's `next()` function to receive events. #### Next Steps From 1050d28eb1554eeb24fda0f10991813e7a3754ef Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Fri, 28 Jun 2019 16:21:16 -0700 Subject: [PATCH 216/289] Update dependency "typescript-eslint" to latest (#4128) - 1.10.1 was broken due to typescript-eslint/typescript-eslint#602 - 1.10.2 and later are fixed - Fixes #3616 --- common/config/rush/pnpm-lock.yaml | 305 +++++++----------- sdk/core/core-amqp/package.json | 4 +- sdk/core/core-paging/package.json | 4 +- sdk/eventhub/event-hubs/package.json | 8 +- .../event-processor-host/package.json | 4 +- sdk/identity/identity/package.json | 4 +- sdk/keyvault/keyvault-keys/package.json | 4 +- sdk/keyvault/keyvault-secrets/package.json | 4 +- sdk/servicebus/service-bus/package.json | 4 +- sdk/storage/storage-blob/package.json | 4 +- sdk/storage/storage-datalake/package.json | 4 +- sdk/storage/storage-file/package.json | 4 +- sdk/storage/storage-queue/package.json | 4 +- sdk/template/template/package.json | 4 +- 14 files changed, 152 insertions(+), 209 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 708237be7121..70c64b37a7cd 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -9,6 +9,7 @@ dependencies: '@microsoft/api-extractor': 7.2.1 '@rush-temp/abort-controller': 'file:projects/abort-controller.tgz' '@rush-temp/core-amqp': 'file:projects/core-amqp.tgz' + '@rush-temp/core-asynciterator-polyfill': 'file:projects/core-asynciterator-polyfill.tgz' '@rush-temp/core-http': 'file:projects/core-http.tgz' '@rush-temp/core-paging': 'file:projects/core-paging.tgz' '@rush-temp/cosmos': 'file:projects/cosmos.tgz' @@ -58,7 +59,7 @@ dependencies: '@types/ws': 6.0.1 '@types/xml2js': 0.4.4 '@types/yargs': 11.1.2 - '@typescript-eslint/eslint-plugin': 1.9.0 + '@typescript-eslint/eslint-plugin': 1.11.0 '@typescript-eslint/parser': 1.11.0 abortcontroller-polyfill: 1.3.0 assert: 1.5.0 @@ -122,7 +123,7 @@ dependencies: mocha-multi: 1.1.0 mocha-multi-reporters: 1.1.7 moment: 2.24.0 - ms-rest: 2.5.0 + ms-rest: 2.5.1 ms-rest-azure: 2.6.0 nise: 1.5.0 nock: 10.0.6 @@ -134,16 +135,16 @@ dependencies: priorityqueuejs: 1.0.0 process: 0.11.10 promise: 8.0.3 - puppeteer: 1.18.0 + puppeteer: 1.18.1 qs: 6.7.0 query-string: 6.8.1 requirejs: 2.3.6 - rhea: 1.0.7 + rhea: 1.0.8 rhea-promise: 0.1.15 rimraf: 2.6.3 rollup: 1.13.1 rollup-plugin-alias: 1.5.2 - rollup-plugin-commonjs: 10.0.0 + rollup-plugin-commonjs: 10.0.1 rollup-plugin-inject: 2.2.0 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 @@ -752,41 +753,40 @@ packages: dev: false resolution: integrity: sha1-LrHQCl5Ow/pYx2r94S4YK2bcXBw= - /@typescript-eslint/eslint-plugin/1.9.0: + /@typescript-eslint/eslint-plugin/1.11.0: dependencies: - '@typescript-eslint/experimental-utils': 1.9.0 - '@typescript-eslint/parser': 1.9.0 + '@typescript-eslint/experimental-utils': 1.11.0 eslint-utils: 1.3.1 functional-red-black-tree: 1.0.1 regexpp: 2.0.1 - requireindex: 1.2.0 tsutils: 3.14.0 dev: false engines: node: ^6.14.0 || ^8.10.0 || >=9.10.0 peerDependencies: + '@typescript-eslint/parser': ^1.9.0 eslint: ^5.0.0 typescript: '*' resolution: - integrity: sha512-FOgfBorxjlBGpDIw+0LaZIXRX6GEEUfzj8LXwaQIUCp+gDOvkI+1WgugJ7SmWiISqK9Vj5r8S7NDKO/LB+6X9A== - /@typescript-eslint/eslint-plugin/1.9.0_eslint@5.16.0+typescript@3.5.2: + integrity: sha512-mXv9ccCou89C8/4avKHuPB2WkSZyY/XcTQUXd5LFZAcLw1I3mWYVjUu6eS9Ja0QkP/ClolbcW9tb3Ov/pMdcqw== + /@typescript-eslint/eslint-plugin/1.11.0_afcff25d83eecf077c0a68701b299d14: dependencies: - '@typescript-eslint/experimental-utils': 1.9.0_typescript@3.5.2 - '@typescript-eslint/parser': 1.9.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/experimental-utils': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 eslint: 5.16.0 eslint-utils: 1.3.1 functional-red-black-tree: 1.0.1 regexpp: 2.0.1 - requireindex: 1.2.0 tsutils: 3.14.0_typescript@3.5.2 dev: false engines: node: ^6.14.0 || ^8.10.0 || >=9.10.0 peerDependencies: + '@typescript-eslint/parser': ^1.9.0 eslint: ^5.0.0 typescript: '*' resolution: - integrity: sha512-FOgfBorxjlBGpDIw+0LaZIXRX6GEEUfzj8LXwaQIUCp+gDOvkI+1WgugJ7SmWiISqK9Vj5r8S7NDKO/LB+6X9A== + integrity: sha512-mXv9ccCou89C8/4avKHuPB2WkSZyY/XcTQUXd5LFZAcLw1I3mWYVjUu6eS9Ja0QkP/ClolbcW9tb3Ov/pMdcqw== /@typescript-eslint/experimental-utils/1.11.0: dependencies: '@typescript-eslint/typescript-estree': 1.11.0 @@ -813,27 +813,6 @@ packages: typescript: '*' resolution: integrity: sha512-7LbfaqF6B8oa8cp/315zxKk8FFzosRzzhF8Kn/ZRsRsnpm7Qcu25cR/9RnAQo5utZ2KIWVgaALr+ZmcbG47ruw== - /@typescript-eslint/experimental-utils/1.9.0: - dependencies: - '@typescript-eslint/typescript-estree': 1.9.0 - dev: false - engines: - node: ^6.14.0 || ^8.10.0 || >=9.10.0 - peerDependencies: - typescript: '*' - resolution: - integrity: sha512-1s2dY9XxBwtS9IlSnRIlzqILPyeMly5tz1bfAmQ84Ul687xBBve5YsH5A5EKeIcGurYYqY2w6RkHETXIwnwV0A== - /@typescript-eslint/experimental-utils/1.9.0_typescript@3.5.2: - dependencies: - '@typescript-eslint/typescript-estree': 1.9.0 - typescript: 3.5.2 - dev: false - engines: - node: ^6.14.0 || ^8.10.0 || >=9.10.0 - peerDependencies: - typescript: '*' - resolution: - integrity: sha512-1s2dY9XxBwtS9IlSnRIlzqILPyeMly5tz1bfAmQ84Ul687xBBve5YsH5A5EKeIcGurYYqY2w6RkHETXIwnwV0A== /@typescript-eslint/parser/1.11.0: dependencies: '@types/eslint-visitor-keys': 1.0.0 @@ -863,35 +842,6 @@ packages: typescript: '*' resolution: integrity: sha512-5xBExyXaxVyczrZvbRKEXvaTUFFq7gIM9BynXukXZE0zF3IQP/FxF4mPmmh3gJ9egafZFqByCpPTFm3dk4SY7Q== - /@typescript-eslint/parser/1.9.0: - dependencies: - '@typescript-eslint/experimental-utils': 1.9.0 - '@typescript-eslint/typescript-estree': 1.9.0 - eslint-scope: 4.0.3 - eslint-visitor-keys: 1.0.0 - dev: false - engines: - node: ^6.14.0 || ^8.10.0 || >=9.10.0 - peerDependencies: - eslint: ^5.0.0 - typescript: '*' - resolution: - integrity: sha512-CWgC1XrQ34H/+LwAU7vY5xteZDkNqeAkeidEpJnJgkKu0yqQ3ZhQ7S+dI6MX4vmmM1TKRbOrKuXc6W0fIHhdbA== - /@typescript-eslint/parser/1.9.0_eslint@5.16.0+typescript@3.5.2: - dependencies: - '@typescript-eslint/experimental-utils': 1.9.0_typescript@3.5.2 - '@typescript-eslint/typescript-estree': 1.9.0 - eslint: 5.16.0 - eslint-scope: 4.0.3 - eslint-visitor-keys: 1.0.0 - dev: false - engines: - node: ^6.14.0 || ^8.10.0 || >=9.10.0 - peerDependencies: - eslint: ^5.0.0 - typescript: '*' - resolution: - integrity: sha512-CWgC1XrQ34H/+LwAU7vY5xteZDkNqeAkeidEpJnJgkKu0yqQ3ZhQ7S+dI6MX4vmmM1TKRbOrKuXc6W0fIHhdbA== /@typescript-eslint/typescript-estree/1.11.0: dependencies: lodash.unescape: 4.0.1 @@ -901,15 +851,6 @@ packages: node: '>=6.14.0' resolution: integrity: sha512-fquUHF5tAx1sM2OeRCC7wVxFd1iMELWMGCzOSmJ3pLzArj9+kRixdlC4d5MncuzXpjEqc6045p3KwM0o/3FuUA== - /@typescript-eslint/typescript-estree/1.9.0: - dependencies: - lodash.unescape: 4.0.1 - semver: 5.5.0 - dev: false - engines: - node: '>=6.14.0' - resolution: - integrity: sha512-7Eg0TEQpCkTsEwsl1lIzd6i7L3pJLQFWesV08dS87bNz0NeSjbL78gNAP1xCKaCejkds4PhpLnZkaAjx9SU8OA== /@webassemblyjs/ast/1.8.5: dependencies: '@webassemblyjs/helper-module-context': 1.8.5 @@ -2250,7 +2191,7 @@ packages: browserify-rsa: 4.0.1 create-hash: 1.2.0 create-hmac: 1.1.7 - elliptic: 6.4.1 + elliptic: 6.5.0 inherits: 2.0.4 parse-asn1: 5.1.4 dev: false @@ -2264,8 +2205,8 @@ packages: integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== /browserslist/3.2.8: dependencies: - caniuse-lite: 1.0.30000977 - electron-to-chromium: 1.3.173 + caniuse-lite: 1.0.30000978 + electron-to-chromium: 1.3.176 dev: false hasBin: true resolution: @@ -2354,7 +2295,7 @@ packages: chownr: 1.1.1 figgy-pudding: 3.5.1 glob: 7.1.4 - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 lru-cache: 5.1.1 mississippi: 3.0.0 mkdirp: 0.5.1 @@ -2453,10 +2394,10 @@ packages: node: '>=6' resolution: integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - /caniuse-lite/1.0.30000977: + /caniuse-lite/1.0.30000978: dev: false resolution: - integrity: sha512-RTXL32vdfAc2g9aoDL6vnBzbOO/3sM+T+YX4m7W9iFZnl3qIz7WYoZZpcZpALud8xq4+N56rnruX/NQy9HQu6A== + integrity: sha512-H6gK6kxUzG6oAwg/Jal279z8pHw0BzrpZfwo/CA9FFm/vA0l8IhDfkZtepyJNE2Y4V6Dp3P3ubz6czby1/Mgsw== /caseless/0.12.0: dev: false resolution: @@ -2919,7 +2860,7 @@ packages: integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= /cp-file/6.2.0: dependencies: - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 make-dir: 2.1.0 nested-error-stacks: 2.1.0 pify: 4.0.1 @@ -2932,7 +2873,7 @@ packages: /create-ecdh/4.0.3: dependencies: bn.js: 4.11.8 - elliptic: 6.4.1 + elliptic: 6.5.0 dev: false resolution: integrity: sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== @@ -3363,11 +3304,11 @@ packages: dev: false resolution: integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - /electron-to-chromium/1.3.173: + /electron-to-chromium/1.3.176: dev: false resolution: - integrity: sha512-weH16m8as+4Fy4XJxrn/nFXsIqB7zkxERhvj/5YX2HE4HB8MCu98Wsef4E3mu0krIT27ic0bGsr+TvqYrUn6Qg== - /elliptic/6.4.1: + integrity: sha512-hsQ/BH6x2iCvJ7WOIbNTAlsT39vsVGIVoJJ9i6ZkGXUE2LdzWsNv0xJI2uZ5/Hkqv1oTTLxAYjbtGKVJzqYbjA== + /elliptic/6.5.0: dependencies: bn.js: 4.11.8 brorand: 1.1.0 @@ -3378,7 +3319,7 @@ packages: minimalistic-crypto-utils: 1.0.1 dev: false resolution: - integrity: sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== + integrity: sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg== /emoji-regex/7.0.3: dev: false resolution: @@ -3440,7 +3381,7 @@ packages: integrity: sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== /enhanced-resolve/4.1.0: dependencies: - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 memory-fs: 0.4.1 tapable: 1.1.3 dev: false @@ -4251,7 +4192,7 @@ packages: integrity: sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o= /fs-extra/7.0.1: dependencies: - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 jsonfile: 4.0.0 universalify: 0.1.2 dev: false @@ -4261,7 +4202,7 @@ packages: integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== /fs-extra/8.0.1: dependencies: - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 jsonfile: 4.0.0 universalify: 0.1.2 dev: false @@ -4271,7 +4212,7 @@ packages: integrity: sha512-W+XLrggcDzlle47X/XnS7FXrXu9sDo+Ze9zpndeBxdgv88FHLm1HtmkhEwavruS6koanBjp098rUpHs65EmG7A== /fs-mkdirp-stream/1.0.0: dependencies: - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 through2: 2.0.5 dev: false engines: @@ -4280,7 +4221,7 @@ packages: integrity: sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= /fs-write-stream-atomic/1.0.10: dependencies: - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 iferr: 0.1.5 imurmurhash: 0.1.4 readable-stream: 2.3.6 @@ -4527,10 +4468,10 @@ packages: node: '>=0.4.0' resolution: integrity: sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q= - /graceful-fs/4.1.15: + /graceful-fs/4.2.0: dev: false resolution: - integrity: sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + integrity: sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg== /growl/1.10.5: dev: false engines: @@ -5641,7 +5582,7 @@ packages: /jsonfile/4.0.0: dev: false optionalDependencies: - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 resolution: integrity: sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= /jsonify/0.0.0: @@ -5884,7 +5825,7 @@ packages: integrity: sha512-/a7bBtinT4+fdbnatCh5ZWvbqIqPzse7O3tvT4x9tadXsxPqybo1Lilpe7AKEmvhAcUwGRlcLOWeV66lIPFrXQ== /karma-sourcemap-loader/0.3.7: dependencies: - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 dev: false resolution: integrity: sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg= @@ -5894,7 +5835,7 @@ packages: acorn-walk: 6.1.1 babel-core: 6.26.3 babel-preset-env: 1.7.0 - log4js: 4.3.2 + log4js: 4.4.0 magic-string: 0.25.2 dev: false resolution: @@ -5943,11 +5884,11 @@ packages: dom-serialize: 2.2.1 flatted: 2.0.1 glob: 7.1.4 - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 http-proxy: 1.17.0 isbinaryfile: 3.0.3 lodash: 4.17.11 - log4js: 4.3.2 + log4js: 4.4.0 mime: 2.4.4 minimatch: 3.0.4 optimist: 0.6.1 @@ -6077,7 +6018,7 @@ packages: integrity: sha512-wzUvdIeJZhRsG6gpZfmSCfysaxNEr43i+QT+Hie94wvHDKFLi4n7C2GqZ4sTC+PH5b5iktmXJvU87rWvhP3lHw== /load-json-file/1.1.0: dependencies: - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 parse-json: 2.2.0 pify: 2.3.0 pinkie-promise: 2.0.1 @@ -6089,7 +6030,7 @@ packages: integrity: sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= /load-json-file/4.0.0: dependencies: - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 parse-json: 4.0.0 pify: 3.0.0 strip-bom: 3.0.0 @@ -6190,7 +6131,7 @@ packages: node: '>=6.0' resolution: integrity: sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ== - /log4js/4.3.2: + /log4js/4.4.0: dependencies: date-format: 2.0.0 debug: 4.1.1 @@ -6201,7 +6142,7 @@ packages: engines: node: '>=6.0' resolution: - integrity: sha512-72GjgSP+ifL156MD/bXEhE7UlFLKS2KkCXujodb1nl1z6PpKhCfS+41dyNQ7zKi4iM49TQl+aWLEISXGLcGCCQ== + integrity: sha512-xwRvmxFsq8Hb7YeS+XKfvCrsH114bXex6mIwJ2+KmYVi23pB3+hlzyGq1JPycSFTJWNLhD/7PCtM0RfPy6/2yg== /loglevel/1.6.3: dev: false engines: @@ -6768,13 +6709,13 @@ packages: adal-node: 0.1.28 async: 2.6.0 moment: 2.24.0 - ms-rest: 2.5.0 + ms-rest: 2.5.1 request: 2.88.0 uuid: 3.3.2 dev: false resolution: integrity: sha512-J6386a9krZ4VtU7CRt+Ypgo9RGf8+d3gjMBkH7zbkM4zzkhbbMOYiPRaZ+bHZcfihkKLlktTgA6rjshTjF329A== - /ms-rest/2.5.0: + /ms-rest/2.5.1: dependencies: duplexer: 0.1.1 is-buffer: 1.1.6 @@ -6786,7 +6727,7 @@ packages: uuid: 3.3.2 dev: false resolution: - integrity: sha512-QUTg9CsmWpofDO0MR37z8B28/T9ObpQ+FM23GGDMKXw8KYDJ3cEBdK6dJTDDrtSoZG3U+S/vdmSEwJ7FNj6Kog== + integrity: sha512-bRRHn/asERilNDXrm4/paFRAljnIh+L6Qo6zQkBUZRXaDiHYDRq4AFCNX4Bau0db+eXlcnjnHyu3A9EjQc4s6Q== /ms/2.0.0: dev: false resolution: @@ -7323,7 +7264,7 @@ packages: integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== /package-hash/3.0.0: dependencies: - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 hasha: 3.0.0 lodash.flattendeep: 4.4.0 release-zalgo: 1.0.0 @@ -7498,7 +7439,7 @@ packages: integrity: sha1-Wf3g9DW62suhA6hOnTvGTpa5k30= /path-type/1.1.0: dependencies: - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 pify: 2.3.0 pinkie-promise: 2.0.1 dev: false @@ -7752,7 +7693,7 @@ packages: node: '>=6' resolution: integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - /puppeteer/1.18.0: + /puppeteer/1.18.1: dependencies: debug: 4.1.1 extract-zip: 1.6.7 @@ -7767,7 +7708,7 @@ packages: node: '>=6.4.0' requiresBuild: true resolution: - integrity: sha512-NCwSN4wEIj43k4jO8Asa5nzibrIDFHWykqkZFjkGr0/f6U73k1ysql0gadQmOGLtZewXvvWqlNo+4ZMgX+5vZA== + integrity: sha512-luUy0HPSuWPsPZ1wAp6NinE0zgetWtudf5zwZ6dHjMWfYpTQcmKveFRox7VBNhQ98OjNA9PQ9PzQyX8k/KrxTg== /qjobs/1.2.0: dev: false engines: @@ -7916,7 +7857,7 @@ packages: integrity: sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== /readdirp/2.2.1: dependencies: - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 micromatch: 3.1.10 readable-stream: 2.3.6 dev: false @@ -8128,12 +8069,6 @@ packages: dev: false resolution: integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - /requireindex/1.2.0: - dev: false - engines: - node: '>=0.10.5' - resolution: - integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== /requirejs/2.3.6: dev: false engines: @@ -8224,17 +8159,17 @@ packages: /rhea-promise/0.1.15: dependencies: debug: 3.2.6 - rhea: 1.0.7 + rhea: 1.0.8 tslib: 1.10.0 dev: false resolution: integrity: sha512-+6uilZXSJGyiqVeHQI3Krv6NTAd8cWRCY2uyCxmzR4/5IFtBqqFem1HV2OiwSj0Gu7OFChIJDfH2JyjN7J0vRA== - /rhea/1.0.7: + /rhea/1.0.8: dependencies: debug: 3.2.6 dev: false resolution: - integrity: sha512-AQOnM8OjGZyTP1TFsP7IY6O0+obYmkF2OxuRbj0O5eUzNUA5w3jeMOwa7aD1MnjwE5RIZjwdNdIfSzoWk8ANag== + integrity: sha512-TNv6rD/74h2QiXrUpFHw6fzGNuOpVOcjPRGtlKC5eIy5NLfvb2RiZGZs7lpg4al22p5pAAQjLZuPTDipReUzPA== /rimraf/2.2.8: dev: false hasBin: true @@ -8260,7 +8195,7 @@ packages: dev: false resolution: integrity: sha512-ODeZXhTxpD48sfcYLAFc1BGrsXKDj7o1CSNH3uYbdK3o0NxyMmaQPTNgW+ko+am92DLC8QSTe4kyxTuEkI5S5w== - /rollup-plugin-commonjs/10.0.0: + /rollup-plugin-commonjs/10.0.1: dependencies: estree-walker: 0.6.1 is-reference: 1.1.2 @@ -8271,8 +8206,8 @@ packages: peerDependencies: rollup: '>=1.12.0' resolution: - integrity: sha512-B8MoX5GRpj3kW4+YaFO/di2JsZkBxNjVmZ9LWjUoTAjq8N9wc7HObMXPsrvolVV9JXVtYSscflXM14A19dXPNQ== - /rollup-plugin-commonjs/10.0.0_rollup@1.13.1: + integrity: sha512-x0PcCVdEc4J8igv1qe2vttz8JKAKcTs3wfIA3L8xEty3VzxgORLrzZrNWaVMc+pBC4U3aDOb9BnWLAQ8J11vkA== + /rollup-plugin-commonjs/10.0.1_rollup@1.13.1: dependencies: estree-walker: 0.6.1 is-reference: 1.1.2 @@ -8284,7 +8219,7 @@ packages: peerDependencies: rollup: '>=1.12.0' resolution: - integrity: sha512-B8MoX5GRpj3kW4+YaFO/di2JsZkBxNjVmZ9LWjUoTAjq8N9wc7HObMXPsrvolVV9JXVtYSscflXM14A19dXPNQ== + integrity: sha512-x0PcCVdEc4J8igv1qe2vttz8JKAKcTs3wfIA3L8xEty3VzxgORLrzZrNWaVMc+pBC4U3aDOb9BnWLAQ8J11vkA== /rollup-plugin-inject/2.2.0: dependencies: estree-walker: 0.5.2 @@ -9208,7 +9143,7 @@ packages: integrity: sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= /temp-write/3.4.0: dependencies: - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 is-stream: 1.1.0 make-dir: 1.3.0 pify: 3.0.0 @@ -9984,7 +9919,7 @@ packages: dependencies: fs-mkdirp-stream: 1.0.0 glob-stream: 6.1.0 - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 is-valid-glob: 1.0.0 lazystream: 1.0.0 lead: 1.0.0 @@ -10008,7 +9943,7 @@ packages: dependencies: append-buffer: 1.0.2 convert-source-map: 1.6.0 - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 normalize-path: 2.1.1 now-and-later: 2.0.1 remove-bom-buffer: 3.0.0 @@ -10048,7 +9983,7 @@ packages: /watchpack/1.6.0: dependencies: chokidar: 2.1.6 - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 neo-async: 2.6.1 dev: false resolution: @@ -10244,7 +10179,7 @@ packages: integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= /write-file-atomic/2.4.3: dependencies: - graceful-fs: 4.1.15 + graceful-fs: 4.2.0 imurmurhash: 0.1.4 signal-exit: 3.0.2 dev: false @@ -10503,7 +10438,7 @@ packages: prettier: 1.18.2 rimraf: 2.6.3 rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 + rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 @@ -10530,7 +10465,7 @@ packages: '@types/mocha': 5.2.7 '@types/node': 8.10.49 '@types/sinon': 5.0.7 - '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 async-lock: 1.2.0 @@ -10558,12 +10493,12 @@ packages: nyc: 14.1.1 prettier: 1.18.2 process: 0.11.10 - puppeteer: 1.18.0 - rhea: 1.0.7 + puppeteer: 1.18.1 + rhea: 1.0.8 rhea-promise: 0.1.15 rimraf: 2.6.3 rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 + rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-inject: 2.2.0 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 @@ -10585,9 +10520,16 @@ packages: dev: false name: '@rush-temp/core-amqp' resolution: - integrity: sha512-1u2xINxLM36rIfPfmQF5QqgM+8d6A9kUdzRCS8VDFxeUUZex4UXeIrc1LL252dzLq+onveygfQqOK7dqHDxrLA== + integrity: sha512-O3IcR/YobE8pJnOPI+26sLqh1wTF7AxI4yD/fCGf9fLOUVCun/DqVCquLtfRvC90OxGdqXcleg+r52lTh7yxRw== tarball: 'file:projects/core-amqp.tgz' version: 0.0.0 + 'file:projects/core-asynciterator-polyfill.tgz': + dev: false + name: '@rush-temp/core-asynciterator-polyfill' + resolution: + integrity: sha512-nTzv3dFArVWVRUZ449C4eSmeIbMPJv0e74K546PPVWVZQn1cATgjxnT7eFnaJyPbi7h+6ozuXH8lDm3lYmz/WA== + tarball: 'file:projects/core-asynciterator-polyfill.tgz' + version: 0.0.0 'file:projects/core-http.tgz': dependencies: '@azure/logger-js': 1.1.0 @@ -10629,11 +10571,11 @@ packages: nyc: 14.1.1 opn-cli: 4.1.0 process: 0.11.10 - puppeteer: 1.18.0 + puppeteer: 1.18.1 rimraf: 2.6.3 rollup: 1.13.1 rollup-plugin-alias: 1.5.2 - rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 + rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 @@ -10668,7 +10610,7 @@ packages: 'file:projects/core-paging.tgz': dependencies: '@types/node': 8.10.49 - '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 eslint: 5.16.0 eslint-config-prettier: 4.3.0_eslint@5.16.0 @@ -10681,7 +10623,7 @@ packages: dev: false name: '@rush-temp/core-paging' resolution: - integrity: sha512-eLAR9AN8LadE5YVf0mWhR9fdw88LmL2w9QAp+Jn1A5OMy0dgjXFyXRO2UbozpWjw/PZRoMLyPCdyhUrWzyex/A== + integrity: sha512-zo8CqqlCrpzrLOWMJ4Pm30a9qC71E1bB3neF47oq2VYulLOyTpgaKvZZjN6w1YEz3yY4G1GAnq6JuwOyC7q6Yw== tarball: 'file:projects/core-paging.tgz' version: 0.0.0 'file:projects/cosmos.tgz': @@ -10734,7 +10676,7 @@ packages: '@types/node': 8.10.49 '@types/uuid': 3.4.4 '@types/ws': 6.0.1 - '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 async-lock: 1.2.0 @@ -10769,11 +10711,11 @@ packages: mocha-multi: 1.1.0_mocha@5.2.0 nyc: 14.1.1 prettier: 1.18.2 - puppeteer: 1.18.0 + puppeteer: 1.18.1 rhea-promise: 0.1.15 rimraf: 2.6.3 rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 + rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-inject: 2.2.0 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 @@ -10792,7 +10734,7 @@ packages: dev: false name: '@rush-temp/event-hubs' resolution: - integrity: sha512-Alp0kNBSfYO7xjDdy0S38g9Ran1bSOHtlbcQNbesfvD803YL4qCBvWFwDDo08qABplqOj5OLwskq6d5Faj5tVQ== + integrity: sha512-bRn9XMn/RGG8wcsrhgyeTmAvQkHaJzao1BN9wPJEf4O67WTNrGJGdDI97Vu1x7AOIHi+UlC9U6AIMMNTcBvq5g== tarball: 'file:projects/event-hubs.tgz' version: 0.0.0 'file:projects/event-processor-host.tgz': @@ -10808,7 +10750,7 @@ packages: '@types/mocha': 5.2.7 '@types/node': 8.10.49 '@types/uuid': 3.4.4 - '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 async-lock: 1.2.0 azure-storage: 2.10.3 @@ -10833,7 +10775,7 @@ packages: prettier: 1.18.2 rimraf: 2.6.3 rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 + rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 @@ -10848,7 +10790,7 @@ packages: dev: false name: '@rush-temp/event-processor-host' resolution: - integrity: sha512-JdZafEYumJqpTizs+cgw04xYpi38jlEtuF9GMr27rmCOwVrydZfnUOWPKBjiJpzBwh8A+K7aj/h6sw7pmmNwAw== + integrity: sha512-2ONWfGH7nWY7RIYdXxg3VUNiGHut6j/KFAiWbYJRu9p3apHZrY6gknUdM916qdlU+zRovl1hH/yTSThMiKEN8Q== tarball: 'file:projects/event-processor-host.tgz' version: 0.0.0 'file:projects/identity.tgz': @@ -10858,7 +10800,7 @@ packages: '@types/node': 8.10.49 '@types/qs': 6.5.3 '@types/uuid': 3.4.4 - '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 cross-env: 5.2.0 @@ -10873,7 +10815,7 @@ packages: qs: 6.7.0 rimraf: 2.6.3 rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 + rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 @@ -10888,7 +10830,7 @@ packages: dev: false name: '@rush-temp/identity' resolution: - integrity: sha512-CmC6hyAqaRzDogWyTTK+nyeytUE4ThbgQiR4TYN0vyihtF9b0W6JXwSM+O4zIKwoFkhGztaK6iINCe4jmPmTJg== + integrity: sha512-bvjjTG+z2fyIOtEyFJ+gWiRJjq190CV52hHLEbkrTzAbHzpi4ClThitxNagxagbsJAKmkgy/FFEYuC78CDThUQ== tarball: 'file:projects/identity.tgz' version: 0.0.0 'file:projects/keyvault-certificates.tgz': @@ -10900,7 +10842,7 @@ packages: prettier: 1.18.2 rimraf: 2.6.3 rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 + rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 tslib: 1.10.0 typescript: 3.5.2 @@ -10909,7 +10851,7 @@ packages: dev: false name: '@rush-temp/keyvault-certificates' resolution: - integrity: sha512-rtHAu32lG7NDuVgoWi2L7yGhj2R+wmcvaOue9lZOFtk5XwUrt5m0AGGBwCjJttO7LTwcFlaQv99y3rPvgGO5HA== + integrity: sha512-x3QICw0QJ0SuhfgjNiZLcaTyz33+c8JiD3r82dvVpMMipU/JC/gSVWhcbhgSOy6kg8EAjGYMRjDrCn3cOE3A2A== tarball: 'file:projects/keyvault-certificates.tgz' version: 0.0.0 'file:projects/keyvault-keys.tgz': @@ -10921,7 +10863,7 @@ packages: '@types/mocha': 5.2.7 '@types/nock': 10.0.3 '@types/node': 8.10.49 - '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 chai: 4.2.0 cross-env: 5.2.0 @@ -10938,7 +10880,7 @@ packages: prettier: 1.18.2 rimraf: 2.6.3 rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 + rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 ts-mocha: 6.0.0_mocha@5.2.0 tslib: 1.10.0 @@ -10948,7 +10890,7 @@ packages: dev: false name: '@rush-temp/keyvault-keys' resolution: - integrity: sha512-ew3OR+3xkP9hIHi9zXfFJ8FZo9PGWO+REJ1TcRljBgZw18+l3qMd27qhJrsO/8xJPr4G2lgs0k4Q4TGauskAtg== + integrity: sha512-flxzyozdBr9KYE0FPRg8WG9naEA4LX3Aso9b3lpNVkRQSCXzsUtpqLlWXl5FIknQciLeDWCavSG0t0GjNL/SGw== tarball: 'file:projects/keyvault-keys.tgz' version: 0.0.0 'file:projects/keyvault-secrets.tgz': @@ -10962,7 +10904,7 @@ packages: '@types/mocha': 5.2.7 '@types/nock': 10.0.3 '@types/node': 8.10.49 - '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 chai: 4.2.0 cross-env: 5.2.0 @@ -10979,7 +10921,7 @@ packages: prettier: 1.18.2 rimraf: 2.6.3 rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 + rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 ts-mocha: 6.0.0_mocha@5.2.0 tslib: 1.10.0 @@ -10989,7 +10931,7 @@ packages: dev: false name: '@rush-temp/keyvault-secrets' resolution: - integrity: sha512-7lxQwmnE7+8MH0uJUtUEMNaATGdEZo9DRsqstP0YlVHHEfCo1axiQSRBREMJVKAWY7jpHE9v3suRa2GqO0u1Xg== + integrity: sha512-TE3NpoxEMEx7UbK5UusLrfzYtf+YBCy5TTuZyC+36iUR+0awFqQblaqEdWo4ZMn3zMGBjTa4sHv4f4wG00HHiw== tarball: 'file:projects/keyvault-secrets.tgz' version: 0.0.0 'file:projects/service-bus.tgz': @@ -11008,7 +10950,7 @@ packages: '@types/mocha': 5.2.7 '@types/node': 8.10.49 '@types/ws': 6.0.1 - '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 buffer: 5.2.1 @@ -11046,12 +10988,12 @@ packages: prettier: 1.18.2 process: 0.11.10 promise: 8.0.3 - puppeteer: 1.18.0 - rhea: 1.0.7 + puppeteer: 1.18.1 + rhea: 1.0.8 rhea-promise: 0.1.15 rimraf: 2.6.3 rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 + rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-inject: 2.2.0 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 @@ -11067,7 +11009,7 @@ packages: dev: false name: '@rush-temp/service-bus' resolution: - integrity: sha512-woMW5RDh66mkr6uN50HKV0/SoVTL/GmT07MWw2h2hpXQCQnagrtjHLZnyy5LsykT7t6M2OLVJQ9esvduGevm4g== + integrity: sha512-7l/yq0tRiXJn0TmY+W+MvJ3qx1F3JhesbSEwB6K1jAEyjrFefsdUATDrdSwgsU97c262gl4YUtjOfUZRS+ipPw== tarball: 'file:projects/service-bus.tgz' version: 0.0.0 'file:projects/storage-blob.tgz': @@ -11080,7 +11022,7 @@ packages: '@types/nise': 1.4.0 '@types/nock': 10.0.3 '@types/node': 8.10.49 - '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 cross-env: 5.2.0 @@ -11117,11 +11059,11 @@ packages: nock: 10.0.6 nyc: 14.1.1 prettier: 1.18.2 - puppeteer: 1.18.0 + puppeteer: 1.18.1 query-string: 6.8.1 rimraf: 2.6.3 rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 + rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 @@ -11137,14 +11079,14 @@ packages: dev: false name: '@rush-temp/storage-blob' resolution: - integrity: sha512-TbGIAb3chrULgqv+Zc/NoHP7QJ+Bh6hp+j+gDxXZHd0WL0PSgj+/AXi+WOKzE5+HZpRDW9f+l4LY6yi2Ayu1DA== + integrity: sha512-l5yU6XZLr3m7h/x6Ys/djenWCnucnjO/0T+uktjvDhljbG/bbtuAKMrSxLcyaHnzThUon6Sm2/hMc1+clvz1qw== tarball: 'file:projects/storage-blob.tgz' version: 0.0.0 'file:projects/storage-datalake.tgz': dependencies: '@azure/ms-rest-azure-js': 1.3.8 '@azure/ms-rest-js': 1.8.13 - '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 eslint: 5.16.0 eslint-config-prettier: 4.3.0_eslint@5.16.0 @@ -11162,7 +11104,7 @@ packages: dev: false name: '@rush-temp/storage-datalake' resolution: - integrity: sha512-2q+EflR1ijWEwGwe3NtE45FcFTZ9XnjtS5Vue2b9K5d6yAGaMcw1GpuN1Wrfs7ymkv6BuMZS8IhlLYlNUqvllg== + integrity: sha512-0SQNaH5RCVSAxB/KfdnoD50DQdSjUHmJf4SjzYT43lGRxP8ZoG5DKq1iWI5PqqcV8V0oLRPSsmc6BGf+wwvWaQ== tarball: 'file:projects/storage-datalake.tgz' version: 0.0.0 'file:projects/storage-file.tgz': @@ -11175,7 +11117,7 @@ packages: '@types/nise': 1.4.0 '@types/nock': 10.0.3 '@types/node': 8.10.49 - '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 cross-env: 5.2.0 @@ -11212,11 +11154,11 @@ packages: nock: 10.0.6 nyc: 14.1.1 prettier: 1.18.2 - puppeteer: 1.18.0 + puppeteer: 1.18.1 query-string: 6.8.1 rimraf: 2.6.3 rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 + rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 @@ -11232,7 +11174,7 @@ packages: dev: false name: '@rush-temp/storage-file' resolution: - integrity: sha512-ojDzr+k1LPeffweMopFEP/cEdSJ8PhIf1GkIqEBDNKs0wg8xrsK4jD2CHvI3YECD3xZxE2WjioLO/mK6jx4Xkg== + integrity: sha512-tAqHoFkbYa6cD/wOQ3dxmK3z6nalybxDBrRcQ0AQPrHWUyUOfRcB/3ULXlw+Dft8JUz9PRRN5PZUJrzqNJZ25w== tarball: 'file:projects/storage-file.tgz' version: 0.0.0 'file:projects/storage-queue.tgz': @@ -11245,7 +11187,7 @@ packages: '@types/nise': 1.4.0 '@types/nock': 10.0.3 '@types/node': 8.10.49 - '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 cross-env: 5.2.0 @@ -11281,11 +11223,11 @@ packages: nock: 10.0.6 nyc: 14.1.1 prettier: 1.18.2 - puppeteer: 1.18.0 + puppeteer: 1.18.1 query-string: 6.8.1 rimraf: 2.6.3 rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 + rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 @@ -11301,7 +11243,7 @@ packages: dev: false name: '@rush-temp/storage-queue' resolution: - integrity: sha512-z44tpFHC+2/6soFw4lvje3Tjelo/sGhWijmiGzQow6OyCAGLaGBW+YevWO1+QtphCY+eHD3LUkf254xaatM9fg== + integrity: sha512-PCuySUTDzKi4E6dYBAZFqNwqUc1lFaf9T2YMN5fP7tzyOqLac0xRQeq2vIDZtAv3QmXI7tojP76BJTuQukTPdQ== tarball: 'file:projects/storage-queue.tgz' version: 0.0.0 'file:projects/template.tgz': @@ -11310,7 +11252,7 @@ packages: '@microsoft/api-extractor': 7.2.1 '@types/mocha': 5.2.7 '@types/node': 8.10.49 - '@typescript-eslint/eslint-plugin': 1.9.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 cross-env: 5.2.0 @@ -11328,7 +11270,7 @@ packages: prettier: 1.18.2 rimraf: 2.6.3 rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.0_rollup@1.13.1 + rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 @@ -11342,7 +11284,7 @@ packages: dev: false name: '@rush-temp/template' resolution: - integrity: sha512-tJB8MrGU38lsxxYe8xNawUkUw9xE6+vMIMOkehQdJWt3oaPEMTZ4rRpOo3xJYSyt20kuH/Op01T0GUo+aeCp0w== + integrity: sha512-srNXzGxTJrcvCGIZbmilAWiHqqBaR1U8O2UpC1Hi8jYv6hMKOcoJS9kGdMUPD/eK2FJsON6gMXFXuCmiN87cfA== tarball: 'file:projects/template.tgz' version: 0.0.0 'file:projects/testhub.tgz': @@ -11356,9 +11298,9 @@ packages: debug: 3.2.6 is-buffer: 2.0.3 jssha: 2.3.1 - ms-rest: 2.5.0 + ms-rest: 2.5.1 ms-rest-azure: 2.6.0 - rhea: 1.0.7 + rhea: 1.0.8 rimraf: 2.6.3 tslib: 1.10.0 typescript: 3.5.2 @@ -11382,6 +11324,7 @@ specifiers: '@microsoft/api-extractor': ^7.1.5 '@rush-temp/abort-controller': 'file:./projects/abort-controller.tgz' '@rush-temp/core-amqp': 'file:./projects/core-amqp.tgz' + '@rush-temp/core-asynciterator-polyfill': 'file:./projects/core-asynciterator-polyfill.tgz' '@rush-temp/core-http': 'file:./projects/core-http.tgz' '@rush-temp/core-paging': 'file:./projects/core-paging.tgz' '@rush-temp/cosmos': 'file:./projects/cosmos.tgz' @@ -11431,7 +11374,7 @@ specifiers: '@types/ws': ^6.0.1 '@types/xml2js': ^0.4.3 '@types/yargs': ^11.0.0 - '@typescript-eslint/eslint-plugin': ~1.9.0 + '@typescript-eslint/eslint-plugin': ^1.11.0 '@typescript-eslint/parser': ^1.7.0 abortcontroller-polyfill: ^1.1.9 assert: ^1.4.1 diff --git a/sdk/core/core-amqp/package.json b/sdk/core/core-amqp/package.json index b48b39d087c3..f957d24d506e 100644 --- a/sdk/core/core-amqp/package.json +++ b/sdk/core/core-amqp/package.json @@ -81,8 +81,8 @@ "@types/mocha": "^5.2.5", "@types/node": "^8.0.0", "@types/sinon": "^5.0.5", - "@typescript-eslint/eslint-plugin": "~1.9.0", - "@typescript-eslint/parser": "^1.7.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", "assert": "^1.4.1", "chai": "^4.2.0", "chai-as-promised": "^7.1.1", diff --git a/sdk/core/core-paging/package.json b/sdk/core/core-paging/package.json index 1649ac5ba88b..e6c516bd94ad 100644 --- a/sdk/core/core-paging/package.json +++ b/sdk/core/core-paging/package.json @@ -61,8 +61,8 @@ }, "devDependencies": { "@types/node": "^8.0.0", - "@typescript-eslint/eslint-plugin": "~1.9.0", - "@typescript-eslint/parser": "^1.7.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", "eslint": "^5.16.0", "eslint-config-prettier": "^4.2.0", "eslint-detailed-reporter": "^0.8.0", diff --git a/sdk/eventhub/event-hubs/package.json b/sdk/eventhub/event-hubs/package.json index 00731d0cd6c9..297fe0c4bd49 100644 --- a/sdk/eventhub/event-hubs/package.json +++ b/sdk/eventhub/event-hubs/package.json @@ -87,8 +87,8 @@ "@types/node": "^8.0.0", "@types/uuid": "^3.4.3", "@types/ws": "^6.0.1", - "@typescript-eslint/eslint-plugin": "~1.9.0", - "@typescript-eslint/parser": "^1.7.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", "assert": "^1.4.1", "chai": "^4.2.0", "chai-as-promised": "^7.1.1", @@ -130,10 +130,10 @@ "rollup-plugin-shim": "^1.0.0", "rollup-plugin-sourcemaps": "^0.4.2", "rollup-plugin-uglify": "^6.0.0", + "ts-mocha": "^6.0.0", "ts-node": "^7.0.1", "tslint": "^5.15.0", "typescript": "^3.2.2", - "ws": "^6.2.1", - "ts-mocha": "^6.0.0" + "ws": "^6.2.1" } } diff --git a/sdk/eventhub/event-processor-host/package.json b/sdk/eventhub/event-processor-host/package.json index 04ea5a3cbf37..c3eb459477b7 100644 --- a/sdk/eventhub/event-processor-host/package.json +++ b/sdk/eventhub/event-processor-host/package.json @@ -78,8 +78,8 @@ "@types/mocha": "^5.2.5", "@types/node": "^8.0.0", "@types/uuid": "^3.4.3", - "@typescript-eslint/eslint-plugin": "~1.9.0", - "@typescript-eslint/parser": "^1.7.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", "chai": "^4.2.0", "chai-as-promised": "^7.1.1", "chai-string": "^1.5.0", diff --git a/sdk/identity/identity/package.json b/sdk/identity/identity/package.json index 45b9f8bd0924..6ef820da71ec 100644 --- a/sdk/identity/identity/package.json +++ b/sdk/identity/identity/package.json @@ -78,8 +78,8 @@ "@types/node": "^8.0.0", "@types/qs": "~6.5.3", "@types/uuid": "^3.4.3", - "@typescript-eslint/eslint-plugin": "~1.9.0", - "@typescript-eslint/parser": "^1.7.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", "assert": "^1.4.1", "cross-env": "^5.2.0", "eslint": "^5.16.0", diff --git a/sdk/keyvault/keyvault-keys/package.json b/sdk/keyvault/keyvault-keys/package.json index 15d07a8c943f..1c1240cf2520 100644 --- a/sdk/keyvault/keyvault-keys/package.json +++ b/sdk/keyvault/keyvault-keys/package.json @@ -81,8 +81,8 @@ "@types/mocha": "^5.2.5", "@types/nock": "^10.0.1", "@types/node": "^8.0.0", - "@typescript-eslint/eslint-plugin": "~1.9.0", - "@typescript-eslint/parser": "^1.7.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", "chai": "^4.2.0", "cross-env": "^5.2.0", "dotenv": "^7.0.0", diff --git a/sdk/keyvault/keyvault-secrets/package.json b/sdk/keyvault/keyvault-secrets/package.json index 6a9e636bb4c7..e486fff67f2b 100644 --- a/sdk/keyvault/keyvault-secrets/package.json +++ b/sdk/keyvault/keyvault-secrets/package.json @@ -83,8 +83,8 @@ "@types/mocha": "^5.2.5", "@types/nock": "^10.0.1", "@types/node": "^8.0.0", - "@typescript-eslint/eslint-plugin": "~1.9.0", - "@typescript-eslint/parser": "^1.7.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", "chai": "^4.2.0", "cross-env": "^5.2.0", "dotenv": "^7.0.0", diff --git a/sdk/servicebus/service-bus/package.json b/sdk/servicebus/service-bus/package.json index c8e249404bc6..e68a968dffee 100644 --- a/sdk/servicebus/service-bus/package.json +++ b/sdk/servicebus/service-bus/package.json @@ -88,8 +88,8 @@ "@types/mocha": "^5.2.5", "@types/node": "^8.0.0", "@types/ws": "^6.0.1", - "@typescript-eslint/eslint-plugin": "~1.9.0", - "@typescript-eslint/parser": "^1.7.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", "assert": "^1.4.1", "buffer": "^5.2.1", "chai": "^4.2.0", diff --git a/sdk/storage/storage-blob/package.json b/sdk/storage/storage-blob/package.json index 64351c3c7e7d..c85332954a44 100644 --- a/sdk/storage/storage-blob/package.json +++ b/sdk/storage/storage-blob/package.json @@ -86,8 +86,8 @@ "@types/nise": "^1.4.0", "@types/nock": "^10.0.1", "@types/node": "^8.0.0", - "@typescript-eslint/eslint-plugin": "~1.9.0", - "@typescript-eslint/parser": "^1.7.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", "assert": "^1.4.1", "cross-env": "^5.2.0", "dotenv": "^7.0.0", diff --git a/sdk/storage/storage-datalake/package.json b/sdk/storage/storage-datalake/package.json index 0810f22cc503..aaae3438242d 100644 --- a/sdk/storage/storage-datalake/package.json +++ b/sdk/storage/storage-datalake/package.json @@ -62,8 +62,8 @@ "uglify": "^0.1.5" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "~1.9.0", - "@typescript-eslint/parser": "^1.7.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", "eslint": "^5.16.0", "eslint-config-prettier": "^4.2.0", "eslint-detailed-reporter": "^0.8.0", diff --git a/sdk/storage/storage-file/package.json b/sdk/storage/storage-file/package.json index b9f7f8d3f6d8..79361c1769af 100644 --- a/sdk/storage/storage-file/package.json +++ b/sdk/storage/storage-file/package.json @@ -86,8 +86,8 @@ "@types/nise": "^1.4.0", "@types/nock": "^10.0.1", "@types/node": "^8.0.0", - "@typescript-eslint/eslint-plugin": "~1.9.0", - "@typescript-eslint/parser": "^1.7.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", "assert": "^1.4.1", "cross-env": "^5.2.0", "dotenv": "^7.0.0", diff --git a/sdk/storage/storage-queue/package.json b/sdk/storage/storage-queue/package.json index 167aeac568c1..1c8576a36a9b 100644 --- a/sdk/storage/storage-queue/package.json +++ b/sdk/storage/storage-queue/package.json @@ -84,8 +84,8 @@ "@types/nise": "^1.4.0", "@types/nock": "^10.0.1", "@types/node": "^8.0.0", - "@typescript-eslint/eslint-plugin": "~1.9.0", - "@typescript-eslint/parser": "^1.7.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", "assert": "^1.4.1", "cross-env": "^5.2.0", "dotenv": "^7.0.0", diff --git a/sdk/template/template/package.json b/sdk/template/template/package.json index 9b300f2b1378..71118425b808 100644 --- a/sdk/template/template/package.json +++ b/sdk/template/template/package.json @@ -67,8 +67,8 @@ "@microsoft/api-extractor": "^7.1.5", "@types/mocha": "^5.2.5", "@types/node": "^8.0.0", - "@typescript-eslint/eslint-plugin": "~1.9.0", - "@typescript-eslint/parser": "^1.7.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", "assert": "^1.4.1", "cross-env": "^5.2.0", "eslint": "^5.16.0", From 7c9605c87a4887f1c4ad300b7ac213ff8061390a Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Fri, 28 Jun 2019 17:37:58 -0700 Subject: [PATCH 217/289] Generate @azure/arm-containerregistry package (#4129) * Generate @azure/arm-containerregistry package * Bump the version * Bump the version --- .../arm-containerregistry/package.json | 2 +- ...ontainerRegistryManagementClientContext.ts | 2 +- .../arm-containerregistry/src/models/index.ts | 113 ++++++++++--- .../src/models/mappers.ts | 159 +++++++++++++----- .../src/models/parameters.ts | 2 +- .../src/models/registriesMappers.ts | 1 + 6 files changed, 212 insertions(+), 67 deletions(-) diff --git a/sdk/containerregistry/arm-containerregistry/package.json b/sdk/containerregistry/arm-containerregistry/package.json index 577abeff0a9e..ac283ac248ae 100644 --- a/sdk/containerregistry/arm-containerregistry/package.json +++ b/sdk/containerregistry/arm-containerregistry/package.json @@ -2,7 +2,7 @@ "name": "@azure/arm-containerregistry", "author": "Microsoft Corporation", "description": "ContainerRegistryManagementClient Library with typescript type definitions for node.js and browser.", - "version": "6.0.0", + "version": "7.0.0", "dependencies": { "@azure/ms-rest-azure-js": "^1.3.2", "@azure/ms-rest-js": "^1.8.1", diff --git a/sdk/containerregistry/arm-containerregistry/src/containerRegistryManagementClientContext.ts b/sdk/containerregistry/arm-containerregistry/src/containerRegistryManagementClientContext.ts index d613ecc49855..ba2c7a009239 100644 --- a/sdk/containerregistry/arm-containerregistry/src/containerRegistryManagementClientContext.ts +++ b/sdk/containerregistry/arm-containerregistry/src/containerRegistryManagementClientContext.ts @@ -13,7 +13,7 @@ import * as msRest from "@azure/ms-rest-js"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-containerregistry"; -const packageVersion = "6.0.0"; +const packageVersion = "7.0.0"; export class ContainerRegistryManagementClientContext extends msRestAzure.AzureServiceClient { credentials: msRest.ServiceClientCredentials; diff --git a/sdk/containerregistry/arm-containerregistry/src/models/index.ts b/sdk/containerregistry/arm-containerregistry/src/models/index.ts index f2c206fa1c2d..749b2633cab0 100644 --- a/sdk/containerregistry/arm-containerregistry/src/models/index.ts +++ b/sdk/containerregistry/arm-containerregistry/src/models/index.ts @@ -963,6 +963,20 @@ export interface SourceTriggerDescriptor { providerType?: string; } +/** + * An interface representing TimerTriggerDescriptor. + */ +export interface TimerTriggerDescriptor { + /** + * The timer trigger name that caused the run. + */ + timerTriggerName?: string; + /** + * The occurrence that triggered the run. + */ + scheduleOccurrence?: string; +} + /** * The platform properties against which the run has to happen. */ @@ -972,7 +986,7 @@ export interface PlatformProperties { */ os: OS; /** - * The OS architecture. Possible values include: 'amd64', 'x86', 'arm' + * The OS architecture. Possible values include: 'amd64', 'x86', '386', 'arm', 'arm64' */ architecture?: Architecture; /** @@ -991,20 +1005,6 @@ export interface AgentProperties { cpu?: number; } -/** - * An interface representing TimerTriggerDescriptor. - */ -export interface TimerTriggerDescriptor { - /** - * The timer trigger name that caused the run. - */ - timerTriggerName?: string; - /** - * The occurrence that triggered the run. - */ - scheduleOccurrence?: string; -} - /** * The resource model definition for a ARM proxy resource. It will have everything other than * required location and tags. @@ -1078,6 +1078,10 @@ export interface Run extends ProxyResource { * The source trigger that caused the run. */ sourceTrigger?: SourceTriggerDescriptor; + /** + * The timer trigger that caused the run. + */ + timerTrigger?: TimerTriggerDescriptor; /** * The platform properties against which the run will happen. */ @@ -1099,6 +1103,10 @@ export interface Run extends ProxyResource { * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly runErrorMessage?: string; + /** + * The update trigger token passed for the Run. + */ + updateTriggerToken?: string; /** * The provisioning state of a run. Possible values include: 'Creating', 'Updating', 'Deleting', * 'Succeeded', 'Failed', 'Canceled' @@ -1108,10 +1116,6 @@ export interface Run extends ProxyResource { * The value that indicates whether archiving is enabled or not. Default value: false. */ isArchiveEnabled?: boolean; - /** - * The timer trigger that caused the run. - */ - timerTrigger?: TimerTriggerDescriptor; } /** @@ -1385,6 +1389,15 @@ export interface BaseImageTrigger { * 'All', 'Runtime' */ baseImageTriggerType: BaseImageTriggerType; + /** + * The endpoint URL for receiving update triggers. + */ + updateTriggerEndpoint?: string; + /** + * Type of Payload body for Base image update triggers. Possible values include: 'Default', + * 'Token' + */ + updateTriggerPayloadType?: UpdateTriggerPayloadType; /** * The current status of trigger. Possible values include: 'Disabled', 'Enabled'. Default value: * 'Enabled'. @@ -1543,7 +1556,7 @@ export interface PlatformUpdateParameters { */ os?: OS; /** - * The OS architecture. Possible values include: 'amd64', 'x86', 'arm' + * The OS architecture. Possible values include: 'amd64', 'x86', '386', 'arm', 'arm64' */ architecture?: Architecture; /** @@ -1677,6 +1690,15 @@ export interface BaseImageTriggerUpdateParameters { * 'All', 'Runtime' */ baseImageTriggerType?: BaseImageTriggerType; + /** + * The endpoint URL for receiving update triggers. + */ + updateTriggerEndpoint?: string; + /** + * Type of Payload body for Base image update triggers. Possible values include: 'Default', + * 'Token' + */ + updateTriggerPayloadType?: UpdateTriggerPayloadType; /** * The current status of trigger. Possible values include: 'Disabled', 'Enabled'. Default value: * 'Enabled'. @@ -1899,6 +1921,37 @@ export interface FileTaskRunRequest { credentials?: Credentials; } +/** + * An interface representing OverrideTaskStepProperties. + */ +export interface OverrideTaskStepProperties { + /** + * The source context against which run has to be queued. + */ + contextPath?: string; + /** + * The file against which run has to be queued. + */ + file?: string; + /** + * Gets or sets the collection of override arguments to be used when + * executing a build step. + */ + argumentsProperty?: Argument[]; + /** + * The name of the target build stage for the docker build. + */ + target?: string; + /** + * The collection of overridable values that can be passed when running a Task. + */ + values?: SetValue[]; + /** + * Base64 encoded update trigger token that will be attached with the base image trigger webhook. + */ + updateTriggerToken?: string; +} + /** * The parameters for a task run request. */ @@ -1913,13 +1966,13 @@ export interface TaskRunRequest { */ isArchiveEnabled?: boolean; /** - * The name of task against which run has to be queued. + * The resource ID of task against which run has to be queued. */ - taskName: string; + taskId: string; /** - * The collection of overridable values that can be passed when running a task. + * Set of overridable parameters that can be passed when running a Task. */ - values?: SetValue[]; + overrideTaskStepProperties?: OverrideTaskStepProperties; } /** @@ -2643,11 +2696,11 @@ export type OS = 'Windows' | 'Linux'; /** * Defines values for Architecture. - * Possible values include: 'amd64', 'x86', 'arm' + * Possible values include: 'amd64', 'x86', '386', 'arm', 'arm64' * @readonly * @enum {string} */ -export type Architecture = 'amd64' | 'x86' | 'arm'; +export type Architecture = 'amd64' | 'x86' | '386' | 'arm' | 'arm64'; /** * Defines values for Variant. @@ -2722,6 +2775,14 @@ export type SourceTriggerEvent = 'commit' | 'pullrequest'; */ export type BaseImageTriggerType = 'All' | 'Runtime'; +/** + * Defines values for UpdateTriggerPayloadType. + * Possible values include: 'Default', 'Token' + * @readonly + * @enum {string} + */ +export type UpdateTriggerPayloadType = 'Default' | 'Token'; + /** * Defines values for SourceRegistryLoginMode. * Possible values include: 'None', 'Default' diff --git a/sdk/containerregistry/arm-containerregistry/src/models/mappers.ts b/sdk/containerregistry/arm-containerregistry/src/models/mappers.ts index f06ad8ccc203..3b7be0863436 100644 --- a/sdk/containerregistry/arm-containerregistry/src/models/mappers.ts +++ b/sdk/containerregistry/arm-containerregistry/src/models/mappers.ts @@ -1606,6 +1606,28 @@ export const SourceTriggerDescriptor: msRest.CompositeMapper = { } }; +export const TimerTriggerDescriptor: msRest.CompositeMapper = { + serializedName: "TimerTriggerDescriptor", + type: { + name: "Composite", + className: "TimerTriggerDescriptor", + modelProperties: { + timerTriggerName: { + serializedName: "timerTriggerName", + type: { + name: "String" + } + }, + scheduleOccurrence: { + serializedName: "scheduleOccurrence", + type: { + name: "String" + } + } + } + } +}; + export const PlatformProperties: msRest.CompositeMapper = { serializedName: "PlatformProperties", type: { @@ -1651,28 +1673,6 @@ export const AgentProperties: msRest.CompositeMapper = { } }; -export const TimerTriggerDescriptor: msRest.CompositeMapper = { - serializedName: "TimerTriggerDescriptor", - type: { - name: "Composite", - className: "TimerTriggerDescriptor", - modelProperties: { - timerTriggerName: { - serializedName: "timerTriggerName", - type: { - name: "String" - } - }, - scheduleOccurrence: { - serializedName: "scheduleOccurrence", - type: { - name: "String" - } - } - } - } -}; - export const ProxyResource: msRest.CompositeMapper = { serializedName: "ProxyResource", type: { @@ -1785,6 +1785,13 @@ export const Run: msRest.CompositeMapper = { className: "SourceTriggerDescriptor" } }, + timerTrigger: { + serializedName: "properties.timerTrigger", + type: { + name: "Composite", + className: "TimerTriggerDescriptor" + } + }, platform: { serializedName: "properties.platform", type: { @@ -1823,6 +1830,12 @@ export const Run: msRest.CompositeMapper = { name: "String" } }, + updateTriggerToken: { + serializedName: "properties.updateTriggerToken", + type: { + name: "String" + } + }, provisioningState: { serializedName: "properties.provisioningState", type: { @@ -1835,13 +1848,6 @@ export const Run: msRest.CompositeMapper = { type: { name: "Boolean" } - }, - timerTrigger: { - serializedName: "properties.timerTrigger", - type: { - name: "Composite", - className: "TimerTriggerDescriptor" - } } } } @@ -2281,6 +2287,18 @@ export const BaseImageTrigger: msRest.CompositeMapper = { name: "String" } }, + updateTriggerEndpoint: { + serializedName: "updateTriggerEndpoint", + type: { + name: "String" + } + }, + updateTriggerPayloadType: { + serializedName: "updateTriggerPayloadType", + type: { + name: "String" + } + }, status: { serializedName: "status", defaultValue: 'Enabled', @@ -2744,6 +2762,18 @@ export const BaseImageTriggerUpdateParameters: msRest.CompositeMapper = { name: "String" } }, + updateTriggerEndpoint: { + serializedName: "updateTriggerEndpoint", + type: { + name: "String" + } + }, + updateTriggerPayloadType: { + serializedName: "updateTriggerPayloadType", + type: { + name: "String" + } + }, status: { serializedName: "status", defaultValue: 'Enabled', @@ -3119,18 +3149,38 @@ export const FileTaskRunRequest: msRest.CompositeMapper = { } }; -export const TaskRunRequest: msRest.CompositeMapper = { - serializedName: "TaskRunRequest", +export const OverrideTaskStepProperties: msRest.CompositeMapper = { + serializedName: "OverrideTaskStepProperties", type: { name: "Composite", - polymorphicDiscriminator: RunRequest.type.polymorphicDiscriminator, - uberParent: "RunRequest", - className: "TaskRunRequest", + className: "OverrideTaskStepProperties", modelProperties: { - ...RunRequest.type.modelProperties, - taskName: { - required: true, - serializedName: "taskName", + contextPath: { + serializedName: "contextPath", + type: { + name: "String" + } + }, + file: { + serializedName: "file", + type: { + name: "String" + } + }, + argumentsProperty: { + serializedName: "arguments", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "Argument" + } + } + } + }, + target: { + serializedName: "target", type: { name: "String" } @@ -3146,6 +3196,39 @@ export const TaskRunRequest: msRest.CompositeMapper = { } } } + }, + updateTriggerToken: { + serializedName: "updateTriggerToken", + type: { + name: "String" + } + } + } + } +}; + +export const TaskRunRequest: msRest.CompositeMapper = { + serializedName: "TaskRunRequest", + type: { + name: "Composite", + polymorphicDiscriminator: RunRequest.type.polymorphicDiscriminator, + uberParent: "RunRequest", + className: "TaskRunRequest", + modelProperties: { + ...RunRequest.type.modelProperties, + taskId: { + required: true, + serializedName: "taskId", + type: { + name: "String" + } + }, + overrideTaskStepProperties: { + serializedName: "overrideTaskStepProperties", + type: { + name: "Composite", + className: "OverrideTaskStepProperties" + } } } } diff --git a/sdk/containerregistry/arm-containerregistry/src/models/parameters.ts b/sdk/containerregistry/arm-containerregistry/src/models/parameters.ts index a976d66732d5..28bc5f1e102b 100644 --- a/sdk/containerregistry/arm-containerregistry/src/models/parameters.ts +++ b/sdk/containerregistry/arm-containerregistry/src/models/parameters.ts @@ -38,7 +38,7 @@ export const apiVersion1: msRest.OperationQueryParameter = { required: true, isConstant: true, serializedName: "api-version", - defaultValue: '2019-04-01', + defaultValue: '2019-06-01-preview', type: { name: "String" } diff --git a/sdk/containerregistry/arm-containerregistry/src/models/registriesMappers.ts b/sdk/containerregistry/arm-containerregistry/src/models/registriesMappers.ts index b35473a97ee1..6b1fa361e77a 100644 --- a/sdk/containerregistry/arm-containerregistry/src/models/registriesMappers.ts +++ b/sdk/containerregistry/arm-containerregistry/src/models/registriesMappers.ts @@ -33,6 +33,7 @@ export { ImportSourceCredentials, IPRule, NetworkRuleSet, + OverrideTaskStepProperties, PlatformProperties, Policies, ProxyResource, From ee01e4d412dd2740334cadc17d33728af7f58650 Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Fri, 28 Jun 2019 18:07:43 -0700 Subject: [PATCH 218/289] Copy browser bundles to artifacts (#4131) --- .azure-pipelines/client.yml | 4 +++- eng/pipelines/templates/jobs/archetype-sdk-client.yml | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.azure-pipelines/client.yml b/.azure-pipelines/client.yml index fbd27f316de6..88e5b0b4bb6d 100644 --- a/.azure-pipelines/client.yml +++ b/.azure-pipelines/client.yml @@ -41,7 +41,9 @@ jobs: - task: CopyFiles@2 inputs: - contents: 'sdk/**/**/*.tgz' + contents: | + sdk/**/**/*.tgz + sdk/**/**/browser/*.zip targetFolder: $(Build.ArtifactStagingDirectory) flattenFolders: true displayName: 'Copy packages' diff --git a/eng/pipelines/templates/jobs/archetype-sdk-client.yml b/eng/pipelines/templates/jobs/archetype-sdk-client.yml index 454c5adf70ab..9188e0055a3a 100644 --- a/eng/pipelines/templates/jobs/archetype-sdk-client.yml +++ b/eng/pipelines/templates/jobs/archetype-sdk-client.yml @@ -55,7 +55,9 @@ jobs: - task: CopyFiles@2 inputs: - contents: "sdk/**/**/*.tgz" + contents: | + sdk/**/**/*.tgz + sdk/**/**/browser/*.zip targetFolder: $(Build.ArtifactStagingDirectory) flattenFolders: true displayName: "Copy packages" From f9ac646e1a1c93c13b6db9ca0e5147e9f66a13e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez?= Date: Mon, 1 Jul 2019 13:13:00 -0400 Subject: [PATCH 219/289] [JS] [KeyVault] Parallel-friendly and delay-lacking tests (#4054) * retry utility on keyvault * updated tests --- sdk/keyvault/keyvault-keys/package.json | 7 +- .../recording_before_all_hook.js | 4948 ++++++++++- .../recording_before_all_hook.js | 7726 ++++++++++++++++- .../recording_before_all_hook.js | 2573 +++++- sdk/keyvault/keyvault-keys/tests/CRUD.test.ts | 159 +- sdk/keyvault/keyvault-keys/tests/list.test.ts | 119 +- .../tests/recoverBackupRestore.test.ts | 101 +- .../keyvault-keys/tests/utils/recorder.ts | 18 + .../keyvault-keys/tests/utils/retry.test.ts | 25 + .../keyvault-keys/tests/utils/retry.ts | 29 + .../keyvault-keys/tests/utils/testClient.ts | 28 + .../keyvault-keys/tests/utils/utils.common.ts | 2 +- sdk/keyvault/keyvault-secrets/package.json | 5 +- .../recording_before_all_hook.js | 1897 +++- .../recording_before_all_hook.js | 2246 +++-- .../recording_before_all_hook.js | 901 +- .../keyvault-secrets/tests/CRUD.test.ts | 129 +- .../keyvault-secrets/tests/list.test.ts | 112 +- .../tests/recoverBackupRestore.test.ts | 93 +- .../keyvault-secrets/tests/utils/recorder.ts | 18 + .../tests/utils/retry.test.ts | 25 + .../keyvault-secrets/tests/utils/retry.ts | 29 + .../tests/utils/testClient.ts | 28 + .../tests/utils/utils.common.ts | 2 +- 24 files changed, 19398 insertions(+), 1822 deletions(-) create mode 100644 sdk/keyvault/keyvault-keys/tests/utils/retry.test.ts create mode 100644 sdk/keyvault/keyvault-keys/tests/utils/retry.ts create mode 100644 sdk/keyvault/keyvault-keys/tests/utils/testClient.ts create mode 100644 sdk/keyvault/keyvault-secrets/tests/utils/retry.test.ts create mode 100644 sdk/keyvault/keyvault-secrets/tests/utils/retry.ts create mode 100644 sdk/keyvault/keyvault-secrets/tests/utils/testClient.ts diff --git a/sdk/keyvault/keyvault-keys/package.json b/sdk/keyvault/keyvault-keys/package.json index 1c1240cf2520..15809f60c8a9 100644 --- a/sdk/keyvault/keyvault-keys/package.json +++ b/sdk/keyvault/keyvault-keys/package.json @@ -52,7 +52,7 @@ "extract-api": "tsc -p . && api-extractor run --local", "format": "prettier --write --config ../../.prettierrc.json \"src/**/*.ts\" \"tests/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", - "integration-test:node": "ts-mocha -p tests/tsconfig.test.json tests/*.ts --timeout 1200000 --reporter mocha-multi --reporter-options spec=-,mocha-junit-reporter=-", + "integration-test:node": "ts-mocha -p tests/tsconfig.test.json tests/*.test.ts tests/**/*.test.ts --timeout 1200000 --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 tests samples --ext .ts --fix --fix-type [problem,suggestion]", "lint": "eslint -c ../../.eslintrc.json src tests samples --ext .ts -f node_modules/eslint-detailed-reporter/lib/detailed.js -o keyvault-keys-lintReport.html || exit 0", @@ -63,8 +63,9 @@ "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": "cross-env TEST_MODE=playback npm run integration-test:node", - "unit-test": "npm run unit-test:node && npm run unit-test:browser" + "unit-test:node": "cross-env TEST_MODE=playback npm run integration-test:node", + "unit-test": "npm run unit-test:node && npm run unit-test:browser", + "test:node:record": "cross-env TEST_MODE=record npm run integration-test:node" }, "sideEffects": false, "dependencies": { diff --git a/sdk/keyvault/keyvault-keys/recordings/node/keys_client__create_read_update_and_delete_operations/recording_before_all_hook.js b/sdk/keyvault/keyvault-keys/recordings/node/keys_client__create_read_update_and_delete_operations/recording_before_all_hook.js index 6c702a5ce9ae..0fa9ce5cd1ca 100644 --- a/sdk/keyvault/keyvault-keys/recordings/node/keys_client__create_read_update_and_delete_operations/recording_before_all_hook.js +++ b/sdk/keyvault/keyvault-keys/recordings/node/keys_client__create_read_update_and_delete_operations/recording_before_all_hook.js @@ -17,17 +17,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '90934bb6-b559-465e-acf5-fcfe5e640d00', + '6f8eb575-8f45-4bd3-9bca-47706d687600', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AoS9nDxfSBFIjMUcXp-eVsA_aSJHAQAAAEklmtQOAAAA; expires=Thu, 18-Jul-2019 00:20:26 GMT; path=/; secure; HttpOnly', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHAQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:52:44 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 00:20:25 GMT', + 'Fri, 28 Jun 2019 12:52:43 GMT', 'Connection', 'close', 'Content-Length', @@ -35,28 +35,4940 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/keys/CRUDKeyName') + .post('/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-/create', {"kty":"RSA"}) .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Key not found: CRUDKeyName"}}, [ 'Cache-Control', + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-/a8fb0f3805714b6095140d4a96728b18","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"6erLjSFW1wp1QgGGbzVBvKP16KeO7-ACjKYL0apOK-9WR2MambZuQeZuOAZ1GY1vWsCd4kWZdMU2-DUbxl836Bqkd2rwO052vraj4l7kE4JjU8KyVw8v5cz0G-XDH0wjHy-hRrsoJKV4izq73T5vD2tMOFS-IWYtLalts70Z5F7Gm2i77Nw5GlKVLbx4cT_41rnAtUZwTIEQiCPrAWyoEYx54PAc9ugOyAdJJCci6mTFz9tHeTCODOaw8vpmHF8Hwz1lerA6YrkBAh5285ZxR2ANJoKBs9ZyXpZwCT4OOkXp6M89385_S95922I5pKreCBQWb11dac6efCVhAsXBYQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561726365,"updated":1561726365,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'd1638124-4a43-42a6-a8a5-8c84ca03ed6c', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:52:44 GMT', + 'Connection', + 'close', + 'Content-Length', + '710' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '218d1126-32ed-478d-b4c9-978ffde66300', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHAgAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:52:45 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:52:44 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-","deletedDate":1561726365,"scheduledPurgeDate":1569502365,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-/a8fb0f3805714b6095140d4a96728b18","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"6erLjSFW1wp1QgGGbzVBvKP16KeO7-ACjKYL0apOK-9WR2MambZuQeZuOAZ1GY1vWsCd4kWZdMU2-DUbxl836Bqkd2rwO052vraj4l7kE4JjU8KyVw8v5cz0G-XDH0wjHy-hRrsoJKV4izq73T5vD2tMOFS-IWYtLalts70Z5F7Gm2i77Nw5GlKVLbx4cT_41rnAtUZwTIEQiCPrAWyoEYx54PAc9ugOyAdJJCci6mTFz9tHeTCODOaw8vpmHF8Hwz1lerA6YrkBAh5285ZxR2ANJoKBs9ZyXpZwCT4OOkXp6M89385_S95922I5pKreCBQWb11dac6efCVhAsXBYQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561726365,"updated":1561726365,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '8aa46b80-ec0a-48c3-81cb-9b4238f3bb88', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:52:45 GMT', + 'Connection', + 'close', + 'Content-Length', + '895' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '69044582-d679-4b34-89a2-fcee63967000', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHAwAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:52:45 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:52:45 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '9c97698c-31fe-4376-803b-c0f105ec68bb', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:52:46 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '54812201-bb57-429a-924f-2ba415576b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHBAAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:52:56 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:52:55 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '819938de-1524-4287-8b13-c05fd724dc80', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:52:55 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '6c7f6e21-8209-4653-b1f4-6bb53f066100', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHBQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:53:06 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:53:06 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '3985be53-78da-40da-9ddb-6042eecd3ec4', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:53:06 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '2fa43d02-f7ca-4bbb-a3a2-a614410d7700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHBgAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:53:07 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:53:06 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/CRUDKeyName-cancreateaRSAkey-/create', {"kty":"RSA"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateaRSAkey-/f821887ec92d41808dc631e9315ad525","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"xPlrCgIIvRKlDx78mDOFgPq2Aow0CQ5eAkXNeYwK0Yp8c7qmo5k9keFbIZ9zofNAqpBeLxwNU7hgfABQaKbizBIAhAo_dgoRlCFa-phLmsKPW-lG0FxMbnuzcXgwsB4XOh64zr5F7to82f3tVWuJgNUXsBRZ9HYp2SQQJUhXcU8PS5fBk0SvHQ9rANbd3kyVtdYMruJ6CoRTkn7K-gQQfNHZtU_X3U_FBBKbrXWk3XDW-JzgGQ_KaHG_ZF6z3feadCrKSHVlwa4vImbvZyay8BeTD0teLRvOMfp2nmkT2zJS4WmLlCwPAQ128pTlYnWXOzz-QEGP_qFq6Bjyg58fBQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561726387,"updated":1561726387,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'ec782d38-8139-40c9-be6d-f4df5fd5853b', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:53:06 GMT', + 'Connection', + 'close', + 'Content-Length', + '691' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '67e7122a-52ec-4abb-8966-99bbd5436000', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHBwAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:53:07 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:53:07 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/CRUDKeyName-cancreateaRSAkey-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateaRSAkey-","deletedDate":1561726388,"scheduledPurgeDate":1569502388,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateaRSAkey-/f821887ec92d41808dc631e9315ad525","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"xPlrCgIIvRKlDx78mDOFgPq2Aow0CQ5eAkXNeYwK0Yp8c7qmo5k9keFbIZ9zofNAqpBeLxwNU7hgfABQaKbizBIAhAo_dgoRlCFa-phLmsKPW-lG0FxMbnuzcXgwsB4XOh64zr5F7to82f3tVWuJgNUXsBRZ9HYp2SQQJUhXcU8PS5fBk0SvHQ9rANbd3kyVtdYMruJ6CoRTkn7K-gQQfNHZtU_X3U_FBBKbrXWk3XDW-JzgGQ_KaHG_ZF6z3feadCrKSHVlwa4vImbvZyay8BeTD0teLRvOMfp2nmkT2zJS4WmLlCwPAQ128pTlYnWXOzz-QEGP_qFq6Bjyg58fBQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561726387,"updated":1561726387,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '5f6297c9-eed6-4487-af37-03cd8c82c9cd', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:53:07 GMT', + 'Connection', + 'close', + 'Content-Length', + '857' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '576bc113-12df-48ec-8da5-787d50786000', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHCAAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:53:08 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:53:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateaRSAkey-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '46f30e4a-3b9a-4869-a563-03e931ca9376', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:53:08 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'b80b496d-8e59-458c-a65f-a92ab8dc6700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHCQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:53:18 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:53:18 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateaRSAkey-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'df4e17b1-9536-487b-a77f-c193b8c6227b', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:53:18 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '8bb03d5f-c156-430e-ada5-9e5c43f26200', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHCgAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:53:29 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:53:28 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateaRSAkey-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '80666b51-32c8-4aab-b5f8-3f16dacd2ef9', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:53:28 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '159605a4-4a8c-4024-9e8e-01a12bfc0900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHCwAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:53:29 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:53:28 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/CRUDKeyName-cancreateaRSAkeywithsize-/create', {"kty":"RSA","key_size":2048,"attributes":{}}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateaRSAkeywithsize-/156dc609b1ab46b0a73808cf2ee54e75","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"qVAblgDHfQwlVhfrTJq7P160_DR-4WnfgC6GPUwTo4OZvCoqhXxR4MULNG2bEyUuIdzNsa685n7ogzE_4yTegdasVhxdo1ZDO2xCDM3J4LDQDsAF3EtSC4YboUPh6q6Dt7Meu1a_gVDrUgXm-ROktbrDcIzheFu-syj786kqafThFpVq2FKmehljHzrdOxC2D9j5x_2lpCGng8_lbSaRSjhrmjs_PXb0IAF3cEt9x6fDzg_5EDIhhFzSqYC6SbRBJAgl67VhdJEYMcitNPycyKs1GBQj-X-d5F4V6CDqXa8WWiWOFx_AVQz0M0gj80mfRndL9fAhC6sms4iRjY5L6w","e":"AQAB"},"attributes":{"enabled":true,"created":1561726410,"updated":1561726410,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '996ea117-2288-4dc2-b93f-9c692ab4dd58', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:53:29 GMT', + 'Connection', + 'close', + 'Content-Length', + '699' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'da421748-e050-4935-990b-3704907f6900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHDAAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:53:30 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:53:30 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/CRUDKeyName-cancreateaRSAkeywithsize-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateaRSAkeywithsize-","deletedDate":1561726410,"scheduledPurgeDate":1569502410,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateaRSAkeywithsize-/156dc609b1ab46b0a73808cf2ee54e75","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"qVAblgDHfQwlVhfrTJq7P160_DR-4WnfgC6GPUwTo4OZvCoqhXxR4MULNG2bEyUuIdzNsa685n7ogzE_4yTegdasVhxdo1ZDO2xCDM3J4LDQDsAF3EtSC4YboUPh6q6Dt7Meu1a_gVDrUgXm-ROktbrDcIzheFu-syj786kqafThFpVq2FKmehljHzrdOxC2D9j5x_2lpCGng8_lbSaRSjhrmjs_PXb0IAF3cEt9x6fDzg_5EDIhhFzSqYC6SbRBJAgl67VhdJEYMcitNPycyKs1GBQj-X-d5F4V6CDqXa8WWiWOFx_AVQz0M0gj80mfRndL9fAhC6sms4iRjY5L6w","e":"AQAB"},"attributes":{"enabled":true,"created":1561726410,"updated":1561726410,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '52f432df-5aec-41cc-97c4-e11859b9c830', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:53:30 GMT', + 'Connection', + 'close', + 'Content-Length', + '873' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '087b71cf-c163-4257-b080-289c7f6a7300', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHDQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:53:30 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:53:29 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateaRSAkeywithsize-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '3301614a-f36d-4008-8435-01a316b2911e', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:53:30 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '1e85d160-b34c-4d99-8e55-b0c1395c7300', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHDgAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:53:41 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:53:40 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateaRSAkeywithsize-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'ec12e54d-d16d-48da-8db2-29d023c25eaa', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:53:41 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'f293beea-2a6d-4f2f-b088-5aa16c090b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHDwAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:53:51 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:53:51 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateaRSAkeywithsize-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'ecdc6881-b1a7-4f18-b111-04f4ce6e3ee0', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:53:51 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '5e269875-a424-4bc5-bd77-b28d0fa77700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHEAAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:53:52 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:53:51 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/CRUDKeyName-cancreateanECkey-/create', {"kty":"EC"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateanECkey-/2a288b7433f948db847ed512fecee18b","kty":"EC","key_ops":["sign","verify"],"crv":"P-256","x":"Sp6E0TXy48CsKdMN7tKHLYkpkDcMIvLHFHlSw6CFJj0","y":"8V_TueR-flwTGI1vLM0NEYN3alR2DRmzot2aoFp1oWI"},"attributes":{"enabled":true,"created":1561726432,"updated":1561726432,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '1ed3f859-1147-4b51-ad94-68674c2b2d18', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:53:52 GMT', + 'Connection', + 'close', + 'Content-Length', + '402' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'fbb51b44-ad38-4e45-b296-fdb964b25f00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHEQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:53:52 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:53:52 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/CRUDKeyName-cancreateanECkey-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateanECkey-","deletedDate":1561726433,"scheduledPurgeDate":1569502433,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateanECkey-/2a288b7433f948db847ed512fecee18b","kty":"EC","key_ops":["sign","verify"],"crv":"P-256","x":"Sp6E0TXy48CsKdMN7tKHLYkpkDcMIvLHFHlSw6CFJj0","y":"8V_TueR-flwTGI1vLM0NEYN3alR2DRmzot2aoFp1oWI"},"attributes":{"enabled":true,"created":1561726432,"updated":1561726432,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '77bb86df-5ae0-4140-9298-0ada18ed8303', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:53:52 GMT', + 'Connection', + 'close', + 'Content-Length', + '568' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'f0accfdd-3ea3-45f3-a7fa-5ee073d56b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHEgAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:53:53 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:53:52 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateanECkey-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'ed55197c-823d-482d-b3fc-42ddb65253fd', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:53:53 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '0e1d1c3f-5d76-49d7-8929-829218786300', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHEwAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:54:03 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:54:03 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateanECkey-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '29bb39ec-f04b-4cca-be88-7590174f1b5a', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:54:03 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '66edf2ab-5ff2-4c97-beae-117906676700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHFAAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:54:14 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:54:13 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateanECkey-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'f545e6bb-4214-4401-8530-5afb3d6e1f18', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:54:14 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '27b7ea19-2006-49cf-8620-11a7baf07000', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHFQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:54:14 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:54:13 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/CRUDKeyName-cancreateanECkeywithcurve-/create', {"kty":"EC","attributes":{},"crv":"P-256"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateanECkeywithcurve-/baf6804bcfe545d8bc81b13853f16398","kty":"EC","key_ops":["sign","verify"],"crv":"P-256","x":"zq_NRa0071ske_4V1NIoT5rJczo_vx3IbZs_juKa1MY","y":"Zcweuoc2_hDe-E54opeBGiognr0q2Nv8tb18EV8XBd0"},"attributes":{"enabled":true,"created":1561726455,"updated":1561726455,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'd70638ee-1b61-485c-9540-b30590875deb', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:54:15 GMT', + 'Connection', + 'close', + 'Content-Length', + '411' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '22c807ec-7872-4a17-afba-098b74af7100', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHFgAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:54:15 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:54:15 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/CRUDKeyName-cancreateanECkeywithcurve-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateanECkeywithcurve-","deletedDate":1561726455,"scheduledPurgeDate":1569502455,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateanECkeywithcurve-/baf6804bcfe545d8bc81b13853f16398","kty":"EC","key_ops":["sign","verify"],"crv":"P-256","x":"zq_NRa0071ske_4V1NIoT5rJczo_vx3IbZs_juKa1MY","y":"Zcweuoc2_hDe-E54opeBGiognr0q2Nv8tb18EV8XBd0"},"attributes":{"enabled":true,"created":1561726455,"updated":1561726455,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '342a78d1-a005-4080-a3f5-6f390d86b836', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:54:14 GMT', + 'Connection', + 'close', + 'Content-Length', + '586' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '15a6527a-d9e0-4929-bc9e-eb4afd9d7d00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHFwAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:54:15 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:54:15 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateanECkeywithcurve-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '7d27098f-8cf0-4a69-80f7-96c5d4821b37', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:54:15 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '450fa9a1-baeb-4541-9fef-260d02c05c00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHGAAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:54:26 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:54:25 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateanECkeywithcurve-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '92aaf55f-cbd9-4218-9bac-5eba487d95c9', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:54:26 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '7235b26d-9d11-4852-951f-6bf402a56900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHGQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:54:36 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:54:35 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateanECkeywithcurve-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '0da8304e-7ba6-439b-841f-bcae50dc48e6', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:54:36 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'f4e10eee-5aa3-48b9-b377-b0d007076a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHGgAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:54:37 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:54:36 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/CRUDKeyName-cancreateadisabledkey-/create', {"kty":"RSA","attributes":{"enabled":false}}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateadisabledkey-/f0452b4ad4c84ab294d3df570cc7132e","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"x3Epkm62-nb9qODj4NdFinUJVXFBxvO4ff1iyPtE0LI6QWRJ7s9PKYzPUkGqeLq6elnhOly8udlgbah6GNGpELVNRXAeNyDEplHmtprzF1eWIyqwOfh7j7Tz5jYN09v4UYPUaI2gCRR3FxexYNR6Fw1AxGZbo-46BGgcbnSisNBxEdZdVcsaUGuOyq14u2K4ie4azGVLtGiHWEqy1xHRrnDblA_ofrYemcNbx5tnAvle4oLunSW81AWZZ8NZKSivQmQuFdFQdqISl_h7y7tU9tKa2RODs9BTmG1hFj_wA3zcftARzPiQwgMx4wXFhBsUkhEOD1v9UZ5YzFYMDDunow","e":"AQAB"},"attributes":{"enabled":false,"created":1561726477,"updated":1561726477,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '58e2958d-1f89-47c4-8895-7c101cc2c8ca', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:54:37 GMT', + 'Connection', + 'close', + 'Content-Length', + '697' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '53cf0048-ef56-487b-95f9-f1cbf4887b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHGwAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:54:37 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:54:37 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/CRUDKeyName-cancreateadisabledkey-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateadisabledkey-","deletedDate":1561726478,"scheduledPurgeDate":1569502478,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateadisabledkey-/f0452b4ad4c84ab294d3df570cc7132e","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"x3Epkm62-nb9qODj4NdFinUJVXFBxvO4ff1iyPtE0LI6QWRJ7s9PKYzPUkGqeLq6elnhOly8udlgbah6GNGpELVNRXAeNyDEplHmtprzF1eWIyqwOfh7j7Tz5jYN09v4UYPUaI2gCRR3FxexYNR6Fw1AxGZbo-46BGgcbnSisNBxEdZdVcsaUGuOyq14u2K4ie4azGVLtGiHWEqy1xHRrnDblA_ofrYemcNbx5tnAvle4oLunSW81AWZZ8NZKSivQmQuFdFQdqISl_h7y7tU9tKa2RODs9BTmG1hFj_wA3zcftARzPiQwgMx4wXFhBsUkhEOD1v9UZ5YzFYMDDunow","e":"AQAB"},"attributes":{"enabled":false,"created":1561726477,"updated":1561726477,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'c51d78e1-df25-4df2-b492-972224b06633', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:54:37 GMT', + 'Connection', + 'close', + 'Content-Length', + '868' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'b81d7d07-699f-4a31-af60-5985e5b05f00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHHAAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:54:38 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:54:38 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateadisabledkey-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'c4711366-1c17-4cff-8776-6f64e824d047', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:54:38 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'be04d5f4-f4f6-46ec-9cb3-f7974e040b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHHQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:54:48 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:54:48 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateadisabledkey-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '6c431a6e-dfb6-4cab-84dc-c92dfca32271', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:54:48 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '4061782e-50fa-4a12-b6dd-6581694f0700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHHgAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:54:59 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:54:59 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateadisabledkey-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '4528685c-d02a-4aab-b2f1-6f3567cae73c', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:54:59 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'ba25edd6-1772-4cc3-9446-784f9ecf6400', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHHwAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:54:59 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:54:59 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/CRUDKeyName-cancreateakeywithnotBefore-/create', {"kty":"RSA","attributes":{"nbf":1546300805}}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywithnotBefore-/302477bd635e4260b92c7d954f4c5d47","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"tmmjXHclSwczFDffEbl1hK6dKCQ99ht5bpiSlHe4foeyQgVVfRR5icDegSknFOxadI3HGtmv5CY-pTXLPiuIejG5mnaUi6AK_alc020ibdrS-zvF4yzmFmDsNeMN6eSL6DykO798O1XBc3JcDzicytMIeNWxhzYhI8OtdhBbpYyqYBKTw1wmL3pAVqJNBrw38tDPuoBQ34sQU7YXtRnjCq84vtg3k4UvGvB3Gg6fY9JvM8HeVqj6k7h0zCAK9dZBV5KKLsYBuMQGuX86SIE_3Hn445NpzGzWd5LmOxOZKj6FTmEjIdLk4DIpBxJbCt5nm2qzMTEsgut9GEOk8aU-mw","e":"AQAB"},"attributes":{"enabled":true,"nbf":1546300805,"created":1561726500,"updated":1561726500,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'dc34b3ce-74c2-4d41-b5c7-313538eec10c', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:54:59 GMT', + 'Connection', + 'close', + 'Content-Length', + '718' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'c7463470-c0f8-4060-901c-dc02334a6700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHIAAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:55:00 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:55:00 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/CRUDKeyName-cancreateakeywithnotBefore-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywithnotBefore-","deletedDate":1561726500,"scheduledPurgeDate":1569502500,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywithnotBefore-/302477bd635e4260b92c7d954f4c5d47","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"tmmjXHclSwczFDffEbl1hK6dKCQ99ht5bpiSlHe4foeyQgVVfRR5icDegSknFOxadI3HGtmv5CY-pTXLPiuIejG5mnaUi6AK_alc020ibdrS-zvF4yzmFmDsNeMN6eSL6DykO798O1XBc3JcDzicytMIeNWxhzYhI8OtdhBbpYyqYBKTw1wmL3pAVqJNBrw38tDPuoBQ34sQU7YXtRnjCq84vtg3k4UvGvB3Gg6fY9JvM8HeVqj6k7h0zCAK9dZBV5KKLsYBuMQGuX86SIE_3Hn445NpzGzWd5LmOxOZKj6FTmEjIdLk4DIpBxJbCt5nm2qzMTEsgut9GEOk8aU-mw","e":"AQAB"},"attributes":{"enabled":true,"nbf":1546300805,"created":1561726500,"updated":1561726500,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '6fa363a8-e776-4d1d-a62a-ce7ded76c290', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:55:00 GMT', + 'Connection', + 'close', + 'Content-Length', + '894' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '265dc72f-d037-43ba-ba6a-3f34e79e0b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHIQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:55:00 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:55:00 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateakeywithnotBefore-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '4271dcde-f777-4670-815c-6065946672ae', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:55:00 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '3453044a-8a2e-410e-b578-835cd0130a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHIgAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:55:11 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:55:10 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateakeywithnotBefore-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '9ce2612f-3798-492a-93f4-912036466e00', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:55:11 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '0f5d5654-39fa-4a24-b4fd-311f668a6500', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHIwAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:55:21 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:55:21 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateakeywithnotBefore-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '775851a7-e1e8-4b9a-a8d7-0538b1f1270c', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:55:21 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'd3b4ffda-e9b6-4127-8a3e-c9f99d9d6a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHJAAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:55:22 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:55:22 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/CRUDKeyName-cancreateakeywithexpires-/create', {"kty":"RSA","attributes":{"exp":1546300805}}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywithexpires-/5dc1daf220fe485dbfc9a425fa90bb37","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"v2FhB0CT_t18457f3m9kq7jxni9JH4l7m1cVtod2EMb4ni_lerSpY-2MdLdjOsHV0s8eSPq5amQVMwW-SBwAOcgRe1tfmI-htp0sZukkV1E47txkhUXXlhXNABK1oekrn0tBddIzNhKnXdGlLvN8msCt014vi1ftKalE3YL2gioldtufC3XWER-S_3-z6ru9ohEahrgcrOk99F4EbR9SkE3HYfRZ7G7vyE_KyBr1FuM_qJCEsoxPrhUuO-EzZxskZj3oY3t-wKTz1ySioN5CsWbayc8GK-8Y96M4yR3UiV53vh5wAe8U2COn-bxTToqf2e6puV3jrKU24tGRJwWaoQ","e":"AQAB"},"attributes":{"enabled":true,"exp":1546300805,"created":1561726522,"updated":1561726522,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '5e906379-b13e-44f8-8ffe-be286ee33003', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:55:22 GMT', + 'Connection', + 'close', + 'Content-Length', + '716' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '2489bded-0c36-4e67-b59e-c53a80886000', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHJQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:55:22 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:55:22 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/CRUDKeyName-cancreateakeywithexpires-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywithexpires-","deletedDate":1561726523,"scheduledPurgeDate":1569502523,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywithexpires-/5dc1daf220fe485dbfc9a425fa90bb37","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"v2FhB0CT_t18457f3m9kq7jxni9JH4l7m1cVtod2EMb4ni_lerSpY-2MdLdjOsHV0s8eSPq5amQVMwW-SBwAOcgRe1tfmI-htp0sZukkV1E47txkhUXXlhXNABK1oekrn0tBddIzNhKnXdGlLvN8msCt014vi1ftKalE3YL2gioldtufC3XWER-S_3-z6ru9ohEahrgcrOk99F4EbR9SkE3HYfRZ7G7vyE_KyBr1FuM_qJCEsoxPrhUuO-EzZxskZj3oY3t-wKTz1ySioN5CsWbayc8GK-8Y96M4yR3UiV53vh5wAe8U2COn-bxTToqf2e6puV3jrKU24tGRJwWaoQ","e":"AQAB"},"attributes":{"enabled":true,"exp":1546300805,"created":1561726522,"updated":1561726522,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '48431d38-df6c-4c41-89c3-eee518e37418', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:55:22 GMT', + 'Connection', + 'close', + 'Content-Length', + '890' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '1da73c46-c29e-4aff-9dd1-ab2589260b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHJgAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:55:23 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:55:23 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateakeywithexpires-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '021cc8cc-95f4-474f-b4b8-8ba20ed2e4e1', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:55:23 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '6ff1e305-29ef-46ab-918a-4758723d6700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHJwAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:55:33 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:55:33 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cancreateakeywithexpires-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '602a93b4-2e27-4bf4-9555-713336d33ba8', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:55:33 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'f4e10eee-5aa3-48b9-b377-b0d072116a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHKAAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:55:34 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:55:34 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/CRUDKeyName-canupdatekey-/create', {"kty":"RSA"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-canupdatekey-/e5571f8c71b54cd090e9f228342bb3f7","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"v5oRu9BS06WqpN_70Img1yOETfbScTNWsfEUbqAc7nq8XpMBIck6tjcr5xlyNjbwobrLU0VbHGvNdcRunYCk4-Jd9ivPi4j_bZjSZOBclJih8kD3dJ9iE6KGalNFcKi-U0ilC3hqwkHm2Pk3sTSDVmFvs_3aJHACov58zN6pLZPmzfvMpA8idcSwG4DVgRSbxkvifVVGBcRaAaVr9S4YKzutWmvh8Wqo3-vDq-8CFLA4MLHPPAal7k_t4xaAJwiWq-gkYBm62woI3kFS_g-BYR4IiedPCL_0HoCRY9Rh3yG2GtgjLRsfjnlfrCamtieAwE36hx3gRweQM2kS1cH2hQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561726534,"updated":1561726534,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'cb2b605f-5158-4187-b8f9-71f11888f933', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:55:33 GMT', + 'Connection', + 'close', + 'Content-Length', + '687' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'a6bf6c36-fb2f-4411-8f0a-2cc98a396800', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHKQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:55:35 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:55:34 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .patch('/keys/CRUDKeyName-canupdatekey-/e5571f8c71b54cd090e9f228342bb3f7', {"attributes":{"enabled":false}}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-canupdatekey-/e5571f8c71b54cd090e9f228342bb3f7","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"v5oRu9BS06WqpN_70Img1yOETfbScTNWsfEUbqAc7nq8XpMBIck6tjcr5xlyNjbwobrLU0VbHGvNdcRunYCk4-Jd9ivPi4j_bZjSZOBclJih8kD3dJ9iE6KGalNFcKi-U0ilC3hqwkHm2Pk3sTSDVmFvs_3aJHACov58zN6pLZPmzfvMpA8idcSwG4DVgRSbxkvifVVGBcRaAaVr9S4YKzutWmvh8Wqo3-vDq-8CFLA4MLHPPAal7k_t4xaAJwiWq-gkYBm62woI3kFS_g-BYR4IiedPCL_0HoCRY9Rh3yG2GtgjLRsfjnlfrCamtieAwE36hx3gRweQM2kS1cH2hQ","e":"AQAB"},"attributes":{"enabled":false,"created":1561726534,"updated":1561726535,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '4ebe2656-fc8e-42b9-8196-b84bb0819ac3', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:55:34 GMT', + 'Connection', + 'close', + 'Content-Length', + '688' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'fea231bc-fee0-43df-8078-526dd92a6a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHKgAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:55:35 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:55:35 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/CRUDKeyName-canupdatekey-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-canupdatekey-","deletedDate":1561726535,"scheduledPurgeDate":1569502535,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-canupdatekey-/e5571f8c71b54cd090e9f228342bb3f7","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"v5oRu9BS06WqpN_70Img1yOETfbScTNWsfEUbqAc7nq8XpMBIck6tjcr5xlyNjbwobrLU0VbHGvNdcRunYCk4-Jd9ivPi4j_bZjSZOBclJih8kD3dJ9iE6KGalNFcKi-U0ilC3hqwkHm2Pk3sTSDVmFvs_3aJHACov58zN6pLZPmzfvMpA8idcSwG4DVgRSbxkvifVVGBcRaAaVr9S4YKzutWmvh8Wqo3-vDq-8CFLA4MLHPPAal7k_t4xaAJwiWq-gkYBm62woI3kFS_g-BYR4IiedPCL_0HoCRY9Rh3yG2GtgjLRsfjnlfrCamtieAwE36hx3gRweQM2kS1cH2hQ","e":"AQAB"},"attributes":{"enabled":false,"created":1561726534,"updated":1561726535,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '1533e1ac-3fb0-4e0a-aed1-bea26ddc3226', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:55:34 GMT', + 'Connection', + 'close', + 'Content-Length', + '850' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'a0b001f1-3a7b-41a6-9278-8c7bff947400', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHKwAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:55:35 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:55:35 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-canupdatekey-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '2dc5741d-f84f-45cc-90d7-f50ef41e8b0a', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:55:35 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '0d6ddd83-1208-4403-8762-ef4fa1646a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLAAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:55:46 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:55:45 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-canupdatekey-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'ed35edf7-1c16-4fcc-a787-66964a98efe9', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:55:46 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'b389de76-3cb3-4bc9-ba00-aa4657cb0900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:55:46 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:55:46 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/CRUDKeyName-canupdateadisabledkey-/create', {"kty":"RSA","attributes":{"enabled":false}}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-canupdateadisabledkey-/33afdf7d4d774805a3c730527d90fd9f","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"3gXA9W0MKK4t6VqfjZKl6oniZJPCvmmEmWeuZq38UZaBtUTBaiOGU9MJj-3AHrsyLR8LZuPFEUgO0NLnqqmcyUY8JZt9GAKuNRl8jjAcgVQBvkTXhqcJPsQtj11PE5i9qBflyhHeYfY6vOyfPLnigSXbwK1LsPBPfY6rSH1d8AYfusq26S9PdRKAl7QFiQPdWchvlJ38TYD1fKGD0jo9Hqf_gesHiBXF4clRqbwbVZ-ZNdyUHbNj87wOzKxYbZIKLpSysWZ3b1PbZ12TzuHxw1mLU9lnmPNrAACdOgqVWzgsyJYmwnNdhqiatQXhQ_zCHL4ImeFdwKUxlGeaHY0www","e":"AQAB"},"attributes":{"enabled":false,"created":1561726547,"updated":1561726547,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '5d051b4d-0ce3-420d-8dc0-f50a023254e8', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:55:46 GMT', + 'Connection', + 'close', + 'Content-Length', + '697' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'fd17dede-0a81-4d2b-9a2b-7bc8ba1b6b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:55:47 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:55:47 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .patch('/keys/CRUDKeyName-canupdateadisabledkey-/33afdf7d4d774805a3c730527d90fd9f', {"attributes":{"exp":1546300800}}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-canupdateadisabledkey-/33afdf7d4d774805a3c730527d90fd9f","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"3gXA9W0MKK4t6VqfjZKl6oniZJPCvmmEmWeuZq38UZaBtUTBaiOGU9MJj-3AHrsyLR8LZuPFEUgO0NLnqqmcyUY8JZt9GAKuNRl8jjAcgVQBvkTXhqcJPsQtj11PE5i9qBflyhHeYfY6vOyfPLnigSXbwK1LsPBPfY6rSH1d8AYfusq26S9PdRKAl7QFiQPdWchvlJ38TYD1fKGD0jo9Hqf_gesHiBXF4clRqbwbVZ-ZNdyUHbNj87wOzKxYbZIKLpSysWZ3b1PbZ12TzuHxw1mLU9lnmPNrAACdOgqVWzgsyJYmwnNdhqiatQXhQ_zCHL4ImeFdwKUxlGeaHY0www","e":"AQAB"},"attributes":{"enabled":false,"exp":1546300800,"created":1561726547,"updated":1561726548,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'ba87e0cf-face-4438-bc14-a6115a6b0219', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:55:47 GMT', + 'Connection', + 'close', + 'Content-Length', + '714' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '2221fefe-eaff-458c-85bf-b0013eae6900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:55:48 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:55:48 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/CRUDKeyName-canupdateadisabledkey-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-canupdateadisabledkey-","deletedDate":1561726548,"scheduledPurgeDate":1569502548,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-canupdateadisabledkey-/33afdf7d4d774805a3c730527d90fd9f","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"3gXA9W0MKK4t6VqfjZKl6oniZJPCvmmEmWeuZq38UZaBtUTBaiOGU9MJj-3AHrsyLR8LZuPFEUgO0NLnqqmcyUY8JZt9GAKuNRl8jjAcgVQBvkTXhqcJPsQtj11PE5i9qBflyhHeYfY6vOyfPLnigSXbwK1LsPBPfY6rSH1d8AYfusq26S9PdRKAl7QFiQPdWchvlJ38TYD1fKGD0jo9Hqf_gesHiBXF4clRqbwbVZ-ZNdyUHbNj87wOzKxYbZIKLpSysWZ3b1PbZ12TzuHxw1mLU9lnmPNrAACdOgqVWzgsyJYmwnNdhqiatQXhQ_zCHL4ImeFdwKUxlGeaHY0www","e":"AQAB"},"attributes":{"enabled":false,"exp":1546300800,"created":1561726547,"updated":1561726548,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '39ef9d7d-4399-478f-8b64-b2db519f301d', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:55:48 GMT', + 'Connection', + 'close', + 'Content-Length', + '885' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'c2ade1ed-3937-4be5-adc7-55aaa7330b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:55:48 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:55:48 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-canupdateadisabledkey-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'd0df3be0-6793-4115-8593-865d345e74ef', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:55:48 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'c707ed13-00c6-48a7-98a3-3cb030967400', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:55:59 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:55:58 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-canupdateadisabledkey-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '701d7cf5-d287-4c15-a36a-12df4fbbe5fd', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:55:58 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '58b4f018-b69d-4023-8479-714e80246a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:56:09 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:56:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-canupdateadisabledkey-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '314dd62e-9bbb-4f15-9d00-9946ba53343a', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:56:10 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '5fa8604c-8dd0-4423-b4d6-50a9c5006d00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:56:10 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:56:10 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/CRUDKeyName-candeleteakey-/create', {"kty":"RSA"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-candeleteakey-/c851a6c944f64f29bff1f3ea8ecbe131","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"wmmHNtO6SnbfEJKpxuB8prnzly0cLHSm-qhSd2RrMhUlJqQKD4MBppSLwAKudBHQAjkaow8CcmHVXJSAebZGctxrDdc_jt1Cd2eMpANnqDP0YYDFzVqy1vwj7qZhmRmrGpK7aILWMY1rZlnL_cXcYHV34tnKC5475ysvjKVgWMroLxDikt5bJ9elt_TS-jNXKEhsMUh3VaQGKvC_XmoM-BnOweSIDQXswvk7JeWQ-5ymh5jlvD3ZVIbwYJQzrOu_29wih9mHQOb8HKRHiZQWGSZ-IjS6AibOC0ZXTxa1V-WVqfuMHqjuZcqqvOnMDuctZzLIpxccDaMTLZsS-w7HdQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561726570,"updated":1561726570,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '0d83f52c-1fd2-40fc-ae01-c3ece670ed50', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:56:10 GMT', + 'Connection', + 'close', + 'Content-Length', + '688' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '1c6d8f5d-6196-4351-ab67-a15a713b6300', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:56:10 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:56:10 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/CRUDKeyName-candeleteakey-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-candeleteakey-","deletedDate":1561726570,"scheduledPurgeDate":1569502570,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-candeleteakey-/c851a6c944f64f29bff1f3ea8ecbe131","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"wmmHNtO6SnbfEJKpxuB8prnzly0cLHSm-qhSd2RrMhUlJqQKD4MBppSLwAKudBHQAjkaow8CcmHVXJSAebZGctxrDdc_jt1Cd2eMpANnqDP0YYDFzVqy1vwj7qZhmRmrGpK7aILWMY1rZlnL_cXcYHV34tnKC5475ysvjKVgWMroLxDikt5bJ9elt_TS-jNXKEhsMUh3VaQGKvC_XmoM-BnOweSIDQXswvk7JeWQ-5ymh5jlvD3ZVIbwYJQzrOu_29wih9mHQOb8HKRHiZQWGSZ-IjS6AibOC0ZXTxa1V-WVqfuMHqjuZcqqvOnMDuctZzLIpxccDaMTLZsS-w7HdQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561726570,"updated":1561726570,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '7b5afada-abbe-4fb8-a301-e2219b88d968', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:56:10 GMT', + 'Connection', + 'close', + 'Content-Length', + '851' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '38e51130-b879-40e9-a4f4-66fe526a6e00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:56:11 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:56:10 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys/CRUDKeyName-candeleteakey-/') + .query(true) + .reply(404, {"error":{"code":"KeyNotFound","message":"Key not found: CRUDKeyName-candeleteakey-"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '102', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'e3e45bdd-deba-4ee3-93f7-9d0e19bb3f8f', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:56:11 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'c1a0379a-105b-46ec-8a27-b6b675d87800', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:56:11 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:56:10 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-candeleteakey-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '97557b90-7236-4366-a4d4-cf556a52df41', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:56:11 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'cdd75623-e9bb-4a5e-8c29-c3966d2d7b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:56:22 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:56:21 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-candeleteakey-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '4f77abbb-7480-4ed2-b918-a8e9ea79bd6d', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:56:22 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'f8ee3e3a-a702-4916-822a-0caa1c9f6a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:56:32 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:56:31 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-candeleteakey-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '6accf8be-1cdc-4d0d-bde1-4f728d0811d7', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:56:32 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'eafb946f-ea46-46ea-9e11-e40ada1b6700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:56:33 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:56:32 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys/CRUDKeyName-deletenonexistingkey-/') + .query(true) + .reply(404, {"error":{"code":"KeyNotFound","message":"Key not found: CRUDKeyName-deletenonexistingkey-"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '109', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'aacd0f72-66c0-4da2-a258-c56dd70ef79e', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:56:32 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'f8f298e8-6187-420c-9d92-62fc111a0a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:56:33 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:56:32 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/CRUDKeyName-cangetakey-/create', {"kty":"RSA"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetakey-/45ea7a613bc345f2bacaaf5c688447f9","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"qbQciSf4OHPmYyQmcAxdowfUgXLqK4oisakSHgljJ8c5SCOQe4aft_O9wzVnqGejH9zaVnJKBrY3wby_juckY8ur3z8Tg8zMw5iAvH0swhFmjS6svA77Cvd9VqDXC76P8GjVyh1U_Y3Z0HRLb418idOWB7_afoYERb45MqtjH6QC32JNhrPE9wHe-w0DL_c-ivllUYQLZ-gBQyF-dGmifVdgtCV25N43RoYBJRQ_1_OLa6OSKkEc-wLdGNuTiHHT_fdD3QrdQfm1QkwcAxtgmbo_VlMIS4VtoIb-pwOmnCF8qA5AKqTbRZW5rsN9xAi-X2s0BpISdTiED8ABk0Z1jw","e":"AQAB"},"attributes":{"enabled":true,"created":1561726593,"updated":1561726593,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'e8a5a727-48ee-421e-b2ab-c34a1df5a3c2', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:56:33 GMT', + 'Connection', + 'close', + 'Content-Length', + '685' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'f2bc88b2-f80e-4019-a58c-57406b137400', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:56:34 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:56:33 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys/CRUDKeyName-cangetakey-/') + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetakey-/45ea7a613bc345f2bacaaf5c688447f9","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"qbQciSf4OHPmYyQmcAxdowfUgXLqK4oisakSHgljJ8c5SCOQe4aft_O9wzVnqGejH9zaVnJKBrY3wby_juckY8ur3z8Tg8zMw5iAvH0swhFmjS6svA77Cvd9VqDXC76P8GjVyh1U_Y3Z0HRLb418idOWB7_afoYERb45MqtjH6QC32JNhrPE9wHe-w0DL_c-ivllUYQLZ-gBQyF-dGmifVdgtCV25N43RoYBJRQ_1_OLa6OSKkEc-wLdGNuTiHHT_fdD3QrdQfm1QkwcAxtgmbo_VlMIS4VtoIb-pwOmnCF8qA5AKqTbRZW5rsN9xAi-X2s0BpISdTiED8ABk0Z1jw","e":"AQAB"},"attributes":{"enabled":true,"created":1561726593,"updated":1561726593,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '5e66b60b-faac-40bf-b779-a072cd6df816', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:56:33 GMT', + 'Connection', + 'close', + 'Content-Length', + '685' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '32e3f384-860c-4bff-b2bd-0c1b1be96800', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:56:34 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:56:34 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/CRUDKeyName-cangetakey-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetakey-","deletedDate":1561726594,"scheduledPurgeDate":1569502594,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetakey-/45ea7a613bc345f2bacaaf5c688447f9","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"qbQciSf4OHPmYyQmcAxdowfUgXLqK4oisakSHgljJ8c5SCOQe4aft_O9wzVnqGejH9zaVnJKBrY3wby_juckY8ur3z8Tg8zMw5iAvH0swhFmjS6svA77Cvd9VqDXC76P8GjVyh1U_Y3Z0HRLb418idOWB7_afoYERb45MqtjH6QC32JNhrPE9wHe-w0DL_c-ivllUYQLZ-gBQyF-dGmifVdgtCV25N43RoYBJRQ_1_OLa6OSKkEc-wLdGNuTiHHT_fdD3QrdQfm1QkwcAxtgmbo_VlMIS4VtoIb-pwOmnCF8qA5AKqTbRZW5rsN9xAi-X2s0BpISdTiED8ABk0Z1jw","e":"AQAB"},"attributes":{"enabled":true,"created":1561726593,"updated":1561726593,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'dd52e051-b20d-437a-957c-24041759190f', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:56:34 GMT', + 'Connection', + 'close', + 'Content-Length', + '845' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '6cb66778-30af-4207-9c50-4859a2257100', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:56:35 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:56:34 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cangetakey-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '2c8ccda3-78f8-40e9-b1d0-044e5e2a3255', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:56:35 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '8707fa6d-cf6f-4329-bb81-711a9ace0800', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:56:45 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:56:45 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cangetakey-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'b4eb07f5-e224-4d74-94a2-e3935fe807b7', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:56:45 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'ead6f706-7ea0-4ae9-9f72-4c46f5db7000', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:56:46 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:56:45 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/CRUDKeyName-cangetaspecificversionofakey-/create', {"kty":"RSA"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetaspecificversionofakey-/9a4697d14da642b39a7e213c36038e09","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"3kuGmk1d7-13BZfduRTc348mzofqAJa74zTgBn4tHIaUg3WYhANRMWcuyD-bAgfpgRPHR4MEVx1g4-VgzDfzzeffzU9S6Iz74kwEEdzYxM530rkCgQzXHQpK2InCqIBghhkbJ_Z1YyaQ_7HZAd6R19YxgUrbarHzrhfLWgYIqvQJiDeSmUKJGI0MhCyOafjd3WLHvHv7EHGTXSmqkP_nd-iXa-QeTYg5KMCYn6CfgerEF-RfaYp9NUuARLlc0BeH6itB13_LSvFEm7DkvQtfJKYbj9Loqxo0oprx6F8zDAc-RldeKYOPtQGYLhlKukflye5AoyPjubSWpa4rWTY-mw","e":"AQAB"},"attributes":{"enabled":true,"created":1561726606,"updated":1561726606,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '0bc7b13c-ad79-4833-8bba-9dcb5afa3ff2', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:56:46 GMT', + 'Connection', + 'close', + 'Content-Length', + '703' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '63a54f4e-385a-4758-a1ee-7beb042d0a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:56:46 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:56:46 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys/CRUDKeyName-cangetaspecificversionofakey-/9a4697d14da642b39a7e213c36038e09') + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetaspecificversionofakey-/9a4697d14da642b39a7e213c36038e09","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"3kuGmk1d7-13BZfduRTc348mzofqAJa74zTgBn4tHIaUg3WYhANRMWcuyD-bAgfpgRPHR4MEVx1g4-VgzDfzzeffzU9S6Iz74kwEEdzYxM530rkCgQzXHQpK2InCqIBghhkbJ_Z1YyaQ_7HZAd6R19YxgUrbarHzrhfLWgYIqvQJiDeSmUKJGI0MhCyOafjd3WLHvHv7EHGTXSmqkP_nd-iXa-QeTYg5KMCYn6CfgerEF-RfaYp9NUuARLlc0BeH6itB13_LSvFEm7DkvQtfJKYbj9Loqxo0oprx6F8zDAc-RldeKYOPtQGYLhlKukflye5AoyPjubSWpa4rWTY-mw","e":"AQAB"},"attributes":{"enabled":true,"created":1561726606,"updated":1561726606,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '42a871f5-693f-4e05-8518-dde3140d9209', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:56:46 GMT', + 'Connection', + 'close', + 'Content-Length', + '703' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '0fee54bf-ca33-445d-88a5-d3e068cf7600', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:56:47 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:56:46 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/CRUDKeyName-cangetaspecificversionofakey-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetaspecificversionofakey-","deletedDate":1561726607,"scheduledPurgeDate":1569502607,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetaspecificversionofakey-/9a4697d14da642b39a7e213c36038e09","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"3kuGmk1d7-13BZfduRTc348mzofqAJa74zTgBn4tHIaUg3WYhANRMWcuyD-bAgfpgRPHR4MEVx1g4-VgzDfzzeffzU9S6Iz74kwEEdzYxM530rkCgQzXHQpK2InCqIBghhkbJ_Z1YyaQ_7HZAd6R19YxgUrbarHzrhfLWgYIqvQJiDeSmUKJGI0MhCyOafjd3WLHvHv7EHGTXSmqkP_nd-iXa-QeTYg5KMCYn6CfgerEF-RfaYp9NUuARLlc0BeH6itB13_LSvFEm7DkvQtfJKYbj9Loqxo0oprx6F8zDAc-RldeKYOPtQGYLhlKukflye5AoyPjubSWpa4rWTY-mw","e":"AQAB"},"attributes":{"enabled":true,"created":1561726606,"updated":1561726606,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '2f8d8a1e-dfbb-4533-99a6-4f9698492a58', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:56:46 GMT', + 'Connection', + 'close', + 'Content-Length', + '881' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '79bb379d-0773-418d-8ae2-63e98a8d6e00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:56:47 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:56:47 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cangetaspecificversionofakey-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'fb832a7b-1051-4271-89c2-dd3442f9ec44', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:56:47 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '11431d4d-9aa1-4c60-a075-9af2853e6200', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:56:58 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:56:58 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cangetaspecificversionofakey-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'a96fbdda-2b0a-416d-86c9-425e7bb46aac', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:56:58 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '2fa43d02-f7ca-4bbb-a3a2-a614e0457700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:57:08 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:57:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cangetaspecificversionofakey-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '39d5e923-7d48-4a1d-819b-c5297a8632d3', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:57:09 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '42bd0ded-0070-4d27-910e-56efa6596600', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:57:09 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:57:09 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/CRUDKeyName-cangetadeletedkey-/create', {"kty":"RSA"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetadeletedkey-/5d990ff6462b4f8b8d069f12a154d805","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"yEwY1iNceKjilB9htNy0bC60_1Dzw3gtThd7DVqDx6GppOFT2_FPUNFHLGP-EplXMtit7QilKlaGBL_p3dLlp-RTHRz7l0ofDRy8WY6L0VMHLYhktyIj32ZDSpXBzp68nfwK4EGKbeWfyNC5nTosL0dxZo5HM46XY3GK6_1SpNMgZOLyeu8Nv6zEuUt8tqL8h8_ua-9YtKyjehbWrptXT47hGa4KOU7N7vWe9i0OMM6xd41-4Y3HQNn_WB_NNycxCx2IjJgO7Q7SHq2_sTgwusb8Y1pp3Xnq_3On5zhSAgPiTHnBZEy1hm-q4ydAfZtGxnQsNRK9hJRez8y1NJctgw","e":"AQAB"},"attributes":{"enabled":true,"created":1561726629,"updated":1561726629,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '116a213c-8186-46e3-b101-040e4b5a3807', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:57:09 GMT', + 'Connection', + 'close', + 'Content-Length', + '692' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'ed6800a0-f208-4f07-bd28-41c444af7400', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:57:09 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:57:09 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/CRUDKeyName-cangetadeletedkey-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetadeletedkey-","deletedDate":1561726630,"scheduledPurgeDate":1569502630,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetadeletedkey-/5d990ff6462b4f8b8d069f12a154d805","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"yEwY1iNceKjilB9htNy0bC60_1Dzw3gtThd7DVqDx6GppOFT2_FPUNFHLGP-EplXMtit7QilKlaGBL_p3dLlp-RTHRz7l0ofDRy8WY6L0VMHLYhktyIj32ZDSpXBzp68nfwK4EGKbeWfyNC5nTosL0dxZo5HM46XY3GK6_1SpNMgZOLyeu8Nv6zEuUt8tqL8h8_ua-9YtKyjehbWrptXT47hGa4KOU7N7vWe9i0OMM6xd41-4Y3HQNn_WB_NNycxCx2IjJgO7Q7SHq2_sTgwusb8Y1pp3Xnq_3On5zhSAgPiTHnBZEy1hm-q4ydAfZtGxnQsNRK9hJRez8y1NJctgw","e":"AQAB"},"attributes":{"enabled":true,"created":1561726629,"updated":1561726629,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '0498f6eb-855a-4a3f-886e-babad023174f', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:57:09 GMT', + 'Connection', + 'close', + 'Content-Length', + '859' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '2dcfdcd0-2f19-4c85-bc3c-3f4bc8b36800', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:57:10 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:57:10 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys/CRUDKeyName-cangetadeletedkey-') + .query(true) + .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: CRUDKeyName-cangetadeletedkey-"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '114', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'f1f80ca6-4177-45c9-bb4f-fc5078cad4a4', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:57:10 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '5e269875-a424-4bc5-bd77-b28d9ed47700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:57:20 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:57:20 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys/CRUDKeyName-cangetadeletedkey-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetadeletedkey-","deletedDate":1561726630,"scheduledPurgeDate":1569502630,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetadeletedkey-/5d990ff6462b4f8b8d069f12a154d805","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"yEwY1iNceKjilB9htNy0bC60_1Dzw3gtThd7DVqDx6GppOFT2_FPUNFHLGP-EplXMtit7QilKlaGBL_p3dLlp-RTHRz7l0ofDRy8WY6L0VMHLYhktyIj32ZDSpXBzp68nfwK4EGKbeWfyNC5nTosL0dxZo5HM46XY3GK6_1SpNMgZOLyeu8Nv6zEuUt8tqL8h8_ua-9YtKyjehbWrptXT47hGa4KOU7N7vWe9i0OMM6xd41-4Y3HQNn_WB_NNycxCx2IjJgO7Q7SHq2_sTgwusb8Y1pp3Xnq_3On5zhSAgPiTHnBZEy1hm-q4ydAfZtGxnQsNRK9hJRez8y1NJctgw","e":"AQAB"},"attributes":{"enabled":true,"created":1561726629,"updated":1561726629,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '9767fff5-ea88-4097-b292-f50fd86ebe1a', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:57:20 GMT', + 'Connection', + 'close', 'Content-Length', - '71', + '859' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', 'Content-Type', 'application/json; charset=utf-8', 'Expires', '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '7f8d841e-e9e4-4134-bd3c-2e9ac5586e00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:57:21 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:57:20 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/CRUDKeyName-cangetadeletedkey-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', 'Server', 'Microsoft-IIS/10.0', 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'fbc4b320-8688-4075-b00c-81f3b8058c4a', + '3a551416-6897-4a39-873c-34dede6edff2', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=108.226.109.105;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -66,7 +4978,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 00:20:32 GMT', + 'Fri, 28 Jun 2019 12:57:21 GMT', 'Connection', 'close' ]); @@ -86,17 +4998,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '2bd58876-f5d0-4ab0-9097-c654845e0e00', + 'c7f2989f-1fbf-4352-87c6-efa10db20c00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AoS9nDxfSBFIjMUcXp-eVsA_aSJHAgAAAEklmtQOAAAA; expires=Thu, 18-Jul-2019 00:20:37 GMT; path=/; secure; HttpOnly', + 'fpc=Ar8VbYYKNxZHsWzYP8RHOeM_aSJHLQAAAJwEqNQOAAAA; expires=Sun, 28-Jul-2019 12:57:22 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 00:20:36 GMT', + 'Fri, 28 Jun 2019 12:57:21 GMT', 'Connection', 'close', 'Content-Length', @@ -104,14 +5016,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedkeys/CRUDKeyName') + .delete('/keys/CRUDKeyName-cantgetadeletedkeythatdoesntexist-') .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Key not found: CRUDKeyName"}}, [ 'Cache-Control', + .reply(404, {"error":{"code":"KeyNotFound","message":"Key not found: CRUDKeyName-cantgetadeletedkeythatdoesntexist-"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', 'Content-Length', - '71', + '122', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -121,11 +5033,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'abc507e7-0c7f-4cff-8019-014aa81194da', + '662644cd-1b19-4091-a266-e73204955ac4', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=108.226.109.105;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -135,7 +5047,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 00:20:46 GMT', + 'Fri, 28 Jun 2019 12:57:22 GMT', 'Connection', 'close' ]); diff --git a/sdk/keyvault/keyvault-keys/recordings/node/keys_client__list_keys_in_various_ways/recording_before_all_hook.js b/sdk/keyvault/keyvault-keys/recordings/node/keys_client__list_keys_in_various_ways/recording_before_all_hook.js index 7ef2c3a15fa3..82cd98825e78 100644 --- a/sdk/keyvault/keyvault-keys/recordings/node/keys_client__list_keys_in_various_ways/recording_before_all_hook.js +++ b/sdk/keyvault/keyvault-keys/recordings/node/keys_client__list_keys_in_various_ways/recording_before_all_hook.js @@ -2,6 +2,213 @@ let nock = require('nock'); module.exports.testInfo = {} +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '7908cd00-f3d7-4f5b-ba3f-bb9225446f00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHAQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:19:42 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:19:42 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/listKeyName-cangettheversionsofakey-/create', {"kty":"RSA"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangettheversionsofakey-/322f0b98cc1b4957948a1c4b22e2ffea","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"tKhZlnFKWs4Tfqh4UVV4ucyLOhFipJhCAxAtz9Yn8YNwcR4rF30VoyTjX8pzGSIoPop1tS6TYrXz6MZI-EtprVffGc4gSxKeynEwyVWaWcTouVLLVzvMHWTqinELBH-IflanI78eh88cd9xW5U9Ucu6Ln53DISAFewh5fbB1hk9BJgmAtxBPyCAp8gXKoMK6tVB9s1UOeC9VyFzgb_ddBmTqw8jdTdD8VnzGQVay72hLWng0m6AWTntdw07m5hlS7BvVhGkeveqCwRGdp-rNCwCjk618LZcUBN0dbjrllZU1T_YNWS8hUehqcU0OgkA4g7Iramf0i_ElofyEwPA65w","e":"AQAB"},"attributes":{"enabled":true,"created":1561724383,"updated":1561724383,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '385742ab-5975-402d-b20b-446c9996552f', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:19:42 GMT', + 'Connection', + 'close', + 'Content-Length', + '698' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '454dd356-fa11-4595-be19-81fb69620800', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHAgAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:19:43 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:19:42 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys/listKeyName-cangettheversionsofakey-/versions') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangettheversionsofakey-/322f0b98cc1b4957948a1c4b22e2ffea","attributes":{"enabled":true,"created":1561724383,"updated":1561724383,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":null}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'aa5e5167-abb9-4419-8f7b-b43014447e7f', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:19:43 GMT', + 'Connection', + 'close', + 'Content-Length', + '276' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'e71ac377-bf23-4383-b804-9e95a4f86300', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHAwAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:19:43 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:19:43 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/listKeyName-cangettheversionsofakey-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangettheversionsofakey-","deletedDate":1561724384,"scheduledPurgeDate":1569500384,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangettheversionsofakey-/322f0b98cc1b4957948a1c4b22e2ffea","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"tKhZlnFKWs4Tfqh4UVV4ucyLOhFipJhCAxAtz9Yn8YNwcR4rF30VoyTjX8pzGSIoPop1tS6TYrXz6MZI-EtprVffGc4gSxKeynEwyVWaWcTouVLLVzvMHWTqinELBH-IflanI78eh88cd9xW5U9Ucu6Ln53DISAFewh5fbB1hk9BJgmAtxBPyCAp8gXKoMK6tVB9s1UOeC9VyFzgb_ddBmTqw8jdTdD8VnzGQVay72hLWng0m6AWTntdw07m5hlS7BvVhGkeveqCwRGdp-rNCwCjk618LZcUBN0dbjrllZU1T_YNWS8hUehqcU0OgkA4g7Iramf0i_ElofyEwPA65w","e":"AQAB"},"attributes":{"enabled":true,"created":1561724383,"updated":1561724383,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'c3e84201-0918-43e9-b7a6-b1ae7c8cf46a', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:19:43 GMT', + 'Connection', + 'close', + 'Content-Length', + '871' ]); + + nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', @@ -17,17 +224,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'ca9cb3c5-e134-401b-8d11-03e4f7dc1600', + 'fb08d9c5-a7fe-47ab-9c0e-da8add850700', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AtF9Puvuow5EuxbQJOsTT_Y_aSJHAQAAAHx_mtQOAAAA; expires=Thu, 18-Jul-2019 06:45:16 GMT; path=/; secure; HttpOnly', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHBAAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:19:44 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:45:16 GMT', + 'Fri, 28 Jun 2019 12:19:43 GMT', 'Connection', 'close', 'Content-Length', @@ -35,14 +242,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/keys/listKeyName') + .delete('/deletedkeys/listKeyName-cangettheversionsofakey-') .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Key not found: listKeyName"}}, [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', 'Content-Length', - '71', + '118', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -52,11 +259,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '42b27f73-df9d-4965-a1fd-34e0cc651d15', + '96c2124e-e4e6-4293-bcec-915f62c56796', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -66,14 +273,14 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:45:16 GMT', + 'Fri, 28 Jun 2019 12:19:44 GMT', 'Connection', 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -86,17 +293,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '2367fe02-7c95-453b-a069-98ae8e741400', + '6b46ca9f-b2f6-432c-93cc-24bea58b6400', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AtF9Puvuow5EuxbQJOsTT_Y_aSJHAgAAAHx_mtQOAAAA; expires=Thu, 18-Jul-2019 06:45:17 GMT; path=/; secure; HttpOnly', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHBQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:19:54 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:45:16 GMT', + 'Fri, 28 Jun 2019 12:19:54 GMT', 'Connection', 'close', 'Content-Length', @@ -104,14 +311,77 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedkeys/listKeyName') + .delete('/deletedkeys/listKeyName-cangettheversionsofakey-') .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Key not found: listKeyName"}}, [ 'Cache-Control', + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '52596cb6-2540-445b-babf-99d387a2acdb', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:19:55 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', 'Pragma', 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '11dfa1e0-eb36-4709-9794-bed549e56300', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHBgAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:19:55 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:19:54 GMT', + 'Connection', + 'close', 'Content-Length', - '71', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/listKeyName-cangettheversionsofakeypaged-/create', {"kty":"RSA"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangettheversionsofakeypaged-/f8d1394a6fe3446fa01a16d89462afc2","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"vH9F3SHUSftB7ceQ3q8QWhsl5YkE4NGoEFgmz2T-lhgx3JpvKDhqArmCYgKiXbGpPQdh1rVDieCYU-CRo__s_xCb2--bhtLeU3IkYKnlIae3LhZT39NdDUqad1K56Ux4zhPVzMRmynH3dXxJEhUr84iEu4FjD61qQfHrqDnJGiQDNTOpzRRkaJ5EVe0EqgtVO6dCN28vF-fvMLOQCpY8MXdIfGFVHDNSmiiaP0n1eS9e9cu362uUdCaOLKT6mAg4amlfS0tpMyCCixt1SJBbzAaB8Sb2_xRqtolYJJVyI6S7eFkkJ_GyrQuO3LxSYNgm4vH_JauFJhvN1OidoPWDtQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561724395,"updated":1561724395,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -121,11 +391,7429 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '5e1800e6-b80f-43b1-91cf-27d1de915cee', + '6f79df95-1fc7-4a29-967a-9d8dbe026df9', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:19:55 GMT', + 'Connection', + 'close', + 'Content-Length', + '703' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'a73abc08-d848-4506-b190-a6f341836e00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHBwAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:19:55 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:19:55 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys/listKeyName-cangettheversionsofakeypaged-/versions') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangettheversionsofakeypaged-/f8d1394a6fe3446fa01a16d89462afc2","attributes":{"enabled":true,"created":1561724395,"updated":1561724395,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":null}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '7d4b260b-4bfa-4fa6-a743-fa1acb9c455d', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:19:55 GMT', + 'Connection', + 'close', + 'Content-Length', + '281' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '2641fa34-ad81-4f9c-a142-cff5e1e66500', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHCAAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:19:56 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:19:55 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/listKeyName-cangettheversionsofakeypaged-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangettheversionsofakeypaged-","deletedDate":1561724396,"scheduledPurgeDate":1569500396,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangettheversionsofakeypaged-/f8d1394a6fe3446fa01a16d89462afc2","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"vH9F3SHUSftB7ceQ3q8QWhsl5YkE4NGoEFgmz2T-lhgx3JpvKDhqArmCYgKiXbGpPQdh1rVDieCYU-CRo__s_xCb2--bhtLeU3IkYKnlIae3LhZT39NdDUqad1K56Ux4zhPVzMRmynH3dXxJEhUr84iEu4FjD61qQfHrqDnJGiQDNTOpzRRkaJ5EVe0EqgtVO6dCN28vF-fvMLOQCpY8MXdIfGFVHDNSmiiaP0n1eS9e9cu362uUdCaOLKT6mAg4amlfS0tpMyCCixt1SJBbzAaB8Sb2_xRqtolYJJVyI6S7eFkkJ_GyrQuO3LxSYNgm4vH_JauFJhvN1OidoPWDtQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561724395,"updated":1561724395,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '2af8c467-57bd-475a-942b-4eb2613d1291', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:19:55 GMT', + 'Connection', + 'close', + 'Content-Length', + '881' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '115ccf09-d0f4-42c9-83ba-8a653c0d6700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHCQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:19:56 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:19:56 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/listKeyName-cangettheversionsofakeypaged-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'bbafa4f6-60e9-47fa-a0f6-725ff51b9b4a', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:19:56 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '7b1618d9-4600-41aa-af19-10372a4d6500', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHCgAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:07 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:07 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/listKeyName-cangettheversionsofakeypaged-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '3f9a9b8f-9a50-42ac-8b84-d239d1987279', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:07 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '88481595-ec59-4aa8-8567-580f48927000', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHCwAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:07 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:07 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys/listKeyName-list0versionsofanon-existingkey-/versions') + .query(true) + .reply(200, {"value":[],"nextLink":null}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '1b7fcb01-bbe9-45fa-9024-7f224393c3d3', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:07 GMT', + 'Connection', + 'close', + 'Content-Length', + '28' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '0be2cd32-7e20-4f07-9ea7-657491e76a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHDAAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:08 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys/listKeyName-list0versionsofanon-existingkeypaged-/versions') + .query(true) + .reply(200, {"value":[],"nextLink":null}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '2aae57e9-0462-46ab-ae9a-f30c81df55c2', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '28' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '0e7ab980-3a48-41a0-aafb-c9a5e1190800', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHDQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:08 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/listKeyName-cangetseveralinsertedkeys--0/create', {"kty":"RSA"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeys--0/f7ebeb5a36204f83a049cf51f7e3d6f0","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"tDvesjtMJ_wZCBZPsloYP2PVoovN7P_HCgoRQzg5QZbV2C_MvuM86DgBQLVSyaG0T7FQJGw12bHmcxLWMtQHzLk78r1cPv_yWX2p8FPBSvehl_Mw3a5rrXZ1-fw173UOVnsrGez7DNYMts8hGtvD1WngoCDdfVZ2es1fzQTzb3btPUjH--ubvYCRmIfbhESVXShHN5gX97YUY5GNgoT1jv_LfM2s_ddqGsSizk6d6o2jlwJsWOkCLTVqPIyUJ6UII5a4mJczm8IulELXQqbYZGKz3oknQ7DOFtyE2WG6VUl3kxl291ZqWGiN9o22A5N_PZ_y_9RmsbBXFSgw8kWmQQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561724409,"updated":1561724409,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '477f2d67-73c5-49ef-9118-22fe76163625', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:09 GMT', + 'Connection', + 'close', + 'Content-Length', + '702' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '061b228a-b488-4145-affa-24431e476200', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHDgAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:09 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/listKeyName-cangetseveralinsertedkeys--1/create', {"kty":"RSA"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeys--1/3a0d6557c1c24b8b8c118d6eff777448","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"vmme9qd_ar9nePI1jV28uZcAz9O1Q-C3_2yid7ef3qDtJlYaWDrzFDkOlJ50MofRxFG443wA0xpyZsFAKKeZ8aIWXA1ojj4F6SjWoNRJx0Y24_7ovAJiNKh81BCOV5BZ8K99xEyx9sPh-AX6hY39lrvY7xvOqpsRByXSW8shTQK7G9OznH8vIi9jKtYqT4NH1h6K_Op1ErLTfeFsrRrsmuiUnpli3PB1Vw-Vk_54zCkHqvUFD2itoMJRWHnBF4Md7ekLHk1Oc-ZyRLYY61_MnYJukFgoGUjTlJV9O55SLJhtf5Ud6cHm1Oo7eRhT6cL8PVyqth4tg5XEcfQvDFM1uQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561724409,"updated":1561724409,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '1da1fc04-7b89-4771-9ae2-7149b2bb69c5', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '702' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '119b2cc9-23ff-4948-8f45-523bbc427000', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHDwAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:09 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:09 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateadisabledkey-21596680364625942","attributes":{"enabled":false,"created":1561685638,"updated":1561685638,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTNJV3RsZVM5RFVsVkVTMFZaVGtGTlJTMURRVTVEVWtWQlZFVkJTMFZaVjBsVVNFVllVRWxTUlZNdE56WXdORFF5T0RVME9UZ3lORGN3T1NFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '0f2ba2e2-c3f1-4be0-bba9-a51251fadef3', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:10 GMT', + 'Connection', + 'close', + 'Content-Length', + '551' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'bb407831-d407-47f3-b640-01e6931f6100', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHEAAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:10 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:10 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMTYhTURBd01EUXpJV3RsZVM5RFVsVkVTMFZaVGtGTlJTMURRVTVIUlZSQlMwVlpMVGMxTkRFMk9UZ3pNelkwTVRFNE9URWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '4e827c72-8eec-4042-beec-d861e369b66e', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:10 GMT', + 'Connection', + 'close', + 'Content-Length', + '309' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '2dec2565-b851-4b78-a2fc-a73acab56e00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHEQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:11 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:10 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/key155976015901904087","attributes":{"enabled":true,"created":1559760164,"updated":1559760164,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key155976018742005808","attributes":{"enabled":true,"created":1559760193,"updated":1559760193,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key155976035851309215","attributes":{"enabled":true,"created":1559760364,"updated":1559760364,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key155976038662209208","attributes":{"enabled":true,"created":1559760392,"updated":1559760392,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key155976059075801511","attributes":{"enabled":true,"created":1559760596,"updated":1559760596,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key155976061918309867","attributes":{"enabled":true,"created":1559760624,"updated":1559760624,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key155976088192202903","attributes":{"enabled":true,"created":1559760887,"updated":1559760887,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key155976090993105220","attributes":{"enabled":true,"created":1559760915,"updated":1559760915,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key155976118089506049","attributes":{"enabled":true,"created":1559761186,"updated":1559761186,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key155976120964305668","attributes":{"enabled":true,"created":1559761215,"updated":1559761215,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019567836900080","attributes":{"enabled":true,"created":1560195684,"updated":1560195684,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019568419900112","attributes":{"enabled":true,"created":1560195689,"updated":1560195689,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019568998004417","attributes":{"enabled":false,"created":1560195695,"updated":1560195695,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019570157704018","attributes":{"enabled":true,"created":1560195707,"updated":1560195707,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019573560701886","attributes":{"enabled":true,"created":1560195741,"updated":1560195741,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNVGsyTVRRNU1EZzFNRGd4TlRVaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '278c8346-bd39-4de7-9e22-6661460249b9', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:10 GMT', + 'Connection', + 'close', + 'Content-Length', + '3051' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'f0accfdd-3ea3-45f3-a7fa-5ee08c546a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHEgAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:11 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:11 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/key156019965517806158","attributes":{"enabled":true,"created":1560199660,"updated":1560199660,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019966095601383","attributes":{"enabled":true,"created":1560199666,"updated":1560199666,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019966655202551","attributes":{"enabled":false,"created":1560199672,"updated":1560199672,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019967216106153","attributes":{"enabled":true,"created":1560199678,"updated":1560199678,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019970108507840","attributes":{"enabled":true,"created":1560199707,"updated":1560199707,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019971819409376","attributes":{"enabled":true,"created":1560199723,"updated":1560199723,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156020041605602688","attributes":{"enabled":true,"nbf":1560200421,"created":1560200422,"updated":1560200422,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156020107570005644","attributes":{"enabled":true,"exp":1560201080,"created":1560201081,"updated":1560201081,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNakV5TlRJNU1EQTFNRFUyTXpnaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'befa1841-cf7e-4204-b2c5-b7eed10f9aa6', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:11 GMT', + 'Connection', + 'close', + 'Content-Length', + '1790' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '84962c40-beac-4223-aff9-22a5a7586700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHEwAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:12 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:12 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/key156021398454601816","attributes":{"enabled":true,"created":1560213990,"updated":1560213990,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021399025306001","attributes":{"enabled":true,"created":1560213996,"updated":1560213996,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021399613005852","attributes":{"enabled":true,"created":1560214001,"updated":1560214001,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021400178007355","attributes":{"enabled":true,"created":1560214008,"updated":1560214008,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021400838605408","attributes":{"enabled":false,"created":1560214013,"updated":1560214013,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021401405804843","attributes":{"enabled":true,"nbf":1560214019,"created":1560214019,"updated":1560214019,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021401972601264","attributes":{"enabled":true,"exp":1560214024,"created":1560214025,"updated":1560214025,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021402558506955","attributes":{"enabled":false,"created":1560214031,"updated":1560214036,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021403691203484","attributes":{"enabled":true,"created":1560214042,"updated":1560214042,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021644428906562","attributes":{"enabled":true,"created":1560216450,"updated":1560216450,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNakUyTkRVd01qTXlNREV3TlRBaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'e69fd5a1-75ad-41fe-8799-99a1eaf27f98', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:12 GMT', + 'Connection', + 'close', + 'Content-Length', + '2161' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '1fdbaf1c-acdc-470a-92ba-1f56e06f6a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHFAAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:12 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:12 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/key156021645023201050","attributes":{"enabled":true,"created":1560216455,"updated":1560216455,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021645600805675","attributes":{"enabled":true,"created":1560216461,"updated":1560216461,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021646164300437","attributes":{"enabled":true,"created":1560216467,"updated":1560216467,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021646738603126","attributes":{"enabled":false,"created":1560216473,"updated":1560216473,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021647317101069","attributes":{"enabled":true,"nbf":1560216478,"created":1560216478,"updated":1560216478,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021647896109795","attributes":{"enabled":true,"exp":1560216483,"created":1560216484,"updated":1560216484,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021648457806180","attributes":{"enabled":false,"created":1560216490,"updated":1560216495,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021649588105428","attributes":{"enabled":false,"exp":1560216501,"created":1560216501,"updated":1560216507,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021652991406663","attributes":{"enabled":true,"created":1560216535,"updated":1560216535,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021654118707998","attributes":{"enabled":true,"created":1560216546,"updated":1560216546,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021655789000990","attributes":{"enabled":true,"created":1560216563,"updated":1560216563,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021698079201746","attributes":{"enabled":true,"created":1560216986,"updated":1560216986,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156027682085504023","attributes":{"enabled":true,"created":1560276826,"updated":1560276826,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNamMyT1RJd05qRTRNRFUxT1RFaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '9b6e65d5-09e2-42d0-96eb-d988f5c04a46', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:12 GMT', + 'Connection', + 'close', + 'Content-Length', + '2734' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '0a7f1d88-4790-450b-985f-59c5225d7700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHFQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:13 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:12 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/key156028175563002501","attributes":{"enabled":true,"created":1560281761,"updated":1560281761,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028176140503335","attributes":{"enabled":true,"created":1560281767,"updated":1560281767,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028176718009249","attributes":{"enabled":false,"created":1560281772,"updated":1560281772,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028177274009592","attributes":{"enabled":true,"nbf":1560281777,"created":1560281778,"updated":1560281778,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028177830101648","attributes":{"enabled":true,"exp":1560281783,"created":1560281784,"updated":1560281784,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028178407406544","attributes":{"enabled":false,"created":1560281789,"updated":1560281795,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028179546704608","attributes":{"enabled":false,"exp":1560281801,"created":1560281800,"updated":1560281806,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028182926703011","attributes":{"enabled":true,"created":1560281834,"updated":1560281834,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028184044006383","attributes":{"enabled":true,"created":1560281845,"updated":1560281845,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028189442507450","attributes":{"enabled":true,"created":1560281899,"updated":1560281899,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028205605702876","attributes":{"enabled":true,"created":1560282061,"updated":1560282061,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028212028407398","attributes":{"enabled":true,"created":1560282125,"updated":1560282125,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028213716108979","attributes":{"enabled":true,"created":1560282142,"updated":1560282142,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036322090002888","attributes":{"enabled":false,"created":1560363226,"updated":1560363226,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036322656807812","attributes":{"enabled":true,"nbf":1560363231,"created":1560363232,"updated":1560363232,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036323238409224","attributes":{"enabled":true,"exp":1560363237,"created":1560363237,"updated":1560363237,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036323804901755","attributes":{"enabled":false,"created":1560363243,"updated":1560363249,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036324938907401","attributes":{"enabled":false,"exp":1560363254,"created":1560363254,"updated":1560363260,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNell6TWpZd05EazJNRE0yTnpNaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'b07c37f3-8197-49b9-9d1a-e187bb984a59', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:13 GMT', + 'Connection', + 'close', + 'Content-Length', + '3713' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '1c47eea7-49f0-47e3-a002-4bf3733c7000', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHFgAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:14 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:14 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/key156036328289805710","attributes":{"enabled":true,"created":1560363288,"updated":1560363288,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036329384707932","attributes":{"enabled":true,"created":1560363299,"updated":1560363299,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036335353805406","attributes":{"enabled":true,"created":1560363359,"updated":1560363359,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036352635406646","attributes":{"enabled":true,"created":1560363532,"updated":1560363532,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036359055200632","attributes":{"enabled":true,"created":1560363595,"updated":1560363595,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036360747106809","attributes":{"enabled":true,"created":1560363613,"updated":1560363613,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156044301853106036","attributes":{"enabled":false,"created":1560443023,"updated":1560443029,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156044302953209171","attributes":{"enabled":false,"exp":1560443035,"created":1560443035,"updated":1560443040,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156044306342002510","attributes":{"enabled":true,"created":1560443069,"updated":1560443069,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156044307483600798","attributes":{"enabled":true,"created":1560443080,"updated":1560443080,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156044314989607523","attributes":{"enabled":true,"created":1560443155,"updated":1560443155,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156044316109901534","attributes":{"enabled":true,"created":1560443166,"updated":1560443166,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156044360211306282","attributes":{"enabled":true,"created":1560443607,"updated":1560443607,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156044369613908113","attributes":{"enabled":true,"created":1560443701,"updated":1560443701,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156044371294504848","attributes":{"enabled":true,"created":1560443718,"updated":1560443718,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156048233876700601","attributes":{"enabled":true,"created":1560482344,"updated":1560482344,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156054122923308772","attributes":{"enabled":true,"created":1560541235,"updated":1560541235,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156019972953600799","attributes":{"enabled":true,"created":1560199735,"updated":1560199735,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156019972953608137","attributes":{"enabled":true,"created":1560199740,"updated":1560199740,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJMklXdGxlUzlMUlZsVE1UVTJNREU1T1RnME1URXhOekE1TnpnM0lUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '53bb8af1-8651-443f-8a21-9b924f57cee5', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:14 GMT', + 'Connection', + 'close', + 'Content-Length', + '3816' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '4a23c6e9-430d-41e9-b8ae-7bf38a077400', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHFwAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:14 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:14 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/keys156021656935308206","attributes":{"enabled":true,"created":1560216580,"updated":1560216580,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156021656935308448","attributes":{"enabled":true,"created":1560216575,"updated":1560216575,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156028191118107647","attributes":{"enabled":true,"created":1560281922,"updated":1560281922,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156028191118109631","attributes":{"enabled":true,"created":1560281916,"updated":1560281916,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156036337061400928","attributes":{"enabled":true,"created":1560363381,"updated":1560363381,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156036337061402620","attributes":{"enabled":true,"created":1560363376,"updated":1560363376,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156044318335800124","attributes":{"enabled":true,"created":1560443194,"updated":1560443194,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156044318335808106","attributes":{"enabled":true,"created":1560443188,"updated":1560443188,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156044325345205112","attributes":{"enabled":true,"created":1560443259,"updated":1560443259,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156044325345209472","attributes":{"enabled":true,"created":1560443264,"updated":1560443264,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeys--0","attributes":{"enabled":true,"created":1561724409,"updated":1561724409,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeys--1","attributes":{"enabled":true,"created":1561724409,"updated":1561724409,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeys-4844377101593087-0","attributes":{"enabled":true,"created":1561685873,"updated":1561685873,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeys-4844377101593087-1","attributes":{"enabled":true,"created":1561685873,"updated":1561685873,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDAhTURBd01EWXhJV3RsZVM5TVNWTlVTMFZaVGtGTlJTMURRVTVIUlZSVVNFVldSVkpUU1U5T1UwOUdRVXRGV1ZCQlIwVkVMVEl3TnpJNE9EZ3dOVE14TkRnMU56WWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '069e0874-4ef3-4243-9312-f389a9aa1209', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:15 GMT', + 'Connection', + 'close', + 'Content-Length', + '3080' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '646b15ad-392f-496a-8349-ade754c66e00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHGAAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:15 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:14 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/MyKeyName","attributes":{"enabled":true,"created":1559759721,"updated":1559759721,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrecoveradeletedkey-4883244773006783","attributes":{"enabled":true,"created":1561420381,"updated":1561420381,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrecoveradeletedkey-8006354275127874","attributes":{"enabled":true,"created":1561420833,"updated":1561420833,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrecoveradeletedkey-8686288267292417","attributes":{"enabled":true,"created":1561420689,"updated":1561420689,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDghTURBd01EWTJJV3RsZVM5U1JVTlBWa1ZTUzBWWlRrRk5SUzFEUVU1U1JWTlVUMUpGUVV0RldWZEpWRWhCUjBsV1JVNUNRVU5MVlZBdE9UYzRPVEk0TmpNNE9URXlNemMyT0NFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'c96ac7e8-e1a7-4e55-afcc-8500d891dd1e', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:16 GMT', + 'Connection', + 'close', + 'Content-Length', + '1175' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '13ecde3e-097b-47ae-9a67-60f6a6b56400', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHGQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:16 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:16 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/secret156019574699601597","attributes":{"enabled":true,"created":1560195758,"updated":1560195758,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/secret156019574699608155","attributes":{"enabled":true,"created":1560195752,"updated":1560195752,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":null}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'dd9dfa4e-f1bf-4ce2-a925-573fbbbdf69b', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:16 GMT', + 'Connection', + 'close', + 'Content-Length', + '403' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '77d2643f-6822-4123-b66a-787f10c26100', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHGgAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:16 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:16 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/listKeyName-cangetseveralinsertedkeys--0') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangetseveralinsertedkeys--0","deletedDate":1561724417,"scheduledPurgeDate":1569500417,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeys--0/f7ebeb5a36204f83a049cf51f7e3d6f0","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"tDvesjtMJ_wZCBZPsloYP2PVoovN7P_HCgoRQzg5QZbV2C_MvuM86DgBQLVSyaG0T7FQJGw12bHmcxLWMtQHzLk78r1cPv_yWX2p8FPBSvehl_Mw3a5rrXZ1-fw173UOVnsrGez7DNYMts8hGtvD1WngoCDdfVZ2es1fzQTzb3btPUjH--ubvYCRmIfbhESVXShHN5gX97YUY5GNgoT1jv_LfM2s_ddqGsSizk6d6o2jlwJsWOkCLTVqPIyUJ6UII5a4mJczm8IulELXQqbYZGKz3oknQ7DOFtyE2WG6VUl3kxl291ZqWGiN9o22A5N_PZ_y_9RmsbBXFSgw8kWmQQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561724409,"updated":1561724409,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '79c89557-7bcd-4113-a2c8-0277502704e6', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:17 GMT', + 'Connection', + 'close', + 'Content-Length', + '879' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'fd4e4c37-e985-46f1-a3e3-28099e116e00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHGwAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:17 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:17 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/listKeyName-cangetseveralinsertedkeys--0') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '794bb1cb-599b-46b5-8394-bb52e89f976c', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:17 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '454e66f3-f46f-44a4-a0e0-2dd026f56200', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHHAAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:27 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:27 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/listKeyName-cangetseveralinsertedkeys--0') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '6ecd827f-aac4-4871-af0e-ea1d310782d8', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:28 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '1df168e4-af39-4f2d-abb7-6894a6996a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHHQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:28 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:28 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/listKeyName-cangetseveralinsertedkeys--1') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangetseveralinsertedkeys--1","deletedDate":1561724428,"scheduledPurgeDate":1569500428,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeys--1/3a0d6557c1c24b8b8c118d6eff777448","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"vmme9qd_ar9nePI1jV28uZcAz9O1Q-C3_2yid7ef3qDtJlYaWDrzFDkOlJ50MofRxFG443wA0xpyZsFAKKeZ8aIWXA1ojj4F6SjWoNRJx0Y24_7ovAJiNKh81BCOV5BZ8K99xEyx9sPh-AX6hY39lrvY7xvOqpsRByXSW8shTQK7G9OznH8vIi9jKtYqT4NH1h6K_Op1ErLTfeFsrRrsmuiUnpli3PB1Vw-Vk_54zCkHqvUFD2itoMJRWHnBF4Md7ekLHk1Oc-ZyRLYY61_MnYJukFgoGUjTlJV9O55SLJhtf5Ud6cHm1Oo7eRhT6cL8PVyqth4tg5XEcfQvDFM1uQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561724409,"updated":1561724409,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '8568513d-3af9-4947-9e1c-4253ee361dfc', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:27 GMT', + 'Connection', + 'close', + 'Content-Length', + '879' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'a4048742-5b63-4654-90ed-c4257f030900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHHgAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:28 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:28 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/listKeyName-cangetseveralinsertedkeys--1') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '98a18882-f9f2-40b3-b88a-ae5d06c235af', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:29 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '2efa6858-fb25-42f8-a58a-6ec19b466b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHHwAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:39 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:39 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/listKeyName-cangetseveralinsertedkeys--1') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '4ee80ae7-1ab8-42d9-a9bb-06a663177922', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:39 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'e59b9582-133b-4f0c-8434-fec42b4b6700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHIAAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:39 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:39 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/listKeyName-cangetseveralinsertedkeyspaged--0/create', {"kty":"RSA"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeyspaged--0/aee1a5172ef74a8eb282da545a96b149","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"2kXou0Yn6YgyK_iz4EEsHqEJnQ-CuwpU9oEUZNV9VkkvRtaQH1Jq9s4P-BD3rRL7Hz1ZSvWSipy4Zjmk2ufT5qBZtTWcR9oFlG9QgHp8HDEUpsAvoZ58M2P1D1nULSVNBP2lyi8mESVdlSCQrpxrb_xmg2KZzksVXDzxoQQt8EeKrT6mpHvRWSA-HwaJSvGCW2EhEVj8WPvOKWBNNNMBfqdplzourzk5RsN1fo4X9niVQFUhLq8TOyg_WrG_Nk1YNcNmCPOxMhgBc_osJFFAxHoDQwg-psbs7aglke3NtqLPmXjlOce7_93nJg6HkaLnlZaq6UdN9PVA8QHPfXHONw","e":"AQAB"},"attributes":{"enabled":true,"created":1561724440,"updated":1561724440,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'fe12ffc9-1bae-43d8-9af5-b68b5b8ee8f3', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:39 GMT', + 'Connection', + 'close', + 'Content-Length', + '707' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '7019af3b-0dd5-4a3f-807d-13f9107f6300', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHIQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:40 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:39 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/listKeyName-cangetseveralinsertedkeyspaged--1/create', {"kty":"RSA"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeyspaged--1/dbaa2f33fdb2470b8df27e2faab17a34","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"5XJ8uYTe3NP7xsczoXvyMQo0KqJpV1Z7zQtokKNDM75UcrFEZiBHkgCIwqSV7Zg8vzVIIIIWKcWW1a-3WeVH_G93CueAs53nJj97fRdEozx_YhEWgoQ_WLLVULtAtzuQH7VlvSYQUwn9Gn0LMNWig-qHo3ac0W_8iuy9tEjOkqiUjx5oksLvqvgrm5LZcACjLXgC5yGVKW7R4gUyV14117sYO__PyIlEUSTj3d2UkPtWZ2NCAhno0KVKOMwksWa509fmdCEwHfUhUlCS2SK76XOZVuOVq1UuFHWGha9HzePeQYn-yXKmGL-J3jls-AH-jwLSjZi_44TAHNwZtnLWFw","e":"AQAB"},"attributes":{"enabled":true,"created":1561724440,"updated":1561724440,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'b329d740-0d4e-4404-b326-1ebb8e13ad9b', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:40 GMT', + 'Connection', + 'close', + 'Content-Length', + '707' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '7e88d5c7-d6d7-463a-a51d-1d5447767300', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHIgAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:41 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:40 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateadisabledkey-21596680364625942","attributes":{"enabled":false,"created":1561685638,"updated":1561685638,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTNJV3RsZVM5RFVsVkVTMFZaVGtGTlJTMURRVTVEVWtWQlZFVkJTMFZaVjBsVVNFVllVRWxTUlZNdE56WXdORFF5T0RVME9UZ3lORGN3T1NFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'c99acbbd-caf1-4096-9582-dc6488dbed82', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:41 GMT', + 'Connection', + 'close', + 'Content-Length', + '551' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'cd77cc1a-825d-4f5b-89c0-690a4f876c00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHIwAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:41 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:40 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMTYhTURBd01EUXpJV3RsZVM5RFVsVkVTMFZaVGtGTlJTMURRVTVIUlZSQlMwVlpMVGMxTkRFMk9UZ3pNelkwTVRFNE9URWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '22de12f2-097e-4d7c-af3d-318a28bc3636', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:41 GMT', + 'Connection', + 'close', + 'Content-Length', + '309' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '33d7f14d-66ee-4492-820d-e11f47c86500', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHJAAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:42 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:41 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/key155976015901904087","attributes":{"enabled":true,"created":1559760164,"updated":1559760164,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key155976018742005808","attributes":{"enabled":true,"created":1559760193,"updated":1559760193,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key155976035851309215","attributes":{"enabled":true,"created":1559760364,"updated":1559760364,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key155976038662209208","attributes":{"enabled":true,"created":1559760392,"updated":1559760392,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key155976059075801511","attributes":{"enabled":true,"created":1559760596,"updated":1559760596,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key155976061918309867","attributes":{"enabled":true,"created":1559760624,"updated":1559760624,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key155976088192202903","attributes":{"enabled":true,"created":1559760887,"updated":1559760887,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key155976090993105220","attributes":{"enabled":true,"created":1559760915,"updated":1559760915,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key155976118089506049","attributes":{"enabled":true,"created":1559761186,"updated":1559761186,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key155976120964305668","attributes":{"enabled":true,"created":1559761215,"updated":1559761215,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019567836900080","attributes":{"enabled":true,"created":1560195684,"updated":1560195684,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019568419900112","attributes":{"enabled":true,"created":1560195689,"updated":1560195689,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019568998004417","attributes":{"enabled":false,"created":1560195695,"updated":1560195695,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019570157704018","attributes":{"enabled":true,"created":1560195707,"updated":1560195707,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019573560701886","attributes":{"enabled":true,"created":1560195741,"updated":1560195741,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNVGsyTVRRNU1EZzFNRGd4TlRVaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '0bd9a906-ada2-4efb-b94a-c2fc4e0bc443', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:42 GMT', + 'Connection', + 'close', + 'Content-Length', + '3051' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'c699ed31-f3bf-469c-8eb6-2f28ae6d0900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHJQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:43 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:42 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/key156019965517806158","attributes":{"enabled":true,"created":1560199660,"updated":1560199660,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019966095601383","attributes":{"enabled":true,"created":1560199666,"updated":1560199666,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019966655202551","attributes":{"enabled":false,"created":1560199672,"updated":1560199672,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019967216106153","attributes":{"enabled":true,"created":1560199678,"updated":1560199678,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019970108507840","attributes":{"enabled":true,"created":1560199707,"updated":1560199707,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156019971819409376","attributes":{"enabled":true,"created":1560199723,"updated":1560199723,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156020041605602688","attributes":{"enabled":true,"nbf":1560200421,"created":1560200422,"updated":1560200422,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156020107570005644","attributes":{"enabled":true,"exp":1560201080,"created":1560201081,"updated":1560201081,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNakV5TlRJNU1EQTFNRFUyTXpnaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '150a5d59-5f3d-449e-b087-c34fc2614c5a', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:42 GMT', + 'Connection', + 'close', + 'Content-Length', + '1790' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'c0620aa9-8c67-443a-8a29-2109ba216b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHJgAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:43 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:42 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/key156021398454601816","attributes":{"enabled":true,"created":1560213990,"updated":1560213990,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021399025306001","attributes":{"enabled":true,"created":1560213996,"updated":1560213996,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021399613005852","attributes":{"enabled":true,"created":1560214001,"updated":1560214001,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021400178007355","attributes":{"enabled":true,"created":1560214008,"updated":1560214008,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021400838605408","attributes":{"enabled":false,"created":1560214013,"updated":1560214013,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021401405804843","attributes":{"enabled":true,"nbf":1560214019,"created":1560214019,"updated":1560214019,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021401972601264","attributes":{"enabled":true,"exp":1560214024,"created":1560214025,"updated":1560214025,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021402558506955","attributes":{"enabled":false,"created":1560214031,"updated":1560214036,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021403691203484","attributes":{"enabled":true,"created":1560214042,"updated":1560214042,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021644428906562","attributes":{"enabled":true,"created":1560216450,"updated":1560216450,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNakUyTkRVd01qTXlNREV3TlRBaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'ccdf193b-dd9d-4844-9d1b-872241260728', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:43 GMT', + 'Connection', + 'close', + 'Content-Length', + '2161' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '211df5d6-241e-4f39-a711-b0cab7f76000', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHJwAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:44 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:43 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/key156021645023201050","attributes":{"enabled":true,"created":1560216455,"updated":1560216455,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021645600805675","attributes":{"enabled":true,"created":1560216461,"updated":1560216461,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021646164300437","attributes":{"enabled":true,"created":1560216467,"updated":1560216467,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021646738603126","attributes":{"enabled":false,"created":1560216473,"updated":1560216473,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021647317101069","attributes":{"enabled":true,"nbf":1560216478,"created":1560216478,"updated":1560216478,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021647896109795","attributes":{"enabled":true,"exp":1560216483,"created":1560216484,"updated":1560216484,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021648457806180","attributes":{"enabled":false,"created":1560216490,"updated":1560216495,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021649588105428","attributes":{"enabled":false,"exp":1560216501,"created":1560216501,"updated":1560216507,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021652991406663","attributes":{"enabled":true,"created":1560216535,"updated":1560216535,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021654118707998","attributes":{"enabled":true,"created":1560216546,"updated":1560216546,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021655789000990","attributes":{"enabled":true,"created":1560216563,"updated":1560216563,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156021698079201746","attributes":{"enabled":true,"created":1560216986,"updated":1560216986,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156027682085504023","attributes":{"enabled":true,"created":1560276826,"updated":1560276826,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNamMyT1RJd05qRTRNRFUxT1RFaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '088cf4ad-287b-49f2-a73f-652d50926acd', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:44 GMT', + 'Connection', + 'close', + 'Content-Length', + '2734' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '9b8983ef-6cf8-4d81-b886-850f51d56b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHKAAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:44 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:44 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/key156028175563002501","attributes":{"enabled":true,"created":1560281761,"updated":1560281761,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028176140503335","attributes":{"enabled":true,"created":1560281767,"updated":1560281767,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028176718009249","attributes":{"enabled":false,"created":1560281772,"updated":1560281772,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028177274009592","attributes":{"enabled":true,"nbf":1560281777,"created":1560281778,"updated":1560281778,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028177830101648","attributes":{"enabled":true,"exp":1560281783,"created":1560281784,"updated":1560281784,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028178407406544","attributes":{"enabled":false,"created":1560281789,"updated":1560281795,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028179546704608","attributes":{"enabled":false,"exp":1560281801,"created":1560281800,"updated":1560281806,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028182926703011","attributes":{"enabled":true,"created":1560281834,"updated":1560281834,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028184044006383","attributes":{"enabled":true,"created":1560281845,"updated":1560281845,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028189442507450","attributes":{"enabled":true,"created":1560281899,"updated":1560281899,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028205605702876","attributes":{"enabled":true,"created":1560282061,"updated":1560282061,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028212028407398","attributes":{"enabled":true,"created":1560282125,"updated":1560282125,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156028213716108979","attributes":{"enabled":true,"created":1560282142,"updated":1560282142,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036322090002888","attributes":{"enabled":false,"created":1560363226,"updated":1560363226,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036322656807812","attributes":{"enabled":true,"nbf":1560363231,"created":1560363232,"updated":1560363232,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036323238409224","attributes":{"enabled":true,"exp":1560363237,"created":1560363237,"updated":1560363237,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036323804901755","attributes":{"enabled":false,"created":1560363243,"updated":1560363249,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036324938907401","attributes":{"enabled":false,"exp":1560363254,"created":1560363254,"updated":1560363260,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNell6TWpZd05EazJNRE0yTnpNaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '7351b752-75bc-4984-8e23-d34783ce4a53', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:45 GMT', + 'Connection', + 'close', + 'Content-Length', + '3713' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '0fee54bf-ca33-445d-88a5-d3e0280d7500', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHKQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:45 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:45 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/key156036328289805710","attributes":{"enabled":true,"created":1560363288,"updated":1560363288,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036329384707932","attributes":{"enabled":true,"created":1560363299,"updated":1560363299,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036335353805406","attributes":{"enabled":true,"created":1560363359,"updated":1560363359,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036352635406646","attributes":{"enabled":true,"created":1560363532,"updated":1560363532,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036359055200632","attributes":{"enabled":true,"created":1560363595,"updated":1560363595,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156036360747106809","attributes":{"enabled":true,"created":1560363613,"updated":1560363613,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156044301853106036","attributes":{"enabled":false,"created":1560443023,"updated":1560443029,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156044302953209171","attributes":{"enabled":false,"exp":1560443035,"created":1560443035,"updated":1560443040,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156044306342002510","attributes":{"enabled":true,"created":1560443069,"updated":1560443069,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156044307483600798","attributes":{"enabled":true,"created":1560443080,"updated":1560443080,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156044314989607523","attributes":{"enabled":true,"created":1560443155,"updated":1560443155,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156044316109901534","attributes":{"enabled":true,"created":1560443166,"updated":1560443166,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156044360211306282","attributes":{"enabled":true,"created":1560443607,"updated":1560443607,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156044369613908113","attributes":{"enabled":true,"created":1560443701,"updated":1560443701,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156044371294504848","attributes":{"enabled":true,"created":1560443718,"updated":1560443718,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156048233876700601","attributes":{"enabled":true,"created":1560482344,"updated":1560482344,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/key156054122923308772","attributes":{"enabled":true,"created":1560541235,"updated":1560541235,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156019972953600799","attributes":{"enabled":true,"created":1560199735,"updated":1560199735,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156019972953608137","attributes":{"enabled":true,"created":1560199740,"updated":1560199740,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJMklXdGxlUzlMUlZsVE1UVTJNREU1T1RnME1URXhOekE1TnpnM0lUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '89d1b2f6-06b8-4ef9-ab39-cecf9d2d1318', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:45 GMT', + 'Connection', + 'close', + 'Content-Length', + '3816' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'eafb946f-ea46-46ea-9e11-e40abbbb6500', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHKgAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:45 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:45 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/keys156021656935308206","attributes":{"enabled":true,"created":1560216580,"updated":1560216580,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156021656935308448","attributes":{"enabled":true,"created":1560216575,"updated":1560216575,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156028191118107647","attributes":{"enabled":true,"created":1560281922,"updated":1560281922,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156028191118109631","attributes":{"enabled":true,"created":1560281916,"updated":1560281916,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156036337061400928","attributes":{"enabled":true,"created":1560363381,"updated":1560363381,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156036337061402620","attributes":{"enabled":true,"created":1560363376,"updated":1560363376,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156044318335800124","attributes":{"enabled":true,"created":1560443194,"updated":1560443194,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156044318335808106","attributes":{"enabled":true,"created":1560443188,"updated":1560443188,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156044325345205112","attributes":{"enabled":true,"created":1560443259,"updated":1560443259,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/keys156044325345209472","attributes":{"enabled":true,"created":1560443264,"updated":1560443264,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeys-4844377101593087-0","attributes":{"enabled":true,"created":1561685873,"updated":1561685873,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeys-4844377101593087-1","attributes":{"enabled":true,"created":1561685873,"updated":1561685873,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeyspaged--0","attributes":{"enabled":true,"created":1561724440,"updated":1561724440,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeyspaged--1","attributes":{"enabled":true,"created":1561724440,"updated":1561724440,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTJJV3RsZVM5TVNWTlVTMFZaVGtGTlJTMURRVTVIUlZSVVNFVldSVkpUU1U5T1UwOUdRVXRGV1MwME9EUTBNemMzTVRBeE5Ua3pNRGczSVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLSIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '5b4ed38a-185c-4683-a9bb-cdd02f86e86d', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:46 GMT', + 'Connection', + 'close', + 'Content-Length', + '3085' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '874f84b7-7733-4759-8d99-78b00baf6700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHKwAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:46 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:46 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/MyKeyName","attributes":{"enabled":true,"created":1559759721,"updated":1559759721,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrecoveradeletedkey-4883244773006783","attributes":{"enabled":true,"created":1561420381,"updated":1561420381,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrecoveradeletedkey-8006354275127874","attributes":{"enabled":true,"created":1561420833,"updated":1561420833,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrecoveradeletedkey-8686288267292417","attributes":{"enabled":true,"created":1561420689,"updated":1561420689,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDghTURBd01EWTJJV3RsZVM5U1JVTlBWa1ZTUzBWWlRrRk5SUzFEUVU1U1JWTlVUMUpGUVV0RldWZEpWRWhCUjBsV1JVNUNRVU5MVlZBdE9UYzRPVEk0TmpNNE9URXlNemMyT0NFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '3fa4c96a-8147-4fb8-9ecb-ae84ffa01813', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:46 GMT', + 'Connection', + 'close', + 'Content-Length', + '1175' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '83f8b128-e16a-45f6-b3ff-6780e7376f00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLAAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:47 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:46 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys') + .query(true) + .reply(200, {"value":[{"kid":"https://keyvault_name.vault.azure.net/keys/secret156019574699601597","attributes":{"enabled":true,"created":1560195758,"updated":1560195758,"recoveryLevel":"Recoverable+Purgeable"}},{"kid":"https://keyvault_name.vault.azure.net/keys/secret156019574699608155","attributes":{"enabled":true,"created":1560195752,"updated":1560195752,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":null}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '891e7ad8-fc59-4219-96f1-77baa53bc5fc', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:47 GMT', + 'Connection', + 'close', + 'Content-Length', + '403' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '371a6b9a-5940-4007-a96b-4f43a1487200', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:47 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:47 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/listKeyName-cangetseveralinsertedkeyspaged--0') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangetseveralinsertedkeyspaged--0","deletedDate":1561724448,"scheduledPurgeDate":1569500448,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeyspaged--0/aee1a5172ef74a8eb282da545a96b149","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"2kXou0Yn6YgyK_iz4EEsHqEJnQ-CuwpU9oEUZNV9VkkvRtaQH1Jq9s4P-BD3rRL7Hz1ZSvWSipy4Zjmk2ufT5qBZtTWcR9oFlG9QgHp8HDEUpsAvoZ58M2P1D1nULSVNBP2lyi8mESVdlSCQrpxrb_xmg2KZzksVXDzxoQQt8EeKrT6mpHvRWSA-HwaJSvGCW2EhEVj8WPvOKWBNNNMBfqdplzourzk5RsN1fo4X9niVQFUhLq8TOyg_WrG_Nk1YNcNmCPOxMhgBc_osJFFAxHoDQwg-psbs7aglke3NtqLPmXjlOce7_93nJg6HkaLnlZaq6UdN9PVA8QHPfXHONw","e":"AQAB"},"attributes":{"enabled":true,"created":1561724440,"updated":1561724440,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'db954f04-41e9-4109-ae9d-7f2dde5ef245', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:47 GMT', + 'Connection', + 'close', + 'Content-Length', + '889' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'c4d59c49-0d45-4c08-8ef1-56315ad87100', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:48 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:47 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/listKeyName-cangetseveralinsertedkeyspaged--0') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '3e8512c0-65c4-4e82-b4bd-5de93f5f0fb1', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:48 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '1da73c46-c29e-4aff-9dd1-ab25a0620900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:20:58 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:20:58 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/listKeyName-cangetseveralinsertedkeyspaged--0') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '295f2006-0948-4ae6-a259-8b5541cd386e', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:20:58 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '35b095ad-43c2-4d2e-a9c8-6507ebc96600', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:21:09 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:21:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/listKeyName-cangetseveralinsertedkeyspaged--0') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'ae71f2a0-ed24-4e72-baaa-1090aec81f07', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:21:09 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '64600493-ffbc-420d-bc84-9a3d78117400', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:21:09 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:21:09 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/listKeyName-cangetseveralinsertedkeyspaged--1') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangetseveralinsertedkeyspaged--1","deletedDate":1561724470,"scheduledPurgeDate":1569500470,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeyspaged--1/dbaa2f33fdb2470b8df27e2faab17a34","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"5XJ8uYTe3NP7xsczoXvyMQo0KqJpV1Z7zQtokKNDM75UcrFEZiBHkgCIwqSV7Zg8vzVIIIIWKcWW1a-3WeVH_G93CueAs53nJj97fRdEozx_YhEWgoQ_WLLVULtAtzuQH7VlvSYQUwn9Gn0LMNWig-qHo3ac0W_8iuy9tEjOkqiUjx5oksLvqvgrm5LZcACjLXgC5yGVKW7R4gUyV14117sYO__PyIlEUSTj3d2UkPtWZ2NCAhno0KVKOMwksWa509fmdCEwHfUhUlCS2SK76XOZVuOVq1UuFHWGha9HzePeQYn-yXKmGL-J3jls-AH-jwLSjZi_44TAHNwZtnLWFw","e":"AQAB"},"attributes":{"enabled":true,"created":1561724440,"updated":1561724440,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '8dbbc6e4-1151-4da2-bb76-b45d451e09da', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:21:09 GMT', + 'Connection', + 'close', + 'Content-Length', + '889' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '38b6c35d-9041-4844-8843-fb65d18f6e00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:21:10 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:21:10 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/listKeyName-cangetseveralinsertedkeyspaged--1') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '72e50b8b-f2f7-4c65-a8ac-66674ffb13de', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:21:10 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '6de9684e-272b-49e3-b551-1f671f306d00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:21:20 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:21:20 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/listKeyName-cangetseveralinsertedkeyspaged--1') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'fc032dec-f5be-470e-a9e8-87d3395a5eb2', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:21:21 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'c2ade1ed-3937-4be5-adc7-55aaf0800900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:21:31 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:21:30 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/listKeyName-cangetseveralinsertedkeyspaged--1') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'f0290a10-1523-4ad9-b059-3d6aa02d59b2', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:21:31 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '92aa96b4-2c5b-4264-bca1-0c4c5a747300', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:21:41 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:21:41 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/listKeyName-cangetseveralinsertedkeyspaged--1') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '19eb80b8-a56b-4f30-b218-0e3d95ab404e', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:21:41 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '4442b8af-1ea6-4695-b182-9a9ffc6c6a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:21:42 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:21:41 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/listKeyName-listdeletedkeys--0/create', {"kty":"RSA"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeys--0/79fae786638c42169f1a14160b02490f","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"wq4IvCgZbeXXH-MeuUo6hgmYRtc8fuKacJ6mRUZ58i23R6gjLqKlQHM-Nqxl5qUNJU9b-05YP4cRs7MsoxamspsxeKAl6yNQlQGjN_cbDaoTjEWEetfR_H2PqnzEEbwYuv0qR0YXiT1WsxpLBMPC6AnYgmpOWE72x3rtD9sRlJtYK-KaIu419t7fUmfh_KpORCwjQOP-5xbyIBXawm9T8s3a5ufO5aXDtlw09MStE5gVj8McXvVhiBLODGZ8xZNaqAJX4hiojYA4p68gMCqbPK_qRSGCFfc7klFl_zw9-NTuCTvOXillLmPuK-vLaWfTf5e_xjpw7sdIBwt96QPjcw","e":"AQAB"},"attributes":{"enabled":true,"created":1561724502,"updated":1561724502,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'd1e76a34-c6ac-4e23-bfd0-0a05d0572396', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:21:42 GMT', + 'Connection', + 'close', + 'Content-Length', + '692' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '70f1bae9-1ecd-4663-91be-35545d626700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:21:42 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:21:42 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/listKeyName-listdeletedkeys--1/create', {"kty":"RSA"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeys--1/c6a526550bc046a7b3dc1adfbcb269ef","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"vDPa6N3_I5nGZ8aXpsGGIfQ7UqEr65L_7Om-Woj9rqzk9DAcHsoS6DBxAdzt6jWDDEYytvIGNNYmZeRhUjMtVL_n58TzDBIUHMG1OEBN6jUdyBqcDvxygLjXo5z84PiSkYqiq2tZBP7p0k5XgBLfoGpIlcnrlULNIQdl9UTwK-HtAeSS9CPJALsin0w610CD8Msk4YBbalR_6C5k3Zw_qLZaE0dkpMTZ0S4gPPzDYOlKaBjTjcAwxgcgROCAWA7oAQOGHLGXYlGsvSVlLL4PidGeE5J6HFxtYUyi6st1keEkwNbkSJtWuyGw9QyWaSkb2M0V2xAzMxvq-rn7e4pOIQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561724503,"updated":1561724503,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '80d077d6-a644-44b2-acc1-e1fe5839dd9a', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:21:42 GMT', + 'Connection', + 'close', + 'Content-Length', + '692' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '77d2643f-6822-4123-b66a-787fa4cf6100', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:21:43 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:21:43 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/listKeyName-listdeletedkeys--0') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-listdeletedkeys--0","deletedDate":1561724503,"scheduledPurgeDate":1569500503,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeys--0/79fae786638c42169f1a14160b02490f","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"wq4IvCgZbeXXH-MeuUo6hgmYRtc8fuKacJ6mRUZ58i23R6gjLqKlQHM-Nqxl5qUNJU9b-05YP4cRs7MsoxamspsxeKAl6yNQlQGjN_cbDaoTjEWEetfR_H2PqnzEEbwYuv0qR0YXiT1WsxpLBMPC6AnYgmpOWE72x3rtD9sRlJtYK-KaIu419t7fUmfh_KpORCwjQOP-5xbyIBXawm9T8s3a5ufO5aXDtlw09MStE5gVj8McXvVhiBLODGZ8xZNaqAJX4hiojYA4p68gMCqbPK_qRSGCFfc7klFl_zw9-NTuCTvOXillLmPuK-vLaWfTf5e_xjpw7sdIBwt96QPjcw","e":"AQAB"},"attributes":{"enabled":true,"created":1561724502,"updated":1561724502,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'ac41cb46-55cb-417e-8f49-cacdd1723ad8', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:21:43 GMT', + 'Connection', + 'close', + 'Content-Length', + '859' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '36e22175-0544-457d-98d2-63530f660900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:21:44 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:21:43 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/listKeyName-listdeletedkeys--1') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-listdeletedkeys--1","deletedDate":1561724504,"scheduledPurgeDate":1569500504,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeys--1/c6a526550bc046a7b3dc1adfbcb269ef","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"vDPa6N3_I5nGZ8aXpsGGIfQ7UqEr65L_7Om-Woj9rqzk9DAcHsoS6DBxAdzt6jWDDEYytvIGNNYmZeRhUjMtVL_n58TzDBIUHMG1OEBN6jUdyBqcDvxygLjXo5z84PiSkYqiq2tZBP7p0k5XgBLfoGpIlcnrlULNIQdl9UTwK-HtAeSS9CPJALsin0w610CD8Msk4YBbalR_6C5k3Zw_qLZaE0dkpMTZ0S4gPPzDYOlKaBjTjcAwxgcgROCAWA7oAQOGHLGXYlGsvSVlLL4PidGeE5J6HFxtYUyi6st1keEkwNbkSJtWuyGw9QyWaSkb2M0V2xAzMxvq-rn7e4pOIQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561724503,"updated":1561724503,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '1333fef4-b365-4391-bbf7-d704b400cbd4', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:21:44 GMT', + 'Connection', + 'close', + 'Content-Length', + '859' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '0968f313-7f06-4b28-bd19-8b6468180a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:21:44 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:21:44 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys/listKeyName-listdeletedkeys--0') + .query(true) + .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: listKeyName-listdeletedkeys--0"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '114', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'bb05af0a-63bf-4714-97d4-9750caf80e75', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:21:43 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '889a2dc7-dead-4549-9e80-0a2bdd196000', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:21:54 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:21:54 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys/listKeyName-listdeletedkeys--0') + .query(true) + .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: listKeyName-listdeletedkeys--0"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '114', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '95f0883b-9bfe-4cc3-afcf-7637400e0cbd', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:21:54 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'b0c5390c-6f16-469d-a3b1-70f531637600', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:05 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:04 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys/listKeyName-listdeletedkeys--0') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-listdeletedkeys--0","deletedDate":1561724503,"scheduledPurgeDate":1569500503,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeys--0/79fae786638c42169f1a14160b02490f","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"wq4IvCgZbeXXH-MeuUo6hgmYRtc8fuKacJ6mRUZ58i23R6gjLqKlQHM-Nqxl5qUNJU9b-05YP4cRs7MsoxamspsxeKAl6yNQlQGjN_cbDaoTjEWEetfR_H2PqnzEEbwYuv0qR0YXiT1WsxpLBMPC6AnYgmpOWE72x3rtD9sRlJtYK-KaIu419t7fUmfh_KpORCwjQOP-5xbyIBXawm9T8s3a5ufO5aXDtlw09MStE5gVj8McXvVhiBLODGZ8xZNaqAJX4hiojYA4p68gMCqbPK_qRSGCFfc7klFl_zw9-NTuCTvOXillLmPuK-vLaWfTf5e_xjpw7sdIBwt96QPjcw","e":"AQAB"},"attributes":{"enabled":true,"created":1561724502,"updated":1561724502,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'a4fc88d2-abe1-47b4-b330-e66e783bc02c', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:05 GMT', + 'Connection', + 'close', + 'Content-Length', + '859' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'b743b90d-2ec3-4fee-9f54-7579b0f86500', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:05 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:05 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateadisabledkey-3945239952608115","deletedDate":1561686237,"scheduledPurgeDate":1569462237,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateadisabledkey-3945239952608115","attributes":{"enabled":false,"created":1561686237,"updated":1561686237,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateadisabledkey-7541698336411891","deletedDate":1561685852,"scheduledPurgeDate":1569461852,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateadisabledkey-7541698336411891","attributes":{"enabled":false,"created":1561685851,"updated":1561685851,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-027153260791364264","deletedDate":1561414117,"scheduledPurgeDate":1569190117,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-027153260791364264","attributes":{"enabled":true,"created":1561414117,"updated":1561414117,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-030825440796210968","deletedDate":1561413873,"scheduledPurgeDate":1569189873,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-030825440796210968","attributes":{"enabled":true,"created":1561413873,"updated":1561413873,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-03824218588079642","deletedDate":1561685734,"scheduledPurgeDate":1569461734,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-03824218588079642","attributes":{"enabled":true,"created":1561685734,"updated":1561685734,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-11113737196703477","deletedDate":1561412406,"scheduledPurgeDate":1569188406,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-11113737196703477","attributes":{"enabled":true,"created":1561412406,"updated":1561412406,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-12295619840490901","deletedDate":1561414368,"scheduledPurgeDate":1569190368,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-12295619840490901","attributes":{"enabled":true,"created":1561414367,"updated":1561414367,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-21596680364625942","deletedDate":1561685633,"scheduledPurgeDate":1569461633,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-21596680364625942","attributes":{"enabled":true,"created":1561685633,"updated":1561685633,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-23059577576776458","deletedDate":1561685795,"scheduledPurgeDate":1569461795,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-23059577576776458","attributes":{"enabled":true,"created":1561685795,"updated":1561685795,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-2463484917953478","deletedDate":1561414027,"scheduledPurgeDate":1569190027,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-2463484917953478","attributes":{"enabled":true,"created":1561414027,"updated":1561414027,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-30282256577400357","deletedDate":1561414305,"scheduledPurgeDate":1569190305,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-30282256577400357","attributes":{"enabled":true,"created":1561414304,"updated":1561414304,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-3650896677992299","deletedDate":1561685687,"scheduledPurgeDate":1569461687,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-3650896677992299","attributes":{"enabled":true,"created":1561685687,"updated":1561685687,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExOTYhTURBd01UQXhJV3RsZVM5RFVsVkVTMFZaVGtGTlJTMURRVTVEVWtWQlZFVkJTMFZaVjBoSlRFVkhTVlpKVGtkQlRVRk9WVUZNVkZsUVJTMHpOalV3T0RrMk5qYzNPVGt5TWprNUwwUTBOVGxDTkVORFFUTkdNelF4TmpBNFJqaENSa1E0UTBOQ1JrVXpNa1V5SVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLSIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'e12e95a0-c4aa-45a9-8a44-9bc76acd6eeb', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:06 GMT', + 'Connection', + 'close', + 'Content-Length', + '5344' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '88cd10e1-b376-4bd3-bb91-22d791ca6d00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:06 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:06 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-3945239952608115","deletedDate":1561686230,"scheduledPurgeDate":1569462230,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-3945239952608115","attributes":{"enabled":true,"created":1561686229,"updated":1561686229,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-4521671903162241","deletedDate":1561412660,"scheduledPurgeDate":1569188660,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-4521671903162241","attributes":{"enabled":true,"created":1561412659,"updated":1561412659,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-49665580519739794","deletedDate":1561415149,"scheduledPurgeDate":1569191149,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-49665580519739794","attributes":{"enabled":true,"created":1561415147,"updated":1561415147,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-6100746209317036","deletedDate":1561414691,"scheduledPurgeDate":1569190691,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-6100746209317036","attributes":{"enabled":true,"created":1561414690,"updated":1561414690,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-6143082435852443","deletedDate":1561411064,"scheduledPurgeDate":1569187064,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-6143082435852443","attributes":{"enabled":true,"created":1561411063,"updated":1561411063,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-6596998315181399","deletedDate":1561415010,"scheduledPurgeDate":1569191010,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-6596998315181399","attributes":{"enabled":true,"created":1561415009,"updated":1561415009,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-6745532996565062","deletedDate":1561415277,"scheduledPurgeDate":1569191277,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-6745532996565062","attributes":{"enabled":true,"created":1561415276,"updated":1561415276,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-7541698336411891","deletedDate":1561685844,"scheduledPurgeDate":1569461844,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-7541698336411891","attributes":{"enabled":true,"created":1561685844,"updated":1561685844,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-8414867982202452","deletedDate":1561414795,"scheduledPurgeDate":1569190795,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-8414867982202452","attributes":{"enabled":true,"created":1561414794,"updated":1561414794,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-8902329538192819","deletedDate":1561413350,"scheduledPurgeDate":1569189350,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-8902329538192819","attributes":{"enabled":true,"created":1561413350,"updated":1561413350,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywithexpires-3945239952608115","deletedDate":1561686240,"scheduledPurgeDate":1569462240,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywithexpires-3945239952608115","attributes":{"enabled":true,"exp":1546300805,"created":1561686240,"updated":1561686240,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywithexpires-7541698336411891","deletedDate":1561685855,"scheduledPurgeDate":1569461855,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywithexpires-7541698336411891","attributes":{"enabled":true,"exp":1546300805,"created":1561685854,"updated":1561685854,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTNJV3RsZVM5RFVsVkVTMFZaVGtGTlJTMURRVTVEVWtWQlZFVkJTMFZaVjBsVVNFVllVRWxTUlZNdE56WXdORFF5T0RVME9UZ3lORGN3T1NFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'f4afd37b-d852-4f37-85ea-c2e7fce5cf91', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:06 GMT', + 'Connection', + 'close', + 'Content-Length', + '5290' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '3d5b07df-44bb-40e1-b0f3-0d1097b26500', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:07 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:06 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywithnotBefore-3945239952608115","deletedDate":1561686239,"scheduledPurgeDate":1569462239,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywithnotBefore-3945239952608115","attributes":{"enabled":true,"nbf":1546300805,"created":1561686238,"updated":1561686238,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywithnotBefore-7541698336411891","deletedDate":1561685853,"scheduledPurgeDate":1569461853,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywithnotBefore-7541698336411891","attributes":{"enabled":true,"nbf":1546300805,"created":1561685853,"updated":1561685853,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateanECkey-21596680364625942","deletedDate":1561685637,"scheduledPurgeDate":1569461637,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateanECkey-21596680364625942","attributes":{"enabled":true,"created":1561685636,"updated":1561685636,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateanECkey-3945239952608115","deletedDate":1561686234,"scheduledPurgeDate":1569462234,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateanECkey-3945239952608115","attributes":{"enabled":true,"created":1561686234,"updated":1561686234,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateanECkey-7541698336411891","deletedDate":1561685849,"scheduledPurgeDate":1569461849,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateanECkey-7541698336411891","attributes":{"enabled":true,"created":1561685848,"updated":1561685848,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateanECkeywithcurve-21596680364625942","deletedDate":1561685638,"scheduledPurgeDate":1569461638,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateanECkeywithcurve-21596680364625942","attributes":{"enabled":true,"created":1561685637,"updated":1561685637,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateanECkeywithcurve-3945239952608115","deletedDate":1561686236,"scheduledPurgeDate":1569462236,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateanECkeywithcurve-3945239952608115","attributes":{"enabled":true,"created":1561686235,"updated":1561686235,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateanECkeywithcurve-7541698336411891","deletedDate":1561685850,"scheduledPurgeDate":1569461850,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateanECkeywithcurve-7541698336411891","attributes":{"enabled":true,"created":1561685850,"updated":1561685850,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateaRSAkey-21596680364625942","deletedDate":1561685635,"scheduledPurgeDate":1569461635,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateaRSAkey-21596680364625942","attributes":{"enabled":true,"created":1561685634,"updated":1561685634,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateaRSAkey-3945239952608115","deletedDate":1561686231,"scheduledPurgeDate":1569462231,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateaRSAkey-3945239952608115","attributes":{"enabled":true,"created":1561686231,"updated":1561686231,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateaRSAkey-7541698336411891","deletedDate":1561685846,"scheduledPurgeDate":1569461846,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateaRSAkey-7541698336411891","attributes":{"enabled":true,"created":1561685845,"updated":1561685845,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateaRSAkeywithsize-21596680364625942","deletedDate":1561685636,"scheduledPurgeDate":1569461636,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateaRSAkeywithsize-21596680364625942","attributes":{"enabled":true,"created":1561685635,"updated":1561685635,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateaRSAkeywithsize-3945239952608115","deletedDate":1561686233,"scheduledPurgeDate":1569462233,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateaRSAkeywithsize-3945239952608115","attributes":{"enabled":true,"created":1561686232,"updated":1561686232,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExODAhTURBd01Ea3dJV3RsZVM5RFVsVkVTMFZaVGtGTlJTMURRVTVEVWtWQlZFVkJVbE5CUzBWWlYwbFVTRk5KV2tVdE16azBOVEl6T1RrMU1qWXdPREV4TlM4Mk5qVkdORU15TkRKR056STBNVGszT1RrM056aEJPRFExTnpFd05VWXlSU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '415c4e6e-d5d5-40ea-b78c-ff9e76ed0af2', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:06 GMT', + 'Connection', + 'close', + 'Content-Length', + '5443' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '43d5033b-f8e2-4a48-8d92-f83762487100', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:07 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:07 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateaRSAkeywithsize-7541698336411891","deletedDate":1561685847,"scheduledPurgeDate":1569461847,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateaRSAkeywithsize-7541698336411891","attributes":{"enabled":true,"created":1561685847,"updated":1561685847,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-candeleteakey-3945239952608115","deletedDate":1561686245,"scheduledPurgeDate":1569462245,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-candeleteakey-3945239952608115","attributes":{"enabled":true,"created":1561686245,"updated":1561686245,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-candeleteakey-7541698336411891","deletedDate":1561685860,"scheduledPurgeDate":1569461860,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-candeleteakey-7541698336411891","attributes":{"enabled":true,"created":1561685860,"updated":1561685860,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetadeletedkey-041906371603109616","deletedDate":1561685972,"scheduledPurgeDate":1569461972,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetadeletedkey-041906371603109616","attributes":{"enabled":true,"created":1561685972,"updated":1561685972,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetadeletedkey-13938301836807887","deletedDate":1561685900,"scheduledPurgeDate":1569461900,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetadeletedkey-13938301836807887","attributes":{"enabled":true,"created":1561685900,"updated":1561685900,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetadeletedkey-6097754638482769","deletedDate":1561416018,"scheduledPurgeDate":1569192018,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetadeletedkey-6097754638482769","attributes":{"enabled":true,"created":1561416018,"updated":1561416018,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetadeletedkey-6723873262302544","deletedDate":1561415954,"scheduledPurgeDate":1569191954,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetadeletedkey-6723873262302544","attributes":{"enabled":true,"created":1561415953,"updated":1561415953,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetadeletedkey-7045353749486702","deletedDate":1561686157,"scheduledPurgeDate":1569462157,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetadeletedkey-7045353749486702","attributes":{"enabled":true,"created":1561686156,"updated":1561686156,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetadeletedkey-7541698336411891","deletedDate":1561685866,"scheduledPurgeDate":1569461866,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetadeletedkey-7541698336411891","attributes":{"enabled":true,"created":1561685866,"updated":1561685866,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetadeletedkey-8455281744731713","deletedDate":1561686136,"scheduledPurgeDate":1569462136,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetadeletedkey-8455281744731713","attributes":{"enabled":true,"created":1561686135,"updated":1561686135,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetadeletedkey-9166100965013404","deletedDate":1561686091,"scheduledPurgeDate":1569462091,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetadeletedkey-9166100965013404","attributes":{"enabled":true,"created":1561686091,"updated":1561686091,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetakey-3945239952608115","deletedDate":1561686248,"scheduledPurgeDate":1569462248,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetakey-3945239952608115","attributes":{"enabled":true,"created":1561686247,"updated":1561686247,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMTYhTURBd01EUXpJV3RsZVM5RFVsVkVTMFZaVGtGTlJTMURRVTVIUlZSQlMwVlpMVGMxTkRFMk9UZ3pNelkwTVRFNE9URWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '94823c02-2e92-47ad-bfd3-874fdbf35005', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '4829' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'ca9edcaf-6e7b-4ecc-a4db-e89ae4346200', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:08 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetakey-7541698336411891","deletedDate":1561685863,"scheduledPurgeDate":1569461863,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetakey-7541698336411891","attributes":{"enabled":true,"created":1561685862,"updated":1561685862,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetaspecificversionofakey-3945239952608115","deletedDate":1561686250,"scheduledPurgeDate":1569462250,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetaspecificversionofakey-3945239952608115","attributes":{"enabled":true,"created":1561686249,"updated":1561686249,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetaspecificversionofakey-7541698336411891","deletedDate":1561685865,"scheduledPurgeDate":1569461865,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetaspecificversionofakey-7541698336411891","attributes":{"enabled":true,"created":1561685864,"updated":1561685864,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-canupdateadisabledkey-3945239952608115","deletedDate":1561686244,"scheduledPurgeDate":1569462244,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-canupdateadisabledkey-3945239952608115","attributes":{"enabled":false,"exp":1546300800,"created":1561686243,"updated":1561686244,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-canupdateadisabledkey-7541698336411891","deletedDate":1561685859,"scheduledPurgeDate":1569461859,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-canupdateadisabledkey-7541698336411891","attributes":{"enabled":false,"exp":1546300800,"created":1561685858,"updated":1561685858,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-canupdatekey-3945239952608115","deletedDate":1561686242,"scheduledPurgeDate":1569462242,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-canupdatekey-3945239952608115","attributes":{"enabled":false,"created":1561686241,"updated":1561686242,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-canupdatekey-7541698336411891","deletedDate":1561685857,"scheduledPurgeDate":1569461857,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-canupdatekey-7541698336411891","attributes":{"enabled":false,"created":1561685856,"updated":1561685856,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTRJV3RsZVM5TFJWa3hOVFU1TnpZd05qRTVNVGd6TURrNE5qY3ZNakEyUmpSQlJqTXhSRFUyTkRJMk1UZzJRME14TmtOQk0wTTBSRGN5TmtZaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'ec203f72-baad-4ed4-96b8-5e0907ac7c8c', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '3045' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'a4048742-5b63-4654-90ed-c4255d160900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:09 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019567242501310","deletedDate":1560195770,"scheduledPurgeDate":1567971770,"kid":"https://keyvault_name.vault.azure.net/keys/key156019567242501310","attributes":{"enabled":true,"created":1560195678,"updated":1560195678,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019571294800134","deletedDate":1560195724,"scheduledPurgeDate":1567971724,"kid":"https://keyvault_name.vault.azure.net/keys/key156019571294800134","attributes":{"enabled":true,"created":1560195718,"updated":1560195718,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019588703602255","deletedDate":1560195904,"scheduledPurgeDate":1567971904,"kid":"https://keyvault_name.vault.azure.net/keys/key156019588703602255","attributes":{"enabled":false,"created":1560195892,"updated":1560195892,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNVGsyTVRRNU1EZzFNRGd4TlRVaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'fd3f564b-72cf-476c-a924-8b04bff361a8', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '1264' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '8245e9f2-013f-4de2-8e3b-7f148b396100', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:09 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019614908508155","deletedDate":1560196160,"scheduledPurgeDate":1567972160,"kid":"https://keyvault_name.vault.azure.net/keys/key156019614908508155","attributes":{"enabled":true,"nbf":1560196154,"created":1560196155,"updated":1560196155,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019626145109618","deletedDate":1560196278,"scheduledPurgeDate":1567972278,"kid":"https://keyvault_name.vault.azure.net/keys/key156019626145109618","attributes":{"enabled":true,"nbf":1560196266,"created":1560196267,"updated":1560196267,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019643192308535","deletedDate":1560196443,"scheduledPurgeDate":1567972443,"kid":"https://keyvault_name.vault.azure.net/keys/key156019643192308535","attributes":{"enabled":true,"nbf":1560196436,"created":1560196437,"updated":1560196437,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019676499600673","deletedDate":1560196776,"scheduledPurgeDate":1567972776,"kid":"https://keyvault_name.vault.azure.net/keys/key156019676499600673","attributes":{"enabled":true,"nbf":1560196769,"created":1560196770,"updated":1560196770,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019678704709785","deletedDate":1560196798,"scheduledPurgeDate":1567972798,"kid":"https://keyvault_name.vault.azure.net/keys/key156019678704709785","attributes":{"enabled":true,"nbf":1560196792,"created":1560196792,"updated":1560196792,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019683131108936","deletedDate":1560196842,"scheduledPurgeDate":1567972842,"kid":"https://keyvault_name.vault.azure.net/keys/key156019683131108936","attributes":{"enabled":true,"nbf":1560196836,"created":1560196836,"updated":1560196836,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019687132907648","deletedDate":1560196888,"scheduledPurgeDate":1567972888,"kid":"https://keyvault_name.vault.azure.net/keys/key156019687132907648","attributes":{"enabled":true,"nbf":1560196876,"created":1560196876,"updated":1560196876,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019964932000764","deletedDate":1560199758,"scheduledPurgeDate":1567975758,"kid":"https://keyvault_name.vault.azure.net/keys/key156019964932000764","attributes":{"enabled":true,"created":1560199655,"updated":1560199655,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019968394501499","deletedDate":1560199695,"scheduledPurgeDate":1567975695,"kid":"https://keyvault_name.vault.azure.net/keys/key156019968394501499","attributes":{"enabled":true,"created":1560199689,"updated":1560199689,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTRJV3RsZVM5TFJWa3hOVFl3TVRrNU5qZ3pPVFExTURFME9Ua3ZRakpHTmpSQk9UVTJNVU13TkRZMU1qaEVPVEUwT0RGQk9EVXdRa00zTXpVaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '1c9f7bc6-f976-4a11-806f-ed4c030459ce', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:09 GMT', + 'Connection', + 'close', + 'Content-Length', + '3404' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '22c807ec-7872-4a17-afba-098b561d7000', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:10 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:09 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156020010748409548","deletedDate":1560200123,"scheduledPurgeDate":1567976123,"kid":"https://keyvault_name.vault.azure.net/keys/key156020010748409548","attributes":{"enabled":true,"nbf":1560200112,"created":1560200113,"updated":1560200113,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156020097075304975","deletedDate":1560200982,"scheduledPurgeDate":1567976982,"kid":"https://keyvault_name.vault.azure.net/keys/key156020097075304975","attributes":{"enabled":true,"exp":1560200975,"created":1560200976,"updated":1560200976,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156020589654200630","deletedDate":1560205908,"scheduledPurgeDate":1567981908,"kid":"https://keyvault_name.vault.azure.net/keys/key156020589654200630","attributes":{"enabled":true,"created":1560205902,"updated":1560205902,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156020600810901019","deletedDate":1560206019,"scheduledPurgeDate":1567982019,"kid":"https://keyvault_name.vault.azure.net/keys/key156020600810901019","attributes":{"enabled":true,"created":1560206013,"updated":1560206013,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156020656741105969","deletedDate":1560206579,"scheduledPurgeDate":1567982579,"kid":"https://keyvault_name.vault.azure.net/keys/key156020656741105969","attributes":{"enabled":true,"created":1560206573,"updated":1560206573,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021202578402557","deletedDate":1560212037,"scheduledPurgeDate":1567988037,"kid":"https://keyvault_name.vault.azure.net/keys/key156021202578402557","attributes":{"enabled":true,"created":1560212031,"updated":1560212031,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021212284606500","deletedDate":1560212139,"scheduledPurgeDate":1567988139,"kid":"https://keyvault_name.vault.azure.net/keys/key156021212284606500","attributes":{"enabled":true,"created":1560212128,"updated":1560212128,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021228525302930","deletedDate":1560212302,"scheduledPurgeDate":1567988302,"kid":"https://keyvault_name.vault.azure.net/keys/key156021228525302930","attributes":{"enabled":true,"created":1560212290,"updated":1560212290,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNakV5TlRJNU1EQTFNRFUyTXpnaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '29826db0-2fc8-42c5-8a9a-06d145934ffc', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:10 GMT', + 'Connection', + 'close', + 'Content-Length', + '2932' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'dc98bfaa-332a-4d25-b56c-f86654906c00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:10 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:10 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021252900505638","deletedDate":1560212547,"scheduledPurgeDate":1567988547,"kid":"https://keyvault_name.vault.azure.net/keys/key156021252900505638","attributes":{"enabled":true,"created":1560212534,"updated":1560212534,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021259169107011","deletedDate":1560212608,"scheduledPurgeDate":1567988608,"kid":"https://keyvault_name.vault.azure.net/keys/key156021259169107011","attributes":{"enabled":true,"created":1560212597,"updated":1560212597,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021275535604420","deletedDate":1560212772,"scheduledPurgeDate":1567988772,"kid":"https://keyvault_name.vault.azure.net/keys/key156021275535604420","attributes":{"enabled":true,"created":1560212760,"updated":1560212760,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021319425603898","deletedDate":1560213205,"scheduledPurgeDate":1567989205,"kid":"https://keyvault_name.vault.azure.net/keys/key156021319425603898","attributes":{"enabled":true,"created":1560213200,"updated":1560213200,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021368188700680","deletedDate":1560213698,"scheduledPurgeDate":1567989698,"kid":"https://keyvault_name.vault.azure.net/keys/key156021368188700680","attributes":{"enabled":true,"created":1560213687,"updated":1560213687,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021382077504638","deletedDate":1560213837,"scheduledPurgeDate":1567989837,"kid":"https://keyvault_name.vault.azure.net/keys/key156021382077504638","attributes":{"enabled":false,"created":1560213826,"updated":1560213832,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021397882409430","deletedDate":1560214070,"scheduledPurgeDate":1567990070,"kid":"https://keyvault_name.vault.azure.net/keys/key156021397882409430","attributes":{"enabled":true,"created":1560213984,"updated":1560213984,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTRJV3RsZVM5TFJWa3hOVFl3TWpFME1ERTBNRFU0TURRNE5ETXZOekpGUmtRMU5EVXdPVGsxTkRVMVJVRkROME00UVRJME1qWkJPVUZGTURFaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '3760e2ea-ba80-4cf8-b405-43db738f7877', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:11 GMT', + 'Connection', + 'close', + 'Content-Length', + '2632' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'c707ed13-00c6-48a7-98a3-3cb041097300', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:11 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:11 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021404805303613","deletedDate":1560214059,"scheduledPurgeDate":1567990059,"kid":"https://keyvault_name.vault.azure.net/keys/key156021404805303613","attributes":{"enabled":true,"created":1560214053,"updated":1560214053,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021443658305298","deletedDate":1560214455,"scheduledPurgeDate":1567990455,"kid":"https://keyvault_name.vault.azure.net/keys/key156021443658305298","attributes":{"enabled":false,"created":1560214442,"updated":1560214449,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021469847200127","deletedDate":1560214715,"scheduledPurgeDate":1567990715,"kid":"https://keyvault_name.vault.azure.net/keys/key156021469847200127","attributes":{"enabled":false,"exp":1560214704,"created":1560214704,"updated":1560214709,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021500992805037","deletedDate":1560215026,"scheduledPurgeDate":1567991026,"kid":"https://keyvault_name.vault.azure.net/keys/key156021500992805037","attributes":{"enabled":false,"exp":1560215015,"created":1560215015,"updated":1560215021,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021508931202421","deletedDate":1560215105,"scheduledPurgeDate":1567991105,"kid":"https://keyvault_name.vault.azure.net/keys/key156021508931202421","attributes":{"enabled":false,"exp":1560215095,"created":1560215094,"updated":1560215100,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021527355207287","deletedDate":1560215290,"scheduledPurgeDate":1567991290,"kid":"https://keyvault_name.vault.azure.net/keys/key156021527355207287","attributes":{"enabled":false,"exp":1560215279,"created":1560215279,"updated":1560215284,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021572903002132","deletedDate":1560215746,"scheduledPurgeDate":1567991746,"kid":"https://keyvault_name.vault.azure.net/keys/key156021572903002132","attributes":{"enabled":false,"exp":1560215734,"created":1560215734,"updated":1560215740,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021643840901237","deletedDate":1560216615,"scheduledPurgeDate":1567992615,"kid":"https://keyvault_name.vault.azure.net/keys/key156021643840901237","attributes":{"enabled":true,"created":1560216444,"updated":1560216444,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNakUyTkRVd01qTXlNREV3TlRBaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '914b1205-9f67-4774-8d4c-d98ecc9458b4', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:10 GMT', + 'Connection', + 'close', + 'Content-Length', + '2989' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'b70c09a7-3b55-4a09-b8c1-3e9fd0956d00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:11 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:11 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021650717904471","deletedDate":1560216518,"scheduledPurgeDate":1567992518,"kid":"https://keyvault_name.vault.azure.net/keys/key156021650717904471","attributes":{"enabled":true,"created":1560216512,"updated":1560216512,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTRJV3RsZVM5TFJWa3hOVFl3TWpFMk9UZ3dOemt5TURFM05EWXZOakJGTXpZeE1EUTNPVUpFTkVSRFFqa3lOekUyUmpsQ01UZ3pOalJGTjBVaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '43e9d24f-2e56-4ea1-a056-a51b325b35e8', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:11 GMT', + 'Connection', + 'close', + 'Content-Length', + '669' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '11b46c5a-c9aa-431e-997b-08060b7d0a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:12 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:11 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021753923506478","deletedDate":1560217550,"scheduledPurgeDate":1567993550,"kid":"https://keyvault_name.vault.azure.net/keys/key156021753923506478","attributes":{"enabled":true,"created":1560217545,"updated":1560217545,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021772195104221","deletedDate":1560217733,"scheduledPurgeDate":1567993733,"kid":"https://keyvault_name.vault.azure.net/keys/key156021772195104221","attributes":{"enabled":true,"created":1560217727,"updated":1560217727,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156026375447403976","deletedDate":1560263766,"scheduledPurgeDate":1568039766,"kid":"https://keyvault_name.vault.azure.net/keys/key156026375447403976","attributes":{"enabled":true,"created":1560263760,"updated":1560263760,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156026429107509170","deletedDate":1560264308,"scheduledPurgeDate":1568040308,"kid":"https://keyvault_name.vault.azure.net/keys/key156026429107509170","attributes":{"enabled":true,"created":1560264296,"updated":1560264296,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156026780583504617","deletedDate":1560267823,"scheduledPurgeDate":1568043823,"kid":"https://keyvault_name.vault.azure.net/keys/key156026780583504617","attributes":{"enabled":true,"created":1560267811,"updated":1560267811,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156026937854708786","deletedDate":1560269396,"scheduledPurgeDate":1568045396,"kid":"https://keyvault_name.vault.azure.net/keys/key156026937854708786","attributes":{"enabled":true,"created":1560269384,"updated":1560269384,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156027282511708087","deletedDate":1560272836,"scheduledPurgeDate":1568048836,"kid":"https://keyvault_name.vault.azure.net/keys/key156027282511708087","attributes":{"enabled":true,"created":1560272831,"updated":1560272831,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156027441059203813","deletedDate":1560274422,"scheduledPurgeDate":1568050422,"kid":"https://keyvault_name.vault.azure.net/keys/key156027441059203813","attributes":{"enabled":true,"created":1560274416,"updated":1560274416,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156027619257505383","deletedDate":1560276204,"scheduledPurgeDate":1568052204,"kid":"https://keyvault_name.vault.azure.net/keys/key156027619257505383","attributes":{"enabled":true,"created":1560276198,"updated":1560276198,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156027654046904526","deletedDate":1560276552,"scheduledPurgeDate":1568052552,"kid":"https://keyvault_name.vault.azure.net/keys/key156027654046904526","attributes":{"enabled":true,"created":1560276546,"updated":1560276546,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156027669556403953","deletedDate":1560276707,"scheduledPurgeDate":1568052707,"kid":"https://keyvault_name.vault.azure.net/keys/key156027669556403953","attributes":{"enabled":true,"created":1560276701,"updated":1560276701,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNamMyT1RJd05qRTRNRFUxT1RFaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'f3ec90e0-ead1-4482-b3e7-623bbef0f6f0', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:12 GMT', + 'Connection', + 'close', + 'Content-Length', + '3879' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'b80b496d-8e59-458c-a65f-a92abaa56600', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:12 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:12 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156027692061805591","deletedDate":1560276984,"scheduledPurgeDate":1568052984,"kid":"https://keyvault_name.vault.azure.net/keys/key156027692061805591","attributes":{"enabled":true,"created":1560276926,"updated":1560276926,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156027875260704123","deletedDate":1560278769,"scheduledPurgeDate":1568054769,"kid":"https://keyvault_name.vault.azure.net/keys/key156027875260704123","attributes":{"enabled":true,"created":1560278758,"updated":1560278758,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156028044085404301","deletedDate":1560280458,"scheduledPurgeDate":1568056458,"kid":"https://keyvault_name.vault.azure.net/keys/key156028044085404301","attributes":{"enabled":true,"created":1560280446,"updated":1560280446,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156028174986105799","deletedDate":1560282270,"scheduledPurgeDate":1568058270,"kid":"https://keyvault_name.vault.azure.net/keys/key156028174986105799","attributes":{"enabled":true,"created":1560281755,"updated":1560281755,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156028180668003726","deletedDate":1560281817,"scheduledPurgeDate":1568057817,"kid":"https://keyvault_name.vault.azure.net/keys/key156028180668003726","attributes":{"enabled":true,"created":1560281812,"updated":1560281812,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTRJV3RsZVM5TFJWa3hOVFl3TWpneE9ESTVNalkzTURNd01URXZRelExTlVJNU1UTkNOamRCTkVaR1JrRTFNVVUyT0RCRVEwTkNNRVkyTXpjaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '0a8454be-8f7d-4327-93ce-8cea08575f45', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:12 GMT', + 'Connection', + 'close', + 'Content-Length', + '1977' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '3453044a-8a2e-410e-b578-835c74640800', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:13 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:13 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156028185168006865","deletedDate":1560281862,"scheduledPurgeDate":1568057862,"kid":"https://keyvault_name.vault.azure.net/keys/key156028185168006865","attributes":{"enabled":true,"created":1560281857,"updated":1560281857,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156036321495001070","deletedDate":1560363783,"scheduledPurgeDate":1568139783,"kid":"https://keyvault_name.vault.azure.net/keys/key156036321495001070","attributes":{"enabled":true,"created":1560363220,"updated":1560363220,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNell6TWpZd05EazJNRE0yTnpNaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '07f68d6e-e085-42b3-903a-97a50fec0768', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:13 GMT', + 'Connection', + 'close', + 'Content-Length', + '936' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '7f74a9d3-f98c-4fe8-92c9-eb7f4dd16f00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:13 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:13 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156036326049603673","deletedDate":1560363271,"scheduledPurgeDate":1568139271,"kid":"https://keyvault_name.vault.azure.net/keys/key156036326049603673","attributes":{"enabled":true,"created":1560363266,"updated":1560363266,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156043977101909742","deletedDate":1560439782,"scheduledPurgeDate":1568215782,"kid":"https://keyvault_name.vault.azure.net/keys/key156043977101909742","attributes":{"enabled":true,"created":1560439776,"updated":1560439776,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156044301303900132","deletedDate":1560444138,"scheduledPurgeDate":1568220138,"kid":"https://keyvault_name.vault.azure.net/keys/key156044301303900132","attributes":{"enabled":true,"exp":1560443018,"created":1560443018,"updated":1560443018,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156044304097508401","deletedDate":1560443052,"scheduledPurgeDate":1568219052,"kid":"https://keyvault_name.vault.azure.net/keys/key156044304097508401","attributes":{"enabled":true,"created":1560443046,"updated":1560443046,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTRJV3RsZVM5TFJWa3hOVFl3TkRRek1EWXpOREl3TURJMU1UQXZORUk0UmtFM05rVXpOVVkzTkRSRU1EZ3hPVEZGT0VSR05UTTVNVEEyTURVaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'bf1dadc0-9cd2-4431-9b18-f3fdb63233a9', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:14 GMT', + 'Connection', + 'close', + 'Content-Length', + '1667' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '93ba345d-6bed-4179-9534-13ddca986b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:14 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:14 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156048034950305703","deletedDate":1560480365,"scheduledPurgeDate":1568256365,"kid":"https://keyvault_name.vault.azure.net/keys/key156048034950305703","attributes":{"enabled":true,"created":1560480356,"updated":1560480356,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/keys156019984111602317","deletedDate":1560199870,"scheduledPurgeDate":1567975870,"kid":"https://keyvault_name.vault.azure.net/keys/keys156019984111602317","attributes":{"enabled":true,"created":1560199847,"updated":1560199847,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJMklXdGxlUzlMUlZsVE1UVTJNREU1T1RnME1URXhOekE1TnpnM0lUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'c92e5d7b-b5e1-404b-91c7-7e4b32647b7f', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:14 GMT', + 'Connection', + 'close', + 'Content-Length', + '943' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '32ebb59e-3981-4229-8f76-65c947bb0a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:14 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:14 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/keys156019984111709787","deletedDate":1560199876,"scheduledPurgeDate":1567975876,"kid":"https://keyvault_name.vault.azure.net/keys/keys156019984111709787","attributes":{"enabled":true,"created":1560199852,"updated":1560199852,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/keys156019998725306556","deletedDate":1560200016,"scheduledPurgeDate":1567976016,"kid":"https://keyvault_name.vault.azure.net/keys/keys156019998725306556","attributes":{"enabled":true,"created":1560199993,"updated":1560199993,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/keys156019998725308881","deletedDate":1560200022,"scheduledPurgeDate":1567976022,"kid":"https://keyvault_name.vault.azure.net/keys/keys156019998725308881","attributes":{"enabled":true,"created":1560199998,"updated":1560199998,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/keys156043989692705349","deletedDate":1560439913,"scheduledPurgeDate":1568215913,"kid":"https://keyvault_name.vault.azure.net/keys/keys156043989692705349","attributes":{"enabled":true,"created":1560439902,"updated":1560439902,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/keys156043989692806134","deletedDate":1560439919,"scheduledPurgeDate":1568215919,"kid":"https://keyvault_name.vault.azure.net/keys/keys156043989692806134","attributes":{"enabled":true,"created":1560439908,"updated":1560439908,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDAhTURBd01EVTVJV3RsZVM5TFJWbFRNVFUyTURRME16RTRNek0xT0RBNE1UQTJMell5UWtSRk1URkdRamMzUlRRelF6UkNSVU5DTXpoRU5EWXdOekZDTkVJMklUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'bf5a1485-23db-4302-a339-916ea3c601dd', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:15 GMT', + 'Connection', + 'close', + 'Content-Length', + '1992' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '8bb03d5f-c156-430e-ada5-9e5caca06100', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:15 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:14 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangetseveralinsertedkeys-3147002526421592-0","deletedDate":1561686288,"scheduledPurgeDate":1569462288,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeys-3147002526421592-0","attributes":{"enabled":true,"created":1561686279,"updated":1561686279,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangetseveralinsertedkeys-3147002526421592-1","deletedDate":1561686289,"scheduledPurgeDate":1569462289,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeys-3147002526421592-1","attributes":{"enabled":true,"created":1561686280,"updated":1561686280,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangetseveralinsertedkeyspaged-3147002526421592-0","deletedDate":1561686297,"scheduledPurgeDate":1569462297,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeyspaged-3147002526421592-0","attributes":{"enabled":true,"created":1561686290,"updated":1561686290,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangetseveralinsertedkeyspaged-3147002526421592-1","deletedDate":1561686298,"scheduledPurgeDate":1569462298,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeyspaged-3147002526421592-1","attributes":{"enabled":true,"created":1561686290,"updated":1561686290,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangettheversionsofakey-3147002526421592","deletedDate":1561686276,"scheduledPurgeDate":1569462276,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangettheversionsofakey-3147002526421592","attributes":{"enabled":true,"created":1561686275,"updated":1561686275,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangettheversionsofakey-4844377101593087","deletedDate":1561685869,"scheduledPurgeDate":1569461869,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangettheversionsofakey-4844377101593087","attributes":{"enabled":true,"created":1561685868,"updated":1561685868,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangettheversionsofakeypaged-3147002526421592","deletedDate":1561686277,"scheduledPurgeDate":1569462277,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangettheversionsofakeypaged-3147002526421592","attributes":{"enabled":true,"created":1561686277,"updated":1561686277,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangettheversionsofakeypaged-4844377101593087","deletedDate":1561685871,"scheduledPurgeDate":1569461871,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangettheversionsofakeypaged-4844377101593087","attributes":{"enabled":true,"created":1561685870,"updated":1561685870,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMjghTURBd01EVXdJV3RsZVM5TVNWTlVTMFZaVGtGTlJTMU1TVk5VUkVWTVJWUkZSRXRGV1ZNdE1qQTNNamc0T0RBMU16RTBPRFUzTmkwd0lUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '2cd6ddc2-72ad-4ea9-97f3-2cecabb837e1', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:15 GMT', + 'Connection', + 'close', + 'Content-Length', + '3515' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '2e64ab10-3e41-48de-9162-7f18ec026600', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:16 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:15 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-listdeletedkeys--0","deletedDate":1561724503,"scheduledPurgeDate":1569500503,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeys--0","attributes":{"enabled":true,"created":1561724502,"updated":1561724502,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-listdeletedkeys--1","deletedDate":1561724504,"scheduledPurgeDate":1569500504,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeys--1","attributes":{"enabled":true,"created":1561724503,"updated":1561724503,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-listdeletedkeys-7769917610769559-0","deletedDate":1561418276,"scheduledPurgeDate":1569194276,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeys-7769917610769559-0","attributes":{"enabled":true,"created":1561418275,"updated":1561418275,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-listdeletedkeys-7769917610769559-1","deletedDate":1561418277,"scheduledPurgeDate":1569194277,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeys-7769917610769559-1","attributes":{"enabled":true,"created":1561418276,"updated":1561418276,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-listdeletedkeyspaged-7769917610769559-0","deletedDate":1561419307,"scheduledPurgeDate":1569195307,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeyspaged-7769917610769559-0","attributes":{"enabled":true,"created":1561419306,"updated":1561419306,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-listdeletedkeyspaged-7769917610769559-1","deletedDate":1561419308,"scheduledPurgeDate":1569195308,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeyspaged-7769917610769559-1","attributes":{"enabled":true,"created":1561419307,"updated":1561419307,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-cangenerateabackupofakey-36767371368026214","deletedDate":1561687104,"scheduledPurgeDate":1569463104,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-cangenerateabackupofakey-36767371368026214","attributes":{"enabled":true,"created":1561687103,"updated":1561687103,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-cangenerateabackupofakey-89097467879021","deletedDate":1561686972,"scheduledPurgeDate":1569462972,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-cangenerateabackupofakey-89097467879021","attributes":{"enabled":true,"created":1561686972,"updated":1561686972,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-cangenerateabackupofakey-9779781603101387","deletedDate":1561686397,"scheduledPurgeDate":1569462397,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-cangenerateabackupofakey-9779781603101387","attributes":{"enabled":true,"created":1561686396,"updated":1561686396,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrecoveradeletedkey-36767371368026214","deletedDate":1561687101,"scheduledPurgeDate":1569463101,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrecoveradeletedkey-36767371368026214","attributes":{"enabled":true,"created":1561687068,"updated":1561687068,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExODAhTURBd01Ea3dJV3RsZVM5U1JVTlBWa1ZTUzBWWlRrRk5SUzFEUVU1U1JVTlBWa1ZTUVVSRlRFVlVSVVJMUlZrdE9EQXdOak0xTkRJM05URXlOemczTkM4M05VSkRRa0pCTkVJek5rUTBSVUl3UWpjelJrUTRRVGd3UlRCRk5EWkVReUV3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'b5be0529-5291-401c-a8a4-4eb02f5ab2cd', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:16 GMT', + 'Connection', + 'close', + 'Content-Length', + '4264' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '53d87826-befb-40c6-83be-e51fd27a0800', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:16 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:15 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrecoveradeletedkey-89097467879021","deletedDate":1561686970,"scheduledPurgeDate":1569462970,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrecoveradeletedkey-89097467879021","attributes":{"enabled":true,"created":1561686926,"updated":1561686926,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrecoveradeletedkey-9779781603101387","deletedDate":1561686395,"scheduledPurgeDate":1569462395,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrecoveradeletedkey-9779781603101387","attributes":{"enabled":true,"created":1561686361,"updated":1561686361,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-04241354248077567","deletedDate":1561723518,"scheduledPurgeDate":1569499518,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-04241354248077567","attributes":{"enabled":true,"created":1561723517,"updated":1561723517,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-15374511265428148","deletedDate":1561723606,"scheduledPurgeDate":1569499606,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-15374511265428148","attributes":{"enabled":true,"created":1561723605,"updated":1561723605,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-36767371368026214","deletedDate":1561687106,"scheduledPurgeDate":1569463106,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-36767371368026214","attributes":{"enabled":true,"created":1561687105,"updated":1561687105,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-5165836270108091","deletedDate":1561723459,"scheduledPurgeDate":1569499459,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-5165836270108091","attributes":{"enabled":true,"created":1561723458,"updated":1561723458,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-8315331351345701","deletedDate":1561723721,"scheduledPurgeDate":1569499721,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-8315331351345701","attributes":{"enabled":true,"created":1561723720,"updated":1561723720,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-89097467879021","deletedDate":1561686975,"scheduledPurgeDate":1569462975,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-89097467879021","attributes":{"enabled":true,"created":1561686974,"updated":1561686974,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-9471707164286285","deletedDate":1561723348,"scheduledPurgeDate":1569499348,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-9471707164286285","attributes":{"enabled":true,"created":1561723347,"updated":1561723347,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-9779781603101387","deletedDate":1561686400,"scheduledPurgeDate":1569462400,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-9779781603101387","attributes":{"enabled":true,"created":1561686399,"updated":1561686399,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-9789286389123768","deletedDate":1561723310,"scheduledPurgeDate":1569499310,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-9789286389123768","attributes":{"enabled":true,"created":1561723309,"updated":1561723309,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJNElXdGxlUzlUUlVOU1JWUXhOVFl3TVRrMU56UTJPVGsyTURFMU9UY2hNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '2ff8dac0-93ab-4015-86a4-4d8d06efbe47', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:16 GMT', + 'Connection', + 'close', + 'Content-Length', + '4748' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '0458cd12-12e8-432a-96ad-3de2841a7000', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:17 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:17 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[],"nextLink":null}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'bd628053-ae08-4129-8768-8b43186a5cdd', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:17 GMT', + 'Connection', + 'close', + 'Content-Length', + '28' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'ed6800a0-f208-4f07-bd28-41c4271a7300', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:17 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:17 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/listKeyName-listdeletedkeys--0') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'ae0e92fd-6292-43ae-aa4e-f3f2b52411da', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:18 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'f138f24b-475e-4541-8836-2a0dfc216c00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:18 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:18 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/listKeyName-listdeletedkeys--1') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'ae4e4ceb-c7e0-43ce-b01f-cd1be4825847', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:18 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'd87312f2-1b14-4c0e-9a24-7d65359c6900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:18 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:18 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/listKeyName-listdeletedkeyspaged--0/create', {"kty":"RSA"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeyspaged--0/9fc24535c812462c806a5285202c5b92","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"zzqcpTSY8ui2qUlrlaH6HFHYHTPL6c1lf_WwlRr2-T-iwtnx3XHSN2Mvp2EJ6QPcyMAcJ8XgbZWcNrFobHWiWWq4ZmSWQ7vjg7FirfUB1f2O_syxIOJo1qB_NNK9JArYSuo_46ZZCR8x9U7d_spHKUU7MkWKvJ0GVFlzBMhVf8KBoXWFOn5oFaj_EThsGezHReR3FshYZkcpCdIupPVKabHQgYM9wZLpWR1H90HvxGbKI4Ba0bKyFT314Pi1s0pH7VVViaFt60If0d6Rhbv-YTaBowiz4hULPuseqMa7WVIyRlBtwYGo1Qg3Y8tpDQ1jX8zhjjfn4T9_xzxaXVRdJQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561724539,"updated":1561724539,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '31d8f981-5e20-4e34-a972-1c734ba78b8c', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:19 GMT', + 'Connection', + 'close', + 'Content-Length', + '697' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'fa83d709-9964-4b24-a8aa-ed6cc4566f00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:19 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:19 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/listKeyName-listdeletedkeyspaged--1/create', {"kty":"RSA"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeyspaged--1/62dbc174375f43ffb5203482946227bf","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"nwvV5hY5t20B753Bhjrsog_RUmgEh6tdF2Fm0r0APe1ZvTphHRsT0N8JFBymrzS1g_dsKUbOPL2IUTuVf2OMRAAeeiOC5ocpXlPOhwL9q7y17_d9hJC_-o0cFYqJZ6Rm2pz23Hg3vdGW7vzuxPGpB83Sdsa-zLryQJcL0aAxAJOdTYskbE76PGLCic8tDQwqZl1S13XEwiTWkYksWnI9lchxLSaowCSeC89D2vWTaeLY1btXAinHCmIF51xorfr8A82dWVQm7Oa1cdMd23DJ1U1PAi1z-yyHkLPzqQTOHBu3noqAvQvmqqh2EuwnL8_Sd2lnhYp8p40zm08AHWUE7Q","e":"AQAB"},"attributes":{"enabled":true,"created":1561724539,"updated":1561724539,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '8d17e6c0-2f2a-429c-acb4-ac6525016800', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:19 GMT', + 'Connection', + 'close', + 'Content-Length', + '697' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'bb1780f6-1f3f-4258-9752-894180b76900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:20 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:19 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/listKeyName-listdeletedkeyspaged--0') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-listdeletedkeyspaged--0","deletedDate":1561724540,"scheduledPurgeDate":1569500540,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeyspaged--0/9fc24535c812462c806a5285202c5b92","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"zzqcpTSY8ui2qUlrlaH6HFHYHTPL6c1lf_WwlRr2-T-iwtnx3XHSN2Mvp2EJ6QPcyMAcJ8XgbZWcNrFobHWiWWq4ZmSWQ7vjg7FirfUB1f2O_syxIOJo1qB_NNK9JArYSuo_46ZZCR8x9U7d_spHKUU7MkWKvJ0GVFlzBMhVf8KBoXWFOn5oFaj_EThsGezHReR3FshYZkcpCdIupPVKabHQgYM9wZLpWR1H90HvxGbKI4Ba0bKyFT314Pi1s0pH7VVViaFt60If0d6Rhbv-YTaBowiz4hULPuseqMa7WVIyRlBtwYGo1Qg3Y8tpDQ1jX8zhjjfn4T9_xzxaXVRdJQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561724539,"updated":1561724539,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '62ac80f8-71b4-4eca-8664-47e5b25a2925', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:19 GMT', + 'Connection', + 'close', + 'Content-Length', + '869' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '8de0c424-c92c-4ec6-b7b3-fe6841017500', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:20 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:19 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/listKeyName-listdeletedkeyspaged--1') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-listdeletedkeyspaged--1","deletedDate":1561724540,"scheduledPurgeDate":1569500540,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeyspaged--1/62dbc174375f43ffb5203482946227bf","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"nwvV5hY5t20B753Bhjrsog_RUmgEh6tdF2Fm0r0APe1ZvTphHRsT0N8JFBymrzS1g_dsKUbOPL2IUTuVf2OMRAAeeiOC5ocpXlPOhwL9q7y17_d9hJC_-o0cFYqJZ6Rm2pz23Hg3vdGW7vzuxPGpB83Sdsa-zLryQJcL0aAxAJOdTYskbE76PGLCic8tDQwqZl1S13XEwiTWkYksWnI9lchxLSaowCSeC89D2vWTaeLY1btXAinHCmIF51xorfr8A82dWVQm7Oa1cdMd23DJ1U1PAi1z-yyHkLPzqQTOHBu3noqAvQvmqqh2EuwnL8_Sd2lnhYp8p40zm08AHWUE7Q","e":"AQAB"},"attributes":{"enabled":true,"created":1561724539,"updated":1561724539,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'adad68a1-eaee-4405-a157-7d1bb3a322eb', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:20 GMT', + 'Connection', + 'close', + 'Content-Length', + '869' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'cbb3d79c-bf66-440f-8b1f-96d48fe10a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:21 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:20 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys/listKeyName-listdeletedkeyspaged--0') + .query(true) + .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: listKeyName-listdeletedkeyspaged--0"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '119', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '3fce3de9-0f0d-41d4-89b8-7a09e0ecfdef', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:21 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '70f1bae9-1ecd-4663-91be-3554106b6700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:31 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:31 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys/listKeyName-listdeletedkeyspaged--0') + .query(true) + .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: listKeyName-listdeletedkeyspaged--0"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '119', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '9d85c8c2-0c0d-4979-880f-a48d8fda8b7f', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:31 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'a0b001f1-3a7b-41a6-9278-8c7b7d287300', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:42 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:41 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys/listKeyName-listdeletedkeyspaged--0') + .query(true) + .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: listKeyName-listdeletedkeyspaged--0"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '119', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'c491a44f-d608-433c-bccb-721b609a4f8e', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:42 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'f7aa5aad-2a70-4a7f-bccb-e1a3bd755e00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:52 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:51 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys/listKeyName-listdeletedkeyspaged--0') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-listdeletedkeyspaged--0","deletedDate":1561724540,"scheduledPurgeDate":1569500540,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeyspaged--0/9fc24535c812462c806a5285202c5b92","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"zzqcpTSY8ui2qUlrlaH6HFHYHTPL6c1lf_WwlRr2-T-iwtnx3XHSN2Mvp2EJ6QPcyMAcJ8XgbZWcNrFobHWiWWq4ZmSWQ7vjg7FirfUB1f2O_syxIOJo1qB_NNK9JArYSuo_46ZZCR8x9U7d_spHKUU7MkWKvJ0GVFlzBMhVf8KBoXWFOn5oFaj_EThsGezHReR3FshYZkcpCdIupPVKabHQgYM9wZLpWR1H90HvxGbKI4Ba0bKyFT314Pi1s0pH7VVViaFt60If0d6Rhbv-YTaBowiz4hULPuseqMa7WVIyRlBtwYGo1Qg3Y8tpDQ1jX8zhjjfn4T9_xzxaXVRdJQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561724539,"updated":1561724539,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '1fd29b47-baa3-4dfb-9ea1-ea224326d560', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:52 GMT', + 'Connection', + 'close', + 'Content-Length', + '869' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '4fc3ce28-5a26-4a8a-bc45-4cde11f86f00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:52 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:52 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateadisabledkey-3945239952608115","deletedDate":1561686237,"scheduledPurgeDate":1569462237,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateadisabledkey-3945239952608115","attributes":{"enabled":false,"created":1561686237,"updated":1561686237,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateadisabledkey-7541698336411891","deletedDate":1561685852,"scheduledPurgeDate":1569461852,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateadisabledkey-7541698336411891","attributes":{"enabled":false,"created":1561685851,"updated":1561685851,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-027153260791364264","deletedDate":1561414117,"scheduledPurgeDate":1569190117,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-027153260791364264","attributes":{"enabled":true,"created":1561414117,"updated":1561414117,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-030825440796210968","deletedDate":1561413873,"scheduledPurgeDate":1569189873,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-030825440796210968","attributes":{"enabled":true,"created":1561413873,"updated":1561413873,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-03824218588079642","deletedDate":1561685734,"scheduledPurgeDate":1569461734,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-03824218588079642","attributes":{"enabled":true,"created":1561685734,"updated":1561685734,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-11113737196703477","deletedDate":1561412406,"scheduledPurgeDate":1569188406,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-11113737196703477","attributes":{"enabled":true,"created":1561412406,"updated":1561412406,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-12295619840490901","deletedDate":1561414368,"scheduledPurgeDate":1569190368,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-12295619840490901","attributes":{"enabled":true,"created":1561414367,"updated":1561414367,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-21596680364625942","deletedDate":1561685633,"scheduledPurgeDate":1569461633,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-21596680364625942","attributes":{"enabled":true,"created":1561685633,"updated":1561685633,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-23059577576776458","deletedDate":1561685795,"scheduledPurgeDate":1569461795,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-23059577576776458","attributes":{"enabled":true,"created":1561685795,"updated":1561685795,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-2463484917953478","deletedDate":1561414027,"scheduledPurgeDate":1569190027,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-2463484917953478","attributes":{"enabled":true,"created":1561414027,"updated":1561414027,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-30282256577400357","deletedDate":1561414305,"scheduledPurgeDate":1569190305,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-30282256577400357","attributes":{"enabled":true,"created":1561414304,"updated":1561414304,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-3650896677992299","deletedDate":1561685687,"scheduledPurgeDate":1569461687,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-3650896677992299","attributes":{"enabled":true,"created":1561685687,"updated":1561685687,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExOTYhTURBd01UQXhJV3RsZVM5RFVsVkVTMFZaVGtGTlJTMURRVTVEVWtWQlZFVkJTMFZaVjBoSlRFVkhTVlpKVGtkQlRVRk9WVUZNVkZsUVJTMHpOalV3T0RrMk5qYzNPVGt5TWprNUwwUTBOVGxDTkVORFFUTkdNelF4TmpBNFJqaENSa1E0UTBOQ1JrVXpNa1V5SVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLSIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '46f54188-cfb1-459b-b4a5-1122c2f8ec61', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:52 GMT', + 'Connection', + 'close', + 'Content-Length', + '5344' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'd8d03929-83c9-4606-9c7b-b7a58c270b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:53 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:52 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-3945239952608115","deletedDate":1561686230,"scheduledPurgeDate":1569462230,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-3945239952608115","attributes":{"enabled":true,"created":1561686229,"updated":1561686229,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-4521671903162241","deletedDate":1561412660,"scheduledPurgeDate":1569188660,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-4521671903162241","attributes":{"enabled":true,"created":1561412659,"updated":1561412659,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-49665580519739794","deletedDate":1561415149,"scheduledPurgeDate":1569191149,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-49665580519739794","attributes":{"enabled":true,"created":1561415147,"updated":1561415147,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-6100746209317036","deletedDate":1561414691,"scheduledPurgeDate":1569190691,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-6100746209317036","attributes":{"enabled":true,"created":1561414690,"updated":1561414690,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-6143082435852443","deletedDate":1561411064,"scheduledPurgeDate":1569187064,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-6143082435852443","attributes":{"enabled":true,"created":1561411063,"updated":1561411063,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-6596998315181399","deletedDate":1561415010,"scheduledPurgeDate":1569191010,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-6596998315181399","attributes":{"enabled":true,"created":1561415009,"updated":1561415009,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-6745532996565062","deletedDate":1561415277,"scheduledPurgeDate":1569191277,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-6745532996565062","attributes":{"enabled":true,"created":1561415276,"updated":1561415276,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-7541698336411891","deletedDate":1561685844,"scheduledPurgeDate":1569461844,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-7541698336411891","attributes":{"enabled":true,"created":1561685844,"updated":1561685844,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-8414867982202452","deletedDate":1561414795,"scheduledPurgeDate":1569190795,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-8414867982202452","attributes":{"enabled":true,"created":1561414794,"updated":1561414794,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywhilegivingamanualtype-8902329538192819","deletedDate":1561413350,"scheduledPurgeDate":1569189350,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywhilegivingamanualtype-8902329538192819","attributes":{"enabled":true,"created":1561413350,"updated":1561413350,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywithexpires-3945239952608115","deletedDate":1561686240,"scheduledPurgeDate":1569462240,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywithexpires-3945239952608115","attributes":{"enabled":true,"exp":1546300805,"created":1561686240,"updated":1561686240,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywithexpires-7541698336411891","deletedDate":1561685855,"scheduledPurgeDate":1569461855,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywithexpires-7541698336411891","attributes":{"enabled":true,"exp":1546300805,"created":1561685854,"updated":1561685854,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTNJV3RsZVM5RFVsVkVTMFZaVGtGTlJTMURRVTVEVWtWQlZFVkJTMFZaVjBsVVNFVllVRWxTUlZNdE56WXdORFF5T0RVME9UZ3lORGN3T1NFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '554bfd0e-8405-492b-b1ec-72d41e4b0de2', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:53 GMT', + 'Connection', + 'close', + 'Content-Length', + '5290' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '46cbd7b5-9ad4-4562-8b4c-3e2a8c8d6800', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:54 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:53 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywithnotBefore-3945239952608115","deletedDate":1561686239,"scheduledPurgeDate":1569462239,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywithnotBefore-3945239952608115","attributes":{"enabled":true,"nbf":1546300805,"created":1561686238,"updated":1561686238,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateakeywithnotBefore-7541698336411891","deletedDate":1561685853,"scheduledPurgeDate":1569461853,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateakeywithnotBefore-7541698336411891","attributes":{"enabled":true,"nbf":1546300805,"created":1561685853,"updated":1561685853,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateanECkey-21596680364625942","deletedDate":1561685637,"scheduledPurgeDate":1569461637,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateanECkey-21596680364625942","attributes":{"enabled":true,"created":1561685636,"updated":1561685636,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateanECkey-3945239952608115","deletedDate":1561686234,"scheduledPurgeDate":1569462234,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateanECkey-3945239952608115","attributes":{"enabled":true,"created":1561686234,"updated":1561686234,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateanECkey-7541698336411891","deletedDate":1561685849,"scheduledPurgeDate":1569461849,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateanECkey-7541698336411891","attributes":{"enabled":true,"created":1561685848,"updated":1561685848,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateanECkeywithcurve-21596680364625942","deletedDate":1561685638,"scheduledPurgeDate":1569461638,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateanECkeywithcurve-21596680364625942","attributes":{"enabled":true,"created":1561685637,"updated":1561685637,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateanECkeywithcurve-3945239952608115","deletedDate":1561686236,"scheduledPurgeDate":1569462236,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateanECkeywithcurve-3945239952608115","attributes":{"enabled":true,"created":1561686235,"updated":1561686235,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateanECkeywithcurve-7541698336411891","deletedDate":1561685850,"scheduledPurgeDate":1569461850,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateanECkeywithcurve-7541698336411891","attributes":{"enabled":true,"created":1561685850,"updated":1561685850,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateaRSAkey-21596680364625942","deletedDate":1561685635,"scheduledPurgeDate":1569461635,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateaRSAkey-21596680364625942","attributes":{"enabled":true,"created":1561685634,"updated":1561685634,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateaRSAkey-3945239952608115","deletedDate":1561686231,"scheduledPurgeDate":1569462231,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateaRSAkey-3945239952608115","attributes":{"enabled":true,"created":1561686231,"updated":1561686231,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateaRSAkey-7541698336411891","deletedDate":1561685846,"scheduledPurgeDate":1569461846,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateaRSAkey-7541698336411891","attributes":{"enabled":true,"created":1561685845,"updated":1561685845,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateaRSAkeywithsize-21596680364625942","deletedDate":1561685636,"scheduledPurgeDate":1569461636,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateaRSAkeywithsize-21596680364625942","attributes":{"enabled":true,"created":1561685635,"updated":1561685635,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateaRSAkeywithsize-3945239952608115","deletedDate":1561686233,"scheduledPurgeDate":1569462233,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateaRSAkeywithsize-3945239952608115","attributes":{"enabled":true,"created":1561686232,"updated":1561686232,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExODAhTURBd01Ea3dJV3RsZVM5RFVsVkVTMFZaVGtGTlJTMURRVTVEVWtWQlZFVkJVbE5CUzBWWlYwbFVTRk5KV2tVdE16azBOVEl6T1RrMU1qWXdPREV4TlM4Mk5qVkdORU15TkRKR056STBNVGszT1RrM056aEJPRFExTnpFd05VWXlSU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'e1569d0e-c36a-4be9-b52c-8fa18cc145d3', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:54 GMT', + 'Connection', + 'close', + 'Content-Length', + '5443' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'b9883263-fa26-4080-bb9c-4a6dd09d7100', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:54 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:54 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cancreateaRSAkeywithsize-7541698336411891","deletedDate":1561685847,"scheduledPurgeDate":1569461847,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cancreateaRSAkeywithsize-7541698336411891","attributes":{"enabled":true,"created":1561685847,"updated":1561685847,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-candeleteakey-3945239952608115","deletedDate":1561686245,"scheduledPurgeDate":1569462245,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-candeleteakey-3945239952608115","attributes":{"enabled":true,"created":1561686245,"updated":1561686245,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-candeleteakey-7541698336411891","deletedDate":1561685860,"scheduledPurgeDate":1569461860,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-candeleteakey-7541698336411891","attributes":{"enabled":true,"created":1561685860,"updated":1561685860,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetadeletedkey-041906371603109616","deletedDate":1561685972,"scheduledPurgeDate":1569461972,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetadeletedkey-041906371603109616","attributes":{"enabled":true,"created":1561685972,"updated":1561685972,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetadeletedkey-13938301836807887","deletedDate":1561685900,"scheduledPurgeDate":1569461900,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetadeletedkey-13938301836807887","attributes":{"enabled":true,"created":1561685900,"updated":1561685900,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetadeletedkey-6097754638482769","deletedDate":1561416018,"scheduledPurgeDate":1569192018,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetadeletedkey-6097754638482769","attributes":{"enabled":true,"created":1561416018,"updated":1561416018,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetadeletedkey-6723873262302544","deletedDate":1561415954,"scheduledPurgeDate":1569191954,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetadeletedkey-6723873262302544","attributes":{"enabled":true,"created":1561415953,"updated":1561415953,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetadeletedkey-7045353749486702","deletedDate":1561686157,"scheduledPurgeDate":1569462157,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetadeletedkey-7045353749486702","attributes":{"enabled":true,"created":1561686156,"updated":1561686156,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetadeletedkey-7541698336411891","deletedDate":1561685866,"scheduledPurgeDate":1569461866,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetadeletedkey-7541698336411891","attributes":{"enabled":true,"created":1561685866,"updated":1561685866,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetadeletedkey-8455281744731713","deletedDate":1561686136,"scheduledPurgeDate":1569462136,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetadeletedkey-8455281744731713","attributes":{"enabled":true,"created":1561686135,"updated":1561686135,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetadeletedkey-9166100965013404","deletedDate":1561686091,"scheduledPurgeDate":1569462091,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetadeletedkey-9166100965013404","attributes":{"enabled":true,"created":1561686091,"updated":1561686091,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetakey-3945239952608115","deletedDate":1561686248,"scheduledPurgeDate":1569462248,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetakey-3945239952608115","attributes":{"enabled":true,"created":1561686247,"updated":1561686247,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMTYhTURBd01EUXpJV3RsZVM5RFVsVkVTMFZaVGtGTlJTMURRVTVIUlZSQlMwVlpMVGMxTkRFMk9UZ3pNelkwTVRFNE9URWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '2fa5472f-265a-48dd-92a9-dd1f10572812', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:54 GMT', + 'Connection', + 'close', + 'Content-Length', + '4829' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '1a8e2368-556a-41f5-bc8a-92e1faf26200', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:55 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:54 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetakey-7541698336411891","deletedDate":1561685863,"scheduledPurgeDate":1569461863,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetakey-7541698336411891","attributes":{"enabled":true,"created":1561685862,"updated":1561685862,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetaspecificversionofakey-3945239952608115","deletedDate":1561686250,"scheduledPurgeDate":1569462250,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetaspecificversionofakey-3945239952608115","attributes":{"enabled":true,"created":1561686249,"updated":1561686249,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-cangetaspecificversionofakey-7541698336411891","deletedDate":1561685865,"scheduledPurgeDate":1569461865,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-cangetaspecificversionofakey-7541698336411891","attributes":{"enabled":true,"created":1561685864,"updated":1561685864,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-canupdateadisabledkey-3945239952608115","deletedDate":1561686244,"scheduledPurgeDate":1569462244,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-canupdateadisabledkey-3945239952608115","attributes":{"enabled":false,"exp":1546300800,"created":1561686243,"updated":1561686244,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-canupdateadisabledkey-7541698336411891","deletedDate":1561685859,"scheduledPurgeDate":1569461859,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-canupdateadisabledkey-7541698336411891","attributes":{"enabled":false,"exp":1546300800,"created":1561685858,"updated":1561685858,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-canupdatekey-3945239952608115","deletedDate":1561686242,"scheduledPurgeDate":1569462242,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-canupdatekey-3945239952608115","attributes":{"enabled":false,"created":1561686241,"updated":1561686242,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/CRUDKeyName-canupdatekey-7541698336411891","deletedDate":1561685857,"scheduledPurgeDate":1569461857,"kid":"https://keyvault_name.vault.azure.net/keys/CRUDKeyName-canupdatekey-7541698336411891","attributes":{"enabled":false,"created":1561685856,"updated":1561685856,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTRJV3RsZVM5TFJWa3hOVFU1TnpZd05qRTVNVGd6TURrNE5qY3ZNakEyUmpSQlJqTXhSRFUyTkRJMk1UZzJRME14TmtOQk0wTTBSRGN5TmtZaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '27842a6e-2136-47f4-9f0b-5a8e87bf9485', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:55 GMT', + 'Connection', + 'close', + 'Content-Length', + '3045' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'af88e0ac-72ae-486c-b6ae-2870e4546200', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:56 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:55 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019567242501310","deletedDate":1560195770,"scheduledPurgeDate":1567971770,"kid":"https://keyvault_name.vault.azure.net/keys/key156019567242501310","attributes":{"enabled":true,"created":1560195678,"updated":1560195678,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019571294800134","deletedDate":1560195724,"scheduledPurgeDate":1567971724,"kid":"https://keyvault_name.vault.azure.net/keys/key156019571294800134","attributes":{"enabled":true,"created":1560195718,"updated":1560195718,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019588703602255","deletedDate":1560195904,"scheduledPurgeDate":1567971904,"kid":"https://keyvault_name.vault.azure.net/keys/key156019588703602255","attributes":{"enabled":false,"created":1560195892,"updated":1560195892,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNVGsyTVRRNU1EZzFNRGd4TlRVaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'da1e57e0-4747-4105-b5c6-fc8a2b7e6fd6', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:56 GMT', + 'Connection', + 'close', + 'Content-Length', + '1264' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '1c38757b-5df7-47d0-b321-4af508ce6500', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:56 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:56 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019614908508155","deletedDate":1560196160,"scheduledPurgeDate":1567972160,"kid":"https://keyvault_name.vault.azure.net/keys/key156019614908508155","attributes":{"enabled":true,"nbf":1560196154,"created":1560196155,"updated":1560196155,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019626145109618","deletedDate":1560196278,"scheduledPurgeDate":1567972278,"kid":"https://keyvault_name.vault.azure.net/keys/key156019626145109618","attributes":{"enabled":true,"nbf":1560196266,"created":1560196267,"updated":1560196267,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019643192308535","deletedDate":1560196443,"scheduledPurgeDate":1567972443,"kid":"https://keyvault_name.vault.azure.net/keys/key156019643192308535","attributes":{"enabled":true,"nbf":1560196436,"created":1560196437,"updated":1560196437,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019676499600673","deletedDate":1560196776,"scheduledPurgeDate":1567972776,"kid":"https://keyvault_name.vault.azure.net/keys/key156019676499600673","attributes":{"enabled":true,"nbf":1560196769,"created":1560196770,"updated":1560196770,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019678704709785","deletedDate":1560196798,"scheduledPurgeDate":1567972798,"kid":"https://keyvault_name.vault.azure.net/keys/key156019678704709785","attributes":{"enabled":true,"nbf":1560196792,"created":1560196792,"updated":1560196792,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019683131108936","deletedDate":1560196842,"scheduledPurgeDate":1567972842,"kid":"https://keyvault_name.vault.azure.net/keys/key156019683131108936","attributes":{"enabled":true,"nbf":1560196836,"created":1560196836,"updated":1560196836,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019687132907648","deletedDate":1560196888,"scheduledPurgeDate":1567972888,"kid":"https://keyvault_name.vault.azure.net/keys/key156019687132907648","attributes":{"enabled":true,"nbf":1560196876,"created":1560196876,"updated":1560196876,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019964932000764","deletedDate":1560199758,"scheduledPurgeDate":1567975758,"kid":"https://keyvault_name.vault.azure.net/keys/key156019964932000764","attributes":{"enabled":true,"created":1560199655,"updated":1560199655,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156019968394501499","deletedDate":1560199695,"scheduledPurgeDate":1567975695,"kid":"https://keyvault_name.vault.azure.net/keys/key156019968394501499","attributes":{"enabled":true,"created":1560199689,"updated":1560199689,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTRJV3RsZVM5TFJWa3hOVFl3TVRrNU5qZ3pPVFExTURFME9Ua3ZRakpHTmpSQk9UVTJNVU13TkRZMU1qaEVPVEUwT0RGQk9EVXdRa00zTXpVaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'caf30a0a-2061-4eae-927a-2deefce4713d', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:56 GMT', + 'Connection', + 'close', + 'Content-Length', + '3404' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'fd6e0cf1-0a3f-42a0-82f5-5b63c5236d00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:57 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:56 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156020010748409548","deletedDate":1560200123,"scheduledPurgeDate":1567976123,"kid":"https://keyvault_name.vault.azure.net/keys/key156020010748409548","attributes":{"enabled":true,"nbf":1560200112,"created":1560200113,"updated":1560200113,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156020097075304975","deletedDate":1560200982,"scheduledPurgeDate":1567976982,"kid":"https://keyvault_name.vault.azure.net/keys/key156020097075304975","attributes":{"enabled":true,"exp":1560200975,"created":1560200976,"updated":1560200976,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156020589654200630","deletedDate":1560205908,"scheduledPurgeDate":1567981908,"kid":"https://keyvault_name.vault.azure.net/keys/key156020589654200630","attributes":{"enabled":true,"created":1560205902,"updated":1560205902,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156020600810901019","deletedDate":1560206019,"scheduledPurgeDate":1567982019,"kid":"https://keyvault_name.vault.azure.net/keys/key156020600810901019","attributes":{"enabled":true,"created":1560206013,"updated":1560206013,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156020656741105969","deletedDate":1560206579,"scheduledPurgeDate":1567982579,"kid":"https://keyvault_name.vault.azure.net/keys/key156020656741105969","attributes":{"enabled":true,"created":1560206573,"updated":1560206573,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021202578402557","deletedDate":1560212037,"scheduledPurgeDate":1567988037,"kid":"https://keyvault_name.vault.azure.net/keys/key156021202578402557","attributes":{"enabled":true,"created":1560212031,"updated":1560212031,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021212284606500","deletedDate":1560212139,"scheduledPurgeDate":1567988139,"kid":"https://keyvault_name.vault.azure.net/keys/key156021212284606500","attributes":{"enabled":true,"created":1560212128,"updated":1560212128,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021228525302930","deletedDate":1560212302,"scheduledPurgeDate":1567988302,"kid":"https://keyvault_name.vault.azure.net/keys/key156021228525302930","attributes":{"enabled":true,"created":1560212290,"updated":1560212290,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNakV5TlRJNU1EQTFNRFUyTXpnaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'f7052743-a683-4965-886d-95975ef1b274', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:56 GMT', + 'Connection', + 'close', + 'Content-Length', + '2932' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'fa25837b-1bac-40b6-a8f7-2870e8e46900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:57 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:57 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021252900505638","deletedDate":1560212547,"scheduledPurgeDate":1567988547,"kid":"https://keyvault_name.vault.azure.net/keys/key156021252900505638","attributes":{"enabled":true,"created":1560212534,"updated":1560212534,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021259169107011","deletedDate":1560212608,"scheduledPurgeDate":1567988608,"kid":"https://keyvault_name.vault.azure.net/keys/key156021259169107011","attributes":{"enabled":true,"created":1560212597,"updated":1560212597,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021275535604420","deletedDate":1560212772,"scheduledPurgeDate":1567988772,"kid":"https://keyvault_name.vault.azure.net/keys/key156021275535604420","attributes":{"enabled":true,"created":1560212760,"updated":1560212760,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021319425603898","deletedDate":1560213205,"scheduledPurgeDate":1567989205,"kid":"https://keyvault_name.vault.azure.net/keys/key156021319425603898","attributes":{"enabled":true,"created":1560213200,"updated":1560213200,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021368188700680","deletedDate":1560213698,"scheduledPurgeDate":1567989698,"kid":"https://keyvault_name.vault.azure.net/keys/key156021368188700680","attributes":{"enabled":true,"created":1560213687,"updated":1560213687,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021382077504638","deletedDate":1560213837,"scheduledPurgeDate":1567989837,"kid":"https://keyvault_name.vault.azure.net/keys/key156021382077504638","attributes":{"enabled":false,"created":1560213826,"updated":1560213832,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021397882409430","deletedDate":1560214070,"scheduledPurgeDate":1567990070,"kid":"https://keyvault_name.vault.azure.net/keys/key156021397882409430","attributes":{"enabled":true,"created":1560213984,"updated":1560213984,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTRJV3RsZVM5TFJWa3hOVFl3TWpFME1ERTBNRFU0TURRNE5ETXZOekpGUmtRMU5EVXdPVGsxTkRVMVJVRkROME00UVRJME1qWkJPVUZGTURFaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'd0423737-6716-40ae-8efd-8b36987ab4bd', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:57 GMT', + 'Connection', + 'close', + 'Content-Length', + '2632' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '9bf10116-1d17-4ab3-8afe-e852cf0e6800', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:58 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:57 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021404805303613","deletedDate":1560214059,"scheduledPurgeDate":1567990059,"kid":"https://keyvault_name.vault.azure.net/keys/key156021404805303613","attributes":{"enabled":true,"created":1560214053,"updated":1560214053,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021443658305298","deletedDate":1560214455,"scheduledPurgeDate":1567990455,"kid":"https://keyvault_name.vault.azure.net/keys/key156021443658305298","attributes":{"enabled":false,"created":1560214442,"updated":1560214449,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021469847200127","deletedDate":1560214715,"scheduledPurgeDate":1567990715,"kid":"https://keyvault_name.vault.azure.net/keys/key156021469847200127","attributes":{"enabled":false,"exp":1560214704,"created":1560214704,"updated":1560214709,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021500992805037","deletedDate":1560215026,"scheduledPurgeDate":1567991026,"kid":"https://keyvault_name.vault.azure.net/keys/key156021500992805037","attributes":{"enabled":false,"exp":1560215015,"created":1560215015,"updated":1560215021,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021508931202421","deletedDate":1560215105,"scheduledPurgeDate":1567991105,"kid":"https://keyvault_name.vault.azure.net/keys/key156021508931202421","attributes":{"enabled":false,"exp":1560215095,"created":1560215094,"updated":1560215100,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021527355207287","deletedDate":1560215290,"scheduledPurgeDate":1567991290,"kid":"https://keyvault_name.vault.azure.net/keys/key156021527355207287","attributes":{"enabled":false,"exp":1560215279,"created":1560215279,"updated":1560215284,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021572903002132","deletedDate":1560215746,"scheduledPurgeDate":1567991746,"kid":"https://keyvault_name.vault.azure.net/keys/key156021572903002132","attributes":{"enabled":false,"exp":1560215734,"created":1560215734,"updated":1560215740,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021643840901237","deletedDate":1560216615,"scheduledPurgeDate":1567992615,"kid":"https://keyvault_name.vault.azure.net/keys/key156021643840901237","attributes":{"enabled":true,"created":1560216444,"updated":1560216444,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNakUyTkRVd01qTXlNREV3TlRBaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '97f349c6-2858-40c2-b157-3ef35f6b7b53', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:58 GMT', + 'Connection', + 'close', + 'Content-Length', + '2989' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'be9b886e-2b64-41f6-924a-87de53276800', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:58 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:58 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021650717904471","deletedDate":1560216518,"scheduledPurgeDate":1567992518,"kid":"https://keyvault_name.vault.azure.net/keys/key156021650717904471","attributes":{"enabled":true,"created":1560216512,"updated":1560216512,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTRJV3RsZVM5TFJWa3hOVFl3TWpFMk9UZ3dOemt5TURFM05EWXZOakJGTXpZeE1EUTNPVUpFTkVSRFFqa3lOekUyUmpsQ01UZ3pOalJGTjBVaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '003ca778-efc3-4e81-83ad-ce8efe5b3a96', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:58 GMT', + 'Connection', + 'close', + 'Content-Length', + '669' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '7e2d6a23-df26-43a4-a7bc-bdc9f5396600', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:59 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:59 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021753923506478","deletedDate":1560217550,"scheduledPurgeDate":1567993550,"kid":"https://keyvault_name.vault.azure.net/keys/key156021753923506478","attributes":{"enabled":true,"created":1560217545,"updated":1560217545,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156021772195104221","deletedDate":1560217733,"scheduledPurgeDate":1567993733,"kid":"https://keyvault_name.vault.azure.net/keys/key156021772195104221","attributes":{"enabled":true,"created":1560217727,"updated":1560217727,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156026375447403976","deletedDate":1560263766,"scheduledPurgeDate":1568039766,"kid":"https://keyvault_name.vault.azure.net/keys/key156026375447403976","attributes":{"enabled":true,"created":1560263760,"updated":1560263760,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156026429107509170","deletedDate":1560264308,"scheduledPurgeDate":1568040308,"kid":"https://keyvault_name.vault.azure.net/keys/key156026429107509170","attributes":{"enabled":true,"created":1560264296,"updated":1560264296,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156026780583504617","deletedDate":1560267823,"scheduledPurgeDate":1568043823,"kid":"https://keyvault_name.vault.azure.net/keys/key156026780583504617","attributes":{"enabled":true,"created":1560267811,"updated":1560267811,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156026937854708786","deletedDate":1560269396,"scheduledPurgeDate":1568045396,"kid":"https://keyvault_name.vault.azure.net/keys/key156026937854708786","attributes":{"enabled":true,"created":1560269384,"updated":1560269384,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156027282511708087","deletedDate":1560272836,"scheduledPurgeDate":1568048836,"kid":"https://keyvault_name.vault.azure.net/keys/key156027282511708087","attributes":{"enabled":true,"created":1560272831,"updated":1560272831,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156027441059203813","deletedDate":1560274422,"scheduledPurgeDate":1568050422,"kid":"https://keyvault_name.vault.azure.net/keys/key156027441059203813","attributes":{"enabled":true,"created":1560274416,"updated":1560274416,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156027619257505383","deletedDate":1560276204,"scheduledPurgeDate":1568052204,"kid":"https://keyvault_name.vault.azure.net/keys/key156027619257505383","attributes":{"enabled":true,"created":1560276198,"updated":1560276198,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156027654046904526","deletedDate":1560276552,"scheduledPurgeDate":1568052552,"kid":"https://keyvault_name.vault.azure.net/keys/key156027654046904526","attributes":{"enabled":true,"created":1560276546,"updated":1560276546,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156027669556403953","deletedDate":1560276707,"scheduledPurgeDate":1568052707,"kid":"https://keyvault_name.vault.azure.net/keys/key156027669556403953","attributes":{"enabled":true,"created":1560276701,"updated":1560276701,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNamMyT1RJd05qRTRNRFUxT1RFaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'c5153af7-83d2-40df-a013-d8df725be8de', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:59 GMT', + 'Connection', + 'close', + 'Content-Length', + '3879' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '83f8b128-e16a-45f6-b3ff-6780e9526f00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:22:59 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:58 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156027692061805591","deletedDate":1560276984,"scheduledPurgeDate":1568052984,"kid":"https://keyvault_name.vault.azure.net/keys/key156027692061805591","attributes":{"enabled":true,"created":1560276926,"updated":1560276926,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156027875260704123","deletedDate":1560278769,"scheduledPurgeDate":1568054769,"kid":"https://keyvault_name.vault.azure.net/keys/key156027875260704123","attributes":{"enabled":true,"created":1560278758,"updated":1560278758,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156028044085404301","deletedDate":1560280458,"scheduledPurgeDate":1568056458,"kid":"https://keyvault_name.vault.azure.net/keys/key156028044085404301","attributes":{"enabled":true,"created":1560280446,"updated":1560280446,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156028174986105799","deletedDate":1560282270,"scheduledPurgeDate":1568058270,"kid":"https://keyvault_name.vault.azure.net/keys/key156028174986105799","attributes":{"enabled":true,"created":1560281755,"updated":1560281755,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156028180668003726","deletedDate":1560281817,"scheduledPurgeDate":1568057817,"kid":"https://keyvault_name.vault.azure.net/keys/key156028180668003726","attributes":{"enabled":true,"created":1560281812,"updated":1560281812,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTRJV3RsZVM5TFJWa3hOVFl3TWpneE9ESTVNalkzTURNd01URXZRelExTlVJNU1UTkNOamRCTkVaR1JrRTFNVVUyT0RCRVEwTkNNRVkyTXpjaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '1749cc38-ff92-47ef-be10-8fc5a6163469', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:23:00 GMT', + 'Connection', + 'close', + 'Content-Length', + '1977' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '4a23c6e9-430d-41e9-b8ae-7bf30e267400', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:23:00 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:22:59 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156028185168006865","deletedDate":1560281862,"scheduledPurgeDate":1568057862,"kid":"https://keyvault_name.vault.azure.net/keys/key156028185168006865","attributes":{"enabled":true,"created":1560281857,"updated":1560281857,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156036321495001070","deletedDate":1560363783,"scheduledPurgeDate":1568139783,"kid":"https://keyvault_name.vault.azure.net/keys/key156036321495001070","attributes":{"enabled":true,"created":1560363220,"updated":1560363220,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMUlXdGxlUzlMUlZreE5UWXdNell6TWpZd05EazJNRE0yTnpNaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '0a779126-7848-466b-ad17-f16a98465a25', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:22:59 GMT', + 'Connection', + 'close', + 'Content-Length', + '936' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '62b42416-9b30-4b1f-a56d-69f97a247300', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:23:00 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:23:00 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156036326049603673","deletedDate":1560363271,"scheduledPurgeDate":1568139271,"kid":"https://keyvault_name.vault.azure.net/keys/key156036326049603673","attributes":{"enabled":true,"created":1560363266,"updated":1560363266,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156043977101909742","deletedDate":1560439782,"scheduledPurgeDate":1568215782,"kid":"https://keyvault_name.vault.azure.net/keys/key156043977101909742","attributes":{"enabled":true,"created":1560439776,"updated":1560439776,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156044301303900132","deletedDate":1560444138,"scheduledPurgeDate":1568220138,"kid":"https://keyvault_name.vault.azure.net/keys/key156044301303900132","attributes":{"enabled":true,"exp":1560443018,"created":1560443018,"updated":1560443018,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156044304097508401","deletedDate":1560443052,"scheduledPurgeDate":1568219052,"kid":"https://keyvault_name.vault.azure.net/keys/key156044304097508401","attributes":{"enabled":true,"created":1560443046,"updated":1560443046,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTRJV3RsZVM5TFJWa3hOVFl3TkRRek1EWXpOREl3TURJMU1UQXZORUk0UmtFM05rVXpOVVkzTkRSRU1EZ3hPVEZGT0VSR05UTTVNVEEyTURVaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '920424a2-455b-4597-a59b-e521b0f5e034', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:23:00 GMT', + 'Connection', + 'close', + 'Content-Length', + '1667' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '4285a1a1-134e-49cd-8b33-dd52414e6b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:23:01 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:23:00 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/key156048034950305703","deletedDate":1560480365,"scheduledPurgeDate":1568256365,"kid":"https://keyvault_name.vault.azure.net/keys/key156048034950305703","attributes":{"enabled":true,"created":1560480356,"updated":1560480356,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/keys156019984111602317","deletedDate":1560199870,"scheduledPurgeDate":1567975870,"kid":"https://keyvault_name.vault.azure.net/keys/keys156019984111602317","attributes":{"enabled":true,"created":1560199847,"updated":1560199847,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJMklXdGxlUzlMUlZsVE1UVTJNREU1T1RnME1URXhOekE1TnpnM0lUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '1272fb58-4f50-46fc-8736-cd5a7af53431', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:23:01 GMT', + 'Connection', + 'close', + 'Content-Length', + '943' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '348db0df-dfbd-4cdf-a6be-6a08068a6000', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:23:01 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:23:01 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/keys156019984111709787","deletedDate":1560199876,"scheduledPurgeDate":1567975876,"kid":"https://keyvault_name.vault.azure.net/keys/keys156019984111709787","attributes":{"enabled":true,"created":1560199852,"updated":1560199852,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/keys156019998725306556","deletedDate":1560200016,"scheduledPurgeDate":1567976016,"kid":"https://keyvault_name.vault.azure.net/keys/keys156019998725306556","attributes":{"enabled":true,"created":1560199993,"updated":1560199993,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/keys156019998725308881","deletedDate":1560200022,"scheduledPurgeDate":1567976022,"kid":"https://keyvault_name.vault.azure.net/keys/keys156019998725308881","attributes":{"enabled":true,"created":1560199998,"updated":1560199998,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/keys156043989692705349","deletedDate":1560439913,"scheduledPurgeDate":1568215913,"kid":"https://keyvault_name.vault.azure.net/keys/keys156043989692705349","attributes":{"enabled":true,"created":1560439902,"updated":1560439902,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/keys156043989692806134","deletedDate":1560439919,"scheduledPurgeDate":1568215919,"kid":"https://keyvault_name.vault.azure.net/keys/keys156043989692806134","attributes":{"enabled":true,"created":1560439908,"updated":1560439908,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDAhTURBd01EVTVJV3RsZVM5TFJWbFRNVFUyTURRME16RTRNek0xT0RBNE1UQTJMell5UWtSRk1URkdRamMzUlRRelF6UkNSVU5DTXpoRU5EWXdOekZDTkVJMklUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '6c8503df-283a-4211-baae-fff6bf9cc855', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:23:02 GMT', + 'Connection', + 'close', + 'Content-Length', + '1992' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'f894d2e5-a2fb-4603-84a6-738b36bc6800', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:23:02 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:23:01 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangetseveralinsertedkeys-3147002526421592-0","deletedDate":1561686288,"scheduledPurgeDate":1569462288,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeys-3147002526421592-0","attributes":{"enabled":true,"created":1561686279,"updated":1561686279,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangetseveralinsertedkeys-3147002526421592-1","deletedDate":1561686289,"scheduledPurgeDate":1569462289,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeys-3147002526421592-1","attributes":{"enabled":true,"created":1561686280,"updated":1561686280,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangetseveralinsertedkeyspaged-3147002526421592-0","deletedDate":1561686297,"scheduledPurgeDate":1569462297,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeyspaged-3147002526421592-0","attributes":{"enabled":true,"created":1561686290,"updated":1561686290,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangetseveralinsertedkeyspaged-3147002526421592-1","deletedDate":1561686298,"scheduledPurgeDate":1569462298,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangetseveralinsertedkeyspaged-3147002526421592-1","attributes":{"enabled":true,"created":1561686290,"updated":1561686290,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangettheversionsofakey-3147002526421592","deletedDate":1561686276,"scheduledPurgeDate":1569462276,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangettheversionsofakey-3147002526421592","attributes":{"enabled":true,"created":1561686275,"updated":1561686275,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangettheversionsofakey-4844377101593087","deletedDate":1561685869,"scheduledPurgeDate":1569461869,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangettheversionsofakey-4844377101593087","attributes":{"enabled":true,"created":1561685868,"updated":1561685868,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangettheversionsofakeypaged-3147002526421592","deletedDate":1561686277,"scheduledPurgeDate":1569462277,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangettheversionsofakeypaged-3147002526421592","attributes":{"enabled":true,"created":1561686277,"updated":1561686277,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-cangettheversionsofakeypaged-4844377101593087","deletedDate":1561685871,"scheduledPurgeDate":1569461871,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-cangettheversionsofakeypaged-4844377101593087","attributes":{"enabled":true,"created":1561685870,"updated":1561685870,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMjghTURBd01EVXdJV3RsZVM5TVNWTlVTMFZaVGtGTlJTMU1TVk5VUkVWTVJWUkZSRXRGV1ZNdE1qQTNNamc0T0RBMU16RTBPRFUzTmkwd0lUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '4c4ca553-89f7-4a1c-b839-9286bbcd2461', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:23:02 GMT', + 'Connection', + 'close', + 'Content-Length', + '3515' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '2e9e6fc4-d996-41ac-95ff-81c0678e0900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:23:02 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:23:02 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-listdeletedkeys-7769917610769559-0","deletedDate":1561418276,"scheduledPurgeDate":1569194276,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeys-7769917610769559-0","attributes":{"enabled":true,"created":1561418275,"updated":1561418275,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-listdeletedkeys-7769917610769559-1","deletedDate":1561418277,"scheduledPurgeDate":1569194277,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeys-7769917610769559-1","attributes":{"enabled":true,"created":1561418276,"updated":1561418276,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-listdeletedkeyspaged--0","deletedDate":1561724540,"scheduledPurgeDate":1569500540,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeyspaged--0","attributes":{"enabled":true,"created":1561724539,"updated":1561724539,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-listdeletedkeyspaged--1","deletedDate":1561724540,"scheduledPurgeDate":1569500540,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeyspaged--1","attributes":{"enabled":true,"created":1561724539,"updated":1561724539,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-listdeletedkeyspaged-7769917610769559-0","deletedDate":1561419307,"scheduledPurgeDate":1569195307,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeyspaged-7769917610769559-0","attributes":{"enabled":true,"created":1561419306,"updated":1561419306,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/listKeyName-listdeletedkeyspaged-7769917610769559-1","deletedDate":1561419308,"scheduledPurgeDate":1569195308,"kid":"https://keyvault_name.vault.azure.net/keys/listKeyName-listdeletedkeyspaged-7769917610769559-1","attributes":{"enabled":true,"created":1561419307,"updated":1561419307,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-cangenerateabackupofakey-36767371368026214","deletedDate":1561687104,"scheduledPurgeDate":1569463104,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-cangenerateabackupofakey-36767371368026214","attributes":{"enabled":true,"created":1561687103,"updated":1561687103,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-cangenerateabackupofakey-89097467879021","deletedDate":1561686972,"scheduledPurgeDate":1569462972,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-cangenerateabackupofakey-89097467879021","attributes":{"enabled":true,"created":1561686972,"updated":1561686972,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-cangenerateabackupofakey-9779781603101387","deletedDate":1561686397,"scheduledPurgeDate":1569462397,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-cangenerateabackupofakey-9779781603101387","attributes":{"enabled":true,"created":1561686396,"updated":1561686396,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrecoveradeletedkey-36767371368026214","deletedDate":1561687101,"scheduledPurgeDate":1569463101,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrecoveradeletedkey-36767371368026214","attributes":{"enabled":true,"created":1561687068,"updated":1561687068,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExODAhTURBd01Ea3dJV3RsZVM5U1JVTlBWa1ZTUzBWWlRrRk5SUzFEUVU1U1JVTlBWa1ZTUVVSRlRFVlVSVVJMUlZrdE9EQXdOak0xTkRJM05URXlOemczTkM4M05VSkRRa0pCTkVJek5rUTBSVUl3UWpjelJrUTRRVGd3UlRCRk5EWkVReUV3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '0ab5eac2-43d1-4230-ad64-e055a5f6a39a', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:23:02 GMT', + 'Connection', + 'close', + 'Content-Length', + '4284' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '2ee950c2-eae0-45a8-a66e-02f9e1996100', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:23:03 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:23:02 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrecoveradeletedkey-89097467879021","deletedDate":1561686970,"scheduledPurgeDate":1569462970,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrecoveradeletedkey-89097467879021","attributes":{"enabled":true,"created":1561686926,"updated":1561686926,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrecoveradeletedkey-9779781603101387","deletedDate":1561686395,"scheduledPurgeDate":1569462395,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrecoveradeletedkey-9779781603101387","attributes":{"enabled":true,"created":1561686361,"updated":1561686361,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-04241354248077567","deletedDate":1561723518,"scheduledPurgeDate":1569499518,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-04241354248077567","attributes":{"enabled":true,"created":1561723517,"updated":1561723517,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-15374511265428148","deletedDate":1561723606,"scheduledPurgeDate":1569499606,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-15374511265428148","attributes":{"enabled":true,"created":1561723605,"updated":1561723605,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-36767371368026214","deletedDate":1561687106,"scheduledPurgeDate":1569463106,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-36767371368026214","attributes":{"enabled":true,"created":1561687105,"updated":1561687105,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-5165836270108091","deletedDate":1561723459,"scheduledPurgeDate":1569499459,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-5165836270108091","attributes":{"enabled":true,"created":1561723458,"updated":1561723458,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-8315331351345701","deletedDate":1561723721,"scheduledPurgeDate":1569499721,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-8315331351345701","attributes":{"enabled":true,"created":1561723720,"updated":1561723720,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-89097467879021","deletedDate":1561686975,"scheduledPurgeDate":1569462975,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-89097467879021","attributes":{"enabled":true,"created":1561686974,"updated":1561686974,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-9471707164286285","deletedDate":1561723348,"scheduledPurgeDate":1569499348,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-9471707164286285","attributes":{"enabled":true,"created":1561723347,"updated":1561723347,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-9779781603101387","deletedDate":1561686400,"scheduledPurgeDate":1569462400,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-9779781603101387","attributes":{"enabled":true,"created":1561686399,"updated":1561686399,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-9789286389123768","deletedDate":1561723310,"scheduledPurgeDate":1569499310,"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-9789286389123768","attributes":{"enabled":true,"created":1561723309,"updated":1561723309,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJNElXdGxlUzlUUlVOU1JWUXhOVFl3TVRrMU56UTJPVGsyTURFMU9UY2hNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '8e6a1511-d071-4e4f-9c28-efbbdf88bf11', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:23:04 GMT', + 'Connection', + 'close', + 'Content-Length', + '4748' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '66edf2ab-5ff2-4c97-beae-1179f0076600', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:23:04 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:23:04 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys') + .query(true) + .reply(200, {"value":[],"nextLink":null}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '49b224cc-9808-40bb-b47d-69457ab38676', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:23:04 GMT', + 'Connection', + 'close', + 'Content-Length', + '28' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'f5a61cbd-b25b-4302-a5b6-97f128d26600', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:23:05 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:23:04 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/listKeyName-listdeletedkeyspaged--0') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'fb4424f3-3284-4a5e-bcee-f3904fa942c0', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:23:05 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '93070702-064c-4d24-ac0b-9b4de0f46f00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Amo5Mk9CEtJAhzD6dLpvC-Y_aSJHLQAAAN78p9QOAAAA; expires=Sun, 28-Jul-2019 12:23:05 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:23:05 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/listKeyName-listdeletedkeyspaged--1') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'c7208030-e315-42d9-aaae-e5f8039cc8b8', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -135,7 +7823,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:45:17 GMT', + 'Fri, 28 Jun 2019 12:23:05 GMT', 'Connection', 'close' ]); diff --git a/sdk/keyvault/keyvault-keys/recordings/node/keys_client__restore_keys_and_recover_backups/recording_before_all_hook.js b/sdk/keyvault/keyvault-keys/recordings/node/keys_client__restore_keys_and_recover_backups/recording_before_all_hook.js index 25645251d27a..30c3bca6a19e 100644 --- a/sdk/keyvault/keyvault-keys/recordings/node/keys_client__restore_keys_and_recover_backups/recording_before_all_hook.js +++ b/sdk/keyvault/keyvault-keys/recordings/node/keys_client__restore_keys_and_recover_backups/recording_before_all_hook.js @@ -17,17 +17,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '6c82100f-f1e6-4a9e-97f9-40ef36411300', + '3c8c5c42-80e9-4698-aaca-8d2187a96c00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AlCE3tHUNHtPkdZGHu4FEEA_aSJHAQAAAPJ9mtQOAAAA; expires=Thu, 18-Jul-2019 06:38:43 GMT; path=/; secure; HttpOnly', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHAQAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:23:06 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:38:43 GMT', + 'Fri, 28 Jun 2019 12:23:05 GMT', 'Connection', 'close', 'Content-Length', @@ -35,28 +35,2565 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/keys/recoverKeyName') + .post('/keys/recoverKeyName-canrecoveradeletedkey-/create', {"kty":"RSA"}) .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Key not found: recoverKeyName"}}, [ 'Cache-Control', + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrecoveradeletedkey-/f9e164f7643f4162bd5713ffd42dcb4e","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"0idAEjePqCl1G52Hjmj_7jFZa0Lh7AfYjrEQ8Ng04fl8PAJiHibONng4I6dhhPXJ04ynCjYzO57sb6-t78VwTCnVhC4RFVVgmYLLbmlxW2iAmna18VvrQBEkMuyqG5Uf4K9eXnZGEf-FDWiat9mHm0-aZO0BjeGdu0mY_n6NPGcW04VTZfqOVSTWw4OoN7LlgGVznFut8PyqJ8aJOBN4bZPgC-heR1J5mu2-WROovLK6c6p-IvhYy_ZFXYzIkDrCDf7lvYRy0WDkZbhYF_u27x3Yj0l0bpFgMcJ-ew0n1p5guJUtO3mxmqH5OwvIoQyzZ5_Z5okwx1In2NyGFpuPzw","e":"AQAB"},"attributes":{"enabled":true,"created":1561724586,"updated":1561724586,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '14c0850d-5c03-4bf4-b219-7d2b3696dc09', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:23:06 GMT', + 'Connection', + 'close', + 'Content-Length', + '699' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'a7b6526a-997f-4e53-9299-859a0bb25c00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHAgAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:23:06 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:23:05 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/recoverKeyName-canrecoveradeletedkey-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrecoveradeletedkey-","deletedDate":1561724587,"scheduledPurgeDate":1569500587,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrecoveradeletedkey-/f9e164f7643f4162bd5713ffd42dcb4e","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"0idAEjePqCl1G52Hjmj_7jFZa0Lh7AfYjrEQ8Ng04fl8PAJiHibONng4I6dhhPXJ04ynCjYzO57sb6-t78VwTCnVhC4RFVVgmYLLbmlxW2iAmna18VvrQBEkMuyqG5Uf4K9eXnZGEf-FDWiat9mHm0-aZO0BjeGdu0mY_n6NPGcW04VTZfqOVSTWw4OoN7LlgGVznFut8PyqJ8aJOBN4bZPgC-heR1J5mu2-WROovLK6c6p-IvhYy_ZFXYzIkDrCDf7lvYRy0WDkZbhYF_u27x3Yj0l0bpFgMcJ-ew0n1p5guJUtO3mxmqH5OwvIoQyzZ5_Z5okwx1In2NyGFpuPzw","e":"AQAB"},"attributes":{"enabled":true,"created":1561724586,"updated":1561724586,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '664cd175-aed6-4975-b33a-669f293fc62d', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:23:07 GMT', + 'Connection', + 'close', + 'Content-Length', + '873' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '58a0cd4b-f576-4f68-b41a-f870cf6b6b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHAwAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:23:07 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:23:06 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys/recoverKeyName-canrecoveradeletedkey-') + .query(true) + .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: recoverKeyName-canrecoveradeletedkey-"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '121', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '00764466-076c-4f53-b238-3adc565aa0ce', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:23:07 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '07ebafab-9697-4428-bc1b-9022ae926900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHBAAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:23:17 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:23:17 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys/recoverKeyName-canrecoveradeletedkey-') + .query(true) + .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: recoverKeyName-canrecoveradeletedkey-"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '121', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '2f7cb52e-eafc-4366-9901-a237f9f7c559', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:23:18 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'ebd12930-cbf6-4bfd-b579-568b8f2b0b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHBQAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:23:28 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:23:27 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys/recoverKeyName-canrecoveradeletedkey-') + .query(true) + .reply(404, {"error":{"code":"KeyNotFound","message":"Deleted Key not found: recoverKeyName-canrecoveradeletedkey-"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '121', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'a3eed701-649e-4045-bf69-c3846c226fef', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:23:27 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '03af405f-7e42-4196-a165-038cf95c5d00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHBgAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:23:38 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:23:38 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedkeys/recoverKeyName-canrecoveradeletedkey-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrecoveradeletedkey-","deletedDate":1561724587,"scheduledPurgeDate":1569500587,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrecoveradeletedkey-/f9e164f7643f4162bd5713ffd42dcb4e","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"0idAEjePqCl1G52Hjmj_7jFZa0Lh7AfYjrEQ8Ng04fl8PAJiHibONng4I6dhhPXJ04ynCjYzO57sb6-t78VwTCnVhC4RFVVgmYLLbmlxW2iAmna18VvrQBEkMuyqG5Uf4K9eXnZGEf-FDWiat9mHm0-aZO0BjeGdu0mY_n6NPGcW04VTZfqOVSTWw4OoN7LlgGVznFut8PyqJ8aJOBN4bZPgC-heR1J5mu2-WROovLK6c6p-IvhYy_ZFXYzIkDrCDf7lvYRy0WDkZbhYF_u27x3Yj0l0bpFgMcJ-ew0n1p5guJUtO3mxmqH5OwvIoQyzZ5_Z5okwx1In2NyGFpuPzw","e":"AQAB"},"attributes":{"enabled":true,"created":1561724586,"updated":1561724586,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'ff368f15-36eb-472c-bebe-532c508e1375', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:23:38 GMT', + 'Connection', + 'close', + 'Content-Length', + '873' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '8aee46e5-5fb8-4eff-b0a2-1fc129426700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHBwAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:23:39 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:23:38 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/deletedkeys/recoverKeyName-canrecoveradeletedkey-/recover') + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrecoveradeletedkey-/f9e164f7643f4162bd5713ffd42dcb4e","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"0idAEjePqCl1G52Hjmj_7jFZa0Lh7AfYjrEQ8Ng04fl8PAJiHibONng4I6dhhPXJ04ynCjYzO57sb6-t78VwTCnVhC4RFVVgmYLLbmlxW2iAmna18VvrQBEkMuyqG5Uf4K9eXnZGEf-FDWiat9mHm0-aZO0BjeGdu0mY_n6NPGcW04VTZfqOVSTWw4OoN7LlgGVznFut8PyqJ8aJOBN4bZPgC-heR1J5mu2-WROovLK6c6p-IvhYy_ZFXYzIkDrCDf7lvYRy0WDkZbhYF_u27x3Yj0l0bpFgMcJ-ew0n1p5guJUtO3mxmqH5OwvIoQyzZ5_Z5okwx1In2NyGFpuPzw","e":"AQAB"},"attributes":{"enabled":true,"created":1561724586,"updated":1561724586,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '44566629-e46e-4cc3-af29-0bd5e3fffab0', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:23:39 GMT', + 'Connection', + 'close', + 'Content-Length', + '699' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'ed012e92-d271-46fc-ae84-6066a9d16800', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHCAAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:23:40 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:23:39 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys/recoverKeyName-canrecoveradeletedkey-/') + .query(true) + .reply(404, {"error":{"code":"KeyNotFound","message":"Key not found: recoverKeyName-canrecoveradeletedkey-"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '113', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'd39b9cac-b4a6-490b-b589-d5c7f7dd05de', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:23:39 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '05bc1431-d91f-48c6-adb4-691f0cc65f00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHCQAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:23:50 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:23:49 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys/recoverKeyName-canrecoveradeletedkey-/') + .query(true) + .reply(404, {"error":{"code":"KeyNotFound","message":"Key not found: recoverKeyName-canrecoveradeletedkey-"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '113', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '8089c819-5745-4218-a8ba-f2de272569fb', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:23:50 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '9ca6af2f-ad9b-498c-8d1e-f170f2b26500', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHCgAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:24:00 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:24:00 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys/recoverKeyName-canrecoveradeletedkey-/') + .query(true) + .reply(404, {"error":{"code":"KeyNotFound","message":"Key not found: recoverKeyName-canrecoveradeletedkey-"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '113', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '27baa493-7bd5-4a6d-8218-c0a19560a351', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:24:00 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '527a60ec-c917-465c-8c00-7a8669af6a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHCwAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:24:11 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:24:10 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys/recoverKeyName-canrecoveradeletedkey-/') + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrecoveradeletedkey-/f9e164f7643f4162bd5713ffd42dcb4e","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"0idAEjePqCl1G52Hjmj_7jFZa0Lh7AfYjrEQ8Ng04fl8PAJiHibONng4I6dhhPXJ04ynCjYzO57sb6-t78VwTCnVhC4RFVVgmYLLbmlxW2iAmna18VvrQBEkMuyqG5Uf4K9eXnZGEf-FDWiat9mHm0-aZO0BjeGdu0mY_n6NPGcW04VTZfqOVSTWw4OoN7LlgGVznFut8PyqJ8aJOBN4bZPgC-heR1J5mu2-WROovLK6c6p-IvhYy_ZFXYzIkDrCDf7lvYRy0WDkZbhYF_u27x3Yj0l0bpFgMcJ-ew0n1p5guJUtO3mxmqH5OwvIoQyzZ5_Z5okwx1In2NyGFpuPzw","e":"AQAB"},"attributes":{"enabled":true,"created":1561724586,"updated":1561724586,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '67ad2159-affa-4478-972a-db9c438ff626', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:24:11 GMT', + 'Connection', + 'close', + 'Content-Length', + '699' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '573a4c46-c960-4f27-ae57-bcdd12a95e00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHDAAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:24:11 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:24:11 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/recoverKeyName-canrecoveradeletedkey-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrecoveradeletedkey-","deletedDate":1561724652,"scheduledPurgeDate":1569500652,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrecoveradeletedkey-/f9e164f7643f4162bd5713ffd42dcb4e","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"0idAEjePqCl1G52Hjmj_7jFZa0Lh7AfYjrEQ8Ng04fl8PAJiHibONng4I6dhhPXJ04ynCjYzO57sb6-t78VwTCnVhC4RFVVgmYLLbmlxW2iAmna18VvrQBEkMuyqG5Uf4K9eXnZGEf-FDWiat9mHm0-aZO0BjeGdu0mY_n6NPGcW04VTZfqOVSTWw4OoN7LlgGVznFut8PyqJ8aJOBN4bZPgC-heR1J5mu2-WROovLK6c6p-IvhYy_ZFXYzIkDrCDf7lvYRy0WDkZbhYF_u27x3Yj0l0bpFgMcJ-ew0n1p5guJUtO3mxmqH5OwvIoQyzZ5_Z5okwx1In2NyGFpuPzw","e":"AQAB"},"attributes":{"enabled":true,"created":1561724586,"updated":1561724586,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'a3737911-7521-4c92-acd7-314c840ef67f', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:24:11 GMT', + 'Connection', + 'close', + 'Content-Length', + '873' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '37b17b71-28b4-41c1-82fe-826034126f00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHDQAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:24:12 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:24:11 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/recoverKeyName-canrecoveradeletedkey-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '3007bed5-4e56-4f87-820c-ee272bb52650', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:24:11 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '318d6ec6-961d-44f5-9467-3d539cf16900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHDgAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:24:22 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:24:22 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/recoverKeyName-canrecoveradeletedkey-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '5e240b0e-6775-4292-b77a-d453a3cf06d1', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:24:23 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'ce242d10-6d92-46cc-ad16-f311b5146700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHDwAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:24:33 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:24:32 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/recoverKeyName-canrecoveradeletedkey-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '84f1dfa1-8353-47fc-8b19-9d7518183760', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:24:33 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'f2bc88b2-f80e-4019-a58c-574025a77200', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHEAAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:24:43 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:24:43 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/recoverKeyName-canrecoveradeletedkey-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'd43ab10f-d528-4f57-bb55-7e9e4804051c', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:24:43 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '593584b2-de64-45e3-97c5-4050f0ff6300', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHEQAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:24:44 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:24:44 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/deletedkeys/recoverKeyName-failsifonetriestorecoveranon-existingdeletedkey-/recover') + .query(true) + .reply(404, {"error":{"code":"KeyNotFound","message":"Key not found: recoverKeyName-failsifonetriestorecoveranon-existingdeletedkey-"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '139', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'd302e7c8-fa01-4f9a-9d0c-0e9dbd4378d7', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:24:44 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '167bf18c-dfac-45c5-86b4-8661ad666500', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHEgAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:24:44 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:24:44 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/recoverKeyName-cangenerateabackupofakey-/create', {"kty":"RSA"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-cangenerateabackupofakey-/2583e0165a0d4ba0ba1806fda9fb8901","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"oWo5c9VDWpY4XzUAJ_ugP7DYZv5DBl9CvfXtVZv77_qhJYLJVxtZ8mBg1vNmGuhdymXtm8lXuv0HYdvFpHTMJ8MH5XguGo6rsj47bV_Ht4_4Lgvzr-OaRBP4dL2GYPXhTJEKwa5rovVa4lVUI0b7Xfydl1--_YQ-7eJkTVa877Cs-tn1LyWtCeFb9GZbEuzX63onSPqDxiOoZNyxiHCK9dHLB_GIE3qJC-VoqHu4sGfYO6J4tJ-9fj-O0CslDX_zZ6IEqlq_09uMDi6x4zdcI8JQcGzqhKqr6bJZQ5RaNuszWMpeOIr4JQmUews9VdLjWMr6uTTydm5qwkHaJAT0Bw","e":"AQAB"},"attributes":{"enabled":true,"created":1561724685,"updated":1561724685,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '466b700f-a37c-407e-8a8d-f873d7b8e161', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:24:45 GMT', + 'Connection', + 'close', + 'Content-Length', + '702' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '80247b2c-db5a-4fb2-9db8-cde078146700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHEwAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:24:45 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:24:44 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/recoverKeyName-cangenerateabackupofakey-/backup') + .query(true) + .reply(200, {"value":"JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLlRIR1RjV3F2UER4ZDRkMWwzTVprNWtuTWttckJRRXdaQVI1M0RwMHZGUEhraEgtdTIzS1hjbGw5LUNFTGdENW5IcnRtQ3MwdkkyZkhDcjZQdzFhZVNjd0d0U24yZy1IZVd3Ujl6QzE5cF94OXpNZVlsRlAxd2J5RlJDZV80REx5RnpEa0FWUFZlMjd4YkViRkJZSDFYN2hkQUhCSnFpdFlmZDRHN3JIRDVHbFpKclBVdmdISURtZUpDZ3ZSRWh1a0wzeXlUdGpyVTZkV0hybUJ1eW9Ldks1UU11RGVLbFJYZmdadXVIdEFmZkhISUt0OFpfNHlzYUVSTWI3MzF2UGVpV0NWaUJHdXlPZ2hWQUoxYWdtQWJPOTBrNnR2RlZ5U1U4SW5oY1VwdkotNWJ1NWZuMy1nWXBUU0VBQVlZWktUd1AxYUt6QVk4NlN0SUhFUEJ0VFZMdy5TT2NZcXkxMm5adkxGeUlLbGh5aDZnLmRaWlluLXBGa2hpWTIwcU5KTWVRNHNnWVc1YXpEeUxJTU1CY2V5ZldOVno3cXUwMkZSaDVNbXFHcjBnbmVfM2hrZnlrbjJFVGlZaGMxaG5zbGVJNXZCeHdHMnNBQVFpSTBDNl9Kd3NodnJiUTN1T1kxcXRhaldsb3drTUg3RG5GZFBjQ01oZEtUY094dlZScjBSUkpmM3doZjg0T0lhcDBLUzNUbV9nOVdiUjZhVU1OWUpSZ1RTYV9LYUlIRUxxQnpoSEFockVvTkJqdlhhUi00THJza3I5Ui1fdGxjaHphVlowQlVRLV9WZE84MzByTHl3SDRud0RoMVJaeEctY19UWFJNckFWY0pZdFRVaGVEZnRMUVBWYmZHSFFxUXdaSEZaQTFfOUZnV1k3Z2ZBdUNyV3ozTG1rbnVXeXJCWC1HSnQtcWVUZlc4ODRTTmd3VTE0X3pBMUZJZFVqUmlSbVBMVGVhcTFkS01wenBxQi1zV1F2WlNPckdIaGhhaGc2amFkMlltOC1NQ0lGNzZ3V0NHSGdLQWRWMkM3b0ZSbzRaenplUjlBc2JHNk4ybHZjN3hadTBoRXFha2czcF9LaDFaS2o1WmZpUW9jSnNIUmJsR2ZJbHVLUXJGWjhqS1NvcG8yeDkyTUczQVk3dllVT29vM3F5X000cDNVX0ptUGpZalUydkdBQ1dhZEdNNXY1eXZEdm4tM0lTX3hDVWU3VFR0SFFQZzVvOHRMWllGYW5qN3VVXy1YMFdjR1drNXA4NW5fd3NzY1piakxyN1Joekwxam5UMHdVclBYOTQ0X3pXQ2tBLWNQZnR3UlRhcjJIY05PR2JWTHhKSFhudTlnZjBMcTh6SlZ3aUNCczBQSDhOZGxPblFadXZvSjQ0OXd0RjNFNHJ2YmhQWEtfTnVHM0ZMUmc1MGNHc1J1cHF5TmJMMFlHUmhMeWJpMEVmNWQ4a3pVd202OXRkdG5yZ2E3SURGaTlPN1dHY1RiNnJIWjJFeThNWWFIX3I5MTF5NVh0ZG5oQ1o3WmhOQ2ZZcDI1R2gxXzZWZXF6TXFTNlZ6dkJkTFJGOE0wbU54Tzd5bzA4cl9ldUZKNU15NUVzdmJ5ZWRFOTBvVzFoaUgybHpsVnpNVnh5T3Rtc2VLd3NWOVJndUZsRjFLQXdRMUpyV1FaOG1DWFF4SExreC1qZUFoSlpkNTJONFpobjE1YTRjQm5mNmxhV2FFdmZpdUpOeTZ5eWMtcEVRTW9NTi1wMWpSb2hkRkE1TzllMlM3RTFHbFJaZ2xLWHJIa2U4eERGNWNLb3VINVBISXBQSjhCRFNELXJtOEdGUDlfVXBucEs5N0JobF9Semo5eVZ5aF95LXJhZGpjZjJ2ZkZBd1RPTVcxVTF1aWhZV2Y4UTIwbktDMWpLSjNIZVpheGRONE9UczhKWkJ2U3EyUUxkeHBmdG4zb0hyTHB3bUsxa0RHUUxYVHVDNWZoN2wtYzBUY0F2bG5RcUlRZ2lTYUd2RlFBdWlRZjhZa1FmVjIwSDhQVlJwVm13WFFfdjlqZlpFSDlSVW9GdS1QVGF6VEpaTkJNUzVITnJtSDNwV0NZcDdVd2l5eDJfeXlJeW8xUDFZSXBNZXAzc1QxYjFleVNiWHFzbEdmM2NGRDJoY1ViNS1fV2VYZ1JTcm5hTU9SSkhaaFpReUQzdlJWQkRDaFVsYkRXTG1VVG9UeDZpUGpLckFtUUlTRmlqdFpDMzVQNXFyamFsNjJXY2tUamI3MTJlMGlITlgtZjZpWjZUdE8zWXVSRHJJRWZtbU5tenRTRTlHUlB6Tm15bWxjTTVxV25ldFpxenRFMW1RWmszS0h2RzlNb1FXaWJnb092VXpoQVZXdlRENE84TVowblloakdsSjVzWVMxZm5nLU5tWkRVcnBOVjZtS2NiX1BLa29SVlRmT1lxeUd1WDVaQmZCeGdINVQ0V0tod3ZyNE5yaFBKaUs0SG5DZmpva2FUZGQtaWxUYVJ4RGVFY3lzd3lSRlN3ZE5Zclgzb0VTVHo4a0lwRThqMkhCRGY5ZFZlUjRmMWFjdndEaEdnZjdsY2FoMkNGd1d5VC0yMnEwLWdzbV9kQWtUUzEtdmxFMFVlVmcyVkpYbmYwNU9scFVpZVpuREoxd0tFbGlDWWlEaW00Y0VuakxGNS0tQnJmYzhvV2dJdHdNZ2oxaVdpdHU4WVRXYUVLRWlQRGo0UTU0cGpnSHlCOTVaMUZnckU5RFlOeUFnTjZENUhCTG4taWFiaTlaZl9GVGh3b2Nod2k5V1NrYlVzUW8tUllXblBGZ3VmeEJHU3dhQ3pvcXB4QVVzdEQyTWNGOEJCRWFWWjlneTMzMmNTNEEzb0loN3RuMGFsOE9ZNFlzTHpuM2VNRWJfSjdGMTNITWpDZEpoMHZ5OHpYc3JuZmtaUm9CUmpycGxnbWVpLV9CeXA2dlg2MFR4RWxoU1V1eWEwRXNIdjRDYTctbmZ2N2JxMm1ZaEFJazdrWkRYclR4WFRteVFyTlU0SzZFZWZDeV94R0tfeGlNWWxWaGVZT3RzeXllalFKNVlnYlZzU2g3QkI2R1pfSVUxNC1ReHZtbGU3X2FSMThTaFhWSERJOENpM0JsS3NsZlJBRlpMVW5RMXFDcDZEYXpIWDZIRVNSbWs5S3NyX09JMW44dHllQWV5Q2JPRnk4QVJKZXhkWWQwcFJzZF9sWjQzTzM5VFAxT0dfU3ZIOENpSGU4blFhVUJ2SUd1VXBMMGFIQjZlU1d2SXBWMkIta2NQLXRnUnEyNEV4NVRaSHp0WkF1Y1M1cW5BMi1YZEZvUGQ3TzNVTDN3c2xwb0NsUmg2am1BNUpWTHZJa0hpUndxNUx2RFRlR01wZENZZUxxYVJRMDR0ajZZTUY3cHQzN2hGTXl4ZWpqU1p4SGtRT2NQMDZtVkdiS2pMY0EtUUZMM0ZTV1ZEdXVXbkk5MXQ3Nm16ZWJEX3FMMElrbF94dEJmc2VhMm44aFA3XzZiX3hmTnBFOElpRTVrZHpNMW10dVhXSDNGVEFDTzUxU3JjVGNwNjk1WVpTY2RzVk9vMWF3Tk5FelpWQ2hnRk52QkNJYVhfbGtzQWJPXzhPa2lxdVItc2xfZnozTFlGWFI1OHZBLTZ4WkgyeUduRnBIUDZJdWplb0FNaDhmbkJIVnlUeUViMnNFT0p2UmhrT2poV2JncC1DVnpIdGtWSk9XZW9xdlhUaGRpYjgzQ0dzWFBPX3VGMmZOZXY5X080UHFlUVdUX29kd1o3Y3RNMzk4N1lJTFNlMUxmWjBHbmpDQ2tnLVYtSFJQeEVWVVdLZHhSRTBPTmRYZ0Z2LWlKczQtcTR4eDhodlQwNExpMGtOMVNlY1I3bm9zWmxMLU1tOC1CdFpFQW5iUVdYT1dmeVdXdEhqcDV5b0tncFRXNDRXdlg2SE1JcXl2anRkRThRbHdFSmR0RGpSdnpIeFFWaHZ6emNfTi1ZdXlxRDZwWmpaaENYblhGTEpJc1ctelluRFlBNFp6bm11b29lYVkwNlJEcjZCSWFrVEtWWkhTUWlYbzJxRW5iZE9lZG9qaW1NZTRxbW14bXYzeXdlVmhPUmxja3hPb2k4TmJNdmVsMWJUdnBUajBwYUwtbVJOOXg0UnFWTVp1bXZRUGc2a3d2WkNRV2ZHZm1qaEpWMHdKYzV5NWVMQmxQeVBnWTlHcUxWenhrNXBrRkhvNlVvQTdBbDVnZWxQeGphbmtLNmVwVUhwdjVCbnNRaFZRU19ZTnBYZjc3SWsxVVdNdzFNVFBNMnh6ODZJTmdwYVJOS2lKYWxSekt1eS0wVHNjc2pXT3ZQU2phWmZqd25SWHlVREtJVlluNEd5OGU2cEs1Z3oxUV92SzJsa0h6OUFMdlBsRFcwVUdDOHExcHZIX3ltMGxBZ0YwUUVlQ2JVNE5OSGZEbjUyOW9FNEhNQTF1RkJmUkRvckdLWTVzWGxDOThMMWFRUjJaRGNiajRMWTk2Tk1ZcHlXLTlfbllZaXh2Y0hDTGNYZ0JDOEpSNnBBM0FydGVtTnZfMnduRHdtQ0lucE80eVB0c2RBMzc5TFphZU05dXEtZlUtVEZUbEN5eVhuWjhlLU82TUVNMW1HMVVQWTNyT0s5bWY4ekpsS19sNEVvX3ZJMmFrZDlzdXFROGxkWW53ckxpWDg5WS1ZVkxCTWk1eVh2NEs3YndGanRUR25CbWR2LWJvX1VEbFZra0ZwRXA1cVFWUUlJNld4SHNXN21HdkxDOXMwd2pzd3QxLWhKX2ZjRlpMX0NadGpYSE5iclNKSXkwYzl2ZzhnRi1UNk56ZjF1OGt3QjJQRDRxcGhwbnk5bFhta0VEWmY1WkJjTE9Sd1hLOTM0bEdSd2o0d1ZSV0ZzVjdyd3lKTERoSVZFRnU3ZzNhYlotRUdMQ1FYZ0E0Z3N1SkN1V2QyREg0R2NSX3lCVDU5c0c5MTdxeVJxYnNLWUNadkhudzhfcVp4dFpvS2UtQmNaZmRMUm02N0xSYS1YV3R5RHFNa0s5WUV6YmpaY3oxZ2JTVWNUU2VaUENkS1pERzA1UTh2RVdSS2NxaDZRdnNDYXFrWXBSbUtkZzRFWURFT2FjcnNnOG9mVXNDVnpwMndlZUc4N0xCcWZMcWRQSnp5dGhWaW5PWTNiTnJFX1BESmNBTTN3MHROV2UzZUVaUjJhTVFlOGNiR0lHaFlMVVdYSjVRaUE4aktBOHllSzN6T2t0RHRyN0lqb3Z4djF3MG5uNGMzMDctXzRPN1FxUVktZ2VfUkJteVdhTmxseDhITUs0UUJVLXItY3RNekVEbjUtcGdYVzRNdENhQWVFNVljM3hMSndZYkRiMWdoVzEzbTN5MEZtbnV5QTNvWHUzam9qX2cybUN2QzZpVk1uRlVuWWhEX1phcVFlQ1E3U0pTTFFoVzB3eXBQWlF0d296cVVOY01ZeWRuaUl5WGg5VC1WdWdMRkdHa1R5cW01MGM5ME41Sk1aWHhnWHRpcTdSMk41RHVVVGtoYjZaWTdVcjU2N0p1V2VtN1JkUldiYjhSclhtUFltZHZidU1SWDFEZC1sLTNhOTYtVFVIckthWjN5MUROSHh5YThRVGxXUEtxZ1JoV0RKMHJKX3pIaE04UTF1RmV5S0MzZnRjQ1BpWHMxeVl6RDdKV2tpZXhoMzUzRFcybmd4VHRyeEJLZGNYei1oR3lsOEFzTVhJNTdsXzAyclZIaWhmTldQZFplVDRQbW9SdmZpdW12WFhVZDlQeDhqSTVZR0xVS0FhQkZoY0lFT19QNExJV1JJTkVRQUtxaWRVZmRwZThtM2UyeDZnM2R2Q2pDSklaV0RoeEItc05TdnRSQk50aHNPX040eEJDMG1ya015bEhxS1p2NDRXZlRxUVF2bnlIM25jS2RXeGlaYy1QU2dMNFdfdnEtMm1XQnNXcV9uWjB4TE1LRzNSQnRvZUNTam9EY1AwUmI4Z1FJZ0ZtTUpMTDQycTdscWdlTmYxWlR4NmdNODgtSnhkRzN2cHJHZ2F2WFBNUXZLd01kV09tcEh1TzlkRjB1VFByVUNtRUJoajBMX2stTU5CNmhkM21IRzdPOFFXMUtfVDdGWm15S0lPb0dwSXRXd3pzR0JMd3pzbHRJWUhCOFdvZ2ZNTWt1ZVRRVXlyb3ZlV2hIcjRTNUNTTFZvTG1vX0NZOUpBWDUwLVpQLXIwSFJtSDhhQWJBc0E5U3dzdmxCaFZ1NFhYQTFPVDNJU2w0OGlEZGdsQ3hCZnJDdXdndTloN3d0UmRqZ3VVVUlrWWJmcW5XYkNja1NIUzFfRmd4emk3ZDcyZ1FxZExKOWstREViQ2J2T0R2NU9FQTZSMlJqM2dTeXBDaFliRUM0TzZyMEhWMWUwdVlRaHEzaVpTOUVaOGlwZlotMDBNRkdsRjR6dWZPUldMX1BDOVBaUElaY281dk5WdGg1bFEtb0QxX01ZandpcnNPeGJ0em1ERUxET18zZUtkNkJZV1pjR1pDR3JWN3FqZWdzMGtzRUZPbVo0WHJVUHRMWmk3OEZrWEpXTVd3WmdDRkpsR1NGb25SVzNNRUF2d2F5QnF0Yk9seHhveGFJNWNCZGNJazVGTkNyWElNVVZCaGJkMThsUUtMV2NLTl9ucmVSUzRoZUI0Q25CVW9QSjN5RzVLNjk1ZTVEMEZIeDEyV0xnXy1WeGdIQjNiRnNya051cXVhSExWa3d1TmdHSkwxaHVzTWZBdWFRaWdzTkoyMURnWXh4bmp3b1JtWW02THk0SlIxM2ZsaTBhTWlOVEd0NkxvQ3JKbWVqLWdlN3VjZTZ1S1ZDM0pXTkc4M09OUTNJMlNVMGdhRUlTWXBkeS1mUzA2S2h1R2JOVi1hU2x5WjRDc09aeGRZSGNNR04tQ3NFZUFGVDVJN29QSGlmclNqTWtGXzF5X2dqdnRkWHF3b0VQR19BNDJ3WEhhdDdlc0JhQkVoLWIyc1AtTzg3T1RJdi04MUpuTk5FTlR2WE9yUzNKajBGRkNkNnhYbkhtNmNpZ2t6RVd6Q1Y3cWhmRXZTQXl4N0ViSXQzOFZIRlJSVzBMeW9tcFNLdkRadHA1RDB1VDNtQTJNbTZqZVhrLVQ1U2RQdWk0SkVQQkozOVptQzQ2OFV3eE4tTThoVnJtQ29uZVlIMWdCcFVkNWxqZHZNUnhKOTN4NUNKc2lFREptOTl0VnFjOUxLZzlTZmJna2tjazAzUHRWWi02OFBpOEpQdXVGRGdXRXdpMjZqamRVSUhyY3g4SFd1Q3JuOG1IVWlvTWtLdkxUWHBjVE1aT2NFVkJMSzBLakY0X0hiallGMExldE5GcDUzdk9YVDBQTDNSRXZUNEgyWEFSMGY1RjFMeFRoT0dtZGl0THA1V3Uzd0NxTG0tSTRqanJUU0FEcG5xd3RHU1lXMk1KOVdpcGJqWTQ4Nm04Wm1TVWw3bEdKRkZuT205bUpGS1p5NmdBZUFYTnQ0cjZsRHJnS1JrMWFvUkZFT01WdVk3dWVGcUxiRW5IRHU1dDVRWERRY0RTaFFjT3JxSzg1UFNmTVNscDRRM0FvNElxSXlQVHFpY25mWFVOcGJVcDlRT0ktMFloTElETDF5VzVaOTRUTHBXNE9lcDBpMDhodlJVMGgwVkNSUFc1cjlMUUpOamdHS3ZBeHVBaWg3bS1CQnRBbVRnQjNxZEpvekFSM3YtUWZKYVNFTld1SU9XMExFOXpXUTcxeDVfbEQ5WG12VzRwOUNtbng5ZmQ1TEIyelNSNzN5SzB4WmxhSFcxcnhqZmVONEZnblpWZi04bHdaWjNFZ2ZGVC1ZYmhjQTNDdnFrNk1QX00zaFFsbWZVeVlxMWVSSm5OYm9QLVZjQ2trdjF3NUQyZDQ1di0tZFRtSElIcWhHSWR0WEZfUFVzR1VvUFpuQldyN1lIYzNsN3R6elE2dVlWUG5Dc245VWFZTmxpZEtPNjJRSlVXZnAwRGlwWElFNlNJNUZDWEw2MkZhMVZicVh3bmVGemhUMGxia18xcndRX2oyVWE2N3M2ZVhuY0ZUQ0ZzZlBtSU1OWEFlcmJoenA3MlJLX3YyRW9XeDBSMzNLUWNOYlhNMUJmUUxCLXVXVnZCdS1lVmYyVzBvLTItNnZ1NERiSnpTYThRcm11T1BBSEZzUHlnbzdSX0Q5QjhCTWVnUkZGUzdHaHd5ZWFjNUphbmFfNUZtYnQ0Q29Xc1E5WW0yQU9PbVc1b0x3RGp1Vjk2MGowUGhCVFNpcEFkamR4dE1rSUJnVzd2TjdsVTZSZW1oVVczd1dRdHA4bjNVU1pMRjV0el9uQWRRTkdCVHRqM2ZHOUdRV2VNa0drZ0duelRmWXI0akliY0NweTlGdEhkVEp0NVlhcEJWSWJWeUw0U0FrWGtEblNvVVVzR3lqNTBQN0hxWWI2ZmdZcl9lOTZhMzlrSXM5cF82MERqUG9ZQnNrcnpCVUdjQmNOQmlMbjZMTFg4ZFprTDlPQ2J1V21JQnZMclhhTVByVmdXcmVzUENjaGdEQjIxam54aE5Wa09GcTc4bDBHcFRfdTlsRFB5cDd2X2FfbEdhcExkcnZUS3lVb1Viajhtb3dRdmkyMTNVTGVqc0NhUGpnb2t0UTN6QnpvM1pxRzVaTlVNNzZNY0lKanlVN2hZczV5eVdPWGZxblVfR0NzV0JGRm1penU3OWlrTm0zVS1JMGhMOEdlOHhuWFBqeGNvUVZyd1FvWnJOUm9uSDFwbENORG9zZDYtWXhmM0xLSHlEQjI1ZFVyMV9FWE4zQXBBalppTkNQQmNDaUZlR2NJNEFwUXBpY1hfWmR0RjhjNDF4MXJxVFljNUpNNGJlRkdVS1BHREhWMjk5WjhfTTJxXzZQbXRmZXJDUy1reDRoUnRQb0xPY0RQZ1hmWWYzdjdfY01BYzZrQWw2TEVDcVpmVGhJNXJldk9FWHpOT3lpSEJWbEZjdW1SUG9waUk0UzZEQlpjMmJMOUg5dTJ4eFYtRmtyU2JLOXZGNkdqUUY5bk5DTG9FSFM4eGNWOHgzTERYRmw0TkxmajF1N0JKZV9GaWk1S0RuUndTTzlzSkdNZzlqYnJlOHB2QlNjcERXOU1QUnFXaVdmS1NxekJFU3FHWjFKTkdiV25JbEVwWE81bVFYNFRFXzRwUUx0czNUQ3JGR25BOVRheDAwS0NxVnY5aWVnZGJ5akFFTlNVTkdkeW04SXlPejc0WUQ5YnVjdXktQ3Y3UTVRNk9FSnNfUUpiQ2ZkaUJEcUwtZUp4WG1Rd2l0ekVmLTNuTHRSUXhRcVl4dnFxSmhhcnZSZDA3YnhxM1JRS3lPRWZEZ0VwRnpuNXJWRlBabUZJWXBpd19qc3pobjBUbWtOSGpoQjhKNjVxSi02ajVfX1NncmlJN0R6ZzFLYVdrTUk3cG11dERRTlVQRmQwaU12Q2FoamZ4Zjl1cGNMVGlfY1VjZEdBU2FLUm5mVXlXYW03WHhjQ3dBSlRKVVEtNVlQR2pNdDhmeFpmamI1MU1JdE1kWFQxU2VxWE1sQWRndWQxN29xYmxlbGdEbkgwWlphalBCS1QxT0tZNzZVMm5DOHRINFN6TmpmMWZ3ZXhGSmlTVWhwTTRYdFVGTHNBaDFJektSODJyN1c2eU5iS0wyc2lfRGpiV3JhMl9lM0t4UlhkQWROeTl1eGtSQWtKOF9Fc1dRWGNrQ0RMUWJMVzB1bm9YcWd4NkY1Q2FGYzNmS3dVa2g2VDdQU3BaRy1zaWc3RmVBdlIwb3dLOVR4X0FfUUNiN0w0WVZsWnBoUlgxZFlFUkE4VVAwSlVibTJwS2dUM0Iyall3T2J4ZGRUTm8zQUo4VlNZYkdwLVIzTnk3UjJpdElkRVBqSnVjcUo5TmtQSXBQZEtrTG5Ic0pVa0RmcGlIOGpIbXNZNW1wY1pXcUJuOElfYmJldmJqWFM3N3BZQlNpbm5NenB3R05IQ1JjSUltYU8yd2tiMXlUcF8xRkpfdHVWaVVCd2lsLU44eXNMdlFaRE1SV2FkMGQ0UDNxWHhzX0NGY1hqelpMOUtNSkg1UUJQT3hLSk1ZN1Rmc0VsdFhsYXlIbnhCZmZrb1o3UktXczlXbWZwMGJpRExIcUw0QVR1NzVxdGpRVWhKUjB3all5Ujd5SW9nMERvNnlqMkV0S2N2MlNjUXRyMjc1S3B2SDN3d2xkb0xKb3BsZTNwSVRiWVhLUFF6QmJrcWtYcWFRRmpHeW9PNTIyQTA1ZU1leXlpdWtyZDZydDZwVmsweFZBTzk4WkZjTHhlXzRjMHFUXzctUUFlOEJWSW5ON2pEZXdUdkpUejBzbzhzeXo4eVlKNXpzUWVrMFNkaWJEeW1FSmNWVU5UaTNUbWtKVGtWUjN4QlR3aXM0amQ3b1dpSHhkYVU3dU5udC1mSTRqbkNnbENZQjRFeEFJTlRpVGF2dmJtWkE0UHhmVW8ySUtPQUxqeVVoN3FlNEdsV011ekFhQzJsTGtXelotb3NNX0l3VDZsS2RtYnlfcnlSVW5qQnRsVVBhcXJGWFBibUhwaG1tRGE1VGVna2dhQjVWNmdyN3pxWk15cEp5M0x0aEVVQVMzbmJTbmw3TnN3NWVWaDFVdVRlWUF3MVFIVjBkZU9hbGJlcGhxVUNzSGtQaHh4NnB4T0tJZnJQQ01HdkZHa0ZnREtvbFNnMkljWjEzc0YyWWZNX05JTDZmcFkyYTRWenhNNmN2aWRXRHBReFZFRHZtVW12NG5OOXpORTNCT2MwLTBJYTI5em1wMVYxaGJ6eHRoTTFDNkZiMHRhWDBUVXB3bkoySkhkTUNpeXM1WGdpT2JweTVKSDdCR1VFYU1WQ2hGMmc3SUhVM00xbkRINkdZY3h3czJNblBGNHBqdjhuSm0wZ1I0R0tpSW5Zc055LWpZQmY1R0pINWRKeVI0Rk05X0cxamhTUWN2OXVSOFV5b1Q3d01ZWjNRdWd6dkZRbVdaLVdkMW1VZlo5ZjBWc2wwRnhPY1BpWWtJVWh4aTRYQW4tdE0wUDNOTlRQVW8wM01aVnpzd1ZZbTJYZXZKajYwV1lERXZoc0dkTE1fWHFLTlNuUW1BMG1BaG1haDJUS1M4LVBUckFKRDE3QmdBWVhlMVUxY1dfalZycnVfMjJBWFNlN3hwc0E3cmVEQThWZk9ZS3hZWVpWLXdodmxPY3V3bWt5NUVYdV9kcUJ6OF9MZklKM2REaldZclZfMTFDbklIQ2w4UnJpZlZIeThuZ2o5a3ozYVgxenNtSTRYalFxNFlGaVFtS0hST2NlNmdVLUE5OE9SamlzNVJiaC1iNndxVU5VZENhVHZ1VGtfRHJBWmdoWnFCYmlXVVQxR2MwMHBzanZxd2pISkNjY0xKTmlmY1pUd21hRDZ2UVlIQVVTUm1JRjBkSDFVbUtMWTdRM0tiOTl6Q3RlMjlmbVF6MEhMTGREdzdvZy5raE9majRvdGxHVG1qWFJQN0dTaE5B"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '0d5452db-5413-4b78-98a5-6d36f333153d', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:24:45 GMT', + 'Connection', + 'close', + 'Content-Length', + '11688' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '04e7fbcc-cdc4-4653-881d-22e01b067600', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHFAAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:24:45 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:24:45 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/recoverKeyName-cangenerateabackupofakey-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-cangenerateabackupofakey-","deletedDate":1561724685,"scheduledPurgeDate":1569500685,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-cangenerateabackupofakey-/2583e0165a0d4ba0ba1806fda9fb8901","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"oWo5c9VDWpY4XzUAJ_ugP7DYZv5DBl9CvfXtVZv77_qhJYLJVxtZ8mBg1vNmGuhdymXtm8lXuv0HYdvFpHTMJ8MH5XguGo6rsj47bV_Ht4_4Lgvzr-OaRBP4dL2GYPXhTJEKwa5rovVa4lVUI0b7Xfydl1--_YQ-7eJkTVa877Cs-tn1LyWtCeFb9GZbEuzX63onSPqDxiOoZNyxiHCK9dHLB_GIE3qJC-VoqHu4sGfYO6J4tJ-9fj-O0CslDX_zZ6IEqlq_09uMDi6x4zdcI8JQcGzqhKqr6bJZQ5RaNuszWMpeOIr4JQmUews9VdLjWMr6uTTydm5qwkHaJAT0Bw","e":"AQAB"},"attributes":{"enabled":true,"created":1561724685,"updated":1561724685,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '3e3cf236-fe39-4c9b-aea0-609fc4578b7b', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:24:45 GMT', + 'Connection', + 'close', + 'Content-Length', + '879' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '39d43c9e-7ca6-4ce8-9b10-2ceb94426600', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHFQAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:24:46 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:24:45 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/recoverKeyName-cangenerateabackupofakey-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'c5a86a54-1d6f-47c5-98e4-f4d7cafb01dd', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:24:46 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '04c284ac-e8f7-4935-83d5-537fb3e76c00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHFgAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:24:56 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:24:55 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/recoverKeyName-cangenerateabackupofakey-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '2087dc5c-7e46-4985-9e6c-82bd8068cf08', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:24:56 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '0cce243e-06c7-4906-954e-68c84d316000', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHFwAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:25:07 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:25:06 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/recoverKeyName-cangenerateabackupofakey-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '317b8c15-5458-4196-8845-4ddcca422584', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:25:07 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '0090ce3f-8177-4352-a988-c14010ae7600', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHGAAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:25:07 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:25:07 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/recoverKeyName-failstogenerateabackupofanon-existingkey-/backup') + .query(true) + .reply(404, {"error":{"code":"KeyNotFound","message":"Key not found: recoverKeyName-failstogenerateabackupofanon-existingkey-"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '132', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'b1d621f3-a856-4b3b-b9ec-9ab13422b6e7', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:25:07 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'd61ef0e5-9cfb-4675-aa92-a607ecf86800', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHGQAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:25:08 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:25:07 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/recoverKeyName-canrestoreakeywithagivenbackup-/create', {"kty":"RSA"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-/81176a7d2d2144bc8024c99e70fe2cbb","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"mKkZRl3qG-Nnb_qfhQNv4swFpp_808T4nhp2kghlPhgLva0__-k1Tik4iOpXvpRRPR6yA0HPoxRrZVORQ9g08f5utNxi52uAX-yGRKxPAykDUtkORGMIhvMTQdpKn7ndPixmMqean79hMEkMqWAt5dKW2bsNzC5n8pg-cLTO-KeP0u1MAUc-XuP_doe2SeIsauEnCEYm08jvLhMbVVujL34HRw7JT15XR43LBCZ5o3h-BLWS0r4rUwEBRksJBVKbgUbFVyIYuMsthYgfO1iJtDvp7l8ie3_QkX4kQPsQuypI9S8BAlF3MJ7BUjlzDj23_xEqLW2dwbE_mY3VveTEzQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561724708,"updated":1561724708,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'b01e6183-6bc1-490b-b7cc-41c7acfb5f06', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:25:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '708' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '52f5f0d4-be51-463c-8e89-ace877896a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHGgAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:25:08 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:25:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/recoverKeyName-canrestoreakeywithagivenbackup-/backup') + .query(true) + .reply(200, {"value":"JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLmVhcjR1Q01EWlA2dG5ITktxRkZWOVgzUkdvNmZFdDh0R3VBT2tsWXJNUi1fSlY2MVNOMlIzVThNZHg4QXZqampFdndOQnI4ZENUZDRkSEwwT2FQb000R2lQOXJHaU5xeHV2RkxiZm13OUhnWGh1NUc0cTBJNVRLNEhhaHF2eXFldldDQTF1dDFqQlZJZVl0cDU3Q2I4WUZoRmxhc21DYU9LVTVpVmtGa0M1WVNibEVIaGxlcFpYMV93RHBjS3RHV2pwY1FUZmtfSmdvUUI2YWNERXpzLXkyd0dxNHhibTY1SGVSYTB1bW04ZW40NUItODVHTUFpeUtUYlNIdjd4QU5KdHhMWnRESHZCZGV3WS1ZcC1ZSE1FMTFmckhnTFJvQzNLaXFXYUdVZU8yOVlwNXRYeUJDRlBJTTlBRi1LeGNKQ1pHQXRhU0xNbk1Nd3hhQ0RBcnY1US5tRmU0VWN2NGYxWlNvamdMWFZqSmJ3LmFlcVMwM3lBQW5JSXN2cmJTb3F3d0ptUkdyYWtDQ0tMZGNrb2pzV3d3Wktua2N4bUhzc0RuUFRnVkpfSV9nbXFpOHNsamI1YzA0QlJwNWVJSkpWeF9XTmpnNVFDVll0WGhVT1oxOVk2SDBSd3VCMnZTTDVadUhrVkYwZWZMMnh3Z1VjZXZaT3VNV3YyRW1TOEVYUm0tY2l2d053LW9oREFLWkZXUWNKVzhQX2Q2NWc1MmhzY1NyUWp5QlRwTm83bTBHN0lsbkJTZnd4LUdZVWV6LTNKeHlMSEhSZ1hQY09peHc2dldlUXp1WTV5SnQ0R1hHMlJFTjZaM0VXMktlZG1LQ1BGZnVIUTFqSW5VeTBmdXpsZG1xeGZpSlFTYWlJSlZVTlVWQlRwRUpzWElmaGlVSXVfS1RoS0thRXFSSjRjLUJIMjQyenkxTUdkZ0E5MGtqRUxwNk1iRnZMWDBOSzRZbFhHSUptT1JPX25OMzNHSTFUNDVsSEZTSlA4V1JoSmZRQjdObjI5QTZ4aW84clBGSmoxdWUxbFJVOGFkMXFrR1pxcWVBRlVfN2VZdVM5SFFlelhZZ0NMZmRHN1VFRDB2U25oekJVUmI5RWJYWER4SW01NXZITVlhYXFmTnBQVXBMOUhtMXlOdW82T3FucU1ROC1WaFBhTl9PYjNlR1QwMF9sOVhUVW1odGtsYUh5LURqeEtEVzJHeU14QlpPenlZT2xuSURydjNBZVBZdjR5QjlFWHJ3Yy1kUDNiX3lXZ180RVNqeDJQMzNreURiSUJZUEtTdXItUWJfYV9ONUNtb3J6cUJoTldyRXBQenFpVVhBLW80dW9qcFd2SGxrRUlHa05lUmEyaFpOWFlOYlRPaThjUmx0R2JJNWQ5bXlwNVNkcGFtWDliS1d4bDVHdkp6SFpzYjFHdVhCVjBrcEFNRXp0ZzRSQ0FCVjZ2alJtQzhrWkE0cmVzRV8yOFBzUmYtdVZQUzk1eTBLTWNna1A1YWtSQU93amRHbUNkQkUzbTRpbzZKUjZ6c0RRWm1MMG9ldGVlRV9KbkZDWUk2U1JtY2pUeTc1cDhGbzZkSTYwQkdHZllZT2JwZzVjR2cxalBIYVRRVV9tRzVUOFUwQmlIVEsydnYyajNfRFFfTF92TDZwYmJKOEdtTnNhcTlXakozUGlwRmNQamZnSXVvWnFVUXYxamZyYk9WLW0wcnZxbHF1enpKbHJNZkdQS1BvWkdGUHQ1MXJ0Y1JBSGNPSEdGRjBkQTR6RENab0dJbUxmMHhMN0N0SVJRNlF4LVFMU0tHeWs4ZHlSZ212Q19qb2ZFdVVPSDROTXVlR0xNalVMb3dsOHk1b0ZhQ3RIUHJRQ1YzaDU5VWpJNDh3SmZQSk1Id1psdEpHalRjNkZub20xQ1UzUVktZTltTnpDZlphYjRWM1Jac0t2clB6UW5oNFVWTlJtQXR4RHhuOXluSWU5NC1iWFlWM2RUb2lfcjZxNFpsODYwSjRVcGh4R0c0TkhkbjM4dHd5aHNZczl0bWhVbXBjbDB0b3lHOU84ZTZuaW9MaEF2UGZXellRUXhLMHhCOXN0RDhEZi0zd0VMWWJhWjE4SFBBR2xjYWFsX3FBNlctanh6cGh0RFB0dlVDUjhIUmZWRDlMakxYTUhYakhEdkN2cUxqdE43anBpSE01M0RHeFhURmpvVl9nOEFCOERqVlFlRnZLTWRfUGcxbGI0VS1VM0x2RHVzWlFHS2lvaWZHNko2V2Rsc1BZMExWOHZaeTBxcDV2WFNEazBFRWhXVVJ4dTlJQjdmRVZOS3dhN1YwcEp2MFAxYUVzRnlQcWdiMHdwaEFGOWZNZWdHOFAzM1cxeVA4VzMtdWhHSFZQamUwa1lOUElENzA0VEV2dFB1Z3AzTlhIVGZzU01aeFlXNzIwY3BTdDJDZE9BYmV4S3pRTEY3YzNMb0liNnVxbzVZOUZQb0VRREcyQlpYY3diaEhDYzYtVUVIRFVDQjJCbnR2UDRGa2ZuaEpHRkh1bmc2dVhvd3dlanBzSjJOcXZyRVNBWUQyZ2RWXzMzd0sxcUthZG5xVmNNUV9aT1ZwMWZ1cEk2Y0dpUnBXN2Q2ajNYeHZMTTFFdm9RcGtsMFZSb01kanRydVBWZkVlNjd6R0ltZ2stM01yelY4WWV0eFR1elpNV1BDMFp1YTNzdzVERmlBUTJLM2JnZ2lYOC1obzRuOGRpcC1SYlhDd3YzNm9nYXlNT1NoaXVuaHRJZ21VWWhjOVVPcEZoN0xicnhSa1lfWnZ5TWVGT2gxQW16Ql9XR0ZkMTVSMk1IdUlpMWFoQ2h3bm5qMHVIT2lTUDBDVzRKS28wS1lSYV9aU0FzT0FrMk1LM3pUWFV5dVQ3N0MzY21GOUctcGZvbzZJbndGLUJFM2ltSlJHZVE3S0VyOHBVYmZXWUJTTXJWSDJXaHlzSE1kX3NsOXpVMUpDUlFGLWtqWHltX1VVUzhqZEVoSWRiUk43WHE2aVIxZGNQbUNwZS1LWVd2Y1RqQW01N3dqSXphZWVYeXVSWWFHSWZJVk96RGZzd05NX3owX210dEFrUXNrNzA2dG1UcUFmSXAwTEZYSlQ1ck5jd1NLd25ySUY4NWppam1vSm9rWjhGRm5USEdXcTVyLUhfY2s2MTZDSzMwZGVvX01LRURNei1RLTYwY1g5Rm5QRUVGR2J6UXc0S0tTQUZ2WXVwRlByNDhhaEw0eDgwS0RhODlEOW42aGZneS11dFI3cVhyX0FnZ3ZlQlpka2FHOGR3WjNUMWp0MENpVnRtQUU0b3pISERyWk0yalNXQS10b29fY0U1ZDhQMUZSdjdzbmFPb2FUZEdwX09aQlhGMmVyOFlSRXVNR1QwTkFjNWdPV3cyM1Y2VGNwWFJSR3BkQXpBd2paOHNOWFBuM2N1RXM4bVVFNzVlLXJ1cFRLbkdsODdGemxKV0UzWXZTdG5yN1BfbHdyZjlkRXBLdDZYU1pTbDl6eENfclVJa0l3X1pnOTBtSkNYN3lVbkVkaHhVUnhmTHNRcUhrQ1lZXzJISlZ1UDZFMFZXOEpNTEtMTDUzZ0pKWDl0SGE2MVdNb1pzUTliTi1WdWQxOGJIS2lOUmhubGNKcmR6aTFmZ0lNMzJDNmpsUnJZZWxFRHd1UGVMeTZjMGN0cl9nQTE2ZU5fck5ES1BLS2RxUWxaS2RqMFBPSmpBMWV6SEp1QkFfNWtPU3V1MXFoVWZNVkhUOTdCZC04eE12NUY0UlNCck5PVS1zM3FlMlNjRnRPblBxNWFNMHdKSDZSLXlsbFA4Z19ZY0xrY1h1SkJOUmFMM2RrTEhPNExZbHFkamx1T0VCTTVnS2RBZUh6OUE0OVlCT21oektNdzZGbUlLV0xWYkVsOHRuMHU0dXBGb1g0OEVnZGtNeEpSdjdCd3VGVzBieW5ic0ZtTVp5MVNESEtUTnZvUFBVZEdFZDJFYm0xbm5HX1BfcEh6aXJKZzQ2T0RyNUc0SUc4ZWpJdXVtVmZyeTFXLUpybjZCZE14M0JBTzdGNXlJVXJGSXBBWHR3OEZMZGJrb3M4b3VJVVBxUk01V2N5Y3h1X1dzNngzMzN6ejV0eF9sa3JrWGdGekl0WGc3bk1Nc01wWTUxLUxhX2RxbUVXRmJRZWs4eUh1Y01LMXJYcC13OTkxWGw1bG1MeWMzNnRxT1FxS1dJOW00dXh3ekg3ZWJlc0VIcl9YMFI2c0wxOGNrQ0xka2ZLN2RoZmI5QVB1R2ZPSm1nUk03QnpaNmtMUzRfd0owaWd0OG9odUNFaXhSbmdzV0djTTN0VnhmSjJxemh5UHRqTkUzdldxR295ZXk1Y2p3UEgzNzZOWk9UYzIzQWtaMVhaTnhndDMzUTZNaHdlVjZ2LTVrMUJYX18wX1NMUEhZN0pRTVRkX20yNUw2RWdnV3hkNU5saUtnRGR0SXR0eTZ1dkdPZEd3WXE1a1FVSWRoR2JKU3YwVDdWU3dRRkFCREFGRFp0dU1YT1A0VU1WYjVNaGtoVHlpMmxjM19BYk5GTURtNndybHJaaTNaTzdsVEc1UTR0STZ0UTd1Rnk3QkhkSl90SWpZUVNXYkxDNXR1ODVzOFpneGlNQm10cV80T25zRl9adHlXSl82TTdtU2QtOUwtMFNva1B6cWgwY2N6VEdwSmpWa0ZkcFdSMlZUU01vSEl1T2hCTHdFbHVybjctb1g4UkV4aGxWNU84dXZkTkNJTk1TUHJCZ2o0UHFxdHRMV0tUTDZ6M3NZYlQ1aTBDWHFOM205WVBZdFlhTDcxUDh3TG50cDlWY2xyVzFsZjlWbzdRWUl1bHJEVi1fZGJYQW5ucWZrRTBHdzNmcFhINVhrY0RjUWZ3OFFjTDhUc2hSd3BHaGh6VGQ5LTR4OHY3N3k4Ty10Qkp0aEVXX0h1MF9vN0RsYTZEZTR0SDNfbWI4RFE1R3IycGFvaGlGUzRtQnk2RlBVRXllclFkR0NOU2pMRjBmbEVOSDdoWkFHSFVIdnlPMGVIUmZ0VDN6d3N5cVhkdWhLcU56c09EbE9UY0dfaUZFaUhOcS10bkNtYWNkVG1DRkkxV3dnU1lLWkNuOXhzSVVPMFVsNVR3dlluM083YllPN0NFQ0c0R0ctOFE5cGdPYWpMV2ZjQklRYm1RZmxqSlYwNjh6WF9ZS2FxUl9aR0FVS1oxY3A0MjdzbVUySV9kV1NlZ1BZUVIwREUyNW14Sm02cUszMzNLWnV4OXlWTXdNclBYamtpZXdmbjNGM2YzaGZ0RnJqN18yNmN1Yko1QjhVTlktUGpnTmFuNU9tNWpIem5SQW5JYTltV1l1eV9qd1dKY0NjcUhpVzhSWEUzMVdRM1NwdWVCZ1Iyd1Vxa2k0aHdqSFhabW1ja1A1SVhiM2x6UFAzOXd1TmhOZ1JtUHhVa00tcUlqQUVpVlJKTXBIbGFtTEFCOThsR2VMTTRjejhKenVncXdIR29iY1VfcXZnd2hqUFdsOTRoMDdlRW80NzRlalF3ZENnMkU4R0Fkd2tyQXZMUGN5QVV1emVRdFE1X3owVlZZb3dveVQ4bUF3Z3RZckNPVjhxR2gxVXIzZmU2cW9YVlZ4a2Q2V2w3RmROdHBEaV9qbkJqdGxBc0NvNGMyS1lueUxDcUVoQ2NJNVhtdDBhODE4YVlRVE8xMVVjZ3ZQbEltMVlMenFkdHZtTUlwbkNxWW9OMExKVWZuZHBnOEd5S3lEUHZJNklsY3dWdW1jNFJzNkxXNVpETVlVNExHZ0lEdS13TFRTcE1SX1RLblotQzRnWmh4bTFSQnNCcTA2Sk5yMGFjcC1vS0c1ZFdzRkFEOFA0LXB6OVhmYW10S0FLLWxtQW92RTFmZnZyQk5ZUEZqRXdndmQxblhDWi1kLVBycjJOS3ladlRMWV80aUNlWl9MNUJadTdUTTIwakpzTjY4WW9hV21STmZlYzJWUHBLWEJwSGNMeVpCXzFxWGlWUjE5bXRjRGFkSGhVaGVSdjQ1QkZWSG1FbC1ya1VwXzR5MWhwcmdyV19IeGluOHJ0a3lYOUdaMlQteERDUk5ZRDh4MHJ6Y0p6bTNtdENrc1R3bVNLMXctd2lLZjRSSjR6Vjdpek1HU016cy0yRVAxTTkydG83OUtaS1Q1bHJIUERIWFk0NFJwQmZwOThTTHlZejFaWWlrSUhvV08xckJfR1lNSlpqWEEta21XQWZMdGc4N2JVSUtHU2ZwZ1lMRVlQeGljcjZOZmh5NVN0TWQ2azZKSnhGb3NNbHhiUXQwSFpTeHlSYWhaNWplOTYtMkk2UVNsNWhBWEtJd1IxWFZjZmV0RHI3T3A4cDZkTFI5SUYteVowTmdHTjVNRHBYQzY5WXJUNktrbmI1cVVoOWJGLWtzcjRjaG1vNXJER1N4TjlOMFphZ3lobnhQam1jLU5Ic0ZWbUk3a3IzWG9hMXZ4QVhoOHp0R3JsWTVkTi1PNUxtY2pKcG9VQ3o3aWVyRzluTzRMVjFTaTNkOFpFc2RLa09lZ0dpT0diazROczNXemdHdFJXaXdFZDQ3SndSYl9CTER3ZkRDSlRYT2lzQVNzNWNKN3dOWmJzZVJkd1dNazEzTDVrRFBkaV9wTm0tZVpWd1Qwc2hYOEZ4MDFRaFlPVExKNUx0Q203TjFNM2I1ZlVPZFdxdFNSRFdmN2VKMkNYT0tDYnNFZVlVVXVoRk1oYzRKVlI4TGY4VFFMajJjMVdpZFVOa0h1S2FZdzMyV3A2SWtNWlpHWXU3alpsYWt4SXVLWi13RDN4WTZQTjN6ZkQtSlB0ajBYckx4ellibjExbVZUaU5HMmlRZW9INjY0R0hDNm9zWU5ld0ZmREJIOHlEdkhKQmhqUjJKVDU5ZjBRVWVxMktUMFZkN09DdHNZZHNUMFN6bHJpbHlsY1BIZWRBaTZDVHczNzhFYTFjUmRFR0lISTZtemMyZ1RLZmtCWExzbzJzV2ZHbFBZMV9Ob0l0bXhTbzVlQlRtQVczRmZzSTZTTmlRNXZKWW9qb3RxX0xLR2pyZzlSNFdiQTVHaEZHNm9LRnFmYVkzTGs3aGNxVHFtYjFsM0RVc2VOZUQ5S1pxNDJCN3RhMXltOGJpcGdyUl9MSXd5YnR4b1pVd2hHNWJiRlp0TmJuajVpR1VWYzc0ejJXcUpycDctZkRjWWUtWlV5VlpubkxIaHBodWhvQ0l1Ym5xVEFtUVJJOEEtX3RzUUJqaHV2QkptRWFfY3NCSzdyTm5KNVItU1lUR1YxMC1WWU84eVBRTm1YUUVPb3BnY0ZoR1E1NHZIUF9UUklQQjhwZU1XdzlXOEYzVVlKTGZidGxZUXRlV0xLZm9venNJOFBicVZxZnhjaDdJb1pJNFJuM3JvQlFMQ0FfX1hibkR3QXQ5VW50VmZmVmYydU9kWWNaeTF0OGNCcXVlLTYteGJPX2pTeGJwZzNmdXB6OHIyTHYzRkRSbzNJZzRtUGYyRnNEa3k2Zmhrc1JfOWdidDlXc09TNXdaVkRRN0VWWlBGQmhZc2U5ak1OTHlOR3d0REpqYTZQaTIzN1ZQakdYVzF0TUFLVWx2X1dJZksyQjdZeEpENVpVX3hGQ1dSbXpKZFRrMGQ0cTczb202em05OVZMYzEwNDE0S3RYQUR6bFdtNWx0aDFDc3NNLV9TZTkwUUQ0Tk1fMVo1RHhfajNLUGtHRDhtVGJiTVluMElPRWxZQVJzYXdVbjV4UXVWc2Z4T2pxdmNKd0pHcXd3NmhraDVoMjByMXNPWi1uei12MjU1SmlSOE1GUzRxbGhwZ2NpcnhZSFh3N2t1WDBiVTU1VTVCWm1SeXE1OHVoQ1RHMm9TTmt2SGJjTkxZX2k5bVFtWDJ5RnhCb3FXeU5YNFkxVWRRMTlqOGwzTzdkcnpVMXg1MWF6N3JIdEFxMHdTbU96T1hET0R2d0NaY3FIZnJCVGJ4V29qQm5vWkp6LXJMd1NnTkZBNTVlMDVHY3U2dkhoWGo1RzVkdzVkMEkzcndpQWg2TDFkaHdIamNqUVVwYm1kZE1DWDNxdW1NQWZpNDI3clB2dGVueW9YUURhM2puRXBhOVg1RDJQVS0zd0R0RHJGWnlBXzg3aGpEWVlvTlgxMDNTUkJsRFdNel8xZDhsUlpIdzZ2V0VVNzctV3RydHU1OEFvcERkcnltMEdEcTF6UVl4ZVdiOHBaM2xOME84T1hwblA1ZVRvUlRueE5yRWM3eEJHYmNlZkxlVFdJLUNhX2RKZ3hLLU4zLVhnSWdBaDAxREJ3enpFYUN3TFh1dUlhaEFPUFY0QzNXb01qMm1pbm90aVVlQXV1UUdiZU9ySl9Rb0NXVGVhSHFBX3FGV3RFX2FKalItbkI1akJIT2F1R2EwQUJELTJ4NEs1cmdMaTRmWHJ5cFFTV3l1QTYxVnl0dTBkeVNoV0x6bnhlVF8wVE5xR1U2cHdxRlFXZm9UTjh6ZUVCTGhmVkowRXVLaFFzN3I5bktkQzktSUFmSnQzXzBLTS04VERXS2lkZ3ozcmg0Q1JNdlJ5WHpibVh0MUdUNWFtLWtWZUFKQ04taTNLSXIzQm1iR2p0MVhDLXJraUdjeTB5bEt4RlNWT0dDME11Y3oxUDJFc1RTWDBRbUlwb0pvcl90MHVDSHdTMFFKNi1UMFIySWtDT0V3Y1RYbzhZOEdiYmVZVDMtbFdnUUJmTGRaMGJmMlFHQUR3UDlQVDRfYUl5WFFqNXhIeVU2SURaLUs5OGp2Z01LTWxCaklJb3AyZDY0Z3N1STdFajd0UW9uMlJwYWhnNHU2VFZ2RmxsUGc2UXNSeUFPcG1IckZYMUtJOG9oYkhFZzBWWVZ0Y2p6ZkNyOXYyVnhQMUhUMEZrLTcxTlNhTVBKa1dhemNCRnFvVFN4SGJDa1hBbDladGtmeDJjUlJsaHRhcTlzVEZONnotR01qdGozOEJ4N0FMY3dBQ1BoNTdYQWo4cXJzTkNYWTNVLUdudVlubVNPVmphaVhMc2MwQ3M1eUVPSldpeExtVVViV1lrUFM4OXA0cTBQX2QzVFlHVnZrUFpmWGgzSy1kVDVzTnlmalNwWWUxM2hmUHJhMndtd29TaFo5TnZ5TjZmbGlSLTVSNWptZHkzaXpIdmRMMDdIM1RyazJFV1FZNGFkNHhsLWJEcTVsZ2M5WnMyZ3hpSHdqSm43c2xwM2IwQzRZdDlwajVjb04ycFlQUERXOGJxUlVnWElzUTdENzFuSlVBUWhjS1BWWm5ZU2o3VEhHamtLWmdYbGVHN2IwTUgzaG4tNkdpc2FXdTRCT0FkX0pRS1BQVFI2bG5tRmZQc1dYR0twUzdDRnNTZjNzZVRZU0FzZE12RldnRG52MHp2alZyT2JreV9pQWpkZ1FUS1dQREJJVlh1cTVYVVlhZkJlOXJaMUhnSjJLb1A2cGtubUJWekpNekVhTzZlZnZhNFR6R3pnbmZyc2ZBQjRBNGQ4RmQtU1pMYlBQSWt6d1hOUE45TDl6REtPaWlITUlMZGd4eDByS001SjlxalB0bHhmSUhFenQyVjJ1YlY2QmdBUlVVMGhpcGN3MGRySmplajhtZFdBUXpkWHZLR1RrQ2FUSy04aloxUjBsbmg5Z0R0SGRHUVZCbDVVR1dIa2dBWWxfLUpXMUF2SmUyaWVzRHBPeURZbHVqbFNkVjhUajg5dHRtRWRQRlhDSlI2NVVueWNiMnNfeThfR3pNbmMycjJsVExQQVJmc1RrX3pzdlcwWi1Ha2FmRTRONHhvYjlSaWdzTV9HbktsbHg2Tll4UUJCSE51cXFWQzRKRW1sRnM1ZWhiOVI2TjJHSHdpWFRkVk5EeUt6cHdncHdxRjd5ZWVrZXhCZUotTnJCS3FaeGJ5T0IybUJlZTlfU2lyeERKV3UwYktiZzlwNFdnY1djTHVSSHBJWDAxUzg5UFdDbHpudXdTTF80SEZWWEtvbjZFNkUzdGJULXJKc2hxTW51QWVabmN6VW9raUEzUnVQZmg4NkdTOTEwcG1RcVl1aDdHRU9lVlNSS0ozWktUTUI1V0x2SnJSMUVmZHR5V18zZldBaGhGWFY1SmNudm10alZjdzRzeEZRS1lPSURaVmdQMmxzS2RJd0VsNGhiNDI1ZUN5eTlfU2JBcUJ5QTlNWDQxVks1RTVpQUVtRnlndEF4d2lwYkJjbGVBeldIb0pfZGJlblV0OGdaQnFydHZ5ZllCV3c0Q0dXU0F0dkpZMk9nQmtzeUowZVRYZXpVOE9xemJudlZoTEhCeWZ0alduM2hrQ1R5Zi16alB3cWF4eFhfMGRzQ2hRbU5DRVJKRTU5TlBLYzhTUTBzSW12RFRMd3JaUFp5R0RFcTJ3WjVKcmdLV09Zb1czSDR2R3FtSV91SUw3RmluY0poNi1rcXE3SFlKeFluejhxX2lYckpOenVvTFRoOUctMjBab3N0T3htVHJOc1RDSGxaYUVIVkZwS1NtUzBLZlc4V0o3Vlh0aXoySld3V1VHZDVZbzFGb2sxTzRMTFJkTXdaVFI5T1V5ZUZFNGszc0d0enhmZ1V6WmZKcTZRQ1VEVzFQNy1GcW1vTDlaSHBXMHIxRmQ2b3RJS0p1SjZzV0stcEFBUS1LNE4zV1M3SFRwMVdHNURfdlVBUmZQQWhkNlF5NmN1Z0hIOVVna3hCVW9fdkxjWEpqNG5RSElYQ3AtNnNCNmtyWmxGalg4Ri1tR0VDc2RBc1hSQ1Q3SlRCWF8yT1FodVBwVURSTTdHRzV6aDVsNHB6WTdqWVloaUNxcW5kR2R6b1R4TW45TGRQQl9ta2dVV3pITEVlVEpqSHZTZlpHMFBUaFBlR0M2bmlaMVZNOW1hV3pfdnZxYkZGejl5clNUb2wwb2RuOXVkcy0wRk5paGZnUXJ3a3hGQjhwdUdGR0JlN1dkUVNOVHNxRkFlZS1xWlVNUm1MTjZtYzhSd0pyQ2RnUkpPMmJCbFJ0LXVrckc4UzdFV05nTjlTeThqbFdJUkRFME9FMGtSbE9vM2FlNTUydnIxV2N6U083ZnFJMVAtNUQzc1BnRDltSVVTOEdEVmg2Tk4wdFdFajNjTkc4SGdBVjFOZUs2MDJ2enJpTUZySHVHSl9POVV1QUZJWTFkeGtjM0QzbWlfem00SmtkcU02U09CSG5FbXBWMGJmQ3B6SV9VWHZpOWMzZFdkTkRKQjNXRkl3cEIzWjBZWDczaFJtRG5Dc0pDb1llQVp0anp3cFdFaUR2cFpiUnlUU21WekQ5WGVDMEZONDZwSHZ5Nm9rYVZFUzNITGU5UHptYkJEbU5wd2JIQUp2WXVzcmtqSzBNeGQzTUZPaWgzT0VWZDg5T0hlWEdUbXprblhZTGp6ZUJ4aF9BSkZodUxjQnRCRV96NFNDdVlsZEdwTFpwN1VkcUxwaXdJc1p0eG90cnlHYUZOS0xfQ0VPcWgzNHdNNjdFaWZKcXB2dDR5ZUVlNkhTNEFwekxmZy5xU1liRm9Lb1RpNG5FSF9WQUw1cE5R"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'd398b3fa-edf9-4e61-b6ad-5a734d009060', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:25:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '11716' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '6cc01042-2f04-4ccc-8777-dc67d5146d00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHGwAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:25:08 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:25:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/recoverKeyName-canrestoreakeywithagivenbackup-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-","deletedDate":1561724709,"scheduledPurgeDate":1569500709,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-/81176a7d2d2144bc8024c99e70fe2cbb","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"mKkZRl3qG-Nnb_qfhQNv4swFpp_808T4nhp2kghlPhgLva0__-k1Tik4iOpXvpRRPR6yA0HPoxRrZVORQ9g08f5utNxi52uAX-yGRKxPAykDUtkORGMIhvMTQdpKn7ndPixmMqean79hMEkMqWAt5dKW2bsNzC5n8pg-cLTO-KeP0u1MAUc-XuP_doe2SeIsauEnCEYm08jvLhMbVVujL34HRw7JT15XR43LBCZ5o3h-BLWS0r4rUwEBRksJBVKbgUbFVyIYuMsthYgfO1iJtDvp7l8ie3_QkX4kQPsQuypI9S8BAlF3MJ7BUjlzDj23_xEqLW2dwbE_mY3VveTEzQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561724708,"updated":1561724708,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'ad1f4a86-04a9-4f8b-a815-4f6e39d84d62', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:25:09 GMT', + 'Connection', + 'close', + 'Content-Length', + '891' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'f5a61cbd-b25b-4302-a5b6-97f17ee76600', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHHAAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:25:09 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:25:08 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'a23ce64e-3497-448d-8857-398ecbf41940', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:25:09 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '0ee39b7b-92bb-4c82-a381-c806a3fd6b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHHQAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:25:19 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:25:19 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '4fe92e92-04e8-4706-9c9a-57fa98871845', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:25:19 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'ce0caaae-fc83-4538-8ff9-99d2b0bd5a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHHgAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:25:20 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:25:19 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/restore', {"value":"JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLmVhcjR1Q01EWlA2dG5ITktxRkZWOVgzUkdvNmZFdDh0R3VBT2tsWXJNUi1fSlY2MVNOMlIzVThNZHg4QXZqampFdndOQnI4ZENUZDRkSEwwT2FQb000R2lQOXJHaU5xeHV2RkxiZm13OUhnWGh1NUc0cTBJNVRLNEhhaHF2eXFldldDQTF1dDFqQlZJZVl0cDU3Q2I4WUZoRmxhc21DYU9LVTVpVmtGa0M1WVNibEVIaGxlcFpYMV93RHBjS3RHV2pwY1FUZmtfSmdvUUI2YWNERXpzLXkyd0dxNHhibTY1SGVSYTB1bW04ZW40NUItODVHTUFpeUtUYlNIdjd4QU5KdHhMWnRESHZCZGV3WS1ZcC1ZSE1FMTFmckhnTFJvQzNLaXFXYUdVZU8yOVlwNXRYeUJDRlBJTTlBRi1LeGNKQ1pHQXRhU0xNbk1Nd3hhQ0RBcnY1US5tRmU0VWN2NGYxWlNvamdMWFZqSmJ3LmFlcVMwM3lBQW5JSXN2cmJTb3F3d0ptUkdyYWtDQ0tMZGNrb2pzV3d3Wktua2N4bUhzc0RuUFRnVkpfSV9nbXFpOHNsamI1YzA0QlJwNWVJSkpWeF9XTmpnNVFDVll0WGhVT1oxOVk2SDBSd3VCMnZTTDVadUhrVkYwZWZMMnh3Z1VjZXZaT3VNV3YyRW1TOEVYUm0tY2l2d053LW9oREFLWkZXUWNKVzhQX2Q2NWc1MmhzY1NyUWp5QlRwTm83bTBHN0lsbkJTZnd4LUdZVWV6LTNKeHlMSEhSZ1hQY09peHc2dldlUXp1WTV5SnQ0R1hHMlJFTjZaM0VXMktlZG1LQ1BGZnVIUTFqSW5VeTBmdXpsZG1xeGZpSlFTYWlJSlZVTlVWQlRwRUpzWElmaGlVSXVfS1RoS0thRXFSSjRjLUJIMjQyenkxTUdkZ0E5MGtqRUxwNk1iRnZMWDBOSzRZbFhHSUptT1JPX25OMzNHSTFUNDVsSEZTSlA4V1JoSmZRQjdObjI5QTZ4aW84clBGSmoxdWUxbFJVOGFkMXFrR1pxcWVBRlVfN2VZdVM5SFFlelhZZ0NMZmRHN1VFRDB2U25oekJVUmI5RWJYWER4SW01NXZITVlhYXFmTnBQVXBMOUhtMXlOdW82T3FucU1ROC1WaFBhTl9PYjNlR1QwMF9sOVhUVW1odGtsYUh5LURqeEtEVzJHeU14QlpPenlZT2xuSURydjNBZVBZdjR5QjlFWHJ3Yy1kUDNiX3lXZ180RVNqeDJQMzNreURiSUJZUEtTdXItUWJfYV9ONUNtb3J6cUJoTldyRXBQenFpVVhBLW80dW9qcFd2SGxrRUlHa05lUmEyaFpOWFlOYlRPaThjUmx0R2JJNWQ5bXlwNVNkcGFtWDliS1d4bDVHdkp6SFpzYjFHdVhCVjBrcEFNRXp0ZzRSQ0FCVjZ2alJtQzhrWkE0cmVzRV8yOFBzUmYtdVZQUzk1eTBLTWNna1A1YWtSQU93amRHbUNkQkUzbTRpbzZKUjZ6c0RRWm1MMG9ldGVlRV9KbkZDWUk2U1JtY2pUeTc1cDhGbzZkSTYwQkdHZllZT2JwZzVjR2cxalBIYVRRVV9tRzVUOFUwQmlIVEsydnYyajNfRFFfTF92TDZwYmJKOEdtTnNhcTlXakozUGlwRmNQamZnSXVvWnFVUXYxamZyYk9WLW0wcnZxbHF1enpKbHJNZkdQS1BvWkdGUHQ1MXJ0Y1JBSGNPSEdGRjBkQTR6RENab0dJbUxmMHhMN0N0SVJRNlF4LVFMU0tHeWs4ZHlSZ212Q19qb2ZFdVVPSDROTXVlR0xNalVMb3dsOHk1b0ZhQ3RIUHJRQ1YzaDU5VWpJNDh3SmZQSk1Id1psdEpHalRjNkZub20xQ1UzUVktZTltTnpDZlphYjRWM1Jac0t2clB6UW5oNFVWTlJtQXR4RHhuOXluSWU5NC1iWFlWM2RUb2lfcjZxNFpsODYwSjRVcGh4R0c0TkhkbjM4dHd5aHNZczl0bWhVbXBjbDB0b3lHOU84ZTZuaW9MaEF2UGZXellRUXhLMHhCOXN0RDhEZi0zd0VMWWJhWjE4SFBBR2xjYWFsX3FBNlctanh6cGh0RFB0dlVDUjhIUmZWRDlMakxYTUhYakhEdkN2cUxqdE43anBpSE01M0RHeFhURmpvVl9nOEFCOERqVlFlRnZLTWRfUGcxbGI0VS1VM0x2RHVzWlFHS2lvaWZHNko2V2Rsc1BZMExWOHZaeTBxcDV2WFNEazBFRWhXVVJ4dTlJQjdmRVZOS3dhN1YwcEp2MFAxYUVzRnlQcWdiMHdwaEFGOWZNZWdHOFAzM1cxeVA4VzMtdWhHSFZQamUwa1lOUElENzA0VEV2dFB1Z3AzTlhIVGZzU01aeFlXNzIwY3BTdDJDZE9BYmV4S3pRTEY3YzNMb0liNnVxbzVZOUZQb0VRREcyQlpYY3diaEhDYzYtVUVIRFVDQjJCbnR2UDRGa2ZuaEpHRkh1bmc2dVhvd3dlanBzSjJOcXZyRVNBWUQyZ2RWXzMzd0sxcUthZG5xVmNNUV9aT1ZwMWZ1cEk2Y0dpUnBXN2Q2ajNYeHZMTTFFdm9RcGtsMFZSb01kanRydVBWZkVlNjd6R0ltZ2stM01yelY4WWV0eFR1elpNV1BDMFp1YTNzdzVERmlBUTJLM2JnZ2lYOC1obzRuOGRpcC1SYlhDd3YzNm9nYXlNT1NoaXVuaHRJZ21VWWhjOVVPcEZoN0xicnhSa1lfWnZ5TWVGT2gxQW16Ql9XR0ZkMTVSMk1IdUlpMWFoQ2h3bm5qMHVIT2lTUDBDVzRKS28wS1lSYV9aU0FzT0FrMk1LM3pUWFV5dVQ3N0MzY21GOUctcGZvbzZJbndGLUJFM2ltSlJHZVE3S0VyOHBVYmZXWUJTTXJWSDJXaHlzSE1kX3NsOXpVMUpDUlFGLWtqWHltX1VVUzhqZEVoSWRiUk43WHE2aVIxZGNQbUNwZS1LWVd2Y1RqQW01N3dqSXphZWVYeXVSWWFHSWZJVk96RGZzd05NX3owX210dEFrUXNrNzA2dG1UcUFmSXAwTEZYSlQ1ck5jd1NLd25ySUY4NWppam1vSm9rWjhGRm5USEdXcTVyLUhfY2s2MTZDSzMwZGVvX01LRURNei1RLTYwY1g5Rm5QRUVGR2J6UXc0S0tTQUZ2WXVwRlByNDhhaEw0eDgwS0RhODlEOW42aGZneS11dFI3cVhyX0FnZ3ZlQlpka2FHOGR3WjNUMWp0MENpVnRtQUU0b3pISERyWk0yalNXQS10b29fY0U1ZDhQMUZSdjdzbmFPb2FUZEdwX09aQlhGMmVyOFlSRXVNR1QwTkFjNWdPV3cyM1Y2VGNwWFJSR3BkQXpBd2paOHNOWFBuM2N1RXM4bVVFNzVlLXJ1cFRLbkdsODdGemxKV0UzWXZTdG5yN1BfbHdyZjlkRXBLdDZYU1pTbDl6eENfclVJa0l3X1pnOTBtSkNYN3lVbkVkaHhVUnhmTHNRcUhrQ1lZXzJISlZ1UDZFMFZXOEpNTEtMTDUzZ0pKWDl0SGE2MVdNb1pzUTliTi1WdWQxOGJIS2lOUmhubGNKcmR6aTFmZ0lNMzJDNmpsUnJZZWxFRHd1UGVMeTZjMGN0cl9nQTE2ZU5fck5ES1BLS2RxUWxaS2RqMFBPSmpBMWV6SEp1QkFfNWtPU3V1MXFoVWZNVkhUOTdCZC04eE12NUY0UlNCck5PVS1zM3FlMlNjRnRPblBxNWFNMHdKSDZSLXlsbFA4Z19ZY0xrY1h1SkJOUmFMM2RrTEhPNExZbHFkamx1T0VCTTVnS2RBZUh6OUE0OVlCT21oektNdzZGbUlLV0xWYkVsOHRuMHU0dXBGb1g0OEVnZGtNeEpSdjdCd3VGVzBieW5ic0ZtTVp5MVNESEtUTnZvUFBVZEdFZDJFYm0xbm5HX1BfcEh6aXJKZzQ2T0RyNUc0SUc4ZWpJdXVtVmZyeTFXLUpybjZCZE14M0JBTzdGNXlJVXJGSXBBWHR3OEZMZGJrb3M4b3VJVVBxUk01V2N5Y3h1X1dzNngzMzN6ejV0eF9sa3JrWGdGekl0WGc3bk1Nc01wWTUxLUxhX2RxbUVXRmJRZWs4eUh1Y01LMXJYcC13OTkxWGw1bG1MeWMzNnRxT1FxS1dJOW00dXh3ekg3ZWJlc0VIcl9YMFI2c0wxOGNrQ0xka2ZLN2RoZmI5QVB1R2ZPSm1nUk03QnpaNmtMUzRfd0owaWd0OG9odUNFaXhSbmdzV0djTTN0VnhmSjJxemh5UHRqTkUzdldxR295ZXk1Y2p3UEgzNzZOWk9UYzIzQWtaMVhaTnhndDMzUTZNaHdlVjZ2LTVrMUJYX18wX1NMUEhZN0pRTVRkX20yNUw2RWdnV3hkNU5saUtnRGR0SXR0eTZ1dkdPZEd3WXE1a1FVSWRoR2JKU3YwVDdWU3dRRkFCREFGRFp0dU1YT1A0VU1WYjVNaGtoVHlpMmxjM19BYk5GTURtNndybHJaaTNaTzdsVEc1UTR0STZ0UTd1Rnk3QkhkSl90SWpZUVNXYkxDNXR1ODVzOFpneGlNQm10cV80T25zRl9adHlXSl82TTdtU2QtOUwtMFNva1B6cWgwY2N6VEdwSmpWa0ZkcFdSMlZUU01vSEl1T2hCTHdFbHVybjctb1g4UkV4aGxWNU84dXZkTkNJTk1TUHJCZ2o0UHFxdHRMV0tUTDZ6M3NZYlQ1aTBDWHFOM205WVBZdFlhTDcxUDh3TG50cDlWY2xyVzFsZjlWbzdRWUl1bHJEVi1fZGJYQW5ucWZrRTBHdzNmcFhINVhrY0RjUWZ3OFFjTDhUc2hSd3BHaGh6VGQ5LTR4OHY3N3k4Ty10Qkp0aEVXX0h1MF9vN0RsYTZEZTR0SDNfbWI4RFE1R3IycGFvaGlGUzRtQnk2RlBVRXllclFkR0NOU2pMRjBmbEVOSDdoWkFHSFVIdnlPMGVIUmZ0VDN6d3N5cVhkdWhLcU56c09EbE9UY0dfaUZFaUhOcS10bkNtYWNkVG1DRkkxV3dnU1lLWkNuOXhzSVVPMFVsNVR3dlluM083YllPN0NFQ0c0R0ctOFE5cGdPYWpMV2ZjQklRYm1RZmxqSlYwNjh6WF9ZS2FxUl9aR0FVS1oxY3A0MjdzbVUySV9kV1NlZ1BZUVIwREUyNW14Sm02cUszMzNLWnV4OXlWTXdNclBYamtpZXdmbjNGM2YzaGZ0RnJqN18yNmN1Yko1QjhVTlktUGpnTmFuNU9tNWpIem5SQW5JYTltV1l1eV9qd1dKY0NjcUhpVzhSWEUzMVdRM1NwdWVCZ1Iyd1Vxa2k0aHdqSFhabW1ja1A1SVhiM2x6UFAzOXd1TmhOZ1JtUHhVa00tcUlqQUVpVlJKTXBIbGFtTEFCOThsR2VMTTRjejhKenVncXdIR29iY1VfcXZnd2hqUFdsOTRoMDdlRW80NzRlalF3ZENnMkU4R0Fkd2tyQXZMUGN5QVV1emVRdFE1X3owVlZZb3dveVQ4bUF3Z3RZckNPVjhxR2gxVXIzZmU2cW9YVlZ4a2Q2V2w3RmROdHBEaV9qbkJqdGxBc0NvNGMyS1lueUxDcUVoQ2NJNVhtdDBhODE4YVlRVE8xMVVjZ3ZQbEltMVlMenFkdHZtTUlwbkNxWW9OMExKVWZuZHBnOEd5S3lEUHZJNklsY3dWdW1jNFJzNkxXNVpETVlVNExHZ0lEdS13TFRTcE1SX1RLblotQzRnWmh4bTFSQnNCcTA2Sk5yMGFjcC1vS0c1ZFdzRkFEOFA0LXB6OVhmYW10S0FLLWxtQW92RTFmZnZyQk5ZUEZqRXdndmQxblhDWi1kLVBycjJOS3ladlRMWV80aUNlWl9MNUJadTdUTTIwakpzTjY4WW9hV21STmZlYzJWUHBLWEJwSGNMeVpCXzFxWGlWUjE5bXRjRGFkSGhVaGVSdjQ1QkZWSG1FbC1ya1VwXzR5MWhwcmdyV19IeGluOHJ0a3lYOUdaMlQteERDUk5ZRDh4MHJ6Y0p6bTNtdENrc1R3bVNLMXctd2lLZjRSSjR6Vjdpek1HU016cy0yRVAxTTkydG83OUtaS1Q1bHJIUERIWFk0NFJwQmZwOThTTHlZejFaWWlrSUhvV08xckJfR1lNSlpqWEEta21XQWZMdGc4N2JVSUtHU2ZwZ1lMRVlQeGljcjZOZmh5NVN0TWQ2azZKSnhGb3NNbHhiUXQwSFpTeHlSYWhaNWplOTYtMkk2UVNsNWhBWEtJd1IxWFZjZmV0RHI3T3A4cDZkTFI5SUYteVowTmdHTjVNRHBYQzY5WXJUNktrbmI1cVVoOWJGLWtzcjRjaG1vNXJER1N4TjlOMFphZ3lobnhQam1jLU5Ic0ZWbUk3a3IzWG9hMXZ4QVhoOHp0R3JsWTVkTi1PNUxtY2pKcG9VQ3o3aWVyRzluTzRMVjFTaTNkOFpFc2RLa09lZ0dpT0diazROczNXemdHdFJXaXdFZDQ3SndSYl9CTER3ZkRDSlRYT2lzQVNzNWNKN3dOWmJzZVJkd1dNazEzTDVrRFBkaV9wTm0tZVpWd1Qwc2hYOEZ4MDFRaFlPVExKNUx0Q203TjFNM2I1ZlVPZFdxdFNSRFdmN2VKMkNYT0tDYnNFZVlVVXVoRk1oYzRKVlI4TGY4VFFMajJjMVdpZFVOa0h1S2FZdzMyV3A2SWtNWlpHWXU3alpsYWt4SXVLWi13RDN4WTZQTjN6ZkQtSlB0ajBYckx4ellibjExbVZUaU5HMmlRZW9INjY0R0hDNm9zWU5ld0ZmREJIOHlEdkhKQmhqUjJKVDU5ZjBRVWVxMktUMFZkN09DdHNZZHNUMFN6bHJpbHlsY1BIZWRBaTZDVHczNzhFYTFjUmRFR0lISTZtemMyZ1RLZmtCWExzbzJzV2ZHbFBZMV9Ob0l0bXhTbzVlQlRtQVczRmZzSTZTTmlRNXZKWW9qb3RxX0xLR2pyZzlSNFdiQTVHaEZHNm9LRnFmYVkzTGs3aGNxVHFtYjFsM0RVc2VOZUQ5S1pxNDJCN3RhMXltOGJpcGdyUl9MSXd5YnR4b1pVd2hHNWJiRlp0TmJuajVpR1VWYzc0ejJXcUpycDctZkRjWWUtWlV5VlpubkxIaHBodWhvQ0l1Ym5xVEFtUVJJOEEtX3RzUUJqaHV2QkptRWFfY3NCSzdyTm5KNVItU1lUR1YxMC1WWU84eVBRTm1YUUVPb3BnY0ZoR1E1NHZIUF9UUklQQjhwZU1XdzlXOEYzVVlKTGZidGxZUXRlV0xLZm9venNJOFBicVZxZnhjaDdJb1pJNFJuM3JvQlFMQ0FfX1hibkR3QXQ5VW50VmZmVmYydU9kWWNaeTF0OGNCcXVlLTYteGJPX2pTeGJwZzNmdXB6OHIyTHYzRkRSbzNJZzRtUGYyRnNEa3k2Zmhrc1JfOWdidDlXc09TNXdaVkRRN0VWWlBGQmhZc2U5ak1OTHlOR3d0REpqYTZQaTIzN1ZQakdYVzF0TUFLVWx2X1dJZksyQjdZeEpENVpVX3hGQ1dSbXpKZFRrMGQ0cTczb202em05OVZMYzEwNDE0S3RYQUR6bFdtNWx0aDFDc3NNLV9TZTkwUUQ0Tk1fMVo1RHhfajNLUGtHRDhtVGJiTVluMElPRWxZQVJzYXdVbjV4UXVWc2Z4T2pxdmNKd0pHcXd3NmhraDVoMjByMXNPWi1uei12MjU1SmlSOE1GUzRxbGhwZ2NpcnhZSFh3N2t1WDBiVTU1VTVCWm1SeXE1OHVoQ1RHMm9TTmt2SGJjTkxZX2k5bVFtWDJ5RnhCb3FXeU5YNFkxVWRRMTlqOGwzTzdkcnpVMXg1MWF6N3JIdEFxMHdTbU96T1hET0R2d0NaY3FIZnJCVGJ4V29qQm5vWkp6LXJMd1NnTkZBNTVlMDVHY3U2dkhoWGo1RzVkdzVkMEkzcndpQWg2TDFkaHdIamNqUVVwYm1kZE1DWDNxdW1NQWZpNDI3clB2dGVueW9YUURhM2puRXBhOVg1RDJQVS0zd0R0RHJGWnlBXzg3aGpEWVlvTlgxMDNTUkJsRFdNel8xZDhsUlpIdzZ2V0VVNzctV3RydHU1OEFvcERkcnltMEdEcTF6UVl4ZVdiOHBaM2xOME84T1hwblA1ZVRvUlRueE5yRWM3eEJHYmNlZkxlVFdJLUNhX2RKZ3hLLU4zLVhnSWdBaDAxREJ3enpFYUN3TFh1dUlhaEFPUFY0QzNXb01qMm1pbm90aVVlQXV1UUdiZU9ySl9Rb0NXVGVhSHFBX3FGV3RFX2FKalItbkI1akJIT2F1R2EwQUJELTJ4NEs1cmdMaTRmWHJ5cFFTV3l1QTYxVnl0dTBkeVNoV0x6bnhlVF8wVE5xR1U2cHdxRlFXZm9UTjh6ZUVCTGhmVkowRXVLaFFzN3I5bktkQzktSUFmSnQzXzBLTS04VERXS2lkZ3ozcmg0Q1JNdlJ5WHpibVh0MUdUNWFtLWtWZUFKQ04taTNLSXIzQm1iR2p0MVhDLXJraUdjeTB5bEt4RlNWT0dDME11Y3oxUDJFc1RTWDBRbUlwb0pvcl90MHVDSHdTMFFKNi1UMFIySWtDT0V3Y1RYbzhZOEdiYmVZVDMtbFdnUUJmTGRaMGJmMlFHQUR3UDlQVDRfYUl5WFFqNXhIeVU2SURaLUs5OGp2Z01LTWxCaklJb3AyZDY0Z3N1STdFajd0UW9uMlJwYWhnNHU2VFZ2RmxsUGc2UXNSeUFPcG1IckZYMUtJOG9oYkhFZzBWWVZ0Y2p6ZkNyOXYyVnhQMUhUMEZrLTcxTlNhTVBKa1dhemNCRnFvVFN4SGJDa1hBbDladGtmeDJjUlJsaHRhcTlzVEZONnotR01qdGozOEJ4N0FMY3dBQ1BoNTdYQWo4cXJzTkNYWTNVLUdudVlubVNPVmphaVhMc2MwQ3M1eUVPSldpeExtVVViV1lrUFM4OXA0cTBQX2QzVFlHVnZrUFpmWGgzSy1kVDVzTnlmalNwWWUxM2hmUHJhMndtd29TaFo5TnZ5TjZmbGlSLTVSNWptZHkzaXpIdmRMMDdIM1RyazJFV1FZNGFkNHhsLWJEcTVsZ2M5WnMyZ3hpSHdqSm43c2xwM2IwQzRZdDlwajVjb04ycFlQUERXOGJxUlVnWElzUTdENzFuSlVBUWhjS1BWWm5ZU2o3VEhHamtLWmdYbGVHN2IwTUgzaG4tNkdpc2FXdTRCT0FkX0pRS1BQVFI2bG5tRmZQc1dYR0twUzdDRnNTZjNzZVRZU0FzZE12RldnRG52MHp2alZyT2JreV9pQWpkZ1FUS1dQREJJVlh1cTVYVVlhZkJlOXJaMUhnSjJLb1A2cGtubUJWekpNekVhTzZlZnZhNFR6R3pnbmZyc2ZBQjRBNGQ4RmQtU1pMYlBQSWt6d1hOUE45TDl6REtPaWlITUlMZGd4eDByS001SjlxalB0bHhmSUhFenQyVjJ1YlY2QmdBUlVVMGhpcGN3MGRySmplajhtZFdBUXpkWHZLR1RrQ2FUSy04aloxUjBsbmg5Z0R0SGRHUVZCbDVVR1dIa2dBWWxfLUpXMUF2SmUyaWVzRHBPeURZbHVqbFNkVjhUajg5dHRtRWRQRlhDSlI2NVVueWNiMnNfeThfR3pNbmMycjJsVExQQVJmc1RrX3pzdlcwWi1Ha2FmRTRONHhvYjlSaWdzTV9HbktsbHg2Tll4UUJCSE51cXFWQzRKRW1sRnM1ZWhiOVI2TjJHSHdpWFRkVk5EeUt6cHdncHdxRjd5ZWVrZXhCZUotTnJCS3FaeGJ5T0IybUJlZTlfU2lyeERKV3UwYktiZzlwNFdnY1djTHVSSHBJWDAxUzg5UFdDbHpudXdTTF80SEZWWEtvbjZFNkUzdGJULXJKc2hxTW51QWVabmN6VW9raUEzUnVQZmg4NkdTOTEwcG1RcVl1aDdHRU9lVlNSS0ozWktUTUI1V0x2SnJSMUVmZHR5V18zZldBaGhGWFY1SmNudm10alZjdzRzeEZRS1lPSURaVmdQMmxzS2RJd0VsNGhiNDI1ZUN5eTlfU2JBcUJ5QTlNWDQxVks1RTVpQUVtRnlndEF4d2lwYkJjbGVBeldIb0pfZGJlblV0OGdaQnFydHZ5ZllCV3c0Q0dXU0F0dkpZMk9nQmtzeUowZVRYZXpVOE9xemJudlZoTEhCeWZ0alduM2hrQ1R5Zi16alB3cWF4eFhfMGRzQ2hRbU5DRVJKRTU5TlBLYzhTUTBzSW12RFRMd3JaUFp5R0RFcTJ3WjVKcmdLV09Zb1czSDR2R3FtSV91SUw3RmluY0poNi1rcXE3SFlKeFluejhxX2lYckpOenVvTFRoOUctMjBab3N0T3htVHJOc1RDSGxaYUVIVkZwS1NtUzBLZlc4V0o3Vlh0aXoySld3V1VHZDVZbzFGb2sxTzRMTFJkTXdaVFI5T1V5ZUZFNGszc0d0enhmZ1V6WmZKcTZRQ1VEVzFQNy1GcW1vTDlaSHBXMHIxRmQ2b3RJS0p1SjZzV0stcEFBUS1LNE4zV1M3SFRwMVdHNURfdlVBUmZQQWhkNlF5NmN1Z0hIOVVna3hCVW9fdkxjWEpqNG5RSElYQ3AtNnNCNmtyWmxGalg4Ri1tR0VDc2RBc1hSQ1Q3SlRCWF8yT1FodVBwVURSTTdHRzV6aDVsNHB6WTdqWVloaUNxcW5kR2R6b1R4TW45TGRQQl9ta2dVV3pITEVlVEpqSHZTZlpHMFBUaFBlR0M2bmlaMVZNOW1hV3pfdnZxYkZGejl5clNUb2wwb2RuOXVkcy0wRk5paGZnUXJ3a3hGQjhwdUdGR0JlN1dkUVNOVHNxRkFlZS1xWlVNUm1MTjZtYzhSd0pyQ2RnUkpPMmJCbFJ0LXVrckc4UzdFV05nTjlTeThqbFdJUkRFME9FMGtSbE9vM2FlNTUydnIxV2N6U083ZnFJMVAtNUQzc1BnRDltSVVTOEdEVmg2Tk4wdFdFajNjTkc4SGdBVjFOZUs2MDJ2enJpTUZySHVHSl9POVV1QUZJWTFkeGtjM0QzbWlfem00SmtkcU02U09CSG5FbXBWMGJmQ3B6SV9VWHZpOWMzZFdkTkRKQjNXRkl3cEIzWjBZWDczaFJtRG5Dc0pDb1llQVp0anp3cFdFaUR2cFpiUnlUU21WekQ5WGVDMEZONDZwSHZ5Nm9rYVZFUzNITGU5UHptYkJEbU5wd2JIQUp2WXVzcmtqSzBNeGQzTUZPaWgzT0VWZDg5T0hlWEdUbXprblhZTGp6ZUJ4aF9BSkZodUxjQnRCRV96NFNDdVlsZEdwTFpwN1VkcUxwaXdJc1p0eG90cnlHYUZOS0xfQ0VPcWgzNHdNNjdFaWZKcXB2dDR5ZUVlNkhTNEFwekxmZy5xU1liRm9Lb1RpNG5FSF9WQUw1cE5R"}) + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Conflict while restoring key https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-/81176a7d2d2144bc8024c99e70fe2cbb - key already exists or concurrent access"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '249', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'b476d0bc-ad6e-4b5e-ab16-9be213b867e9', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:25:20 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'c081f3c4-687b-45a5-8b22-2553c4b57400', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHHwAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:25:30 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:25:30 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/restore', {"value":"JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLmVhcjR1Q01EWlA2dG5ITktxRkZWOVgzUkdvNmZFdDh0R3VBT2tsWXJNUi1fSlY2MVNOMlIzVThNZHg4QXZqampFdndOQnI4ZENUZDRkSEwwT2FQb000R2lQOXJHaU5xeHV2RkxiZm13OUhnWGh1NUc0cTBJNVRLNEhhaHF2eXFldldDQTF1dDFqQlZJZVl0cDU3Q2I4WUZoRmxhc21DYU9LVTVpVmtGa0M1WVNibEVIaGxlcFpYMV93RHBjS3RHV2pwY1FUZmtfSmdvUUI2YWNERXpzLXkyd0dxNHhibTY1SGVSYTB1bW04ZW40NUItODVHTUFpeUtUYlNIdjd4QU5KdHhMWnRESHZCZGV3WS1ZcC1ZSE1FMTFmckhnTFJvQzNLaXFXYUdVZU8yOVlwNXRYeUJDRlBJTTlBRi1LeGNKQ1pHQXRhU0xNbk1Nd3hhQ0RBcnY1US5tRmU0VWN2NGYxWlNvamdMWFZqSmJ3LmFlcVMwM3lBQW5JSXN2cmJTb3F3d0ptUkdyYWtDQ0tMZGNrb2pzV3d3Wktua2N4bUhzc0RuUFRnVkpfSV9nbXFpOHNsamI1YzA0QlJwNWVJSkpWeF9XTmpnNVFDVll0WGhVT1oxOVk2SDBSd3VCMnZTTDVadUhrVkYwZWZMMnh3Z1VjZXZaT3VNV3YyRW1TOEVYUm0tY2l2d053LW9oREFLWkZXUWNKVzhQX2Q2NWc1MmhzY1NyUWp5QlRwTm83bTBHN0lsbkJTZnd4LUdZVWV6LTNKeHlMSEhSZ1hQY09peHc2dldlUXp1WTV5SnQ0R1hHMlJFTjZaM0VXMktlZG1LQ1BGZnVIUTFqSW5VeTBmdXpsZG1xeGZpSlFTYWlJSlZVTlVWQlRwRUpzWElmaGlVSXVfS1RoS0thRXFSSjRjLUJIMjQyenkxTUdkZ0E5MGtqRUxwNk1iRnZMWDBOSzRZbFhHSUptT1JPX25OMzNHSTFUNDVsSEZTSlA4V1JoSmZRQjdObjI5QTZ4aW84clBGSmoxdWUxbFJVOGFkMXFrR1pxcWVBRlVfN2VZdVM5SFFlelhZZ0NMZmRHN1VFRDB2U25oekJVUmI5RWJYWER4SW01NXZITVlhYXFmTnBQVXBMOUhtMXlOdW82T3FucU1ROC1WaFBhTl9PYjNlR1QwMF9sOVhUVW1odGtsYUh5LURqeEtEVzJHeU14QlpPenlZT2xuSURydjNBZVBZdjR5QjlFWHJ3Yy1kUDNiX3lXZ180RVNqeDJQMzNreURiSUJZUEtTdXItUWJfYV9ONUNtb3J6cUJoTldyRXBQenFpVVhBLW80dW9qcFd2SGxrRUlHa05lUmEyaFpOWFlOYlRPaThjUmx0R2JJNWQ5bXlwNVNkcGFtWDliS1d4bDVHdkp6SFpzYjFHdVhCVjBrcEFNRXp0ZzRSQ0FCVjZ2alJtQzhrWkE0cmVzRV8yOFBzUmYtdVZQUzk1eTBLTWNna1A1YWtSQU93amRHbUNkQkUzbTRpbzZKUjZ6c0RRWm1MMG9ldGVlRV9KbkZDWUk2U1JtY2pUeTc1cDhGbzZkSTYwQkdHZllZT2JwZzVjR2cxalBIYVRRVV9tRzVUOFUwQmlIVEsydnYyajNfRFFfTF92TDZwYmJKOEdtTnNhcTlXakozUGlwRmNQamZnSXVvWnFVUXYxamZyYk9WLW0wcnZxbHF1enpKbHJNZkdQS1BvWkdGUHQ1MXJ0Y1JBSGNPSEdGRjBkQTR6RENab0dJbUxmMHhMN0N0SVJRNlF4LVFMU0tHeWs4ZHlSZ212Q19qb2ZFdVVPSDROTXVlR0xNalVMb3dsOHk1b0ZhQ3RIUHJRQ1YzaDU5VWpJNDh3SmZQSk1Id1psdEpHalRjNkZub20xQ1UzUVktZTltTnpDZlphYjRWM1Jac0t2clB6UW5oNFVWTlJtQXR4RHhuOXluSWU5NC1iWFlWM2RUb2lfcjZxNFpsODYwSjRVcGh4R0c0TkhkbjM4dHd5aHNZczl0bWhVbXBjbDB0b3lHOU84ZTZuaW9MaEF2UGZXellRUXhLMHhCOXN0RDhEZi0zd0VMWWJhWjE4SFBBR2xjYWFsX3FBNlctanh6cGh0RFB0dlVDUjhIUmZWRDlMakxYTUhYakhEdkN2cUxqdE43anBpSE01M0RHeFhURmpvVl9nOEFCOERqVlFlRnZLTWRfUGcxbGI0VS1VM0x2RHVzWlFHS2lvaWZHNko2V2Rsc1BZMExWOHZaeTBxcDV2WFNEazBFRWhXVVJ4dTlJQjdmRVZOS3dhN1YwcEp2MFAxYUVzRnlQcWdiMHdwaEFGOWZNZWdHOFAzM1cxeVA4VzMtdWhHSFZQamUwa1lOUElENzA0VEV2dFB1Z3AzTlhIVGZzU01aeFlXNzIwY3BTdDJDZE9BYmV4S3pRTEY3YzNMb0liNnVxbzVZOUZQb0VRREcyQlpYY3diaEhDYzYtVUVIRFVDQjJCbnR2UDRGa2ZuaEpHRkh1bmc2dVhvd3dlanBzSjJOcXZyRVNBWUQyZ2RWXzMzd0sxcUthZG5xVmNNUV9aT1ZwMWZ1cEk2Y0dpUnBXN2Q2ajNYeHZMTTFFdm9RcGtsMFZSb01kanRydVBWZkVlNjd6R0ltZ2stM01yelY4WWV0eFR1elpNV1BDMFp1YTNzdzVERmlBUTJLM2JnZ2lYOC1obzRuOGRpcC1SYlhDd3YzNm9nYXlNT1NoaXVuaHRJZ21VWWhjOVVPcEZoN0xicnhSa1lfWnZ5TWVGT2gxQW16Ql9XR0ZkMTVSMk1IdUlpMWFoQ2h3bm5qMHVIT2lTUDBDVzRKS28wS1lSYV9aU0FzT0FrMk1LM3pUWFV5dVQ3N0MzY21GOUctcGZvbzZJbndGLUJFM2ltSlJHZVE3S0VyOHBVYmZXWUJTTXJWSDJXaHlzSE1kX3NsOXpVMUpDUlFGLWtqWHltX1VVUzhqZEVoSWRiUk43WHE2aVIxZGNQbUNwZS1LWVd2Y1RqQW01N3dqSXphZWVYeXVSWWFHSWZJVk96RGZzd05NX3owX210dEFrUXNrNzA2dG1UcUFmSXAwTEZYSlQ1ck5jd1NLd25ySUY4NWppam1vSm9rWjhGRm5USEdXcTVyLUhfY2s2MTZDSzMwZGVvX01LRURNei1RLTYwY1g5Rm5QRUVGR2J6UXc0S0tTQUZ2WXVwRlByNDhhaEw0eDgwS0RhODlEOW42aGZneS11dFI3cVhyX0FnZ3ZlQlpka2FHOGR3WjNUMWp0MENpVnRtQUU0b3pISERyWk0yalNXQS10b29fY0U1ZDhQMUZSdjdzbmFPb2FUZEdwX09aQlhGMmVyOFlSRXVNR1QwTkFjNWdPV3cyM1Y2VGNwWFJSR3BkQXpBd2paOHNOWFBuM2N1RXM4bVVFNzVlLXJ1cFRLbkdsODdGemxKV0UzWXZTdG5yN1BfbHdyZjlkRXBLdDZYU1pTbDl6eENfclVJa0l3X1pnOTBtSkNYN3lVbkVkaHhVUnhmTHNRcUhrQ1lZXzJISlZ1UDZFMFZXOEpNTEtMTDUzZ0pKWDl0SGE2MVdNb1pzUTliTi1WdWQxOGJIS2lOUmhubGNKcmR6aTFmZ0lNMzJDNmpsUnJZZWxFRHd1UGVMeTZjMGN0cl9nQTE2ZU5fck5ES1BLS2RxUWxaS2RqMFBPSmpBMWV6SEp1QkFfNWtPU3V1MXFoVWZNVkhUOTdCZC04eE12NUY0UlNCck5PVS1zM3FlMlNjRnRPblBxNWFNMHdKSDZSLXlsbFA4Z19ZY0xrY1h1SkJOUmFMM2RrTEhPNExZbHFkamx1T0VCTTVnS2RBZUh6OUE0OVlCT21oektNdzZGbUlLV0xWYkVsOHRuMHU0dXBGb1g0OEVnZGtNeEpSdjdCd3VGVzBieW5ic0ZtTVp5MVNESEtUTnZvUFBVZEdFZDJFYm0xbm5HX1BfcEh6aXJKZzQ2T0RyNUc0SUc4ZWpJdXVtVmZyeTFXLUpybjZCZE14M0JBTzdGNXlJVXJGSXBBWHR3OEZMZGJrb3M4b3VJVVBxUk01V2N5Y3h1X1dzNngzMzN6ejV0eF9sa3JrWGdGekl0WGc3bk1Nc01wWTUxLUxhX2RxbUVXRmJRZWs4eUh1Y01LMXJYcC13OTkxWGw1bG1MeWMzNnRxT1FxS1dJOW00dXh3ekg3ZWJlc0VIcl9YMFI2c0wxOGNrQ0xka2ZLN2RoZmI5QVB1R2ZPSm1nUk03QnpaNmtMUzRfd0owaWd0OG9odUNFaXhSbmdzV0djTTN0VnhmSjJxemh5UHRqTkUzdldxR295ZXk1Y2p3UEgzNzZOWk9UYzIzQWtaMVhaTnhndDMzUTZNaHdlVjZ2LTVrMUJYX18wX1NMUEhZN0pRTVRkX20yNUw2RWdnV3hkNU5saUtnRGR0SXR0eTZ1dkdPZEd3WXE1a1FVSWRoR2JKU3YwVDdWU3dRRkFCREFGRFp0dU1YT1A0VU1WYjVNaGtoVHlpMmxjM19BYk5GTURtNndybHJaaTNaTzdsVEc1UTR0STZ0UTd1Rnk3QkhkSl90SWpZUVNXYkxDNXR1ODVzOFpneGlNQm10cV80T25zRl9adHlXSl82TTdtU2QtOUwtMFNva1B6cWgwY2N6VEdwSmpWa0ZkcFdSMlZUU01vSEl1T2hCTHdFbHVybjctb1g4UkV4aGxWNU84dXZkTkNJTk1TUHJCZ2o0UHFxdHRMV0tUTDZ6M3NZYlQ1aTBDWHFOM205WVBZdFlhTDcxUDh3TG50cDlWY2xyVzFsZjlWbzdRWUl1bHJEVi1fZGJYQW5ucWZrRTBHdzNmcFhINVhrY0RjUWZ3OFFjTDhUc2hSd3BHaGh6VGQ5LTR4OHY3N3k4Ty10Qkp0aEVXX0h1MF9vN0RsYTZEZTR0SDNfbWI4RFE1R3IycGFvaGlGUzRtQnk2RlBVRXllclFkR0NOU2pMRjBmbEVOSDdoWkFHSFVIdnlPMGVIUmZ0VDN6d3N5cVhkdWhLcU56c09EbE9UY0dfaUZFaUhOcS10bkNtYWNkVG1DRkkxV3dnU1lLWkNuOXhzSVVPMFVsNVR3dlluM083YllPN0NFQ0c0R0ctOFE5cGdPYWpMV2ZjQklRYm1RZmxqSlYwNjh6WF9ZS2FxUl9aR0FVS1oxY3A0MjdzbVUySV9kV1NlZ1BZUVIwREUyNW14Sm02cUszMzNLWnV4OXlWTXdNclBYamtpZXdmbjNGM2YzaGZ0RnJqN18yNmN1Yko1QjhVTlktUGpnTmFuNU9tNWpIem5SQW5JYTltV1l1eV9qd1dKY0NjcUhpVzhSWEUzMVdRM1NwdWVCZ1Iyd1Vxa2k0aHdqSFhabW1ja1A1SVhiM2x6UFAzOXd1TmhOZ1JtUHhVa00tcUlqQUVpVlJKTXBIbGFtTEFCOThsR2VMTTRjejhKenVncXdIR29iY1VfcXZnd2hqUFdsOTRoMDdlRW80NzRlalF3ZENnMkU4R0Fkd2tyQXZMUGN5QVV1emVRdFE1X3owVlZZb3dveVQ4bUF3Z3RZckNPVjhxR2gxVXIzZmU2cW9YVlZ4a2Q2V2w3RmROdHBEaV9qbkJqdGxBc0NvNGMyS1lueUxDcUVoQ2NJNVhtdDBhODE4YVlRVE8xMVVjZ3ZQbEltMVlMenFkdHZtTUlwbkNxWW9OMExKVWZuZHBnOEd5S3lEUHZJNklsY3dWdW1jNFJzNkxXNVpETVlVNExHZ0lEdS13TFRTcE1SX1RLblotQzRnWmh4bTFSQnNCcTA2Sk5yMGFjcC1vS0c1ZFdzRkFEOFA0LXB6OVhmYW10S0FLLWxtQW92RTFmZnZyQk5ZUEZqRXdndmQxblhDWi1kLVBycjJOS3ladlRMWV80aUNlWl9MNUJadTdUTTIwakpzTjY4WW9hV21STmZlYzJWUHBLWEJwSGNMeVpCXzFxWGlWUjE5bXRjRGFkSGhVaGVSdjQ1QkZWSG1FbC1ya1VwXzR5MWhwcmdyV19IeGluOHJ0a3lYOUdaMlQteERDUk5ZRDh4MHJ6Y0p6bTNtdENrc1R3bVNLMXctd2lLZjRSSjR6Vjdpek1HU016cy0yRVAxTTkydG83OUtaS1Q1bHJIUERIWFk0NFJwQmZwOThTTHlZejFaWWlrSUhvV08xckJfR1lNSlpqWEEta21XQWZMdGc4N2JVSUtHU2ZwZ1lMRVlQeGljcjZOZmh5NVN0TWQ2azZKSnhGb3NNbHhiUXQwSFpTeHlSYWhaNWplOTYtMkk2UVNsNWhBWEtJd1IxWFZjZmV0RHI3T3A4cDZkTFI5SUYteVowTmdHTjVNRHBYQzY5WXJUNktrbmI1cVVoOWJGLWtzcjRjaG1vNXJER1N4TjlOMFphZ3lobnhQam1jLU5Ic0ZWbUk3a3IzWG9hMXZ4QVhoOHp0R3JsWTVkTi1PNUxtY2pKcG9VQ3o3aWVyRzluTzRMVjFTaTNkOFpFc2RLa09lZ0dpT0diazROczNXemdHdFJXaXdFZDQ3SndSYl9CTER3ZkRDSlRYT2lzQVNzNWNKN3dOWmJzZVJkd1dNazEzTDVrRFBkaV9wTm0tZVpWd1Qwc2hYOEZ4MDFRaFlPVExKNUx0Q203TjFNM2I1ZlVPZFdxdFNSRFdmN2VKMkNYT0tDYnNFZVlVVXVoRk1oYzRKVlI4TGY4VFFMajJjMVdpZFVOa0h1S2FZdzMyV3A2SWtNWlpHWXU3alpsYWt4SXVLWi13RDN4WTZQTjN6ZkQtSlB0ajBYckx4ellibjExbVZUaU5HMmlRZW9INjY0R0hDNm9zWU5ld0ZmREJIOHlEdkhKQmhqUjJKVDU5ZjBRVWVxMktUMFZkN09DdHNZZHNUMFN6bHJpbHlsY1BIZWRBaTZDVHczNzhFYTFjUmRFR0lISTZtemMyZ1RLZmtCWExzbzJzV2ZHbFBZMV9Ob0l0bXhTbzVlQlRtQVczRmZzSTZTTmlRNXZKWW9qb3RxX0xLR2pyZzlSNFdiQTVHaEZHNm9LRnFmYVkzTGs3aGNxVHFtYjFsM0RVc2VOZUQ5S1pxNDJCN3RhMXltOGJpcGdyUl9MSXd5YnR4b1pVd2hHNWJiRlp0TmJuajVpR1VWYzc0ejJXcUpycDctZkRjWWUtWlV5VlpubkxIaHBodWhvQ0l1Ym5xVEFtUVJJOEEtX3RzUUJqaHV2QkptRWFfY3NCSzdyTm5KNVItU1lUR1YxMC1WWU84eVBRTm1YUUVPb3BnY0ZoR1E1NHZIUF9UUklQQjhwZU1XdzlXOEYzVVlKTGZidGxZUXRlV0xLZm9venNJOFBicVZxZnhjaDdJb1pJNFJuM3JvQlFMQ0FfX1hibkR3QXQ5VW50VmZmVmYydU9kWWNaeTF0OGNCcXVlLTYteGJPX2pTeGJwZzNmdXB6OHIyTHYzRkRSbzNJZzRtUGYyRnNEa3k2Zmhrc1JfOWdidDlXc09TNXdaVkRRN0VWWlBGQmhZc2U5ak1OTHlOR3d0REpqYTZQaTIzN1ZQakdYVzF0TUFLVWx2X1dJZksyQjdZeEpENVpVX3hGQ1dSbXpKZFRrMGQ0cTczb202em05OVZMYzEwNDE0S3RYQUR6bFdtNWx0aDFDc3NNLV9TZTkwUUQ0Tk1fMVo1RHhfajNLUGtHRDhtVGJiTVluMElPRWxZQVJzYXdVbjV4UXVWc2Z4T2pxdmNKd0pHcXd3NmhraDVoMjByMXNPWi1uei12MjU1SmlSOE1GUzRxbGhwZ2NpcnhZSFh3N2t1WDBiVTU1VTVCWm1SeXE1OHVoQ1RHMm9TTmt2SGJjTkxZX2k5bVFtWDJ5RnhCb3FXeU5YNFkxVWRRMTlqOGwzTzdkcnpVMXg1MWF6N3JIdEFxMHdTbU96T1hET0R2d0NaY3FIZnJCVGJ4V29qQm5vWkp6LXJMd1NnTkZBNTVlMDVHY3U2dkhoWGo1RzVkdzVkMEkzcndpQWg2TDFkaHdIamNqUVVwYm1kZE1DWDNxdW1NQWZpNDI3clB2dGVueW9YUURhM2puRXBhOVg1RDJQVS0zd0R0RHJGWnlBXzg3aGpEWVlvTlgxMDNTUkJsRFdNel8xZDhsUlpIdzZ2V0VVNzctV3RydHU1OEFvcERkcnltMEdEcTF6UVl4ZVdiOHBaM2xOME84T1hwblA1ZVRvUlRueE5yRWM3eEJHYmNlZkxlVFdJLUNhX2RKZ3hLLU4zLVhnSWdBaDAxREJ3enpFYUN3TFh1dUlhaEFPUFY0QzNXb01qMm1pbm90aVVlQXV1UUdiZU9ySl9Rb0NXVGVhSHFBX3FGV3RFX2FKalItbkI1akJIT2F1R2EwQUJELTJ4NEs1cmdMaTRmWHJ5cFFTV3l1QTYxVnl0dTBkeVNoV0x6bnhlVF8wVE5xR1U2cHdxRlFXZm9UTjh6ZUVCTGhmVkowRXVLaFFzN3I5bktkQzktSUFmSnQzXzBLTS04VERXS2lkZ3ozcmg0Q1JNdlJ5WHpibVh0MUdUNWFtLWtWZUFKQ04taTNLSXIzQm1iR2p0MVhDLXJraUdjeTB5bEt4RlNWT0dDME11Y3oxUDJFc1RTWDBRbUlwb0pvcl90MHVDSHdTMFFKNi1UMFIySWtDT0V3Y1RYbzhZOEdiYmVZVDMtbFdnUUJmTGRaMGJmMlFHQUR3UDlQVDRfYUl5WFFqNXhIeVU2SURaLUs5OGp2Z01LTWxCaklJb3AyZDY0Z3N1STdFajd0UW9uMlJwYWhnNHU2VFZ2RmxsUGc2UXNSeUFPcG1IckZYMUtJOG9oYkhFZzBWWVZ0Y2p6ZkNyOXYyVnhQMUhUMEZrLTcxTlNhTVBKa1dhemNCRnFvVFN4SGJDa1hBbDladGtmeDJjUlJsaHRhcTlzVEZONnotR01qdGozOEJ4N0FMY3dBQ1BoNTdYQWo4cXJzTkNYWTNVLUdudVlubVNPVmphaVhMc2MwQ3M1eUVPSldpeExtVVViV1lrUFM4OXA0cTBQX2QzVFlHVnZrUFpmWGgzSy1kVDVzTnlmalNwWWUxM2hmUHJhMndtd29TaFo5TnZ5TjZmbGlSLTVSNWptZHkzaXpIdmRMMDdIM1RyazJFV1FZNGFkNHhsLWJEcTVsZ2M5WnMyZ3hpSHdqSm43c2xwM2IwQzRZdDlwajVjb04ycFlQUERXOGJxUlVnWElzUTdENzFuSlVBUWhjS1BWWm5ZU2o3VEhHamtLWmdYbGVHN2IwTUgzaG4tNkdpc2FXdTRCT0FkX0pRS1BQVFI2bG5tRmZQc1dYR0twUzdDRnNTZjNzZVRZU0FzZE12RldnRG52MHp2alZyT2JreV9pQWpkZ1FUS1dQREJJVlh1cTVYVVlhZkJlOXJaMUhnSjJLb1A2cGtubUJWekpNekVhTzZlZnZhNFR6R3pnbmZyc2ZBQjRBNGQ4RmQtU1pMYlBQSWt6d1hOUE45TDl6REtPaWlITUlMZGd4eDByS001SjlxalB0bHhmSUhFenQyVjJ1YlY2QmdBUlVVMGhpcGN3MGRySmplajhtZFdBUXpkWHZLR1RrQ2FUSy04aloxUjBsbmg5Z0R0SGRHUVZCbDVVR1dIa2dBWWxfLUpXMUF2SmUyaWVzRHBPeURZbHVqbFNkVjhUajg5dHRtRWRQRlhDSlI2NVVueWNiMnNfeThfR3pNbmMycjJsVExQQVJmc1RrX3pzdlcwWi1Ha2FmRTRONHhvYjlSaWdzTV9HbktsbHg2Tll4UUJCSE51cXFWQzRKRW1sRnM1ZWhiOVI2TjJHSHdpWFRkVk5EeUt6cHdncHdxRjd5ZWVrZXhCZUotTnJCS3FaeGJ5T0IybUJlZTlfU2lyeERKV3UwYktiZzlwNFdnY1djTHVSSHBJWDAxUzg5UFdDbHpudXdTTF80SEZWWEtvbjZFNkUzdGJULXJKc2hxTW51QWVabmN6VW9raUEzUnVQZmg4NkdTOTEwcG1RcVl1aDdHRU9lVlNSS0ozWktUTUI1V0x2SnJSMUVmZHR5V18zZldBaGhGWFY1SmNudm10alZjdzRzeEZRS1lPSURaVmdQMmxzS2RJd0VsNGhiNDI1ZUN5eTlfU2JBcUJ5QTlNWDQxVks1RTVpQUVtRnlndEF4d2lwYkJjbGVBeldIb0pfZGJlblV0OGdaQnFydHZ5ZllCV3c0Q0dXU0F0dkpZMk9nQmtzeUowZVRYZXpVOE9xemJudlZoTEhCeWZ0alduM2hrQ1R5Zi16alB3cWF4eFhfMGRzQ2hRbU5DRVJKRTU5TlBLYzhTUTBzSW12RFRMd3JaUFp5R0RFcTJ3WjVKcmdLV09Zb1czSDR2R3FtSV91SUw3RmluY0poNi1rcXE3SFlKeFluejhxX2lYckpOenVvTFRoOUctMjBab3N0T3htVHJOc1RDSGxaYUVIVkZwS1NtUzBLZlc4V0o3Vlh0aXoySld3V1VHZDVZbzFGb2sxTzRMTFJkTXdaVFI5T1V5ZUZFNGszc0d0enhmZ1V6WmZKcTZRQ1VEVzFQNy1GcW1vTDlaSHBXMHIxRmQ2b3RJS0p1SjZzV0stcEFBUS1LNE4zV1M3SFRwMVdHNURfdlVBUmZQQWhkNlF5NmN1Z0hIOVVna3hCVW9fdkxjWEpqNG5RSElYQ3AtNnNCNmtyWmxGalg4Ri1tR0VDc2RBc1hSQ1Q3SlRCWF8yT1FodVBwVURSTTdHRzV6aDVsNHB6WTdqWVloaUNxcW5kR2R6b1R4TW45TGRQQl9ta2dVV3pITEVlVEpqSHZTZlpHMFBUaFBlR0M2bmlaMVZNOW1hV3pfdnZxYkZGejl5clNUb2wwb2RuOXVkcy0wRk5paGZnUXJ3a3hGQjhwdUdGR0JlN1dkUVNOVHNxRkFlZS1xWlVNUm1MTjZtYzhSd0pyQ2RnUkpPMmJCbFJ0LXVrckc4UzdFV05nTjlTeThqbFdJUkRFME9FMGtSbE9vM2FlNTUydnIxV2N6U083ZnFJMVAtNUQzc1BnRDltSVVTOEdEVmg2Tk4wdFdFajNjTkc4SGdBVjFOZUs2MDJ2enJpTUZySHVHSl9POVV1QUZJWTFkeGtjM0QzbWlfem00SmtkcU02U09CSG5FbXBWMGJmQ3B6SV9VWHZpOWMzZFdkTkRKQjNXRkl3cEIzWjBZWDczaFJtRG5Dc0pDb1llQVp0anp3cFdFaUR2cFpiUnlUU21WekQ5WGVDMEZONDZwSHZ5Nm9rYVZFUzNITGU5UHptYkJEbU5wd2JIQUp2WXVzcmtqSzBNeGQzTUZPaWgzT0VWZDg5T0hlWEdUbXprblhZTGp6ZUJ4aF9BSkZodUxjQnRCRV96NFNDdVlsZEdwTFpwN1VkcUxwaXdJc1p0eG90cnlHYUZOS0xfQ0VPcWgzNHdNNjdFaWZKcXB2dDR5ZUVlNkhTNEFwekxmZy5xU1liRm9Lb1RpNG5FSF9WQUw1cE5R"}) + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Conflict while restoring key https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-/81176a7d2d2144bc8024c99e70fe2cbb - key already exists or concurrent access"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '249', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'ffb7f259-d10c-46c2-915f-d870d0eb4908', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:25:30 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '39d4c4de-926d-4442-8150-92e7d8d07100', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHIAAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:25:41 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:25:40 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/keys/restore', {"value":"JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLmVhcjR1Q01EWlA2dG5ITktxRkZWOVgzUkdvNmZFdDh0R3VBT2tsWXJNUi1fSlY2MVNOMlIzVThNZHg4QXZqampFdndOQnI4ZENUZDRkSEwwT2FQb000R2lQOXJHaU5xeHV2RkxiZm13OUhnWGh1NUc0cTBJNVRLNEhhaHF2eXFldldDQTF1dDFqQlZJZVl0cDU3Q2I4WUZoRmxhc21DYU9LVTVpVmtGa0M1WVNibEVIaGxlcFpYMV93RHBjS3RHV2pwY1FUZmtfSmdvUUI2YWNERXpzLXkyd0dxNHhibTY1SGVSYTB1bW04ZW40NUItODVHTUFpeUtUYlNIdjd4QU5KdHhMWnRESHZCZGV3WS1ZcC1ZSE1FMTFmckhnTFJvQzNLaXFXYUdVZU8yOVlwNXRYeUJDRlBJTTlBRi1LeGNKQ1pHQXRhU0xNbk1Nd3hhQ0RBcnY1US5tRmU0VWN2NGYxWlNvamdMWFZqSmJ3LmFlcVMwM3lBQW5JSXN2cmJTb3F3d0ptUkdyYWtDQ0tMZGNrb2pzV3d3Wktua2N4bUhzc0RuUFRnVkpfSV9nbXFpOHNsamI1YzA0QlJwNWVJSkpWeF9XTmpnNVFDVll0WGhVT1oxOVk2SDBSd3VCMnZTTDVadUhrVkYwZWZMMnh3Z1VjZXZaT3VNV3YyRW1TOEVYUm0tY2l2d053LW9oREFLWkZXUWNKVzhQX2Q2NWc1MmhzY1NyUWp5QlRwTm83bTBHN0lsbkJTZnd4LUdZVWV6LTNKeHlMSEhSZ1hQY09peHc2dldlUXp1WTV5SnQ0R1hHMlJFTjZaM0VXMktlZG1LQ1BGZnVIUTFqSW5VeTBmdXpsZG1xeGZpSlFTYWlJSlZVTlVWQlRwRUpzWElmaGlVSXVfS1RoS0thRXFSSjRjLUJIMjQyenkxTUdkZ0E5MGtqRUxwNk1iRnZMWDBOSzRZbFhHSUptT1JPX25OMzNHSTFUNDVsSEZTSlA4V1JoSmZRQjdObjI5QTZ4aW84clBGSmoxdWUxbFJVOGFkMXFrR1pxcWVBRlVfN2VZdVM5SFFlelhZZ0NMZmRHN1VFRDB2U25oekJVUmI5RWJYWER4SW01NXZITVlhYXFmTnBQVXBMOUhtMXlOdW82T3FucU1ROC1WaFBhTl9PYjNlR1QwMF9sOVhUVW1odGtsYUh5LURqeEtEVzJHeU14QlpPenlZT2xuSURydjNBZVBZdjR5QjlFWHJ3Yy1kUDNiX3lXZ180RVNqeDJQMzNreURiSUJZUEtTdXItUWJfYV9ONUNtb3J6cUJoTldyRXBQenFpVVhBLW80dW9qcFd2SGxrRUlHa05lUmEyaFpOWFlOYlRPaThjUmx0R2JJNWQ5bXlwNVNkcGFtWDliS1d4bDVHdkp6SFpzYjFHdVhCVjBrcEFNRXp0ZzRSQ0FCVjZ2alJtQzhrWkE0cmVzRV8yOFBzUmYtdVZQUzk1eTBLTWNna1A1YWtSQU93amRHbUNkQkUzbTRpbzZKUjZ6c0RRWm1MMG9ldGVlRV9KbkZDWUk2U1JtY2pUeTc1cDhGbzZkSTYwQkdHZllZT2JwZzVjR2cxalBIYVRRVV9tRzVUOFUwQmlIVEsydnYyajNfRFFfTF92TDZwYmJKOEdtTnNhcTlXakozUGlwRmNQamZnSXVvWnFVUXYxamZyYk9WLW0wcnZxbHF1enpKbHJNZkdQS1BvWkdGUHQ1MXJ0Y1JBSGNPSEdGRjBkQTR6RENab0dJbUxmMHhMN0N0SVJRNlF4LVFMU0tHeWs4ZHlSZ212Q19qb2ZFdVVPSDROTXVlR0xNalVMb3dsOHk1b0ZhQ3RIUHJRQ1YzaDU5VWpJNDh3SmZQSk1Id1psdEpHalRjNkZub20xQ1UzUVktZTltTnpDZlphYjRWM1Jac0t2clB6UW5oNFVWTlJtQXR4RHhuOXluSWU5NC1iWFlWM2RUb2lfcjZxNFpsODYwSjRVcGh4R0c0TkhkbjM4dHd5aHNZczl0bWhVbXBjbDB0b3lHOU84ZTZuaW9MaEF2UGZXellRUXhLMHhCOXN0RDhEZi0zd0VMWWJhWjE4SFBBR2xjYWFsX3FBNlctanh6cGh0RFB0dlVDUjhIUmZWRDlMakxYTUhYakhEdkN2cUxqdE43anBpSE01M0RHeFhURmpvVl9nOEFCOERqVlFlRnZLTWRfUGcxbGI0VS1VM0x2RHVzWlFHS2lvaWZHNko2V2Rsc1BZMExWOHZaeTBxcDV2WFNEazBFRWhXVVJ4dTlJQjdmRVZOS3dhN1YwcEp2MFAxYUVzRnlQcWdiMHdwaEFGOWZNZWdHOFAzM1cxeVA4VzMtdWhHSFZQamUwa1lOUElENzA0VEV2dFB1Z3AzTlhIVGZzU01aeFlXNzIwY3BTdDJDZE9BYmV4S3pRTEY3YzNMb0liNnVxbzVZOUZQb0VRREcyQlpYY3diaEhDYzYtVUVIRFVDQjJCbnR2UDRGa2ZuaEpHRkh1bmc2dVhvd3dlanBzSjJOcXZyRVNBWUQyZ2RWXzMzd0sxcUthZG5xVmNNUV9aT1ZwMWZ1cEk2Y0dpUnBXN2Q2ajNYeHZMTTFFdm9RcGtsMFZSb01kanRydVBWZkVlNjd6R0ltZ2stM01yelY4WWV0eFR1elpNV1BDMFp1YTNzdzVERmlBUTJLM2JnZ2lYOC1obzRuOGRpcC1SYlhDd3YzNm9nYXlNT1NoaXVuaHRJZ21VWWhjOVVPcEZoN0xicnhSa1lfWnZ5TWVGT2gxQW16Ql9XR0ZkMTVSMk1IdUlpMWFoQ2h3bm5qMHVIT2lTUDBDVzRKS28wS1lSYV9aU0FzT0FrMk1LM3pUWFV5dVQ3N0MzY21GOUctcGZvbzZJbndGLUJFM2ltSlJHZVE3S0VyOHBVYmZXWUJTTXJWSDJXaHlzSE1kX3NsOXpVMUpDUlFGLWtqWHltX1VVUzhqZEVoSWRiUk43WHE2aVIxZGNQbUNwZS1LWVd2Y1RqQW01N3dqSXphZWVYeXVSWWFHSWZJVk96RGZzd05NX3owX210dEFrUXNrNzA2dG1UcUFmSXAwTEZYSlQ1ck5jd1NLd25ySUY4NWppam1vSm9rWjhGRm5USEdXcTVyLUhfY2s2MTZDSzMwZGVvX01LRURNei1RLTYwY1g5Rm5QRUVGR2J6UXc0S0tTQUZ2WXVwRlByNDhhaEw0eDgwS0RhODlEOW42aGZneS11dFI3cVhyX0FnZ3ZlQlpka2FHOGR3WjNUMWp0MENpVnRtQUU0b3pISERyWk0yalNXQS10b29fY0U1ZDhQMUZSdjdzbmFPb2FUZEdwX09aQlhGMmVyOFlSRXVNR1QwTkFjNWdPV3cyM1Y2VGNwWFJSR3BkQXpBd2paOHNOWFBuM2N1RXM4bVVFNzVlLXJ1cFRLbkdsODdGemxKV0UzWXZTdG5yN1BfbHdyZjlkRXBLdDZYU1pTbDl6eENfclVJa0l3X1pnOTBtSkNYN3lVbkVkaHhVUnhmTHNRcUhrQ1lZXzJISlZ1UDZFMFZXOEpNTEtMTDUzZ0pKWDl0SGE2MVdNb1pzUTliTi1WdWQxOGJIS2lOUmhubGNKcmR6aTFmZ0lNMzJDNmpsUnJZZWxFRHd1UGVMeTZjMGN0cl9nQTE2ZU5fck5ES1BLS2RxUWxaS2RqMFBPSmpBMWV6SEp1QkFfNWtPU3V1MXFoVWZNVkhUOTdCZC04eE12NUY0UlNCck5PVS1zM3FlMlNjRnRPblBxNWFNMHdKSDZSLXlsbFA4Z19ZY0xrY1h1SkJOUmFMM2RrTEhPNExZbHFkamx1T0VCTTVnS2RBZUh6OUE0OVlCT21oektNdzZGbUlLV0xWYkVsOHRuMHU0dXBGb1g0OEVnZGtNeEpSdjdCd3VGVzBieW5ic0ZtTVp5MVNESEtUTnZvUFBVZEdFZDJFYm0xbm5HX1BfcEh6aXJKZzQ2T0RyNUc0SUc4ZWpJdXVtVmZyeTFXLUpybjZCZE14M0JBTzdGNXlJVXJGSXBBWHR3OEZMZGJrb3M4b3VJVVBxUk01V2N5Y3h1X1dzNngzMzN6ejV0eF9sa3JrWGdGekl0WGc3bk1Nc01wWTUxLUxhX2RxbUVXRmJRZWs4eUh1Y01LMXJYcC13OTkxWGw1bG1MeWMzNnRxT1FxS1dJOW00dXh3ekg3ZWJlc0VIcl9YMFI2c0wxOGNrQ0xka2ZLN2RoZmI5QVB1R2ZPSm1nUk03QnpaNmtMUzRfd0owaWd0OG9odUNFaXhSbmdzV0djTTN0VnhmSjJxemh5UHRqTkUzdldxR295ZXk1Y2p3UEgzNzZOWk9UYzIzQWtaMVhaTnhndDMzUTZNaHdlVjZ2LTVrMUJYX18wX1NMUEhZN0pRTVRkX20yNUw2RWdnV3hkNU5saUtnRGR0SXR0eTZ1dkdPZEd3WXE1a1FVSWRoR2JKU3YwVDdWU3dRRkFCREFGRFp0dU1YT1A0VU1WYjVNaGtoVHlpMmxjM19BYk5GTURtNndybHJaaTNaTzdsVEc1UTR0STZ0UTd1Rnk3QkhkSl90SWpZUVNXYkxDNXR1ODVzOFpneGlNQm10cV80T25zRl9adHlXSl82TTdtU2QtOUwtMFNva1B6cWgwY2N6VEdwSmpWa0ZkcFdSMlZUU01vSEl1T2hCTHdFbHVybjctb1g4UkV4aGxWNU84dXZkTkNJTk1TUHJCZ2o0UHFxdHRMV0tUTDZ6M3NZYlQ1aTBDWHFOM205WVBZdFlhTDcxUDh3TG50cDlWY2xyVzFsZjlWbzdRWUl1bHJEVi1fZGJYQW5ucWZrRTBHdzNmcFhINVhrY0RjUWZ3OFFjTDhUc2hSd3BHaGh6VGQ5LTR4OHY3N3k4Ty10Qkp0aEVXX0h1MF9vN0RsYTZEZTR0SDNfbWI4RFE1R3IycGFvaGlGUzRtQnk2RlBVRXllclFkR0NOU2pMRjBmbEVOSDdoWkFHSFVIdnlPMGVIUmZ0VDN6d3N5cVhkdWhLcU56c09EbE9UY0dfaUZFaUhOcS10bkNtYWNkVG1DRkkxV3dnU1lLWkNuOXhzSVVPMFVsNVR3dlluM083YllPN0NFQ0c0R0ctOFE5cGdPYWpMV2ZjQklRYm1RZmxqSlYwNjh6WF9ZS2FxUl9aR0FVS1oxY3A0MjdzbVUySV9kV1NlZ1BZUVIwREUyNW14Sm02cUszMzNLWnV4OXlWTXdNclBYamtpZXdmbjNGM2YzaGZ0RnJqN18yNmN1Yko1QjhVTlktUGpnTmFuNU9tNWpIem5SQW5JYTltV1l1eV9qd1dKY0NjcUhpVzhSWEUzMVdRM1NwdWVCZ1Iyd1Vxa2k0aHdqSFhabW1ja1A1SVhiM2x6UFAzOXd1TmhOZ1JtUHhVa00tcUlqQUVpVlJKTXBIbGFtTEFCOThsR2VMTTRjejhKenVncXdIR29iY1VfcXZnd2hqUFdsOTRoMDdlRW80NzRlalF3ZENnMkU4R0Fkd2tyQXZMUGN5QVV1emVRdFE1X3owVlZZb3dveVQ4bUF3Z3RZckNPVjhxR2gxVXIzZmU2cW9YVlZ4a2Q2V2w3RmROdHBEaV9qbkJqdGxBc0NvNGMyS1lueUxDcUVoQ2NJNVhtdDBhODE4YVlRVE8xMVVjZ3ZQbEltMVlMenFkdHZtTUlwbkNxWW9OMExKVWZuZHBnOEd5S3lEUHZJNklsY3dWdW1jNFJzNkxXNVpETVlVNExHZ0lEdS13TFRTcE1SX1RLblotQzRnWmh4bTFSQnNCcTA2Sk5yMGFjcC1vS0c1ZFdzRkFEOFA0LXB6OVhmYW10S0FLLWxtQW92RTFmZnZyQk5ZUEZqRXdndmQxblhDWi1kLVBycjJOS3ladlRMWV80aUNlWl9MNUJadTdUTTIwakpzTjY4WW9hV21STmZlYzJWUHBLWEJwSGNMeVpCXzFxWGlWUjE5bXRjRGFkSGhVaGVSdjQ1QkZWSG1FbC1ya1VwXzR5MWhwcmdyV19IeGluOHJ0a3lYOUdaMlQteERDUk5ZRDh4MHJ6Y0p6bTNtdENrc1R3bVNLMXctd2lLZjRSSjR6Vjdpek1HU016cy0yRVAxTTkydG83OUtaS1Q1bHJIUERIWFk0NFJwQmZwOThTTHlZejFaWWlrSUhvV08xckJfR1lNSlpqWEEta21XQWZMdGc4N2JVSUtHU2ZwZ1lMRVlQeGljcjZOZmh5NVN0TWQ2azZKSnhGb3NNbHhiUXQwSFpTeHlSYWhaNWplOTYtMkk2UVNsNWhBWEtJd1IxWFZjZmV0RHI3T3A4cDZkTFI5SUYteVowTmdHTjVNRHBYQzY5WXJUNktrbmI1cVVoOWJGLWtzcjRjaG1vNXJER1N4TjlOMFphZ3lobnhQam1jLU5Ic0ZWbUk3a3IzWG9hMXZ4QVhoOHp0R3JsWTVkTi1PNUxtY2pKcG9VQ3o3aWVyRzluTzRMVjFTaTNkOFpFc2RLa09lZ0dpT0diazROczNXemdHdFJXaXdFZDQ3SndSYl9CTER3ZkRDSlRYT2lzQVNzNWNKN3dOWmJzZVJkd1dNazEzTDVrRFBkaV9wTm0tZVpWd1Qwc2hYOEZ4MDFRaFlPVExKNUx0Q203TjFNM2I1ZlVPZFdxdFNSRFdmN2VKMkNYT0tDYnNFZVlVVXVoRk1oYzRKVlI4TGY4VFFMajJjMVdpZFVOa0h1S2FZdzMyV3A2SWtNWlpHWXU3alpsYWt4SXVLWi13RDN4WTZQTjN6ZkQtSlB0ajBYckx4ellibjExbVZUaU5HMmlRZW9INjY0R0hDNm9zWU5ld0ZmREJIOHlEdkhKQmhqUjJKVDU5ZjBRVWVxMktUMFZkN09DdHNZZHNUMFN6bHJpbHlsY1BIZWRBaTZDVHczNzhFYTFjUmRFR0lISTZtemMyZ1RLZmtCWExzbzJzV2ZHbFBZMV9Ob0l0bXhTbzVlQlRtQVczRmZzSTZTTmlRNXZKWW9qb3RxX0xLR2pyZzlSNFdiQTVHaEZHNm9LRnFmYVkzTGs3aGNxVHFtYjFsM0RVc2VOZUQ5S1pxNDJCN3RhMXltOGJpcGdyUl9MSXd5YnR4b1pVd2hHNWJiRlp0TmJuajVpR1VWYzc0ejJXcUpycDctZkRjWWUtWlV5VlpubkxIaHBodWhvQ0l1Ym5xVEFtUVJJOEEtX3RzUUJqaHV2QkptRWFfY3NCSzdyTm5KNVItU1lUR1YxMC1WWU84eVBRTm1YUUVPb3BnY0ZoR1E1NHZIUF9UUklQQjhwZU1XdzlXOEYzVVlKTGZidGxZUXRlV0xLZm9venNJOFBicVZxZnhjaDdJb1pJNFJuM3JvQlFMQ0FfX1hibkR3QXQ5VW50VmZmVmYydU9kWWNaeTF0OGNCcXVlLTYteGJPX2pTeGJwZzNmdXB6OHIyTHYzRkRSbzNJZzRtUGYyRnNEa3k2Zmhrc1JfOWdidDlXc09TNXdaVkRRN0VWWlBGQmhZc2U5ak1OTHlOR3d0REpqYTZQaTIzN1ZQakdYVzF0TUFLVWx2X1dJZksyQjdZeEpENVpVX3hGQ1dSbXpKZFRrMGQ0cTczb202em05OVZMYzEwNDE0S3RYQUR6bFdtNWx0aDFDc3NNLV9TZTkwUUQ0Tk1fMVo1RHhfajNLUGtHRDhtVGJiTVluMElPRWxZQVJzYXdVbjV4UXVWc2Z4T2pxdmNKd0pHcXd3NmhraDVoMjByMXNPWi1uei12MjU1SmlSOE1GUzRxbGhwZ2NpcnhZSFh3N2t1WDBiVTU1VTVCWm1SeXE1OHVoQ1RHMm9TTmt2SGJjTkxZX2k5bVFtWDJ5RnhCb3FXeU5YNFkxVWRRMTlqOGwzTzdkcnpVMXg1MWF6N3JIdEFxMHdTbU96T1hET0R2d0NaY3FIZnJCVGJ4V29qQm5vWkp6LXJMd1NnTkZBNTVlMDVHY3U2dkhoWGo1RzVkdzVkMEkzcndpQWg2TDFkaHdIamNqUVVwYm1kZE1DWDNxdW1NQWZpNDI3clB2dGVueW9YUURhM2puRXBhOVg1RDJQVS0zd0R0RHJGWnlBXzg3aGpEWVlvTlgxMDNTUkJsRFdNel8xZDhsUlpIdzZ2V0VVNzctV3RydHU1OEFvcERkcnltMEdEcTF6UVl4ZVdiOHBaM2xOME84T1hwblA1ZVRvUlRueE5yRWM3eEJHYmNlZkxlVFdJLUNhX2RKZ3hLLU4zLVhnSWdBaDAxREJ3enpFYUN3TFh1dUlhaEFPUFY0QzNXb01qMm1pbm90aVVlQXV1UUdiZU9ySl9Rb0NXVGVhSHFBX3FGV3RFX2FKalItbkI1akJIT2F1R2EwQUJELTJ4NEs1cmdMaTRmWHJ5cFFTV3l1QTYxVnl0dTBkeVNoV0x6bnhlVF8wVE5xR1U2cHdxRlFXZm9UTjh6ZUVCTGhmVkowRXVLaFFzN3I5bktkQzktSUFmSnQzXzBLTS04VERXS2lkZ3ozcmg0Q1JNdlJ5WHpibVh0MUdUNWFtLWtWZUFKQ04taTNLSXIzQm1iR2p0MVhDLXJraUdjeTB5bEt4RlNWT0dDME11Y3oxUDJFc1RTWDBRbUlwb0pvcl90MHVDSHdTMFFKNi1UMFIySWtDT0V3Y1RYbzhZOEdiYmVZVDMtbFdnUUJmTGRaMGJmMlFHQUR3UDlQVDRfYUl5WFFqNXhIeVU2SURaLUs5OGp2Z01LTWxCaklJb3AyZDY0Z3N1STdFajd0UW9uMlJwYWhnNHU2VFZ2RmxsUGc2UXNSeUFPcG1IckZYMUtJOG9oYkhFZzBWWVZ0Y2p6ZkNyOXYyVnhQMUhUMEZrLTcxTlNhTVBKa1dhemNCRnFvVFN4SGJDa1hBbDladGtmeDJjUlJsaHRhcTlzVEZONnotR01qdGozOEJ4N0FMY3dBQ1BoNTdYQWo4cXJzTkNYWTNVLUdudVlubVNPVmphaVhMc2MwQ3M1eUVPSldpeExtVVViV1lrUFM4OXA0cTBQX2QzVFlHVnZrUFpmWGgzSy1kVDVzTnlmalNwWWUxM2hmUHJhMndtd29TaFo5TnZ5TjZmbGlSLTVSNWptZHkzaXpIdmRMMDdIM1RyazJFV1FZNGFkNHhsLWJEcTVsZ2M5WnMyZ3hpSHdqSm43c2xwM2IwQzRZdDlwajVjb04ycFlQUERXOGJxUlVnWElzUTdENzFuSlVBUWhjS1BWWm5ZU2o3VEhHamtLWmdYbGVHN2IwTUgzaG4tNkdpc2FXdTRCT0FkX0pRS1BQVFI2bG5tRmZQc1dYR0twUzdDRnNTZjNzZVRZU0FzZE12RldnRG52MHp2alZyT2JreV9pQWpkZ1FUS1dQREJJVlh1cTVYVVlhZkJlOXJaMUhnSjJLb1A2cGtubUJWekpNekVhTzZlZnZhNFR6R3pnbmZyc2ZBQjRBNGQ4RmQtU1pMYlBQSWt6d1hOUE45TDl6REtPaWlITUlMZGd4eDByS001SjlxalB0bHhmSUhFenQyVjJ1YlY2QmdBUlVVMGhpcGN3MGRySmplajhtZFdBUXpkWHZLR1RrQ2FUSy04aloxUjBsbmg5Z0R0SGRHUVZCbDVVR1dIa2dBWWxfLUpXMUF2SmUyaWVzRHBPeURZbHVqbFNkVjhUajg5dHRtRWRQRlhDSlI2NVVueWNiMnNfeThfR3pNbmMycjJsVExQQVJmc1RrX3pzdlcwWi1Ha2FmRTRONHhvYjlSaWdzTV9HbktsbHg2Tll4UUJCSE51cXFWQzRKRW1sRnM1ZWhiOVI2TjJHSHdpWFRkVk5EeUt6cHdncHdxRjd5ZWVrZXhCZUotTnJCS3FaeGJ5T0IybUJlZTlfU2lyeERKV3UwYktiZzlwNFdnY1djTHVSSHBJWDAxUzg5UFdDbHpudXdTTF80SEZWWEtvbjZFNkUzdGJULXJKc2hxTW51QWVabmN6VW9raUEzUnVQZmg4NkdTOTEwcG1RcVl1aDdHRU9lVlNSS0ozWktUTUI1V0x2SnJSMUVmZHR5V18zZldBaGhGWFY1SmNudm10alZjdzRzeEZRS1lPSURaVmdQMmxzS2RJd0VsNGhiNDI1ZUN5eTlfU2JBcUJ5QTlNWDQxVks1RTVpQUVtRnlndEF4d2lwYkJjbGVBeldIb0pfZGJlblV0OGdaQnFydHZ5ZllCV3c0Q0dXU0F0dkpZMk9nQmtzeUowZVRYZXpVOE9xemJudlZoTEhCeWZ0alduM2hrQ1R5Zi16alB3cWF4eFhfMGRzQ2hRbU5DRVJKRTU5TlBLYzhTUTBzSW12RFRMd3JaUFp5R0RFcTJ3WjVKcmdLV09Zb1czSDR2R3FtSV91SUw3RmluY0poNi1rcXE3SFlKeFluejhxX2lYckpOenVvTFRoOUctMjBab3N0T3htVHJOc1RDSGxaYUVIVkZwS1NtUzBLZlc4V0o3Vlh0aXoySld3V1VHZDVZbzFGb2sxTzRMTFJkTXdaVFI5T1V5ZUZFNGszc0d0enhmZ1V6WmZKcTZRQ1VEVzFQNy1GcW1vTDlaSHBXMHIxRmQ2b3RJS0p1SjZzV0stcEFBUS1LNE4zV1M3SFRwMVdHNURfdlVBUmZQQWhkNlF5NmN1Z0hIOVVna3hCVW9fdkxjWEpqNG5RSElYQ3AtNnNCNmtyWmxGalg4Ri1tR0VDc2RBc1hSQ1Q3SlRCWF8yT1FodVBwVURSTTdHRzV6aDVsNHB6WTdqWVloaUNxcW5kR2R6b1R4TW45TGRQQl9ta2dVV3pITEVlVEpqSHZTZlpHMFBUaFBlR0M2bmlaMVZNOW1hV3pfdnZxYkZGejl5clNUb2wwb2RuOXVkcy0wRk5paGZnUXJ3a3hGQjhwdUdGR0JlN1dkUVNOVHNxRkFlZS1xWlVNUm1MTjZtYzhSd0pyQ2RnUkpPMmJCbFJ0LXVrckc4UzdFV05nTjlTeThqbFdJUkRFME9FMGtSbE9vM2FlNTUydnIxV2N6U083ZnFJMVAtNUQzc1BnRDltSVVTOEdEVmg2Tk4wdFdFajNjTkc4SGdBVjFOZUs2MDJ2enJpTUZySHVHSl9POVV1QUZJWTFkeGtjM0QzbWlfem00SmtkcU02U09CSG5FbXBWMGJmQ3B6SV9VWHZpOWMzZFdkTkRKQjNXRkl3cEIzWjBZWDczaFJtRG5Dc0pDb1llQVp0anp3cFdFaUR2cFpiUnlUU21WekQ5WGVDMEZONDZwSHZ5Nm9rYVZFUzNITGU5UHptYkJEbU5wd2JIQUp2WXVzcmtqSzBNeGQzTUZPaWgzT0VWZDg5T0hlWEdUbXprblhZTGp6ZUJ4aF9BSkZodUxjQnRCRV96NFNDdVlsZEdwTFpwN1VkcUxwaXdJc1p0eG90cnlHYUZOS0xfQ0VPcWgzNHdNNjdFaWZKcXB2dDR5ZUVlNkhTNEFwekxmZy5xU1liRm9Lb1RpNG5FSF9WQUw1cE5R"}) + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-/81176a7d2d2144bc8024c99e70fe2cbb","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"mKkZRl3qG-Nnb_qfhQNv4swFpp_808T4nhp2kghlPhgLva0__-k1Tik4iOpXvpRRPR6yA0HPoxRrZVORQ9g08f5utNxi52uAX-yGRKxPAykDUtkORGMIhvMTQdpKn7ndPixmMqean79hMEkMqWAt5dKW2bsNzC5n8pg-cLTO-KeP0u1MAUc-XuP_doe2SeIsauEnCEYm08jvLhMbVVujL34HRw7JT15XR43LBCZ5o3h-BLWS0r4rUwEBRksJBVKbgUbFVyIYuMsthYgfO1iJtDvp7l8ie3_QkX4kQPsQuypI9S8BAlF3MJ7BUjlzDj23_xEqLW2dwbE_mY3VveTEzQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561724708,"updated":1561724708,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '8b02ca5d-d928-4833-bc36-ae18b2834d59', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:25:40 GMT', + 'Connection', + 'close', + 'Content-Length', + '708' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'c0620aa9-8c67-443a-8a29-2109cb5d6b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHIQAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:25:41 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:25:41 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/keys/recoverKeyName-canrestoreakeywithagivenbackup-/') + .query(true) + .reply(200, {"key":{"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-/81176a7d2d2144bc8024c99e70fe2cbb","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"mKkZRl3qG-Nnb_qfhQNv4swFpp_808T4nhp2kghlPhgLva0__-k1Tik4iOpXvpRRPR6yA0HPoxRrZVORQ9g08f5utNxi52uAX-yGRKxPAykDUtkORGMIhvMTQdpKn7ndPixmMqean79hMEkMqWAt5dKW2bsNzC5n8pg-cLTO-KeP0u1MAUc-XuP_doe2SeIsauEnCEYm08jvLhMbVVujL34HRw7JT15XR43LBCZ5o3h-BLWS0r4rUwEBRksJBVKbgUbFVyIYuMsthYgfO1iJtDvp7l8ie3_QkX4kQPsQuypI9S8BAlF3MJ7BUjlzDj23_xEqLW2dwbE_mY3VveTEzQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561724708,"updated":1561724708,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '8ac7613b-392d-487a-a09a-797f5fcc5eb2', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:25:41 GMT', + 'Connection', + 'close', + 'Content-Length', + '708' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '74af8cad-5d53-4cde-b82e-2930e9856700', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHIgAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:25:42 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:25:41 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/keys/recoverKeyName-canrestoreakeywithagivenbackup-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-","deletedDate":1561724742,"scheduledPurgeDate":1569500742,"key":{"kid":"https://keyvault_name.vault.azure.net/keys/recoverKeyName-canrestoreakeywithagivenbackup-/81176a7d2d2144bc8024c99e70fe2cbb","kty":"RSA","key_ops":["encrypt","decrypt","sign","verify","wrapKey","unwrapKey"],"n":"mKkZRl3qG-Nnb_qfhQNv4swFpp_808T4nhp2kghlPhgLva0__-k1Tik4iOpXvpRRPR6yA0HPoxRrZVORQ9g08f5utNxi52uAX-yGRKxPAykDUtkORGMIhvMTQdpKn7ndPixmMqean79hMEkMqWAt5dKW2bsNzC5n8pg-cLTO-KeP0u1MAUc-XuP_doe2SeIsauEnCEYm08jvLhMbVVujL34HRw7JT15XR43LBCZ5o3h-BLWS0r4rUwEBRksJBVKbgUbFVyIYuMsthYgfO1iJtDvp7l8ie3_QkX4kQPsQuypI9S8BAlF3MJ7BUjlzDj23_xEqLW2dwbE_mY3VveTEzQ","e":"AQAB"},"attributes":{"enabled":true,"created":1561724708,"updated":1561724708,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'f5f22af6-c7e4-49f7-8b38-e7ec15cc9887', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:25:42 GMT', + 'Connection', + 'close', + 'Content-Length', + '891' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '9bf10116-1d17-4ab3-8afe-e852a02c6800', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHIwAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:25:42 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:25:42 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '00093ae6-16ea-428b-b2ce-fc68f70c05af', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:25:42 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'f6ca998c-2678-4fd0-afd6-f6a6ba856300', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHJAAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:25:53 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:25:53 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'ccfc37fb-325b-4dc7-9562-11794ded3833', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:25:53 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'fea231bc-fee0-43df-8078-526dd1eb6800', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHJQAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:26:03 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:26:03 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Key is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', 'Content-Length', - '74', + '118', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '4ec2e663-5499-409f-9020-e6d201957400', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:26:03 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', 'Content-Type', 'application/json; charset=utf-8', 'Expires', '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '3706d6c9-852a-47f7-9488-8e9e2ed05a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHJgAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:26:14 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:26:13 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedkeys/recoverKeyName-canrestoreakeywithagivenbackup-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', 'Server', 'Microsoft-IIS/10.0', 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '4b06643b-c0d5-4e9a-a689-8ba9995701b8', + '50afe55b-8047-40bc-9b83-f72454a6500a', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -66,7 +2603,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:38:43 GMT', + 'Fri, 28 Jun 2019 12:26:14 GMT', 'Connection', 'close' ]); @@ -86,17 +2623,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '52649bed-6ca0-4c41-b490-f90240891200', + '68915bdc-d306-44cf-a133-e3c90a496a00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AlCE3tHUNHtPkdZGHu4FEEA_aSJHAgAAAPJ9mtQOAAAA; expires=Thu, 18-Jul-2019 06:38:44 GMT; path=/; secure; HttpOnly', + 'fpc=AqVdAuNcxktNq-cZVqxK6wM_aSJHJwAAAKn9p9QOAAAA; expires=Sun, 28-Jul-2019 12:26:14 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:38:43 GMT', + 'Fri, 28 Jun 2019 12:26:14 GMT', 'Connection', 'close', 'Content-Length', @@ -104,14 +2641,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedkeys/recoverKeyName') + .post('/keys/restore', {"value":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"}) .query(true) - .reply(404, {"error":{"code":"KeyNotFound","message":"Key not found: recoverKeyName"}}, [ 'Cache-Control', + .reply(400, {"error":{"code":"Malformed backup blob","message":"Backup blob contains invalid or corrupt version."}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', 'Content-Length', - '74', + '103', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -121,11 +2658,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '35660c88-96f1-4260-8c95-122ec082ca78', + '73ed82b0-8ab7-4b62-8549-e506988bd7d5', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -135,7 +2672,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:38:43 GMT', + 'Fri, 28 Jun 2019 12:26:14 GMT', 'Connection', 'close' ]); diff --git a/sdk/keyvault/keyvault-keys/tests/CRUD.test.ts b/sdk/keyvault/keyvault-keys/tests/CRUD.test.ts index 4764adaa55ed..64232427ac02 100644 --- a/sdk/keyvault/keyvault-keys/tests/CRUD.test.ts +++ b/sdk/keyvault/keyvault-keys/tests/CRUD.test.ts @@ -4,51 +4,25 @@ import * as assert from "assert"; import { getKeyvaultName } from "./utils/utils.common"; import { KeysClient, CreateEcKeyOptions, UpdateKeyOptions, GetKeyOptions } from "../src"; -import { TokenCredential, RestError } from "@azure/core-http"; +import { RestError } from "@azure/core-http"; import { EnvironmentCredential } from "@azure/identity"; -import { record, setReplaceableVariables, delay, setReplacements, env } from "./utils/recorder"; +import { + record, + setReplaceableVariables, + retry, + setReplacements, + env, + uniqueString +} from "./utils/recorder"; +import TestClient from "./utils/testClient"; describe("Keys client - create, read, update and delete operations", () => { - let credential: TokenCredential; - let keyVaultName: string; - let keyVaultUrl: string; let client: KeysClient; + let testClient: TestClient; let recorder: any; - // NOTES: - // - To allow multiple integraton runs at the same time, - // we might need to factor in more environment variables. - // - Another way to improve this is to add a specfic key per test. - // - The environment variable is probably better named like PREFIX_KEY_NAME. - const keyName = `CRUD${env.KEY_NAME || "KeyName"}`; - - // NOTES: - // - These functions are probably better moved to a common utility file. - // However, to do that we'll have to create a class or closure to maintain - // the instance of the KeyClient available. - async function purgeKey(): Promise { - await client.purgeDeletedKey(keyName); - await delay(30000); - } - async function flushKey(): Promise { - await client.deleteKey(keyName); - await delay(30000); - await purgeKey(); - } - async function maybeFlushKey(): Promise { - try { - await client.deleteKey(keyName); - await delay(30000); - } catch (e) { - // It will fail if the key doesn't exist. This expected. - } - try { - await client.purgeDeletedKey(keyName); - await delay(30000); - } catch (e) { - // It will fail if the key doesn't exist. This expected. - } - } + const keyPrefix = `CRUD${env.KEY_NAME || "KeyName"}`; + let keySuffix: string; before(async function() { // NOTE: @@ -61,38 +35,36 @@ describe("Keys client - create, read, update and delete operations", () => { AZURE_TENANT_ID: "azure_tenant_id", KEYVAULT_NAME: "keyvault_name" }); + + keySuffix = uniqueString(); setReplacements([ - (recording) => recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`) + (recording) => recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`), + (recording) => + keySuffix === "" ? recording : recording.replace(new RegExp(keySuffix, "g"), "") ]); recorder = record(this); // eslint-disable-line no-invalid-this - credential = await new EnvironmentCredential(); - keyVaultName = getKeyvaultName(); - keyVaultUrl = `https://${keyVaultName}.vault.azure.net`; + const credential = await new EnvironmentCredential(); + const keyVaultName = getKeyvaultName(); + const keyVaultUrl = `https://${keyVaultName}.vault.azure.net`; client = new KeysClient(keyVaultUrl, credential); - - await maybeFlushKey(); - - recorder.stop(); - }); - - beforeEach(async function() { - recorder = record(this); // eslint-disable-line no-invalid-this + testClient = new TestClient(client); }); - afterEach(async () => { + after(async function() { recorder.stop(); }); // The tests follow - it("can create a key while giving a manual type", async () => { + it("can create a key while giving a manual type", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); const result = await client.createKey(keyName, "RSA"); assert.equal(result.name, keyName, "Unexpected key name in result from createKey()."); - await flushKey(); + await testClient.flushKey(keyName); }); - it("cannot create a key with an empty name", async () => { + it("cannot create a key with an empty name", async function() { const keyName = ""; let error; try { @@ -108,7 +80,7 @@ describe("Keys client - create, read, update and delete operations", () => { ); }); - it("cannot create a key with a null name", async () => { + it("cannot create a key with a null name", async function() { const keyName = null; let error; try { @@ -124,47 +96,53 @@ describe("Keys client - create, read, update and delete operations", () => { ); }); - it("can create a RSA key", async () => { + it("can create a RSA key", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); const result = await client.createRsaKey(keyName); assert.equal(result.name, keyName, "Unexpected key name in result from createKey()."); - await flushKey(); + await testClient.flushKey(keyName); }); - it("can create a RSA key with size", async () => { + it("can create a RSA key with size", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); const options = { keySize: 2048 }; const result = await client.createRsaKey(keyName, options); assert.equal(result.name, keyName, "Unexpected key name in result from createKey()."); - await flushKey(); + await testClient.flushKey(keyName); }); - it("can create an EC key", async () => { + it("can create an EC key", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); const result = await client.createEcKey(keyName); assert.equal(result.name, keyName, "Unexpected key name in result from createKey()."); - await flushKey(); + await testClient.flushKey(keyName); }); - it("can create an EC key with curve", async () => { + it("can create an EC key with curve", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); const options: CreateEcKeyOptions = { curve: "P-256" }; const result = await client.createEcKey(keyName, options); assert.equal(result.name, keyName, "Unexpected key name in result from createKey()."); - await flushKey(); + await testClient.flushKey(keyName); }); - it("can create a disabled key", async () => { + it("can create a disabled key", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); const options = { enabled: false }; const result = await client.createRsaKey(keyName, options); assert.equal(result.enabled, false, "Unexpected enabled value from createKey()."); assert.equal(result.name, keyName, "Unexpected key name in result from createKey()."); - await flushKey(); + await testClient.flushKey(keyName); }); - it("can create a key with notBefore", async () => { + it("can create a key with notBefore", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); const date = new Date("2019-01-01"); const notBefore = new Date(date.getTime() + 5000); // 5 seconds later notBefore.setMilliseconds(0); @@ -178,10 +156,11 @@ describe("Keys client - create, read, update and delete operations", () => { "Unexpected notBefore value from createKey()." ); assert.equal(result.name, keyName, "Unexpected key name in result from createKey()."); - await flushKey(); + await testClient.flushKey(keyName); }); - it("can create a key with expires", async () => { + it("can create a key with expires", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); const date = new Date("2019-01-01"); const expires = new Date(date.getTime() + 5000); // 5 seconds later expires.setMilliseconds(0); @@ -195,18 +174,20 @@ describe("Keys client - create, read, update and delete operations", () => { "Unexpected expires value from createKey()." ); assert.equal(result.name, keyName, "Unexpected key name in result from createKey()."); - await flushKey(); + await testClient.flushKey(keyName); }); - it("can update key", async () => { + it("can update key", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); const { version } = await client.createRsaKey(keyName); const options: UpdateKeyOptions = { enabled: false }; const result = await client.updateKey(keyName, version, options); assert.equal(result.enabled, false, "Unexpected enabled value from updateKey()."); - await flushKey(); + await testClient.flushKey(keyName); }); - it("can update a disabled key", async () => { + it("can update a disabled key", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); const createOptions = { enabled: false }; @@ -220,10 +201,11 @@ describe("Keys client - create, read, update and delete operations", () => { expires.getTime(), "Unexpected expires value after attempting to update a disabled key" ); - await flushKey(); + await testClient.flushKey(keyName); }); - it("can delete a key", async () => { + it("can delete a key", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); await client.createKey(keyName, "RSA"); await client.deleteKey(keyName); @@ -237,11 +219,11 @@ describe("Keys client - create, read, update and delete operations", () => { throw e; } } - await delay(30000); - await purgeKey(); + await testClient.purgeKey(keyName); }); - it("delete nonexisting key", async () => { + it("delete nonexisting key", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); try { await client.getKey(keyName); throw Error("Expecting an error but not catching one."); @@ -254,31 +236,34 @@ describe("Keys client - create, read, update and delete operations", () => { } }); - it("can get a key", async () => { + it("can get a key", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); await client.createKey(keyName, "RSA"); const getResult = await client.getKey(keyName); assert.equal(getResult.name, keyName, "Unexpected key name in result from getKey()."); - await flushKey(); + await testClient.flushKey(keyName); }); - it("can get a specific version of a key", async () => { + it("can get a specific version of a key", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); const { version } = await client.createKey(keyName, "RSA"); const options: GetKeyOptions = { version }; const getResult = await client.getKey(keyName, options); assert.equal(getResult.version, version, "Unexpected key name in result from getKey()."); - await flushKey(); + await testClient.flushKey(keyName); }); - it("can get a deleted key", async () => { + it("can get a deleted key", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); await client.createKey(keyName, "RSA"); await client.deleteKey(keyName); - await delay(30000); - const getResult = await client.getDeletedKey(keyName); + const getResult = await retry(async () => client.getDeletedKey(keyName)); assert.equal(getResult.name, keyName, "Unexpected key name in result from getKey()."); - await purgeKey(); + await testClient.purgeKey(keyName); }); - it("can't get a deleted key that doesn't exist", async () => { + it("can't get a deleted key that doesn't exist", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); let error; try { await client.deleteKey(keyName); diff --git a/sdk/keyvault/keyvault-keys/tests/list.test.ts b/sdk/keyvault/keyvault-keys/tests/list.test.ts index c971d438cb66..9fd442b83423 100644 --- a/sdk/keyvault/keyvault-keys/tests/list.test.ts +++ b/sdk/keyvault/keyvault-keys/tests/list.test.ts @@ -6,49 +6,26 @@ import { getKeyvaultName } from "./utils/utils.common"; import { KeysClient } from "../src"; import { TokenCredential } from "@azure/core-http"; import { EnvironmentCredential } from "@azure/identity"; -import { record, setReplaceableVariables, delay, setReplacements, env } from "./utils/recorder"; +import { + record, + setReplaceableVariables, + retry, + setReplacements, + env, + uniqueString +} from "./utils/recorder"; +import TestClient from "./utils/testClient"; describe("Keys client - list keys in various ways", () => { let credential: TokenCredential; let keyVaultName: string; let keyVaultUrl: string; let client: KeysClient; + let testClient: TestClient; let recorder: any; - // NOTES: - // - To allow multiple integraton runs at the same time, - // we might need to factor in more environment variables. - // - Another way to improve this is to add a specfic key per test. - // - The environment variable is probably better named like PREFIX_KEY_NAME. - const keyName = `list${env.KEY_NAME || "KeyName"}`; - - // NOTES: - // - These functions are probably better moved to a common utility file. - // However, to do that we'll have to create a class or closure to maintain - // the instance of the KeyClient available. - async function purgeKey(): Promise { - await client.purgeDeletedKey(keyName); - await delay(30000); - } - async function flushKey(): Promise { - await client.deleteKey(keyName); - await delay(30000); - await purgeKey(); - } - async function maybeFlushKey(): Promise { - try { - await client.deleteKey(keyName); - await delay(30000); - } catch (e) { - // It will fail if the key doesn't exist. This expected. - } - try { - await client.purgeDeletedKey(keyName); - await delay(30000); - } catch (e) { - // It will fail if the key doesn't exist. This expected. - } - } + const keyPrefix = `list${env.KEY_NAME || "KeyName"}`; + let keySuffix: string; before(async function() { // NOTE: @@ -61,8 +38,12 @@ describe("Keys client - list keys in various ways", () => { AZURE_TENANT_ID: "azure_tenant_id", KEYVAULT_NAME: "keyvault_name" }); + + keySuffix = uniqueString(); setReplacements([ - (recording) => recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`) + (recording) => recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`), + (recording) => + keySuffix === "" ? recording : recording.replace(new RegExp(keySuffix, "g"), "") ]); recorder = record(this); // eslint-disable-line no-invalid-this @@ -70,35 +51,29 @@ describe("Keys client - list keys in various ways", () => { keyVaultName = getKeyvaultName(); keyVaultUrl = `https://${keyVaultName}.vault.azure.net`; client = new KeysClient(keyVaultUrl, credential); - - await maybeFlushKey(); - - recorder.stop(); - }); - - beforeEach(async function() { - recorder = record(this); // eslint-disable-line no-invalid-this + testClient = new TestClient(client); }); - afterEach(async () => { + after(async function() { recorder.stop(); }); // The tests follow - it("can get the versions of a key", async () => { + it("can get the versions of a key", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); await client.createKey(keyName, "RSA"); let totalVersions = 0; for await (const version of client.listKeyVersions(keyName)) { assert.equal(version.name, keyName, "Unexpected key name in result from listKeyVersions()."); totalVersions += 1; } - assert.equal(totalVersions, 1, `Unexpected total versions for key ${keyName}`); - await flushKey(); + await testClient.flushKey(keyName); }); - it("can get the versions of a key (paged)", async () => { + it("can get the versions of a key (paged)", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); await client.createKey(keyName, "RSA"); let totalVersions = 0; for await (const page of client.listKeyVersions(keyName).byPage()) { @@ -112,10 +87,11 @@ describe("Keys client - list keys in various ways", () => { } } assert.equal(totalVersions, 1, `Unexpected total versions for key ${keyName}`); - await flushKey(); + await testClient.flushKey(keyName); }); - it("list 0 versions of a non-existing key", async () => { + it("list 0 versions of a non-existing key", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); let totalVersions = 0; for await (const version of client.listKeyVersions(keyName)) { assert.equal(version.name, keyName, "Unexpected key name in result from listKeyVersions()."); @@ -124,7 +100,8 @@ describe("Keys client - list keys in various ways", () => { assert.equal(totalVersions, 0, `Unexpected total versions for key ${keyName}`); }); - it("list 0 versions of a non-existing key (paged)", async () => { + it("list 0 versions of a non-existing key (paged)", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); let totalVersions = 0; for await (const page of client.listKeyVersions(keyName).byPage()) { for (const version of page) { @@ -139,8 +116,9 @@ describe("Keys client - list keys in various ways", () => { assert.equal(totalVersions, 0, `Unexpected total versions for key ${keyName}`); }); - it("can get several inserted keys", async () => { - const keyNames = [`${keyName}-inserted-0`, `${keyName}-inserted-1`]; + it("can get several inserted keys", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); + const keyNames = [`${keyName}-0`, `${keyName}-1`]; for (const name of keyNames) { await client.createKey(name, "RSA"); } @@ -155,14 +133,13 @@ describe("Keys client - list keys in various ways", () => { assert.equal(found, 2, "Unexpected number of keys found by getKeys."); for (const name of keyNames) { - await client.deleteKey(name); - await delay(30000); - await client.purgeDeletedKey(name); + await testClient.flushKey(name); } }); - it("can get several inserted keys (paged)", async () => { - const keyNames = [`${keyName}-inserted-paged-0`, `${keyName}-inserted-paged-1`]; + it("can get several inserted keys (paged)", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); + const keyNames = [`${keyName}-0`, `${keyName}-1`]; for (const name of keyNames) { await client.createKey(name, "RSA"); } @@ -179,14 +156,13 @@ describe("Keys client - list keys in various ways", () => { assert.equal(found, 2, "Unexpected number of keys found by getKeys."); for (const name of keyNames) { - await client.deleteKey(name); - await delay(30000); - await client.purgeDeletedKey(name); + await testClient.flushKey(name); } }); - it("list deleted keys", async () => { - const keyNames = [`${keyName}-deleted-0`, `${keyName}-deleted-1`]; + it("list deleted keys", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); + const keyNames = [`${keyName}-0`, `${keyName}-1`]; for (const name of keyNames) { await client.createKey(name, "RSA"); } @@ -194,7 +170,8 @@ describe("Keys client - list keys in various ways", () => { await client.deleteKey(name); } - await delay(30000); + // Waiting until the key is deleted + await retry(async () => client.getDeletedKey(keyNames[0])); let found = 0; for await (const key of client.listDeletedKeys()) { @@ -206,12 +183,13 @@ describe("Keys client - list keys in various ways", () => { assert.equal(found, 2, "Unexpected number of keys found by listDeletedKeys."); for (const name of keyNames) { - await client.purgeDeletedKey(name); + await testClient.purgeKey(name); } }); - it("list deleted keys (paged)", async () => { - const keyNames = [`${keyName}-deleted-paged-0`, `${keyName}-deleted-paged-1`]; + it("list deleted keys (paged)", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); + const keyNames = [`${keyName}-0`, `${keyName}-1`]; for (const name of keyNames) { await client.createKey(name, "RSA"); } @@ -219,7 +197,8 @@ describe("Keys client - list keys in various ways", () => { await client.deleteKey(name); } - await delay(30000); + // Waiting until the key is deleted + await retry(async () => client.getDeletedKey(keyNames[0])); let found = 0; for await (const page of client.listDeletedKeys().byPage()) { @@ -233,7 +212,7 @@ describe("Keys client - list keys in various ways", () => { assert.equal(found, 2, "Unexpected number of keys found by listDeletedKeys."); for (const name of keyNames) { - await client.purgeDeletedKey(name); + await testClient.purgeKey(name); } }); }); diff --git a/sdk/keyvault/keyvault-keys/tests/recoverBackupRestore.test.ts b/sdk/keyvault/keyvault-keys/tests/recoverBackupRestore.test.ts index c5b9c0697f8e..2653824c6289 100644 --- a/sdk/keyvault/keyvault-keys/tests/recoverBackupRestore.test.ts +++ b/sdk/keyvault/keyvault-keys/tests/recoverBackupRestore.test.ts @@ -6,49 +6,26 @@ import { getKeyvaultName } from "./utils/utils.common"; import { KeysClient } from "../src"; import { TokenCredential } from "@azure/core-http"; import { EnvironmentCredential } from "@azure/identity"; -import { record, setReplaceableVariables, delay, setReplacements, env } from "./utils/recorder"; +import { + record, + setReplaceableVariables, + retry, + setReplacements, + env, + uniqueString +} from "./utils/recorder"; +import TestClient from "./utils/testClient"; describe("Keys client - restore keys and recover backups", () => { let credential: TokenCredential; let keyVaultName: string; let keyVaultUrl: string; let client: KeysClient; + let testClient: TestClient; let recorder: any; - // NOTES: - // - To allow multiple integraton runs at the same time, - // we might need to factor in more environment variables. - // - Another way to improve this is to add a specfic key per test. - // - The environment variable is probably better named like PREFIX_KEY_NAME. - const keyName = `recover${env.KEY_NAME || "KeyName"}`; - - // NOTES: - // - These functions are probably better moved to a common utility file. - // However, to do that we'll have to create a class or closure to maintain - // the instance of the KeyClient available. - async function purgeKey(): Promise { - await client.purgeDeletedKey(keyName); - await delay(30000); - } - async function flushKey(): Promise { - await client.deleteKey(keyName); - await delay(30000); - await purgeKey(); - } - async function maybeFlushKey(): Promise { - try { - await client.deleteKey(keyName); - await delay(30000); - } catch (e) { - // It will fail if the key doesn't exist. This expected. - } - try { - await client.purgeDeletedKey(keyName); - await delay(30000); - } catch (e) { - // It will fail if the key doesn't exist. This expected. - } - } + const keyPrefix = `recover${env.KEY_NAME || "KeyName"}`; + let keySuffix: string; before(async function() { // NOTE: @@ -61,8 +38,12 @@ describe("Keys client - restore keys and recover backups", () => { AZURE_TENANT_ID: "azure_tenant_id", KEYVAULT_NAME: "keyvault_name" }); + + keySuffix = uniqueString(); setReplacements([ - (recording) => recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`) + (recording) => recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`), + (recording) => + keySuffix === "" ? recording : recording.replace(new RegExp(keySuffix, "g"), "") ]); recorder = record(this); // eslint-disable-line no-invalid-this @@ -70,36 +51,29 @@ describe("Keys client - restore keys and recover backups", () => { keyVaultName = getKeyvaultName(); keyVaultUrl = `https://${keyVaultName}.vault.azure.net`; client = new KeysClient(keyVaultUrl, credential); - - await maybeFlushKey(); - - recorder.stop(); - }); - - beforeEach(async function() { - recorder = record(this); // eslint-disable-line no-invalid-this + testClient = new TestClient(client); }); - afterEach(async () => { + after(async function() { recorder.stop(); }); // The tests follow - it("can recover a deleted key", async () => { + it("can recover a deleted key", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); await client.createKey(keyName, "RSA"); await client.deleteKey(keyName); - await delay(30000); - const getDeletedResult = await client.getDeletedKey(keyName); + const getDeletedResult = await retry(async () => client.getDeletedKey(keyName)); assert.equal(getDeletedResult.name, keyName, "Unexpected key name in result from getKey()."); await client.recoverDeletedKey(keyName); - await delay(30000); - const getResult = await client.getKey(keyName); + const getResult = await retry(async () => client.getKey(keyName)); assert.equal(getResult.name, keyName, "Unexpected key name in result from getKey()."); - await flushKey(); + await testClient.flushKey(keyName); }); - it("fails if one tries to recover a non-existing deleted key", async () => { + it("fails if one tries to recover a non-existing deleted key", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); let error; try { await client.recoverDeletedKey(keyName); @@ -110,15 +84,17 @@ describe("Keys client - restore keys and recover backups", () => { assert.equal(error.message, `Key not found: ${keyName}`); }); - it("can generate a backup of a key", async () => { + it("can generate a backup of a key", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); await client.createKey(keyName, "RSA"); const result = await client.backupKey(keyName); assert.equal(Buffer.isBuffer(result), true, "Unexpected return value from backupKey()"); assert.ok(result.length > 8300, "Unexpected length of buffer from backupKey()"); - await flushKey(); + await testClient.flushKey(keyName); }); - it("fails to generate a backup of a non-existing key", async () => { + it("fails to generate a backup of a non-existing key", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); let error; try { await client.backupKey(keyName); @@ -129,21 +105,18 @@ describe("Keys client - restore keys and recover backups", () => { assert.equal(error.message, `Key not found: ${keyName}`); }); - it("can restore a key with a given backup", async () => { + it("can restore a key with a given backup", async function() { + const keyName = testClient.formatName(`${keyPrefix}-${this.test.title}-${keySuffix}`); await client.createKey(keyName, "RSA"); const backup = await client.backupKey(keyName); - await client.deleteKey(keyName); - await delay(30000); - await client.purgeDeletedKey(keyName); - await delay(30000); - await client.restoreKey(backup); - await delay(30000); + await testClient.flushKey(keyName); + await retry(async () => client.restoreKey(backup)); const getResult = await client.getKey(keyName); assert.equal(getResult.name, keyName, "Unexpected key name in result from getKey()."); - await flushKey(); + await testClient.flushKey(keyName); }); - it("fails to restore a key with a malformed backup", async () => { + it("fails to restore a key with a malformed backup", async function() { const backup = Buffer.alloc(8693); let error; try { diff --git a/sdk/keyvault/keyvault-keys/tests/utils/recorder.ts b/sdk/keyvault/keyvault-keys/tests/utils/recorder.ts index 3f842acafff5..53c6ee44f4f9 100644 --- a/sdk/keyvault/keyvault-keys/tests/utils/recorder.ts +++ b/sdk/keyvault/keyvault-keys/tests/utils/recorder.ts @@ -3,6 +3,7 @@ import fs from "fs-extra"; import { delay as restDelay } from "@azure/ms-rest-js"; +import { retry as realRetry } from "./retry"; import * as dotenv from "dotenv"; dotenv.config({ path: "../../.env" }); @@ -43,6 +44,15 @@ export function delay(milliseconds: number): Promise | null { return isPlayingBack ? null : restDelay(milliseconds); } +export async function retry( + target: () => Promise, + delay: number = 10000, + timeout: number = Infinity, + increaseFactor: number +): Promise { + return realRetry(target, isPlayingBack ? 0 : delay, timeout, increaseFactor); +} + abstract class Recorder { protected readonly filepath: string; public uniqueTestInfo: any = {}; @@ -151,6 +161,14 @@ class NockRecorder extends Recorder { } } +export function uniqueString(): string { + return isPlayingBack + ? "" + : Math.random() + .toString() + .slice(2); +} + // To better understand how this class works, it's necessary to comprehend how HTTP async requests are made: // A new request object is created // let req = new XMLHttpRequest(); diff --git a/sdk/keyvault/keyvault-keys/tests/utils/retry.test.ts b/sdk/keyvault/keyvault-keys/tests/utils/retry.test.ts new file mode 100644 index 000000000000..77f991eca7b6 --- /dev/null +++ b/sdk/keyvault/keyvault-keys/tests/utils/retry.test.ts @@ -0,0 +1,25 @@ +import { assert } from "chai"; +import { retry } from "./retry"; + +describe("retry utility function", function() { + it("throws an exception if we reach the maximum retries", async () => { + const startingDate = new Date(); + await retry( + async () => { + throw new Error("I always fail"); + }, + 100, + 200 + ); + const endingDate = new Date(); + + const difference = endingDate.getTime() - startingDate.getTime(); + assert.ok(difference >= 200); // In CI this takes a lot longer than locally + }); + + it("returns the value if resolved on time", async () => { + const success = async () => true; + const result = await retry(async () => true); + assert.strictEqual(result, true); + }); +}); diff --git a/sdk/keyvault/keyvault-keys/tests/utils/retry.ts b/sdk/keyvault/keyvault-keys/tests/utils/retry.ts new file mode 100644 index 000000000000..7f9014a073d9 --- /dev/null +++ b/sdk/keyvault/keyvault-keys/tests/utils/retry.ts @@ -0,0 +1,29 @@ +import { delay as coreDelay } from "@azure/core-http"; + +/** + * A simple abstraction to retry, and exponentially de-escalate retrying, a + * given async function until it is fulfileld. + * @param {() => Promise} target The async function you want to retry + * @param {number} delay The delay between each retry, defaults to 1000 + * @param {number} timeout Maximum time we'll let this lapse before we quit retrying, defaults to Infinity + * @param {number} increaseFactor Increase factor of each retry, defaults to 1 + * @returns {Promise} Resolved promise + */ +export async function retry( + target: () => Promise, + delay: number = 1000, + timeout: number = Infinity, + increaseFactor: number = 1 +): Promise { + const start = new Date().getTime(); + let updatedDelay = delay; + while (new Date().getTime() - start < timeout) { + try { + return await target(); + } catch { + await coreDelay(updatedDelay); + updatedDelay *= increaseFactor; + } + } + return null; +} diff --git a/sdk/keyvault/keyvault-keys/tests/utils/testClient.ts b/sdk/keyvault/keyvault-keys/tests/utils/testClient.ts new file mode 100644 index 000000000000..030eebc0f08b --- /dev/null +++ b/sdk/keyvault/keyvault-keys/tests/utils/testClient.ts @@ -0,0 +1,28 @@ +import { retry } from "./recorder"; +import { KeysClient } from "../../src"; + +export default class TestClient { + public readonly client: KeysClient; + constructor(client: KeysClient) { + this.client = client; + } + public formatName(name: string) { + return name.replace(/[^0-9a-zA-Z-]/g, ""); + } + public async purgeKey(keyName: string): Promise { + const that = this; + await retry(async () => { + try { + await that.client.purgeDeletedKey(keyName); + } catch (e) { + if (["Key is currently being deleted."].includes(e.message)) throw e; + else return; + } + }); + } + public async flushKey(keyName: string): Promise { + const that = this; + await that.client.deleteKey(keyName); + await this.purgeKey(keyName); + } +} diff --git a/sdk/keyvault/keyvault-keys/tests/utils/utils.common.ts b/sdk/keyvault/keyvault-keys/tests/utils/utils.common.ts index 98952bd5ae91..c950af637728 100644 --- a/sdk/keyvault/keyvault-keys/tests/utils/utils.common.ts +++ b/sdk/keyvault/keyvault-keys/tests/utils/utils.common.ts @@ -4,7 +4,7 @@ import { env } from "./recorder"; // Async iterator's polyfill for Node 8 -if (!Symbol || !Symbol.asyncIterator) { +if (!Symbol || !(Symbol as any).asyncIterator) { (Symbol as any).asyncIterator = Symbol.for("Symbol.asyncIterator"); } diff --git a/sdk/keyvault/keyvault-secrets/package.json b/sdk/keyvault/keyvault-secrets/package.json index e486fff67f2b..1765d9dba7f2 100644 --- a/sdk/keyvault/keyvault-secrets/package.json +++ b/sdk/keyvault/keyvault-secrets/package.json @@ -52,7 +52,7 @@ "extract-api": "tsc -p . && api-extractor run --local", "format": "prettier --write --config ../../.prettierrc.json \"src/**/*.ts\" \"tests/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", - "integration-test:node": "ts-mocha -p tests/tsconfig.test.json tests/*.ts --timeout 1200000 --reporter mocha-multi --reporter-options spec=-,mocha-junit-reporter=-", + "integration-test:node": "ts-mocha -p tests/tsconfig.test.json tests/*.test.ts tests/**/*.test.ts --timeout 1200000 --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 tests samples --ext .ts --fix --fix-type [problem,suggestion]", "lint": "eslint -c ../../.eslintrc.json src tests samples --ext .ts -f node_modules/eslint-detailed-reporter/lib/detailed.js -o keyvault-secrets-lintReport.html || exit 0", @@ -64,7 +64,8 @@ "test": "npm run build:test && npm run unit-test && npm run integration-test", "unit-test:browser": "echo skipped", "unit-test:node": "cross-env TEST_MODE=playback npm run integration-test:node", - "unit-test": "npm run unit-test:node && npm run unit-test:browser" + "unit-test": "npm run unit-test:node && npm run unit-test:browser", + "test:node:record": "cross-env TEST_MODE=record npm run integration-test:node" }, "sideEffects": false, "dependencies": { diff --git a/sdk/keyvault/keyvault-secrets/recordings/node/secret_client__create_read_update_and_delete_operations/recording_before_all_hook.js b/sdk/keyvault/keyvault-secrets/recordings/node/secret_client__create_read_update_and_delete_operations/recording_before_all_hook.js index 30bc7685f703..c18c12a9ed65 100644 --- a/sdk/keyvault/keyvault-secrets/recordings/node/secret_client__create_read_update_and_delete_operations/recording_before_all_hook.js +++ b/sdk/keyvault/keyvault-secrets/recordings/node/secret_client__create_read_update_and_delete_operations/recording_before_all_hook.js @@ -17,17 +17,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '9b1d06a5-5ee5-44a1-b9ac-6b61ea691300', + 'c7f2989f-1fbf-4352-87c6-efa10cd70b00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHAQAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:03:23 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHAQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:40:15 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:03:23 GMT', + 'Fri, 28 Jun 2019 12:40:15 GMT', 'Connection', 'close', 'Content-Length', @@ -35,16 +35,901 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/CRUDSecretName') + .put('/secrets/CRUDSecretName-canaddasecret-', {"value":"SECRET_VALUE"}) .query(true) - .reply(404, {"error":{"code":"SecretNotFound","message":"Secret not found: CRUDSecretName"}}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-canaddasecret-/8bbed47d326b421a9f110c4dde14243d","attributes":{"enabled":true,"created":1561725615,"updated":1561725615,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '61a7aeb0-cb58-48bc-ae28-d942277dceb5', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:40:14 GMT', + 'Connection', + 'close', + 'Content-Length', + '266' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '75667189-d9e6-4193-9765-7ea398f36500', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHAgAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:40:15 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:40:15 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/secrets/CRUDSecretName-canaddasecret-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName-canaddasecret-","deletedDate":1561725615,"scheduledPurgeDate":1569501615,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-canaddasecret-/8bbed47d326b421a9f110c4dde14243d","attributes":{"enabled":true,"created":1561725615,"updated":1561725615,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '5c449e31-f2de-4d20-901f-df8a710dbd32', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:40:15 GMT', + 'Connection', + 'close', + 'Content-Length', + '412' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '52f5f0d4-be51-463c-8e89-ace8a5466b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHAwAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:40:16 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:40:16 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedsecrets/CRUDSecretName-canaddasecret-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '121', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'a7e98823-7014-4923-872c-f2c3b077010c', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:40:16 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '39626f5e-a256-4921-a84d-dffc7dc57400', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHBAAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:40:26 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:40:26 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedsecrets/CRUDSecretName-canaddasecret-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '491674bb-5c25-4ec5-8e80-1c3004c94456', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:40:26 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '2efa6858-fb25-42f8-a58a-6ec1d30f6c00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHBQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:40:27 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:40:27 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .put('/secrets/CRUDSecretName-cansetasecretwithEmptyValue-', {"value":""}) + .query(true) + .reply(200, {"value":"","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-cansetasecretwithEmptyValue-/275575d3b49a457f8756e6744dacbf81","attributes":{"enabled":true,"created":1561725627,"updated":1561725627,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'c7e18be2-5a66-4e56-9d63-572ec6ad1a38', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:40:27 GMT', + 'Connection', + 'close', + 'Content-Length', + '268' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '4a66e700-364c-482a-a769-9e275f567400', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHBgAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:40:27 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:40:27 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/secrets/CRUDSecretName-cansetasecretwithEmptyValue-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName-cansetasecretwithEmptyValue-","deletedDate":1561725628,"scheduledPurgeDate":1569501628,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-cansetasecretwithEmptyValue-/275575d3b49a457f8756e6744dacbf81","attributes":{"enabled":true,"created":1561725627,"updated":1561725627,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'c2d2d793-0857-411f-b2bb-8d7de13ddd69', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:40:28 GMT', + 'Connection', + 'close', + 'Content-Length', + '440' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'd96782cf-e05a-4b76-89c4-07146cf96a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHBwAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:40:28 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:40:27 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedsecrets/CRUDSecretName-cansetasecretwithEmptyValue-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '121', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'ea5fa352-2258-4944-9685-3b9fcf6b02e4', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:40:28 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'b5e30961-843e-4b24-80fd-b241ef2a6d00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHCAAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:40:38 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:40:38 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedsecrets/CRUDSecretName-cansetasecretwithEmptyValue-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'e89a59f9-d312-4841-a6f5-71eb30c076e3', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:40:38 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '179060cc-a1d9-4316-9020-86faf8a77900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHCQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:40:39 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:40:38 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .put('/secrets/CRUDSecretName-cansetasecretwithattributes-', {"value":"SECRET_VALUE","attributes":{"exp":32503680000}}) + .query(true) + .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-cansetasecretwithattributes-/5f17e756e72c4fc7b432146d836c3138","attributes":{"enabled":true,"exp":32503680000,"created":1561725639,"updated":1561725639,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'a0abc70f-9289-4fa1-ab36-55e03704b7b7', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:40:38 GMT', + 'Connection', + 'close', + 'Content-Length', + '298' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '6ace3055-a6b1-4d4a-9e90-d75515c35e00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHCgAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:40:39 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:40:39 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/secrets/CRUDSecretName-cansetasecretwithattributes-/') + .query(true) + .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-cansetasecretwithattributes-/5f17e756e72c4fc7b432146d836c3138","attributes":{"enabled":true,"exp":32503680000,"created":1561725639,"updated":1561725639,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '44348976-4f59-485b-a0ac-b6c557e050ff', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:40:39 GMT', + 'Connection', + 'close', + 'Content-Length', + '298' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'cdd75623-e9bb-4a5e-8c29-c396175c7a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHCwAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:40:40 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:40:39 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/secrets/CRUDSecretName-cansetasecretwithattributes-') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName-cansetasecretwithattributes-","deletedDate":1561725640,"scheduledPurgeDate":1569501640,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-cansetasecretwithattributes-/5f17e756e72c4fc7b432146d836c3138","attributes":{"enabled":true,"exp":32503680000,"created":1561725639,"updated":1561725639,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '7ee93cb3-a23f-4a27-9156-e474d2a992a0', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:40:40 GMT', + 'Connection', + 'close', + 'Content-Length', + '458' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'c14c85d5-e259-43ca-a367-ec99ba297100', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHDAAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:40:40 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:40:40 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedsecrets/CRUDSecretName-cansetasecretwithattributes-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '121', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '530d89e2-bf8a-47e6-b98d-375bed1b46ce', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:40:40 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'fae1e8ae-b07e-4753-902f-df31964e6600', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHDQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:40:51 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:40:50 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedsecrets/CRUDSecretName-cansetasecretwithattributes-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '121', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'ac302475-e0db-4237-b8be-4fd61c5879cc', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:40:51 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '2c9682e1-b3ec-450f-bb83-b4f0c4716f00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHDgAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:41:01 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:41:01 GMT', + 'Connection', + 'close', 'Content-Length', - '80', - 'Content-Type', - 'application/json; charset=utf-8', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedsecrets/CRUDSecretName-cansetasecretwithattributes-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', 'Expires', '-1', 'Server', @@ -52,11 +937,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'a1a93f4e-d3e3-459e-84ff-d77d96a381aa', + 'c72eaeb0-8bcb-46ff-84c6-751fb57d1c5f', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -66,7 +951,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:03:23 GMT', + 'Fri, 28 Jun 2019 12:41:01 GMT', 'Connection', 'close' ]); @@ -86,17 +971,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'ca9cb3c5-e134-401b-8d11-03e4b8f21500', + '6b46ca9f-b2f6-432c-93cc-24be4b7f6500', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHAgAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:03:24 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHDwAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:41:02 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:03:24 GMT', + 'Fri, 28 Jun 2019 12:41:01 GMT', 'Connection', 'close', 'Content-Length', @@ -104,14 +989,12 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/CRUDSecretName') + .put('/secrets/CRUDSecretName-canupdateasecret-', {"value":"SECRET_VALUE"}) .query(true) - .reply(404, {"error":{"code":"SecretNotFound","message":"Secret not found: CRUDSecretName"}}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-canupdateasecret-/f6418c364beb4947abf6b57343ba1ee7","attributes":{"enabled":true,"created":1561725662,"updated":1561725662,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', - 'Content-Length', - '80', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -121,11 +1004,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '1225e2e5-d693-4334-98c1-292fd6858f4e', + 'bb51862f-34bd-4958-943f-8a04a12b9828', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -135,9 +1018,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:03:24 GMT', + 'Fri, 28 Jun 2019 12:41:02 GMT', 'Connection', - 'close' ]); + 'close', + 'Content-Length', + '269' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -155,17 +1040,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '3289ed17-5b6b-41aa-877f-4112c9491300', + '68ffb1cd-2fd1-4389-8713-f4ebbf776300', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHAwAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:03:25 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHEAAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:41:03 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:03:24 GMT', + 'Fri, 28 Jun 2019 12:41:02 GMT', 'Connection', 'close', 'Content-Length', @@ -173,9 +1058,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/CRUDSecretName', {"value":"SECRET_VALUE"}) + .patch('/secrets/CRUDSecretName-canupdateasecret-/', {"attributes":{"exp":32503680000}}) .query(true) - .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/f640359fd8044b469c44d1ccb41811f0","attributes":{"enabled":true,"created":1560837805,"updated":1560837805,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-canupdateasecret-/f6418c364beb4947abf6b57343ba1ee7","attributes":{"enabled":true,"exp":32503680000,"created":1561725662,"updated":1561725663,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -188,11 +1073,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '4dc15769-0e33-43f4-a905-9dc705b1604c', + '8ffec668-781d-4f00-a073-9d911d0dbf6c', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -202,11 +1087,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:03:24 GMT', + 'Fri, 28 Jun 2019 12:41:02 GMT', 'Connection', 'close', 'Content-Length', - '235' ]); + '264' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -224,17 +1109,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '424a5e7c-e626-4f6c-bed7-04ac135d1300', + 'd9841a74-663d-47bb-a8af-70ad1f117600', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHBAAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:03:25 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHEQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:41:03 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:03:24 GMT', + 'Fri, 28 Jun 2019 12:41:02 GMT', 'Connection', 'close', 'Content-Length', @@ -242,9 +1127,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/CRUDSecretName') + .get('/secrets/CRUDSecretName-canupdateasecret-/') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName","deletedDate":1560837806,"scheduledPurgeDate":1568613806,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/f640359fd8044b469c44d1ccb41811f0","attributes":{"enabled":true,"created":1560837805,"updated":1560837805,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-canupdateasecret-/f6418c364beb4947abf6b57343ba1ee7","attributes":{"enabled":true,"exp":32503680000,"created":1561725662,"updated":1561725663,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -257,11 +1142,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'e58fa432-8e88-4a10-b0fe-6baa6928c992', + '906d06dd-6837-4a85-bb0f-1183a5237e23', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -271,11 +1156,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:03:25 GMT', + 'Fri, 28 Jun 2019 12:41:03 GMT', 'Connection', 'close', 'Content-Length', - '350' ]); + '287' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -293,17 +1178,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'e42713f9-d519-4494-aefc-27012b086700', + '1af04666-adb0-4065-9e52-439f47bc5b00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHBQAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:03:56 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHEgAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:41:03 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:03:56 GMT', + 'Fri, 28 Jun 2019 12:41:03 GMT', 'Connection', 'close', 'Content-Length', @@ -311,12 +1196,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/CRUDSecretName') + .delete('/secrets/CRUDSecretName-canupdateasecret-') .query(true) - .reply(204, "", [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName-canupdateasecret-","deletedDate":1561725664,"scheduledPurgeDate":1569501664,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-canupdateasecret-/f6418c364beb4947abf6b57343ba1ee7","attributes":{"enabled":true,"exp":32503680000,"created":1561725662,"updated":1561725663,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -324,11 +1211,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '17caa544-d4b2-4dd8-97b5-74b3899bcf03', + '52a34ce4-7dc1-4cac-820a-bf5810912ee2', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -338,9 +1225,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:03:57 GMT', + 'Fri, 28 Jun 2019 12:41:03 GMT', 'Connection', - 'close' ]); + 'close', + 'Content-Length', + '436' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -358,17 +1247,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '9f06e04c-8e1e-4f5f-9e43-1db4f5336700', + '115ccf09-d0f4-42c9-83ba-8a65590c6800', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHBgAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:04:27 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHEwAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:41:04 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:04:27 GMT', + 'Fri, 28 Jun 2019 12:41:04 GMT', 'Connection', 'close', 'Content-Length', @@ -376,12 +1265,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/CRUDSecretName', {"value":""}) + .delete('/deletedsecrets/CRUDSecretName-canupdateasecret-') .query(true) - .reply(200, {"value":"","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/3b5b15efd9594f29861d697b02e7240a","attributes":{"enabled":true,"created":1560837867,"updated":1560837867,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '121', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -391,11 +1282,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '476a9121-4d84-482f-83ce-32b1d9d3176e', + '911f8884-0abf-49f8-aeae-e0c2d273249f', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -405,11 +1296,9 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:04:27 GMT', + 'Fri, 28 Jun 2019 12:41:04 GMT', 'Connection', - 'close', - 'Content-Length', - '223' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -427,17 +1316,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '7dd1cd38-b9b1-4f37-96e4-d70718d31200', + '27b7ea19-2006-49cf-8620-11a7c65a7000', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHBwAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:04:28 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHFAAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:41:15 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:04:27 GMT', + 'Fri, 28 Jun 2019 12:41:14 GMT', 'Connection', 'close', 'Content-Length', @@ -445,12 +1334,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/CRUDSecretName') + .delete('/deletedsecrets/CRUDSecretName-canupdateasecret-') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName","deletedDate":1560837868,"scheduledPurgeDate":1568613868,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/3b5b15efd9594f29861d697b02e7240a","attributes":{"enabled":true,"created":1560837867,"updated":1560837867,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '121', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -460,11 +1351,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '5f471e08-dab7-4e45-9b86-e5086418ef31', + '86aed91f-59d3-4eb8-85c8-16eadfdc670a', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -474,11 +1365,9 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:04:28 GMT', + 'Fri, 28 Jun 2019 12:41:14 GMT', 'Connection', - 'close', - 'Content-Length', - '350' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -496,17 +1385,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '341356b5-38b1-4189-b9d8-2590265b5c00', + '0ff5eeb7-b5f6-4440-a5ad-9808b4d16300', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHCAAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:04:58 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHFQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:41:25 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:04:58 GMT', + 'Fri, 28 Jun 2019 12:41:25 GMT', 'Connection', 'close', 'Content-Length', @@ -514,7 +1403,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/CRUDSecretName') + .delete('/deletedsecrets/CRUDSecretName-canupdateasecret-') .query(true) .reply(204, "", [ 'Cache-Control', 'no-cache', @@ -527,11 +1416,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'f4f82c52-55c9-478a-a922-b2d3a8ac3844', + 'dde88419-ffbe-491f-87b3-148aa415220e', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -541,14 +1430,14 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:04:58 GMT', + 'Fri, 28 Jun 2019 12:41:25 GMT', 'Connection', 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -561,17 +1450,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '8dc99238-c0d6-497a-bf06-b87b74731500', + '3fbd4849-6019-424b-bf98-b77817656200', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHCQAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:05:29 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHFgAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:41:26 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:05:28 GMT', + 'Fri, 28 Jun 2019 12:41:25 GMT', 'Connection', 'close', 'Content-Length', @@ -579,9 +1468,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/CRUDSecretName', {"value":"SECRET_VALUE","attributes":{"exp":32503680000}}) + .put('/secrets/CRUDSecretName-canupdateadisabledSecret-', {"value":"SECRET_VALUE","attributes":{"enabled":false}}) .query(true) - .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/cdcc1f28b2eb4698890c0a2af0c22fa5","attributes":{"enabled":true,"exp":32503680000,"created":1560837930,"updated":1560837930,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-canupdateadisabledSecret-/ed8ea9661b154f14a84b3bcd2f588bab","attributes":{"enabled":false,"created":1561725686,"updated":1561725686,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -594,11 +1483,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'fc803f61-9407-4d8b-92c1-0457663aa7cc', + '59d721a8-47e6-45e7-9aeb-ffb8eae93e8b', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -608,11 +1497,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:05:30 GMT', + 'Fri, 28 Jun 2019 12:41:25 GMT', 'Connection', 'close', 'Content-Length', - '253' ]); + '278' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -630,17 +1519,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '2ab9691b-7eda-4e3d-9c57-f6d14b181500', + '3706d6c9-852a-47f7-9488-8e9eb56d5b00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHCgAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:05:30 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHFwAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:41:26 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:05:30 GMT', + 'Fri, 28 Jun 2019 12:41:26 GMT', 'Connection', 'close', 'Content-Length', @@ -648,9 +1537,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets/CRUDSecretName/') + .patch('/secrets/CRUDSecretName-canupdateadisabledSecret-/', {"attributes":{"exp":32503680000}}) .query(true) - .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/cdcc1f28b2eb4698890c0a2af0c22fa5","attributes":{"enabled":true,"exp":32503680000,"created":1560837930,"updated":1560837930,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-canupdateadisabledSecret-/ed8ea9661b154f14a84b3bcd2f588bab","attributes":{"enabled":false,"exp":32503680000,"created":1561725686,"updated":1561725686,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -663,11 +1552,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '324ab304-e6ef-4819-9708-803f71cb49c4', + 'ff1c3763-44aa-491e-ad1f-cd8d9fa3b9f4', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -677,16 +1566,16 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:05:30 GMT', + 'Fri, 28 Jun 2019 12:41:26 GMT', 'Connection', 'close', 'Content-Length', - '253' ]); + '273' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -699,17 +1588,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'b0962537-103e-4603-afff-b59492381500', + 'c2b83b18-95c5-4abe-b184-a7b40ced6400', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHCwAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:05:31 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHGAAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:41:27 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:05:30 GMT', + 'Fri, 28 Jun 2019 12:41:26 GMT', 'Connection', 'close', 'Content-Length', @@ -717,9 +1606,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/CRUDSecretName') + .delete('/secrets/CRUDSecretName-canupdateadisabledSecret-') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName","deletedDate":1560837931,"scheduledPurgeDate":1568613931,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/cdcc1f28b2eb4698890c0a2af0c22fa5","attributes":{"enabled":true,"exp":32503680000,"created":1560837930,"updated":1560837930,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName-canupdateadisabledSecret-","deletedDate":1561725687,"scheduledPurgeDate":1569501687,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-canupdateadisabledSecret-/ed8ea9661b154f14a84b3bcd2f588bab","attributes":{"enabled":false,"exp":32503680000,"created":1561725686,"updated":1561725686,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -732,11 +1621,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '73a16033-53a6-4656-9637-7c51c2c4d25b', + '9776b9f5-5e2c-457e-8f7e-0dba08ed3207', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -746,11 +1635,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:05:30 GMT', + 'Fri, 28 Jun 2019 12:41:27 GMT', 'Connection', 'close', 'Content-Length', - '368' ]); + '453' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -768,17 +1657,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '94ea129c-7a00-42d3-a3f0-85f0f9df1300', + 'd00207f1-dfdc-4106-84ad-44875c846800', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHDAAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:06:01 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHGQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:41:27 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:06:00 GMT', + 'Fri, 28 Jun 2019 12:41:26 GMT', 'Connection', 'close', 'Content-Length', @@ -786,12 +1675,16 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/CRUDSecretName') + .delete('/deletedsecrets/CRUDSecretName-canupdateadisabledSecret-') .query(true) - .reply(204, "", [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '121', + 'Content-Type', + 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -799,11 +1692,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'ee6c0e98-e4e3-44a9-9aa5-6995e924699c', + '6a19f233-320d-402c-9408-c65e8ba54aa2', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -813,14 +1706,14 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:06:01 GMT', + 'Fri, 28 Jun 2019 12:41:26 GMT', 'Connection', 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -833,17 +1726,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '2df59f28-869f-4fe4-a51e-41c548eb1200', + '7e83b147-5b15-446f-ba8a-3cc894fd7000', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHDQAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:06:32 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHGgAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:41:37 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:06:31 GMT', + 'Fri, 28 Jun 2019 12:41:37 GMT', 'Connection', 'close', 'Content-Length', @@ -851,12 +1744,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/CRUDSecretName', {"value":"SECRET_VALUE"}) + .delete('/deletedsecrets/CRUDSecretName-canupdateadisabledSecret-') .query(true) - .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/30df5843490d4a78a3b999816cc51f0a","attributes":{"enabled":true,"created":1560837992,"updated":1560837992,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '121', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -866,11 +1761,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '83f4e08a-2f8f-4a6a-9627-d9c6e273fab0', + 'dfa7e74f-15e0-46ac-9fec-44ba296579c3', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -880,11 +1775,74 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:06:32 GMT', + 'Fri, 28 Jun 2019 12:41:37 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '7b1618d9-4600-41aa-af19-1037582a6600', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHGwAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:41:48 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:41:47 GMT', 'Connection', 'close', 'Content-Length', - '235' ]); + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedsecrets/CRUDSecretName-canupdateadisabledSecret-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '3f8bfdc1-0d2c-4344-800b-0671100d26d2', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:41:48 GMT', + 'Connection', + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -902,17 +1860,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '12d02064-7dfe-40cf-9b87-1966777e6200', + 'c40d4da8-6c81-4666-9e7a-fd9e78796700', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHDgAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:06:33 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHHAAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:41:49 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:06:32 GMT', + 'Fri, 28 Jun 2019 12:41:48 GMT', 'Connection', 'close', 'Content-Length', @@ -920,9 +1878,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .patch('/secrets/CRUDSecretName/', {"attributes":{"exp":32503680000}}) + .put('/secrets/CRUDSecretName-cangetasecret-', {"value":"SECRET_VALUE"}) .query(true) - .reply(200, {"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/30df5843490d4a78a3b999816cc51f0a","attributes":{"enabled":true,"exp":32503680000,"created":1560837992,"updated":1560837993,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-cangetasecret-/de0b314edce04538b5dc22960cfd6a36","attributes":{"enabled":true,"created":1561725709,"updated":1561725709,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -935,11 +1893,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'd0a5ec78-2368-4c23-bbc2-51c5aa15492a', + '2adc2fc0-489f-4bbb-a7ca-90b4b4d2f870', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -949,11 +1907,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:06:33 GMT', + 'Fri, 28 Jun 2019 12:41:48 GMT', 'Connection', 'close', 'Content-Length', - '230' ]); + '266' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -971,17 +1929,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'c4fe1806-69b9-47f4-a64d-407106bb1100', + '3fbd4849-6019-424b-bf98-b77879696200', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHDwAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:06:33 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHHQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:41:49 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:06:33 GMT', + 'Fri, 28 Jun 2019 12:41:48 GMT', 'Connection', 'close', 'Content-Length', @@ -989,9 +1947,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets/CRUDSecretName/') + .get('/secrets/CRUDSecretName-cangetasecret-/') .query(true) - .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/30df5843490d4a78a3b999816cc51f0a","attributes":{"enabled":true,"exp":32503680000,"created":1560837992,"updated":1560837993,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-cangetasecret-/de0b314edce04538b5dc22960cfd6a36","attributes":{"enabled":true,"created":1561725709,"updated":1561725709,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1004,11 +1962,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '6a8d7894-a37b-41f8-876a-264f99954b75', + '2ba44ca3-5a50-4198-9069-977ce3bef315', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1018,11 +1976,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:06:33 GMT', + 'Fri, 28 Jun 2019 12:41:49 GMT', 'Connection', 'close', 'Content-Length', - '253' ]); + '266' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1040,17 +1998,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '96b44c52-a76f-43d1-afb9-91166c961400', + '4079ab48-ec91-4277-939e-7d148be16800', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHEAAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:06:34 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHHgAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:41:50 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:06:34 GMT', + 'Fri, 28 Jun 2019 12:41:50 GMT', 'Connection', 'close', 'Content-Length', @@ -1058,9 +2016,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/CRUDSecretName') + .delete('/secrets/CRUDSecretName-cangetasecret-') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName","deletedDate":1560837994,"scheduledPurgeDate":1568613994,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/30df5843490d4a78a3b999816cc51f0a","attributes":{"enabled":true,"exp":32503680000,"created":1560837992,"updated":1560837993,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName-cangetasecret-","deletedDate":1561725710,"scheduledPurgeDate":1569501710,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-cangetasecret-/de0b314edce04538b5dc22960cfd6a36","attributes":{"enabled":true,"created":1561725709,"updated":1561725709,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1073,11 +2031,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '3d7ab852-1280-44ab-b12e-48dc880ec22b', + '4de43c8e-467b-467f-afa4-c33d6590d1b7', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1087,11 +2045,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:06:34 GMT', + 'Fri, 28 Jun 2019 12:41:49 GMT', 'Connection', 'close', 'Content-Length', - '368' ]); + '412' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1109,17 +2067,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'f687e1e1-f854-430d-935d-4f49cd971200', + 'dca8e039-b8e7-40b9-9bc4-d68ba7307700', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHEQAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:07:04 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHHwAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:41:50 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:07:04 GMT', + 'Fri, 28 Jun 2019 12:41:49 GMT', 'Connection', 'close', 'Content-Length', @@ -1127,12 +2085,16 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/CRUDSecretName') + .delete('/deletedsecrets/CRUDSecretName-cangetasecret-') .query(true) - .reply(204, "", [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '121', + 'Content-Type', + 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -1140,11 +2102,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'f1da6176-964e-4de1-b574-3ab227dcfad5', + 'da44a232-005d-4469-a121-19b29a10c22c', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1154,7 +2116,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:07:05 GMT', + 'Fri, 28 Jun 2019 12:41:50 GMT', 'Connection', 'close' ]); @@ -1174,17 +2136,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'c5579c47-e6fb-450b-9acf-fe5475056200', + '9fc117ba-97fa-4ed8-9016-e7cd2dca7600', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHEgAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:07:35 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHIAAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:42:01 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:07:35 GMT', + 'Fri, 28 Jun 2019 12:42:00 GMT', 'Connection', 'close', 'Content-Length', @@ -1192,12 +2154,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/CRUDSecretName', {"value":"SECRET_VALUE","attributes":{"enabled":false}}) + .delete('/deletedsecrets/CRUDSecretName-cangetasecret-') .query(true) - .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/63ddd9f7757f40f198a93081310a3ab2","attributes":{"enabled":false,"created":1560838056,"updated":1560838056,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '121', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -1207,11 +2171,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'c0c72c5d-d163-4999-82c3-6f20ad428ffe', + '9e3bf7f1-0fcf-4a80-85fa-c7323467bc75', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1221,11 +2185,9 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:07:35 GMT', + 'Fri, 28 Jun 2019 12:42:01 GMT', 'Connection', - 'close', - 'Content-Length', - '236' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1243,17 +2205,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '931d48b0-9bd2-4499-8d84-c29581445600', + '13ac4880-07b2-411f-aa36-5ea04bc57200', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHEwAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:07:36 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHIQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:42:11 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:07:35 GMT', + 'Fri, 28 Jun 2019 12:42:11 GMT', 'Connection', 'close', 'Content-Length', @@ -1261,14 +2223,12 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .patch('/secrets/CRUDSecretName/', {"attributes":{"exp":32503680000}}) + .delete('/deletedsecrets/CRUDSecretName-cangetasecret-') .query(true) - .reply(200, {"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/63ddd9f7757f40f198a93081310a3ab2","attributes":{"enabled":false,"exp":32503680000,"created":1560838056,"updated":1560838056,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(204, "", [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', - 'Content-Type', - 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -1276,11 +2236,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '78722208-135b-422a-85d4-a2a5457ca796', + 'e2662d58-3ba0-4a08-8b8b-fbc8baafbdd9', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1290,11 +2250,9 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:07:36 GMT', + 'Fri, 28 Jun 2019 12:42:11 GMT', 'Connection', - 'close', - 'Content-Length', - '231' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1312,17 +2270,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '708b00de-7a05-4936-b63a-dcf99c5e5d00', + '88481595-ec59-4aa8-8567-580fc8817100', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHFAAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:07:37 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHIgAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:42:12 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:07:36 GMT', + 'Fri, 28 Jun 2019 12:42:11 GMT', 'Connection', 'close', 'Content-Length', @@ -1330,9 +2288,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/CRUDSecretName') + .put('/secrets/CRUDSecretName-cantgetadisabledSecret-', {"value":"SECRET_VALUE","attributes":{"enabled":false}}) .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName","deletedDate":1560838057,"scheduledPurgeDate":1568614057,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/63ddd9f7757f40f198a93081310a3ab2","attributes":{"enabled":false,"exp":32503680000,"created":1560838056,"updated":1560838056,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-cantgetadisabledSecret-/bde0114a6d074151b995a69acf19f75a","attributes":{"enabled":false,"created":1561725732,"updated":1561725732,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1345,11 +2303,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'f9a7797e-c725-45a7-a61e-7dc2ea0d7720', + '39f13400-d91d-49e8-a6a3-cf51766eabeb', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1359,11 +2317,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:07:36 GMT', + 'Fri, 28 Jun 2019 12:42:11 GMT', 'Connection', 'close', 'Content-Length', - '369' ]); + '276' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1381,17 +2339,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'f687e1e1-f854-430d-935d-4f49159d1200', + 'c361cf96-c3bd-4704-8440-4398f8d56100', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHFQAAAKt1mtQOAAAA; expires=Thu, 18-Jul-2019 06:08:07 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHIwAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:42:12 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:08:07 GMT', + 'Fri, 28 Jun 2019 12:42:12 GMT', 'Connection', 'close', 'Content-Length', @@ -1399,12 +2357,16 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/CRUDSecretName') + .get('/secrets/CRUDSecretName-cantgetadisabledSecret-/') .query(true) - .reply(204, "", [ 'Cache-Control', + .reply(403, {"error":{"code":"Forbidden","message":"Operation get is not allowed on a disabled secret.","innererror":{"code":"SecretDisabled"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '132', + 'Content-Type', + 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -1412,11 +2374,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '5c444fd8-0aae-4281-912f-9d16bd61ad8e', + '32ba2225-45ae-43fc-bf2e-f5d1f023e8bb', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1426,7 +2388,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:08:08 GMT', + 'Fri, 28 Jun 2019 12:42:12 GMT', 'Connection', 'close' ]); @@ -1446,17 +2408,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'b3a7ddb9-3478-4825-ae1e-6de8c8117800', + 'b0499dad-28ca-4128-9148-ffa7c20b6a00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHAgAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:08:39 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHJAAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:42:12 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:08:38 GMT', + 'Fri, 28 Jun 2019 12:42:12 GMT', 'Connection', 'close', 'Content-Length', @@ -1464,9 +2426,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/CRUDSecretName', {"value":"SECRET_VALUE"}) + .delete('/secrets/CRUDSecretName-cantgetadisabledSecret-') .query(true) - .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/68f903e874f54e48b8a36c2156b77776","attributes":{"enabled":true,"created":1560838119,"updated":1560838119,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName-cantgetadisabledSecret-","deletedDate":1561725733,"scheduledPurgeDate":1569501733,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-cantgetadisabledSecret-/bde0114a6d074151b995a69acf19f75a","attributes":{"enabled":false,"created":1561725732,"updated":1561725732,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1479,11 +2441,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '40e39723-2d4c-4105-b10d-bbaaf597559a', + '9248b8e1-393c-4640-851d-7044995c94e5', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1493,11 +2455,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:08:38 GMT', + 'Fri, 28 Jun 2019 12:42:12 GMT', 'Connection', 'close', 'Content-Length', - '235' ]); + '431' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1515,17 +2477,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '8f4310d4-06df-4401-b456-e66aebb35800', + '1aa48f38-3d18-4908-8e5e-e0d82b246e00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHAwAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:08:39 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHJQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:42:13 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:08:39 GMT', + 'Fri, 28 Jun 2019 12:42:13 GMT', 'Connection', 'close', 'Content-Length', @@ -1533,12 +2495,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets/CRUDSecretName/') + .delete('/deletedsecrets/CRUDSecretName-cantgetadisabledSecret-') .query(true) - .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/68f903e874f54e48b8a36c2156b77776","attributes":{"enabled":true,"created":1560838119,"updated":1560838119,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '121', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -1548,11 +2512,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '24545115-20e8-4793-92ec-8fbaa8875492', + 'a7c82f1d-bfd3-4430-b012-d2a6274bdd6d', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1562,16 +2526,14 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:08:39 GMT', + 'Fri, 28 Jun 2019 12:42:13 GMT', 'Connection', - 'close', - 'Content-Length', - '235' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -1584,17 +2546,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'f9978637-59be-4af7-9798-6a776cab6b00', + '2e5efe95-5201-4c0c-99c4-219a0acc6500', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHBAAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:08:40 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHJgAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:42:23 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:08:39 GMT', + 'Fri, 28 Jun 2019 12:42:23 GMT', 'Connection', 'close', 'Content-Length', @@ -1602,12 +2564,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/CRUDSecretName') + .delete('/deletedsecrets/CRUDSecretName-cantgetadisabledSecret-') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName","deletedDate":1560838120,"scheduledPurgeDate":1568614120,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/68f903e874f54e48b8a36c2156b77776","attributes":{"enabled":true,"created":1560838119,"updated":1560838119,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '121', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -1617,11 +2581,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'd00013b3-1083-4c44-80b0-a816bc01951f', + 'dcb5899b-f42e-4f77-a475-de67508d53ae', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1631,11 +2595,9 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:08:40 GMT', + 'Fri, 28 Jun 2019 12:42:23 GMT', 'Connection', - 'close', - 'Content-Length', - '350' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1653,17 +2615,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '5da869e5-b3e6-4f5c-ab3b-bea26c0e5900', + '67980721-9057-4082-ad60-9697e2af7000', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHBQAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:09:11 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHJwAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:42:34 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:09:11 GMT', + 'Fri, 28 Jun 2019 12:42:34 GMT', 'Connection', 'close', 'Content-Length', @@ -1671,7 +2633,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/CRUDSecretName') + .delete('/deletedsecrets/CRUDSecretName-cantgetadisabledSecret-') .query(true) .reply(204, "", [ 'Cache-Control', 'no-cache', @@ -1684,11 +2646,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '4b9b0fbe-fcc2-4839-b264-502c464211f1', + 'b521833e-5607-4a74-a617-1eea485ea097', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1698,14 +2660,14 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:09:11 GMT', + 'Fri, 28 Jun 2019 12:42:34 GMT', 'Connection', 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -1718,17 +2680,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '01e19468-13e3-4fd8-baf6-ff26a0fb0f00', + '2f403419-cf57-4ca6-9f4f-eb860f136100', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHBgAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:09:42 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHKAAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:42:34 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:09:41 GMT', + 'Fri, 28 Jun 2019 12:42:34 GMT', 'Connection', 'close', 'Content-Length', @@ -1736,9 +2698,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/CRUDSecretName', {"value":"SECRET_VALUE","attributes":{"enabled":false}}) + .put('/secrets/CRUDSecretName-canretrievethelatestversionofasecretvalue-', {"value":"SECRET_VALUE"}) .query(true) - .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/9e4052a3878540dfa28672f9def4aa89","attributes":{"enabled":false,"created":1560838182,"updated":1560838182,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-canretrievethelatestversionofasecretvalue-/7b3ee609d3db4e6bb50909a3b3a55e17","attributes":{"enabled":true,"created":1561725755,"updated":1561725755,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1751,11 +2713,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'a60d0a84-bbe0-40f0-921b-cdf3f4c6ebb8', + '77fd8d38-a8da-4e7a-b656-3ce2de216326', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1765,11 +2727,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:09:42 GMT', + 'Fri, 28 Jun 2019 12:42:34 GMT', 'Connection', 'close', 'Content-Length', - '236' ]); + '294' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1787,17 +2749,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '480ab0b8-5f4a-41b9-9681-eefecd731200', + '51ff7b46-5766-4b65-a75d-8d1d0cb56800', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHBwAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:09:42 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHKQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:42:35 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:09:42 GMT', + 'Fri, 28 Jun 2019 12:42:34 GMT', 'Connection', 'close', 'Content-Length', @@ -1805,14 +2767,12 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets/CRUDSecretName/') + .get('/secrets/CRUDSecretName-canretrievethelatestversionofasecretvalue-/') .query(true) - .reply(403, {"error":{"code":"Forbidden","message":"Operation get is not allowed on a disabled secret.","innererror":{"code":"SecretDisabled"}}}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-canretrievethelatestversionofasecretvalue-/7b3ee609d3db4e6bb50909a3b3a55e17","attributes":{"enabled":true,"created":1561725755,"updated":1561725755,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', - 'Content-Length', - '132', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -1822,11 +2782,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'ad383500-fbd8-45b6-a47e-0d0519aa8287', + '466880fd-ad64-43be-9ee9-f65f0e32785f', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1836,9 +2796,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:09:42 GMT', + 'Fri, 28 Jun 2019 12:42:35 GMT', 'Connection', - 'close' ]); + 'close', + 'Content-Length', + '294' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1856,17 +2818,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '992763aa-6037-4032-9163-25a725356700', + '1c47eea7-49f0-47e3-a002-4bf373317100', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHCAAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:09:43 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHKgAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:42:35 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:09:42 GMT', + 'Fri, 28 Jun 2019 12:42:35 GMT', 'Connection', 'close', 'Content-Length', @@ -1874,9 +2836,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/CRUDSecretName') + .delete('/secrets/CRUDSecretName-canretrievethelatestversionofasecretvalue-') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName","deletedDate":1560838183,"scheduledPurgeDate":1568614183,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/9e4052a3878540dfa28672f9def4aa89","attributes":{"enabled":false,"created":1560838182,"updated":1560838182,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName-canretrievethelatestversionofasecretvalue-","deletedDate":1561725756,"scheduledPurgeDate":1569501756,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-canretrievethelatestversionofasecretvalue-/7b3ee609d3db4e6bb50909a3b3a55e17","attributes":{"enabled":true,"created":1561725755,"updated":1561725755,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1889,11 +2851,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '478b0ab3-305a-4fcc-a715-07d595f236a3', + '66869afa-f8a5-4a8d-ab4e-4d4c8d004b6a', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1903,11 +2865,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:09:43 GMT', + 'Fri, 28 Jun 2019 12:42:36 GMT', 'Connection', 'close', 'Content-Length', - '351' ]); + '468' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1925,17 +2887,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '544b0522-206e-4cc2-9ac0-fa5f53a31400', + '5537efd2-33da-45f7-8a84-f732e83f6000', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHCQAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:10:13 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHKwAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:42:36 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:10:13 GMT', + 'Fri, 28 Jun 2019 12:42:35 GMT', 'Connection', 'close', 'Content-Length', @@ -1943,12 +2905,16 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/CRUDSecretName') + .delete('/deletedsecrets/CRUDSecretName-canretrievethelatestversionofasecretvalue-') .query(true) - .reply(204, "", [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '121', + 'Content-Type', + 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -1956,11 +2922,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'd9a89b5f-a8f8-4f83-b92e-0a987c7f75c5', + '447088ac-428b-4822-bd5f-089ad9642b0f', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1970,7 +2936,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:10:13 GMT', + 'Fri, 28 Jun 2019 12:42:36 GMT', 'Connection', 'close' ]); @@ -1990,17 +2956,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '8020e49f-1d27-4cd4-913a-8b4e34ed1100', + '45a3dec4-40df-45af-a629-36d919216e00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHCgAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:10:44 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHLAAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:42:46 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:10:44 GMT', + 'Fri, 28 Jun 2019 12:42:46 GMT', 'Connection', 'close', 'Content-Length', @@ -2008,12 +2974,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/CRUDSecretName', {"value":"SECRET_VALUE"}) + .delete('/deletedsecrets/CRUDSecretName-canretrievethelatestversionofasecretvalue-') .query(true) - .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/20a63005a0aa409daf98d6ee9a0e1ce5","attributes":{"enabled":true,"created":1560838245,"updated":1560838245,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '121', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -2023,11 +2991,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '5d42479d-3b96-4eee-93ea-66c8ca09d5fc', + '676ba78b-a712-4318-a1fb-336d9bc22e95', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2037,16 +3005,79 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:10:44 GMT', + 'Fri, 28 Jun 2019 12:42:46 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '8de0c424-c92c-4ec6-b7b3-fe68ec047600', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHLQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:42:57 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:42:56 GMT', 'Connection', 'close', 'Content-Length', - '235' ]); + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedsecrets/CRUDSecretName-canretrievethelatestversionofasecretvalue-') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '5a646220-b473-438a-8390-e154c9609640', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:42:57 GMT', + 'Connection', + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -2059,17 +3090,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'fa7b3889-2224-41b3-b7ac-227f62656500', + 'a606b3d0-bcdf-44a7-81e1-72c80aee6b00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHCwAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:10:45 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHLQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:42:57 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:10:45 GMT', + 'Fri, 28 Jun 2019 12:42:57 GMT', 'Connection', 'close', 'Content-Length', @@ -2077,12 +3108,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets/CRUDSecretName/') + .get('/secrets/CRUDSecretName-cangetasecretNonExisting-/') .query(true) - .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/20a63005a0aa409daf98d6ee9a0e1ce5","attributes":{"enabled":true,"created":1560838245,"updated":1560838245,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(404, {"error":{"code":"SecretNotFound","message":"Secret not found: CRUDSecretName-cangetasecretNonExisting-"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '122', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -2092,11 +3125,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'a9cb9d0a-e286-4647-8034-5c13f1f1c85b', + 'c791cfbe-a7bb-4cd2-b819-91adc2d494bf', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2106,11 +3139,9 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:10:45 GMT', + 'Fri, 28 Jun 2019 12:42:57 GMT', 'Connection', - 'close', - 'Content-Length', - '235' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -2128,17 +3159,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '713ba01b-1ef3-4809-acf9-7e6d11196a00', + 'ca9edcaf-6e7b-4ecc-a4db-e89ab1096300', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHDAAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:10:45 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHLQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:42:58 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:10:45 GMT', + 'Fri, 28 Jun 2019 12:42:58 GMT', 'Connection', 'close', 'Content-Length', @@ -2146,9 +3177,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/CRUDSecretName') + .put('/secrets/CRUDSecretName-candeleteasecret-', {"value":"SECRET_VALUE"}) .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName","deletedDate":1560838246,"scheduledPurgeDate":1568614246,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/20a63005a0aa409daf98d6ee9a0e1ce5","attributes":{"enabled":true,"created":1560838245,"updated":1560838245,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-candeleteasecret-/0044b83ead2d44d7b2a840490ea0c461","attributes":{"enabled":true,"created":1561725778,"updated":1561725778,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -2161,11 +3192,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '98ce149e-5b2d-4e7e-8969-925e4fc26682', + 'eb75de96-77e5-429f-8f66-bca2721351b1', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2175,16 +3206,16 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:10:45 GMT', + 'Fri, 28 Jun 2019 12:42:58 GMT', 'Connection', 'close', 'Content-Length', - '350' ]); + '269' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -2197,17 +3228,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '52649bed-6ca0-4c41-b490-f90268931100', + '13ac4880-07b2-411f-aa36-5ea074cd7200', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHDQAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:11:16 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHLQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:42:58 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:11:16 GMT', + 'Fri, 28 Jun 2019 12:42:58 GMT', 'Connection', 'close', 'Content-Length', @@ -2215,12 +3246,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/CRUDSecretName') + .delete('/secrets/CRUDSecretName-candeleteasecret-') .query(true) - .reply(204, "", [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName-candeleteasecret-","deletedDate":1561725778,"scheduledPurgeDate":1569501778,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-candeleteasecret-/0044b83ead2d44d7b2a840490ea0c461","attributes":{"enabled":true,"created":1561725778,"updated":1561725778,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -2228,11 +3261,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'cf0909f5-6a61-42b5-ba20-52613365ce14', + '6f44e921-a8f8-4d6f-b235-9e1742f728a2', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2242,9 +3275,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:11:16 GMT', + 'Fri, 28 Jun 2019 12:42:58 GMT', 'Connection', - 'close' ]); + 'close', + 'Content-Length', + '418' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -2262,17 +3297,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '78a62abe-c9a0-4da7-96ca-c81da9ea1100', + '60b0e1f0-3cea-4f24-b9c5-ee6bea466200', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHDgAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:11:47 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHLQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:42:59 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:11:47 GMT', + 'Fri, 28 Jun 2019 12:42:58 GMT', 'Connection', 'close', 'Content-Length', @@ -2280,14 +3315,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets/CRUDSecretName/') + .get('/secrets/CRUDSecretName-candeleteasecret-/') .query(true) - .reply(404, {"error":{"code":"SecretNotFound","message":"Secret not found: CRUDSecretName"}}, [ 'Cache-Control', + .reply(404, {"error":{"code":"SecretNotFound","message":"Secret not found: CRUDSecretName-candeleteasecret-"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', 'Content-Length', - '80', + '114', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -2297,11 +3332,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '6a05c3b9-72f7-4e9a-83fd-585a3b7b1425', + 'd6acb6d4-eeeb-4129-85ae-2e0f7354b972', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2311,14 +3346,14 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:11:47 GMT', + 'Fri, 28 Jun 2019 12:42:59 GMT', 'Connection', 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -2331,17 +3366,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'ac25987b-549f-493a-9b38-a1953c736800', + 'bc7c74e9-e84a-4aaf-9201-1134c68f6d00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHDwAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:11:48 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHLQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:42:59 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:11:47 GMT', + 'Fri, 28 Jun 2019 12:42:59 GMT', 'Connection', 'close', 'Content-Length', @@ -2349,12 +3384,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/CRUDSecretName', {"value":"SECRET_VALUE"}) + .delete('/deletedsecrets/CRUDSecretName-candeleteasecret-') .query(true) - .reply(200, {"value":"SECRET_VALUE","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/1e1ac75084ea4fa68c05b17599da5a80","attributes":{"enabled":true,"created":1560838308,"updated":1560838308,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '121', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -2364,11 +3401,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'f9e2e878-ae97-43d3-bf65-4a2229f458a8', + 'c9f6eee8-1a0a-4a49-bc85-be2f7dc3d649', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2378,11 +3415,9 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:11:48 GMT', + 'Fri, 28 Jun 2019 12:42:59 GMT', 'Connection', - 'close', - 'Content-Length', - '235' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -2400,17 +3435,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'fc9ac8da-ae44-4b34-9fe3-bb54a3ca6200', + 'c528189b-009d-4c66-9221-6314058b6500', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHEAAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:11:48 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHLQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:10 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:11:47 GMT', + 'Fri, 28 Jun 2019 12:43:09 GMT', 'Connection', 'close', 'Content-Length', @@ -2418,14 +3453,12 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/CRUDSecretName') + .delete('/deletedsecrets/CRUDSecretName-candeleteasecret-') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName","deletedDate":1560838308,"scheduledPurgeDate":1568614308,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/1e1ac75084ea4fa68c05b17599da5a80","attributes":{"enabled":true,"created":1560838308,"updated":1560838308,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(204, "", [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', - 'Content-Type', - 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -2433,11 +3466,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '02c50e1c-acdf-45c5-8b16-757e37a0d8b9', + 'af2e82b3-3dbd-4e7c-8e05-da1c9917fb70', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2447,16 +3480,14 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:11:48 GMT', + 'Fri, 28 Jun 2019 12:43:09 GMT', 'Connection', - 'close', - 'Content-Length', - '350' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -2469,17 +3500,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'f92facf2-bf80-4519-b28b-800338db5a00', + '83f8b128-e16a-45f6-b3ff-6780bc557000', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHEQAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:11:49 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHLQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:10 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:11:49 GMT', + 'Fri, 28 Jun 2019 12:43:10 GMT', 'Connection', 'close', 'Content-Length', @@ -2487,14 +3518,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets/CRUDSecretName/') + .delete('/secrets/CRUDSecretName-candeleteasecretNonExisting-') .query(true) - .reply(404, {"error":{"code":"SecretNotFound","message":"Secret not found: CRUDSecretName"}}, [ 'Cache-Control', + .reply(404, {"error":{"code":"SecretNotFound","message":"Secret not found: CRUDSecretName-candeleteasecretNonExisting-"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', 'Content-Length', - '80', + '125', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -2504,11 +3535,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '0bf60517-7b80-47ab-b656-c73b84c79b56', + 'a2ee1c00-e53a-4a4a-a295-82c601ae255f', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2518,7 +3549,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:11:48 GMT', + 'Fri, 28 Jun 2019 12:43:10 GMT', 'Connection', 'close' ]); @@ -2538,17 +3569,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'f37b2856-27aa-4e0d-81ca-9ce0e11e6a00', + '857e877e-fdef-41c7-80b9-f64bac316e00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHEgAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:12:19 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHLQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:11 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:12:19 GMT', + 'Fri, 28 Jun 2019 12:43:10 GMT', 'Connection', 'close', 'Content-Length', @@ -2556,12 +3587,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/CRUDSecretName') + .put('/secrets/CRUDSecretName-cangetadeletedsecret-', {"value":"RSA"}) .query(true) - .reply(204, "", [ 'Cache-Control', + .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-cangetadeletedsecret-/91ceb4254bbe465abe614c72616d832b","attributes":{"enabled":true,"created":1561725791,"updated":1561725791,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -2569,11 +3602,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '0bfda1d5-1872-41bf-911f-244a01699707', + '8ac561e5-6d1b-4816-b49d-d31f254e4bb9', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2583,14 +3616,16 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:12:19 GMT', + 'Fri, 28 Jun 2019 12:43:11 GMT', 'Connection', - 'close' ]); + 'close', + 'Content-Length', + '264' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -2603,17 +3638,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '3e9dfb0f-350e-4d90-bf31-b0df2ade5b00', + '2e9e6fc4-d996-41ac-95ff-81c0cf850a00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHEwAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:12:50 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHLQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:11 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:12:50 GMT', + 'Fri, 28 Jun 2019 12:43:10 GMT', 'Connection', 'close', 'Content-Length', @@ -2621,14 +3656,12 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/CRUDSecretName') + .delete('/secrets/CRUDSecretName-cangetadeletedsecret-') .query(true) - .reply(404, {"error":{"code":"SecretNotFound","message":"Secret not found: CRUDSecretName"}}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName-cangetadeletedsecret-","deletedDate":1561725791,"scheduledPurgeDate":1569501791,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-cangetadeletedsecret-/91ceb4254bbe465abe614c72616d832b","attributes":{"enabled":true,"created":1561725791,"updated":1561725791,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', - 'Content-Length', - '80', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -2638,11 +3671,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '2628b785-c46d-478c-ac99-016781d36711', + 'c0a3b73b-375a-41b1-bac8-0b038c5e1809', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2652,9 +3685,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:12:50 GMT', + 'Fri, 28 Jun 2019 12:43:11 GMT', 'Connection', - 'close' ]); + 'close', + 'Content-Length', + '426' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -2672,17 +3707,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '6fe011cd-c4f3-48aa-82f8-73ef4edd1500', + '7cfe274c-1911-4da7-9167-b8d65fdb7600', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHFAAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:12:51 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHLQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:12 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:12:51 GMT', + 'Fri, 28 Jun 2019 12:43:11 GMT', 'Connection', 'close', 'Content-Length', @@ -2690,12 +3725,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/CRUDSecretName', {"value":"RSA"}) + .get('/deletedsecrets/CRUDSecretName-cangetadeletedsecret-') .query(true) - .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/e1c25c55adff403ba631b3dcb6f92db3","attributes":{"enabled":true,"created":1560838371,"updated":1560838371,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(404, {"error":{"code":"SecretNotFound","message":"Deleted Secret not found: CRUDSecretName-cangetadeletedsecret-"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '126', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -2705,11 +3742,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '7c587d5c-5cc1-4420-b62b-3981a82ad32d', + 'f0cf562d-cf1f-4db2-bf73-18755ae2d5f9', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2719,16 +3756,14 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:12:51 GMT', + 'Fri, 28 Jun 2019 12:43:11 GMT', 'Connection', - 'close', - 'Content-Length', - '226' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -2741,17 +3776,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '33f3a4e5-d264-4661-a5be-bb7c31651200', + '5537efd2-33da-45f7-8a84-f732da476000', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHFQAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:12:52 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHLQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:22 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:12:51 GMT', + 'Fri, 28 Jun 2019 12:43:22 GMT', 'Connection', 'close', 'Content-Length', @@ -2759,12 +3794,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/CRUDSecretName') + .get('/deletedsecrets/CRUDSecretName-cangetadeletedsecret-') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName","deletedDate":1560838372,"scheduledPurgeDate":1568614372,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/e1c25c55adff403ba631b3dcb6f92db3","attributes":{"enabled":true,"created":1560838371,"updated":1560838371,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(404, {"error":{"code":"SecretNotFound","message":"Deleted Secret not found: CRUDSecretName-cangetadeletedsecret-"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '126', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -2774,11 +3811,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'c6a48782-ee29-4c68-9677-8fc9fd81bd4b', + '2162fb4f-8882-49ac-acd1-455eefe5e1f5', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2788,11 +3825,9 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:12:52 GMT', + 'Fri, 28 Jun 2019 12:43:22 GMT', 'Connection', - 'close', - 'Content-Length', - '350' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -2810,17 +3845,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'f687e1e1-f854-430d-935d-4f4927b51200', + '7eeacf7b-3405-41df-a4ad-53716a8b7000', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHFgAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:13:22 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHLQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:32 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:13:22 GMT', + 'Fri, 28 Jun 2019 12:43:32 GMT', 'Connection', 'close', 'Content-Length', @@ -2828,9 +3863,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedsecrets/CRUDSecretName') + .get('/deletedsecrets/CRUDSecretName-cangetadeletedsecret-') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName","deletedDate":1560838372,"scheduledPurgeDate":1568614372,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName/e1c25c55adff403ba631b3dcb6f92db3","attributes":{"enabled":true,"created":1560838371,"updated":1560838371,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/CRUDSecretName-cangetadeletedsecret-","deletedDate":1561725791,"scheduledPurgeDate":1569501791,"id":"https://keyvault_name.vault.azure.net/secrets/CRUDSecretName-cangetadeletedsecret-/91ceb4254bbe465abe614c72616d832b","attributes":{"enabled":true,"created":1561725791,"updated":1561725791,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -2843,11 +3878,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '35ccc34d-f618-4ea6-b159-711d86f0b4a9', + '63a3ca54-20ff-4b58-a84d-8fc44f04a5e0', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2857,11 +3892,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:13:22 GMT', + 'Fri, 28 Jun 2019 12:43:33 GMT', 'Connection', 'close', 'Content-Length', - '350' ]); + '426' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -2879,17 +3914,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '5e586aea-5d36-49c6-b03a-ae586d7a5f00', + '18f0d785-2412-47cf-a851-839004676a00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHFwAAANd2mtQOAAAA; expires=Thu, 18-Jul-2019 06:13:23 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHLQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:33 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:13:23 GMT', + 'Fri, 28 Jun 2019 12:43:32 GMT', 'Connection', 'close', 'Content-Length', @@ -2897,7 +3932,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/CRUDSecretName') + .delete('/deletedsecrets/CRUDSecretName-cangetadeletedsecret-') .query(true) .reply(204, "", [ 'Cache-Control', 'no-cache', @@ -2910,11 +3945,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '89a6f7cc-dcb1-4aed-82d8-a4713dc74b13', + '17d5de54-e904-4ba4-87be-b1bb1586d575', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2924,7 +3959,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:13:23 GMT', + 'Fri, 28 Jun 2019 12:43:33 GMT', 'Connection', 'close' ]); @@ -2944,17 +3979,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'b791f154-419f-4953-b9fa-1880d0791200', + 'efbbfb66-4619-46d8-bfd4-2cd4da536b00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Appf67jyTctNka3RRbx-VCw_aSJHBAAAAAN4mtQOAAAA; expires=Thu, 18-Jul-2019 06:13:54 GMT; path=/; secure; HttpOnly', + 'fpc=Ai1g8ACXbilKm03nA8rOM1s_aSJHLQAAAK4BqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:33 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:13:54 GMT', + 'Fri, 28 Jun 2019 12:43:33 GMT', 'Connection', 'close', 'Content-Length', @@ -2962,14 +3997,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/CRUDSecretName') + .delete('/secrets/CRUDSecretName-cangetadeletedsecretNonExisting-') .query(true) - .reply(404, {"error":{"code":"SecretNotFound","message":"Secret not found: CRUDSecretName"}}, [ 'Cache-Control', + .reply(404, {"error":{"code":"SecretNotFound","message":"Secret not found: CRUDSecretName-cangetadeletedsecretNonExisting-"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', 'Content-Length', - '80', + '129', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -2979,11 +4014,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '65c8dcad-4290-45c3-ae37-103f29e5b118', + '375afe3c-c677-494d-adbf-546c835d2e8d', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2993,7 +4028,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:13:54 GMT', + 'Fri, 28 Jun 2019 12:43:33 GMT', 'Connection', 'close' ]); diff --git a/sdk/keyvault/keyvault-secrets/recordings/node/secret_client__list_secrets_in_various_ways/recording_before_all_hook.js b/sdk/keyvault/keyvault-secrets/recordings/node/secret_client__list_secrets_in_various_ways/recording_before_all_hook.js index c3f734e4d091..1de69fe5157b 100644 --- a/sdk/keyvault/keyvault-secrets/recordings/node/secret_client__list_secrets_in_various_ways/recording_before_all_hook.js +++ b/sdk/keyvault/keyvault-secrets/recordings/node/secret_client__list_secrets_in_various_ways/recording_before_all_hook.js @@ -17,17 +17,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'b0962537-103e-4603-afff-b594e4b31400', + '69f406df-a61a-47b5-bcec-7d9d1e9f6b00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHAQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:39:58 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHAQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:34 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:39:58 GMT', + 'Fri, 28 Jun 2019 12:43:33 GMT', 'Connection', 'close', 'Content-Length', @@ -35,14 +35,767 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/listSecretName') + .put('/secrets/listSecretName-canlistsecrets-0', {"value":"RSA"}) .query(true) - .reply(404, {"error":{"code":"SecretNotFound","message":"Secret not found: listSecretName"}}, [ 'Cache-Control', + .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistsecrets-0/bafe2a75be934eccb71d1aea0a5b8bc0","attributes":{"enabled":true,"created":1561725814,"updated":1561725814,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'b2190017-9b56-465b-b0cf-947471f353f3', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:43:34 GMT', + 'Connection', + 'close', + 'Content-Length', + '259' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '21d67693-9c7b-4a18-b95e-3ab871816300', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHAgAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:34 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:43:34 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .put('/secrets/listSecretName-canlistsecrets-1', {"value":"RSA"}) + .query(true) + .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistsecrets-1/516e394d29a4471da0740197a853415b","attributes":{"enabled":true,"created":1561725815,"updated":1561725815,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '3a729e99-af7b-42b7-b5ac-367f088f8c55', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:43:35 GMT', + 'Connection', + 'close', + 'Content-Length', + '259' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'c23d9555-8fc3-4283-9ae1-e6f10a5f0a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHAwAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:35 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:43:34 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/secrets') + .query(true) + .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/ExamplePassword","attributes":{"enabled":true,"created":1559920536,"updated":1559920536,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/key156035497352907352","attributes":{"enabled":true,"created":1560354978,"updated":1560354978,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/key156035503730605597","attributes":{"enabled":true,"created":1560355042,"updated":1560355042,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/key156035505405304954","attributes":{"enabled":true,"created":1560355059,"updated":1560355059,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistsecrets-0","attributes":{"enabled":true,"created":1561725814,"updated":1561725814,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistsecrets-1","attributes":{"enabled":true,"created":1561725815,"updated":1561725815,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969830299800555","attributes":{"enabled":true,"created":1559698309,"updated":1559698309,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969830501005254","attributes":{"enabled":true,"exp":32503680000,"created":1559698313,"updated":1559698313,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969830702405633","attributes":{"enabled":true,"exp":32503680000,"created":1559698314,"updated":1559698328,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969831104103177","attributes":{"enabled":true,"created":1559698345,"updated":1559698345,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969840997100376","attributes":{"enabled":true,"created":1559698415,"updated":1559698415,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969841605401224","attributes":{"enabled":true,"created":1559698422,"updated":1559698422,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969842993209999","attributes":{"enabled":true,"exp":32503680000,"created":1559698435,"updated":1559698435,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969844356809107","attributes":{"enabled":true,"exp":32503680000,"created":1559698450,"updated":1559698457,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969847359407300","attributes":{"enabled":true,"created":1559698479,"updated":1559698479,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969857586802675","attributes":{"enabled":true,"created":1559698582,"updated":1559698582,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969858938507540","attributes":{"enabled":true,"exp":32503680000,"created":1559698595,"updated":1559698595,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969860209703057","attributes":{"enabled":true,"exp":32503680000,"created":1559698608,"updated":1559698615,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969864161208327","attributes":{"enabled":true,"created":1559698661,"updated":1559698661,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155974871145300045","attributes":{"enabled":true,"created":1559748717,"updated":1559748717,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155974872276605440","attributes":{"enabled":true,"exp":32503680000,"created":1559748728,"updated":1559748728,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UVTVOelE0TnpNek9EQXpNRFl6TmpNaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'b346037a-11f7-4d91-97d9-4f94e6c56ba3', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:43:35 GMT', + 'Connection', + 'close', + 'Content-Length', + '4434' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'b70c09a7-3b55-4a09-b8c1-3e9f21a26e00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHBAAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:36 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:43:35 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/secrets') + .query(true) + .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/secret155974873380306363","attributes":{"enabled":true,"exp":32503680000,"created":1559748739,"updated":1559748744,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155974876803708577","attributes":{"enabled":true,"created":1559748784,"updated":1559748784,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155976267700703146","attributes":{"enabled":true,"created":1559762682,"updated":1559762682,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977987019000658","attributes":{"enabled":true,"created":1559779876,"updated":1559779876,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977987618402041","attributes":{"enabled":true,"created":1559779883,"updated":1559779883,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977989062300314","attributes":{"enabled":true,"exp":32503680000,"created":1559779896,"updated":1559779896,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977990311305514","attributes":{"enabled":true,"exp":32503680000,"created":1559779909,"updated":1559779916,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977994218208573","attributes":{"enabled":true,"created":1559779954,"updated":1559779954,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155985529172800962","attributes":{"enabled":true,"created":1559855297,"updated":1559855297,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155986124522104520","attributes":{"enabled":true,"created":1559861253,"updated":1559861253,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155986125376001211","attributes":{"enabled":true,"created":1559861260,"updated":1559861260,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155986126989703251","attributes":{"enabled":true,"exp":32503680000,"created":1559861276,"updated":1559861276,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035467744608684","attributes":{"enabled":true,"created":1560354683,"updated":1560354683,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelUwTmpnek1Ua3dNREkzTVRnaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '1a34387f-f5e2-465e-bc98-7b152355e4b2', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:43:36 GMT', + 'Connection', + 'close', + 'Content-Length', + '2832' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '731b0759-79a5-4903-bc38-c84bf9fc6200', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHBQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:36 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:43:36 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/secrets') + .query(true) + .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035468319002718","attributes":{"enabled":true,"exp":32503680000,"created":1560354688,"updated":1560354688,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035469457101815","attributes":{"enabled":true,"exp":32503680000,"created":1560354700,"updated":1560354705,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035471178508910","attributes":{"enabled":false,"exp":32503680000,"created":1560354717,"updated":1560354723,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035472322108987","attributes":{"enabled":true,"created":1560354728,"updated":1560354728,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035473421700992","attributes":{"enabled":false,"created":1560354739,"updated":1560354739,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035474537300332","attributes":{"enabled":true,"created":1560354751,"updated":1560354751,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035492380902463","attributes":{"enabled":true,"created":1560354940,"updated":1560354940,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036566801100575","attributes":{"enabled":true,"created":1560365673,"updated":1560365673,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036567378506379","attributes":{"enabled":true,"exp":32503680000,"created":1560365679,"updated":1560365679,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036568492401952","attributes":{"enabled":true,"exp":32503680000,"created":1560365690,"updated":1560365695,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036570169100621","attributes":{"enabled":false,"exp":32503680000,"created":1560365707,"updated":1560365713,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036571333008936","attributes":{"enabled":true,"created":1560365718,"updated":1560365718,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036572454709051","attributes":{"enabled":false,"created":1560365729,"updated":1560365729,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036573548102072","attributes":{"enabled":true,"created":1560365740,"updated":1560365740,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036585124607918","attributes":{"enabled":true,"created":1560365867,"updated":1560365867,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036590080809323","attributes":{"enabled":true,"created":1560365906,"updated":1560365906,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036596439108652","attributes":{"enabled":true,"created":1560365969,"updated":1560365969,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036624468808284","attributes":{"enabled":true,"created":1560366250,"updated":1560366250,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelkyTWpVd05ETXhNRE15TkRNaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '25170133-79b3-4538-85e1-e08acd35c55b', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:43:36 GMT', + 'Connection', + 'close', + 'Content-Length', + '3822' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '3b7c14dd-1d68-4149-8c9b-1f8687da6b00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHBgAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:37 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:43:36 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/secrets') + .query(true) + .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036625043103243","attributes":{"enabled":true,"exp":32503680000,"created":1560366256,"updated":1560366256,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036626200104356","attributes":{"enabled":true,"exp":32503680000,"created":1560366267,"updated":1560366272,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036627848202634","attributes":{"enabled":false,"exp":32503680000,"created":1560366283,"updated":1560366289,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036628972007025","attributes":{"enabled":true,"created":1560366295,"updated":1560366295,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036630071100034","attributes":{"enabled":false,"created":1560366306,"updated":1560366306,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036631177303153","attributes":{"enabled":true,"created":1560366317,"updated":1560366317,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036651431706935","attributes":{"enabled":true,"created":1560366530,"updated":1560366530,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036656390609451","attributes":{"enabled":true,"created":1560366569,"updated":1560366569,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036662789900557","attributes":{"enabled":true,"created":1560366633,"updated":1560366633,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036776000805385","attributes":{"enabled":true,"created":1560367765,"updated":1560367765,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156083458808007836","attributes":{"enabled":true,"created":1560834589,"updated":1560834589,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156083462580205466","attributes":{"enabled":true,"created":1560834627,"updated":1560834627,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156083472284304384","attributes":{"enabled":true,"created":1560834724,"updated":1560834724,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdPRE0wTnpZeE56ZzVNREk1T0RNaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '6c0e1432-9b23-4cc7-b918-1abd82884259', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:43:37 GMT', + 'Connection', + 'close', + 'Content-Length', + '2816' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'bc2d9d70-37da-4839-8e3e-11a3c72d6f00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHBwAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:37 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:43:37 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/secrets') + .query(true) + .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/secret156083476178902983","attributes":{"enabled":true,"created":1560834763,"updated":1560834763,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156035131601606330","attributes":{"enabled":true,"created":1560351327,"updated":1560351327,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156035483280103968","attributes":{"enabled":true,"created":1560354843,"updated":1560354843,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156035483280107298","attributes":{"enabled":true,"created":1560354838,"updated":1560354838,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036581736106694","attributes":{"enabled":true,"created":1560365822,"updated":1560365822,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036581736108753","attributes":{"enabled":true,"created":1560365828,"updated":1560365828,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036639908703029","attributes":{"enabled":true,"created":1560366404,"updated":1560366404,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036639908709648","attributes":{"enabled":true,"created":1560366410,"updated":1560366410,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083455364403280","attributes":{"enabled":true,"created":1560834555,"updated":1560834555,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083459257408076","attributes":{"enabled":true,"created":1560834593,"updated":1560834593,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083459257409406","attributes":{"enabled":true,"created":1560834593,"updated":1560834593,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083472719004650","attributes":{"enabled":true,"created":1560834728,"updated":1560834728,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083472719009472","attributes":{"enabled":true,"created":1560834727,"updated":1560834727,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":null}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '3212d87e-9da8-433b-9519-3b504af8ce24', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:43:37 GMT', + 'Connection', + 'close', + 'Content-Length', + '2509' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'c7806a1b-9bc0-47ad-ac77-2cb6fab86900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHCAAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:38 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:43:37 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/secrets/listSecretName-canlistsecrets-0') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName-canlistsecrets-0","deletedDate":1561725818,"scheduledPurgeDate":1569501818,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistsecrets-0/bafe2a75be934eccb71d1aea0a5b8bc0","attributes":{"enabled":true,"created":1561725814,"updated":1561725814,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '0d1a9707-8cef-4c4d-b56a-20f60aace6e6', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:43:38 GMT', + 'Connection', + 'close', + 'Content-Length', + '416' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'ab1ad2cf-aece-45c1-8f00-6f58bc5e6e00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHCQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:38 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:43:38 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedsecrets/listSecretName-canlistsecrets-0') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '121', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '2583fbd0-c5c6-472f-95ae-6c13b3d130a2', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:43:38 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '7c4c07f9-c967-4f20-9001-211d59166600', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHCgAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:49 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:43:48 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedsecrets/listSecretName-canlistsecrets-0') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '121', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'eec3a444-96ac-4176-9513-b974aa915f74', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:43:49 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '85577e9b-2ddf-4eac-bb3e-966345756e00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHCwAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:43:59 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:43:59 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedsecrets/listSecretName-canlistsecrets-0') + .query(true) + .reply(204, "", [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '21239b35-c4aa-425b-8fa2-e9c8a18a8366', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:43:59 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '0144e3e0-1aea-43db-8039-3ff0ae230c00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHDAAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:00 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:43:59 GMT', + 'Connection', + 'close', 'Content-Length', - '80', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/secrets/listSecretName-canlistsecrets-1') + .query(true) + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName-canlistsecrets-1","deletedDate":1561725840,"scheduledPurgeDate":1569501840,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistsecrets-1/516e394d29a4471da0740197a853415b","attributes":{"enabled":true,"created":1561725815,"updated":1561725815,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -52,11 +805,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '4a209c34-4c5f-464e-8a19-8719107b8e2f', + 'f62800ea-57a6-4c11-b5d6-3a7e7b4e4f12', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -66,14 +819,16 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:39:58 GMT', + 'Fri, 28 Jun 2019 12:44:00 GMT', 'Connection', - 'close' ]); + 'close', + 'Content-Length', + '416' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -86,17 +841,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '5d7f8878-b4f8-4a8c-8158-ecb069475000', + '38d59dd8-a09a-4df5-b005-5f62496f6c00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHAgAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:39:59 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHDQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:00 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:39:59 GMT', + 'Fri, 28 Jun 2019 12:43:59 GMT', 'Connection', 'close', 'Content-Length', @@ -104,14 +859,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/listSecretName') + .delete('/deletedsecrets/listSecretName-canlistsecrets-1') .query(true) - .reply(404, {"error":{"code":"SecretNotFound","message":"Secret not found: listSecretName"}}, [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', 'Content-Length', - '80', + '121', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -121,11 +876,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '04959ed2-498b-4784-a6b9-164269cedb2f', + '845d1744-8397-44d8-95bb-667cdead3097', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -135,7 +890,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:39:59 GMT', + 'Fri, 28 Jun 2019 12:44:00 GMT', 'Connection', 'close' ]); @@ -155,17 +910,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '2ff8ce68-a5a1-41af-bfac-6d03235e5f00', + '7af524d8-f871-4806-86b5-d64f37b96900', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHAwAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:40:00 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHDgAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:11 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:39:59 GMT', + 'Fri, 28 Jun 2019 12:44:10 GMT', 'Connection', 'close', 'Content-Length', @@ -173,14 +928,12 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/listSecretName0', {"value":"RSA"}) + .delete('/deletedsecrets/listSecretName-canlistsecrets-1') .query(true) - .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName0/7357b38f584846c7b36ffa7e0ac19b73","attributes":{"enabled":true,"created":1560836400,"updated":1560836400,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(204, "", [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', - 'Content-Type', - 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -188,11 +941,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'e3961972-6f19-4772-a88d-bfbabdccd96d', + '7ad23582-bba9-4278-b962-aefc64632eae', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -202,11 +955,9 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:39:59 GMT', + 'Fri, 28 Jun 2019 12:44:11 GMT', 'Connection', - 'close', - 'Content-Length', - '227' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -224,17 +975,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '8a2c284b-6ae8-4072-9368-2488096f5400', + 'eda2fb30-661f-468f-9781-687f428a6300', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHBAAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:40:00 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHDwAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:11 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:40:00 GMT', + 'Fri, 28 Jun 2019 12:44:11 GMT', 'Connection', 'close', 'Content-Length', @@ -242,9 +993,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/listSecretName1', {"value":"RSA"}) + .put('/secrets/listSecretName-canlistdeletedsecrets-0', {"value":"RSA"}) .query(true) - .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName1/6c4bde29e65f428cb05f4dcbdf99b5df","attributes":{"enabled":true,"created":1560836400,"updated":1560836400,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistdeletedsecrets-0/c2472e7c597d4992a59646a4e2c03d76","attributes":{"enabled":true,"created":1561725851,"updated":1561725851,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -257,11 +1008,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '97c648a2-0316-44d9-9e12-bd10a4fe4821', + '7b0cd3f6-e493-468d-ad7c-5d72362ad530', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -271,11 +1022,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:40:00 GMT', + 'Fri, 28 Jun 2019 12:44:11 GMT', 'Connection', 'close', 'Content-Length', - '227' ]); + '266' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -293,17 +1044,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '441e6579-768d-440c-8098-de7a45175c00', + 'a66f29dc-0190-48af-89e6-d4228bee6400', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHBQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:40:01 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHEAAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:12 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:40:00 GMT', + 'Fri, 28 Jun 2019 12:44:11 GMT', 'Connection', 'close', 'Content-Length', @@ -311,9 +1062,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets') + .put('/secrets/listSecretName-canlistdeletedsecrets-1', {"value":"RSA"}) .query(true) - .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName0","attributes":{"enabled":true,"created":1560836400,"updated":1560836400,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName1","attributes":{"enabled":true,"created":1560836400,"updated":1560836400,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/ExamplePassword","attributes":{"enabled":true,"created":1559920536,"updated":1559920536,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/key156035497352907352","attributes":{"enabled":true,"created":1560354978,"updated":1560354978,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/key156035503730605597","attributes":{"enabled":true,"created":1560355042,"updated":1560355042,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/key156035505405304954","attributes":{"enabled":true,"created":1560355059,"updated":1560355059,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969830299800555","attributes":{"enabled":true,"created":1559698309,"updated":1559698309,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969830501005254","attributes":{"enabled":true,"exp":32503680000,"created":1559698313,"updated":1559698313,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969830702405633","attributes":{"enabled":true,"exp":32503680000,"created":1559698314,"updated":1559698328,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969831104103177","attributes":{"enabled":true,"created":1559698345,"updated":1559698345,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969840997100376","attributes":{"enabled":true,"created":1559698415,"updated":1559698415,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969841605401224","attributes":{"enabled":true,"created":1559698422,"updated":1559698422,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969842993209999","attributes":{"enabled":true,"exp":32503680000,"created":1559698435,"updated":1559698435,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969844356809107","attributes":{"enabled":true,"exp":32503680000,"created":1559698450,"updated":1559698457,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969847359407300","attributes":{"enabled":true,"created":1559698479,"updated":1559698479,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969857586802675","attributes":{"enabled":true,"created":1559698582,"updated":1559698582,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969858938507540","attributes":{"enabled":true,"exp":32503680000,"created":1559698595,"updated":1559698595,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969860209703057","attributes":{"enabled":true,"exp":32503680000,"created":1559698608,"updated":1559698615,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969864161208327","attributes":{"enabled":true,"created":1559698661,"updated":1559698661,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155974871145300045","attributes":{"enabled":true,"created":1559748717,"updated":1559748717,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155974872276605440","attributes":{"enabled":true,"exp":32503680000,"created":1559748728,"updated":1559748728,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155974873380306363","attributes":{"enabled":true,"exp":32503680000,"created":1559748739,"updated":1559748744,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155974876803708577","attributes":{"enabled":true,"created":1559748784,"updated":1559748784,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UVTVOell5TmpjM01EQTNNRE14TkRZaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistdeletedsecrets-1/6fec825f0d3d40a4b3a5e12f484c69c2","attributes":{"enabled":true,"created":1561725852,"updated":1561725852,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -326,11 +1077,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '8111626d-0c3e-4ba3-97d9-a8c11b0a5ce8', + '66c461ae-ea82-420e-af3c-9bcc806ff24c', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -340,11 +1091,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:40:01 GMT', + 'Fri, 28 Jun 2019 12:44:12 GMT', 'Connection', 'close', 'Content-Length', - '4768' ]); + '266' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -362,17 +1113,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '9a87bd30-2183-4124-a681-6c7a0f7d6b00', + 'b1a2ea4a-78d4-4d9d-b5c2-69763a8d6000', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHBgAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:40:01 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHEQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:12 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:40:01 GMT', + 'Fri, 28 Jun 2019 12:44:12 GMT', 'Connection', 'close', 'Content-Length', @@ -380,9 +1131,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets') + .delete('/secrets/listSecretName-canlistdeletedsecrets-0') .query(true) - .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/secret155976267700703146","attributes":{"enabled":true,"created":1559762682,"updated":1559762682,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977987019000658","attributes":{"enabled":true,"created":1559779876,"updated":1559779876,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977987618402041","attributes":{"enabled":true,"created":1559779883,"updated":1559779883,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977989062300314","attributes":{"enabled":true,"exp":32503680000,"created":1559779896,"updated":1559779896,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977990311305514","attributes":{"enabled":true,"exp":32503680000,"created":1559779909,"updated":1559779916,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977994218208573","attributes":{"enabled":true,"created":1559779954,"updated":1559779954,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155985529172800962","attributes":{"enabled":true,"created":1559855297,"updated":1559855297,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155986124522104520","attributes":{"enabled":true,"created":1559861253,"updated":1559861253,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155986125376001211","attributes":{"enabled":true,"created":1559861260,"updated":1559861260,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155986126989703251","attributes":{"enabled":true,"exp":32503680000,"created":1559861276,"updated":1559861276,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035467744608684","attributes":{"enabled":true,"created":1560354683,"updated":1560354683,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035468319002718","attributes":{"enabled":true,"exp":32503680000,"created":1560354688,"updated":1560354688,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035469457101815","attributes":{"enabled":true,"exp":32503680000,"created":1560354700,"updated":1560354705,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelUwTnpFeE56ZzFNRGc1TVRBaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName-canlistdeletedsecrets-0","deletedDate":1561725852,"scheduledPurgeDate":1569501852,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistdeletedsecrets-0/c2472e7c597d4992a59646a4e2c03d76","attributes":{"enabled":true,"created":1561725851,"updated":1561725851,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -395,11 +1146,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'e063b7c5-1ce8-4d31-965e-d557f7d09155', + 'd66c896c-454e-48ae-874f-81960445f1ad', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -409,11 +1160,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:40:01 GMT', + 'Fri, 28 Jun 2019 12:44:12 GMT', 'Connection', 'close', 'Content-Length', - '2850' ]); + '430' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -431,17 +1182,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'b15509e9-1f49-4084-893f-a9239f566600', + 'c8958c9a-1416-4c28-8dcc-f75b0f4a0b00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHBwAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:40:02 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHEgAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:13 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:40:02 GMT', + 'Fri, 28 Jun 2019 12:44:12 GMT', 'Connection', 'close', 'Content-Length', @@ -449,9 +1200,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets') + .delete('/secrets/listSecretName-canlistdeletedsecrets-1') .query(true) - .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035471178508910","attributes":{"enabled":false,"exp":32503680000,"created":1560354717,"updated":1560354723,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035472322108987","attributes":{"enabled":true,"created":1560354728,"updated":1560354728,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035473421700992","attributes":{"enabled":false,"created":1560354739,"updated":1560354739,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035474537300332","attributes":{"enabled":true,"created":1560354751,"updated":1560354751,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035492380902463","attributes":{"enabled":true,"created":1560354940,"updated":1560354940,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036566801100575","attributes":{"enabled":true,"created":1560365673,"updated":1560365673,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036567378506379","attributes":{"enabled":true,"exp":32503680000,"created":1560365679,"updated":1560365679,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036568492401952","attributes":{"enabled":true,"exp":32503680000,"created":1560365690,"updated":1560365695,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036570169100621","attributes":{"enabled":false,"exp":32503680000,"created":1560365707,"updated":1560365713,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036571333008936","attributes":{"enabled":true,"created":1560365718,"updated":1560365718,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036572454709051","attributes":{"enabled":false,"created":1560365729,"updated":1560365729,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036573548102072","attributes":{"enabled":true,"created":1560365740,"updated":1560365740,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036585124607918","attributes":{"enabled":true,"created":1560365867,"updated":1560365867,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036590080809323","attributes":{"enabled":true,"created":1560365906,"updated":1560365906,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036596439108652","attributes":{"enabled":true,"created":1560365969,"updated":1560365969,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036624468808284","attributes":{"enabled":true,"created":1560366250,"updated":1560366250,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036625043103243","attributes":{"enabled":true,"exp":32503680000,"created":1560366256,"updated":1560366256,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036626200104356","attributes":{"enabled":true,"exp":32503680000,"created":1560366267,"updated":1560366272,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelkyTWpjNE5EZ3lNREkyTXpRaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName-canlistdeletedsecrets-1","deletedDate":1561725853,"scheduledPurgeDate":1569501853,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistdeletedsecrets-1/6fec825f0d3d40a4b3a5e12f484c69c2","attributes":{"enabled":true,"created":1561725852,"updated":1561725852,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -464,11 +1215,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '94772865-4cb6-491a-b7f7-bfa853ea578a', + '9ef33c77-8dbb-4bca-bf60-8d19b2d6a08b', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -478,11 +1229,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:40:02 GMT', + 'Fri, 28 Jun 2019 12:44:13 GMT', 'Connection', 'close', 'Content-Length', - '3822' ]); + '430' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -500,17 +1251,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '9f02dc04-ce75-4aa1-915c-bd0adf351200', + 'fdfc06b5-8613-4598-8e34-847b46167100', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHCAAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:40:03 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHEwAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:13 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:40:02 GMT', + 'Fri, 28 Jun 2019 12:44:12 GMT', 'Connection', 'close', 'Content-Length', @@ -518,12 +1269,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets') + .get('/deletedsecrets/listSecretName-canlistdeletedsecrets-0') .query(true) - .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036627848202634","attributes":{"enabled":false,"exp":32503680000,"created":1560366283,"updated":1560366289,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036628972007025","attributes":{"enabled":true,"created":1560366295,"updated":1560366295,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036630071100034","attributes":{"enabled":false,"created":1560366306,"updated":1560366306,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036631177303153","attributes":{"enabled":true,"created":1560366317,"updated":1560366317,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036651431706935","attributes":{"enabled":true,"created":1560366530,"updated":1560366530,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036656390609451","attributes":{"enabled":true,"created":1560366569,"updated":1560366569,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036662789900557","attributes":{"enabled":true,"created":1560366633,"updated":1560366633,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036776000805385","attributes":{"enabled":true,"created":1560367765,"updated":1560367765,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156083458808007836","attributes":{"enabled":true,"created":1560834589,"updated":1560834589,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156083462580205466","attributes":{"enabled":true,"created":1560834627,"updated":1560834627,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156083472284304384","attributes":{"enabled":true,"created":1560834724,"updated":1560834724,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156083476178902983","attributes":{"enabled":true,"created":1560834763,"updated":1560834763,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDQhTURBd01ETXlJWE5sWTNKbGRDOVRSVU5TUlZSVE1UVTJNRE0xTVRNeE5qQXhOakEyTXpNd0lUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', + .reply(404, {"error":{"code":"SecretNotFound","message":"Deleted Secret not found: listSecretName-canlistdeletedsecrets-0"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '128', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -533,11 +1286,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'c06a3334-7de7-47b1-adc1-aed4c066c83c', + '25933dac-a4f0-48ee-b3a8-b0f8915984c0', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -547,11 +1300,9 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:40:02 GMT', + 'Fri, 28 Jun 2019 12:44:13 GMT', 'Connection', - 'close', - 'Content-Length', - '2595' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -569,17 +1320,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'f8349149-62ad-42a4-8d50-786017ac7800', + 'e9d1d612-1346-4023-b7ee-26a2c5b26500', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHCQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:40:03 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHFAAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:24 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:40:03 GMT', + 'Fri, 28 Jun 2019 12:44:23 GMT', 'Connection', 'close', 'Content-Length', @@ -587,12 +1338,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets') + .get('/deletedsecrets/listSecretName-canlistdeletedsecrets-0') .query(true) - .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156035131601606330","attributes":{"enabled":true,"created":1560351327,"updated":1560351327,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156035483280103968","attributes":{"enabled":true,"created":1560354843,"updated":1560354843,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156035483280107298","attributes":{"enabled":true,"created":1560354838,"updated":1560354838,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036581736106694","attributes":{"enabled":true,"created":1560365822,"updated":1560365822,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036581736108753","attributes":{"enabled":true,"created":1560365828,"updated":1560365828,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036639908703029","attributes":{"enabled":true,"created":1560366404,"updated":1560366404,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036639908709648","attributes":{"enabled":true,"created":1560366410,"updated":1560366410,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083455364403280","attributes":{"enabled":true,"created":1560834555,"updated":1560834555,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083459257408076","attributes":{"enabled":true,"created":1560834593,"updated":1560834593,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083459257409406","attributes":{"enabled":true,"created":1560834593,"updated":1560834593,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083472719004650","attributes":{"enabled":true,"created":1560834728,"updated":1560834728,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083472719009472","attributes":{"enabled":true,"created":1560834727,"updated":1560834727,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":null}, [ 'Cache-Control', + .reply(404, {"error":{"code":"SecretNotFound","message":"Deleted Secret not found: listSecretName-canlistdeletedsecrets-0"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '128', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -602,11 +1355,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '24638662-8996-403b-a75c-53802aedbadd', + 'c091ef50-048f-486e-9ea6-37be192bd0a8', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -616,16 +1369,14 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:40:03 GMT', + 'Fri, 28 Jun 2019 12:44:23 GMT', 'Connection', - 'close', - 'Content-Length', - '2319' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -638,17 +1389,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '2f96014d-20cc-494e-8bfb-89cc6ef11100', + '6f6d46b1-37a0-4136-9897-c122b3556a00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHCgAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:40:04 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHFQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:34 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:40:03 GMT', + 'Fri, 28 Jun 2019 12:44:33 GMT', 'Connection', 'close', 'Content-Length', @@ -656,9 +1407,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/listSecretName0') + .get('/deletedsecrets/listSecretName-canlistdeletedsecrets-0') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName0","deletedDate":1560836404,"scheduledPurgeDate":1568612404,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName0/7357b38f584846c7b36ffa7e0ac19b73","attributes":{"enabled":true,"created":1560836400,"updated":1560836400,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName-canlistdeletedsecrets-0","deletedDate":1561725852,"scheduledPurgeDate":1569501852,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistdeletedsecrets-0/c2472e7c597d4992a59646a4e2c03d76","attributes":{"enabled":true,"created":1561725851,"updated":1561725851,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -671,11 +1422,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '75ce3452-75cb-4be3-b6ed-d35f4f5f9e7b', + '98c9f433-4132-48b3-8178-486a40bc19f4', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -685,11 +1436,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:40:04 GMT', + 'Fri, 28 Jun 2019 12:44:33 GMT', 'Connection', 'close', 'Content-Length', - '352' ]); + '430' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -707,17 +1458,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '3102ba08-7111-41dc-968b-cce3b13b1600', + '48300df5-d4a1-4e43-bc72-a36c7dba6400', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHCwAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:40:25 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHFgAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:34 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:40:24 GMT', + 'Fri, 28 Jun 2019 12:44:34 GMT', 'Connection', 'close', 'Content-Length', @@ -725,12 +1476,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/listSecretName0') + .get('/deletedsecrets') .query(true) - .reply(204, "", [ 'Cache-Control', + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/keys156035257289501832","deletedDate":1560352589,"scheduledPurgeDate":1568128589,"id":"https://keyvault_name.vault.azure.net/secrets/keys156035257289501832","attributes":{"enabled":true,"created":1560352578,"updated":1560352578,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/keys156035257289602456","deletedDate":1560352595,"scheduledPurgeDate":1568128595,"id":"https://keyvault_name.vault.azure.net/secrets/keys156035257289602456","attributes":{"enabled":true,"created":1560352584,"updated":1560352584,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName-canlistdeletedsecrets-0","deletedDate":1561725852,"scheduledPurgeDate":1569501852,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistdeletedsecrets-0","attributes":{"enabled":true,"created":1561725851,"updated":1561725851,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName-canlistdeletedsecrets-1","deletedDate":1561725853,"scheduledPurgeDate":1569501853,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistdeletedsecrets-1","attributes":{"enabled":true,"created":1561725852,"updated":1561725852,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/recoverSecretName-canrestoreasecret-08015957746121516","deletedDate":1561725411,"scheduledPurgeDate":1569501411,"id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName-canrestoreasecret-08015957746121516","attributes":{"enabled":true,"created":1561725356,"updated":1561725356,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWTBJWE5sWTNKbGRDOVRSVU5TUlZReE5UVTVOams0TXpFeE1EUXhNRE14Tnpjdk1UYzRSakkxUkVaR01qRTBORVkzT0VJNU4wSkJRVU00UTBaQlFUYzVRa0VoTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -738,11 +1491,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '8541efd8-bc72-4570-ab8c-57d472c61ad1', + '7ef1de61-8dea-4a18-85ae-7b6195527d3f', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -752,9 +1505,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:40:24 GMT', + 'Fri, 28 Jun 2019 12:44:35 GMT', 'Connection', - 'close' ]); + 'close', + 'Content-Length', + '2215' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -772,17 +1527,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'c674b3de-cbd3-4912-b006-5fa7ddf41000', + 'd87312f2-1b14-4c0e-9a24-7d650fae6a00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHDAAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:40:25 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHFwAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:35 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:40:25 GMT', + 'Fri, 28 Jun 2019 12:44:35 GMT', 'Connection', 'close', 'Content-Length', @@ -790,9 +1545,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/listSecretName1') + .get('/deletedsecrets') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName1","deletedDate":1560836426,"scheduledPurgeDate":1568612426,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName1/6c4bde29e65f428cb05f4dcbdf99b5df","attributes":{"enabled":true,"created":1560836400,"updated":1560836400,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":[],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UVTVOelE0TnpZNE1ETTNNRGcxTnpjaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -805,11 +1560,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'f8598684-a601-437d-9033-1d643912ed5f', + 'e572bab7-42d0-4ef0-a4cd-88e9cfb65fae', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -819,16 +1574,16 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:40:25 GMT', + 'Fri, 28 Jun 2019 12:44:35 GMT', 'Connection', 'close', 'Content-Length', - '352' ]); + '298' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -841,17 +1596,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '6e9429c1-b4e8-4d13-a8cf-db5a88e96e00', + '01dce0d0-eab8-41d3-a417-cedcd60c6d00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHDQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:40:46 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHGAAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:36 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:40:46 GMT', + 'Fri, 28 Jun 2019 12:44:35 GMT', 'Connection', 'close', 'Content-Length', @@ -859,12 +1614,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/listSecretName1') + .get('/deletedsecrets') .query(true) - .reply(204, "", [ 'Cache-Control', + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028838837406917","deletedDate":1560288400,"scheduledPurgeDate":1568064400,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028838837406917","attributes":{"enabled":true,"created":1560288394,"updated":1560288394,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028933587502205","deletedDate":1560289358,"scheduledPurgeDate":1568065358,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028933587502205","attributes":{"enabled":false,"exp":32503680000,"created":1560289341,"updated":1560289347,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWTBJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNamc1TXpNMU9EYzFNREl5TURVdk5qUkdNak5FTVRORE5UWTJORVpDUmtKRk9UTkRSVEkxTXpkRlF6UXdSalFoTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -872,11 +1629,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '26617d3d-1858-441c-9ed3-a999a48417ab', + 'a92121b5-6015-4b70-afdd-0be43d6ffae3', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -886,9 +1643,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:40:47 GMT', + 'Fri, 28 Jun 2019 12:44:35 GMT', 'Connection', - 'close' ]); + 'close', + 'Content-Length', + '1050' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -906,17 +1665,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'fd5ed491-fc68-4fa0-8066-631587dd1200', + 'f5fea180-6608-414d-a820-35e8cbd56900', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHDgAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:07 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHGQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:36 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:06 GMT', + 'Fri, 28 Jun 2019 12:44:35 GMT', 'Connection', 'close', 'Content-Length', @@ -924,9 +1683,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/listSecretName0', {"value":"RSA"}) + .get('/deletedsecrets') .query(true) - .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName0/3ab5a475bd2848a9bb36b3a355a2655f","attributes":{"enabled":true,"created":1560836467,"updated":1560836467,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028954261707102","deletedDate":1560289559,"scheduledPurgeDate":1568065559,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028954261707102","attributes":{"enabled":false,"exp":32503680000,"created":1560289548,"updated":1560289554,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028963087108194","deletedDate":1560289648,"scheduledPurgeDate":1568065648,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028963087108194","attributes":{"enabled":false,"exp":32503680000,"created":1560289636,"updated":1560289642,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028968597502042","deletedDate":1560289703,"scheduledPurgeDate":1568065703,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028968597502042","attributes":{"enabled":false,"exp":32503680000,"created":1560289691,"updated":1560289697,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028981007704437","deletedDate":1560289831,"scheduledPurgeDate":1568065831,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028981007704437","attributes":{"enabled":false,"exp":32503680000,"created":1560289815,"updated":1560289826,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028997762408585","deletedDate":1560289994,"scheduledPurgeDate":1568065994,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028997762408585","attributes":{"enabled":false,"exp":32503680000,"created":1560289983,"updated":1560289989,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156029003971701409","deletedDate":1560290062,"scheduledPurgeDate":1568066062,"id":"https://keyvault_name.vault.azure.net/secrets/secret156029003971701409","attributes":{"enabled":false,"exp":32503680000,"created":1560290045,"updated":1560290051,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156029020841505555","deletedDate":1560290236,"scheduledPurgeDate":1568066236,"id":"https://keyvault_name.vault.azure.net/secrets/secret156029020841505555","attributes":{"enabled":false,"exp":32503680000,"created":1560290214,"updated":1560290219,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156029021974300578","deletedDate":1560290242,"scheduledPurgeDate":1568066242,"id":"https://keyvault_name.vault.azure.net/secrets/secret156029021974300578","attributes":{"enabled":false,"created":1560290225,"updated":1560290225,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156034699779802419","deletedDate":1560347014,"scheduledPurgeDate":1568123014,"id":"https://keyvault_name.vault.azure.net/secrets/secret156034699779802419","attributes":{"enabled":false,"exp":32503680000,"created":1560347002,"updated":1560347008,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156035467151900829","deletedDate":1560355143,"scheduledPurgeDate":1568131143,"id":"https://keyvault_name.vault.azure.net/secrets/secret156035467151900829","attributes":{"enabled":true,"created":1560354677,"updated":1560354677,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelUwTmprME5UY3hNREU0TVRVaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -939,11 +1698,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '9108c2a8-f836-48e2-a6c8-701bb9781db3', + '4ca7d22e-8a9b-43eb-91c0-66e9b8325e14', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -953,11 +1712,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:07 GMT', + 'Fri, 28 Jun 2019 12:44:37 GMT', 'Connection', 'close', 'Content-Length', - '227' ]); + '3830' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -975,17 +1734,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'afc31195-3860-4074-96fd-d4f997616100', + '164bfa5e-1f37-45c8-999b-da1688346800', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHDwAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:08 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHGgAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:37 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:07 GMT', + 'Fri, 28 Jun 2019 12:44:36 GMT', 'Connection', 'close', 'Content-Length', @@ -993,9 +1752,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/listSecretName1', {"value":"RSA"}) + .get('/deletedsecrets') .query(true) - .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName1/c8b6deb94ab943e68db7f55703e8b531","attributes":{"enabled":true,"created":1560836468,"updated":1560836468,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156035476213308921","deletedDate":1560354773,"scheduledPurgeDate":1568130773,"id":"https://keyvault_name.vault.azure.net/secrets/secret156035476213308921","attributes":{"enabled":true,"created":1560354767,"updated":1560354767,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036054148104164","deletedDate":1560360558,"scheduledPurgeDate":1568136558,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036054148104164","attributes":{"enabled":true,"exp":32503680000,"created":1560360547,"updated":1560360547,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036566207901067","deletedDate":1560366029,"scheduledPurgeDate":1568142029,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036566207901067","attributes":{"enabled":true,"created":1560365667,"updated":1560365667,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWTBJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelkxTnpBeE5qa3hNREEyTWpFdk5rWXlNemRGTmpRNE1qQXdOREExTUVKQlFqa3pOVEEwT0RBelFVSXpNalloTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1008,11 +1767,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'eb9f6528-c75a-4baf-887a-734e901fad3f', + 'a2cec19d-b274-4041-a874-4badedf96e99', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1022,11 +1781,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:07 GMT', + 'Fri, 28 Jun 2019 12:44:37 GMT', 'Connection', 'close', 'Content-Length', - '227' ]); + '1387' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1044,17 +1803,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'ea793cec-8107-48cf-8a1f-35c086bc7900', + '3e692a0c-cbe5-4984-83e1-aa9a15657000', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHEAAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:08 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHGwAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:37 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:08 GMT', + 'Fri, 28 Jun 2019 12:44:37 GMT', 'Connection', 'close', 'Content-Length', @@ -1062,9 +1821,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/listSecretName0') + .get('/deletedsecrets') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName0","deletedDate":1560836468,"scheduledPurgeDate":1568612468,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName0/3ab5a475bd2848a9bb36b3a355a2655f","attributes":{"enabled":true,"created":1560836467,"updated":1560836467,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036575195005928","deletedDate":1560365763,"scheduledPurgeDate":1568141763,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036575195005928","attributes":{"enabled":true,"created":1560365757,"updated":1560365757,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036577464301231","deletedDate":1560365785,"scheduledPurgeDate":1568141785,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036577464301231","attributes":{"enabled":true,"created":1560365780,"updated":1560365780,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036598110406898","deletedDate":1560365997,"scheduledPurgeDate":1568141997,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036598110406898","attributes":{"enabled":true,"created":1560365986,"updated":1560365986,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036623881507210","deletedDate":1560366693,"scheduledPurgeDate":1568142693,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036623881507210","attributes":{"enabled":true,"created":1560366244,"updated":1560366244,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelkyTWpZeU1EQXhNRFF6TlRZaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1077,11 +1836,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'bbac8708-1376-4c98-9724-fec184425460', + '36520f19-89d8-48e8-a736-ca0eb083c598', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1091,11 +1850,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:09 GMT', + 'Fri, 28 Jun 2019 12:44:37 GMT', 'Connection', 'close', 'Content-Length', - '352' ]); + '1649' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1113,17 +1872,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '3f447fcc-9b80-4ae0-9a2d-47fc4bb47400', + 'f7e8eafb-abf7-4bf2-8d58-54464c886b00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHEQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:09 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHHAAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:38 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:09 GMT', + 'Fri, 28 Jun 2019 12:44:37 GMT', 'Connection', 'close', 'Content-Length', @@ -1131,9 +1890,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/listSecretName1') + .get('/deletedsecrets') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName1","deletedDate":1560836469,"scheduledPurgeDate":1568612469,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName1/c8b6deb94ab943e68db7f55703e8b531","attributes":{"enabled":true,"created":1560836468,"updated":1560836468,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036632835700621","deletedDate":1560366339,"scheduledPurgeDate":1568142339,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036632835700621","attributes":{"enabled":true,"created":1560366333,"updated":1560366333,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036664460803342","deletedDate":1560366661,"scheduledPurgeDate":1568142661,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036664460803342","attributes":{"enabled":true,"created":1560366650,"updated":1560366650,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036742269706797","deletedDate":1560367433,"scheduledPurgeDate":1568143433,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036742269706797","attributes":{"enabled":true,"created":1560367428,"updated":1560367428,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036761951707796","deletedDate":1560368144,"scheduledPurgeDate":1568144144,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036761951707796","attributes":{"enabled":true,"created":1560367636,"updated":1560367636,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036774298602180","deletedDate":1560368181,"scheduledPurgeDate":1568144181,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036774298602180","attributes":{"enabled":true,"created":1560367748,"updated":1560367748,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWTBJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelkzTnpReU9UZzJNREl4T0RBdk16UkNNelV6TkVKRE1qUXdORVZETkVGRlJUZEVSak0yUWpnMlFURTVNMFFoTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1146,11 +1905,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '68c840cf-47e4-4a91-b1a9-7504b5a5c532', + '7c107abc-41f9-4c89-af0e-37e1f4e95459', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1160,11 +1919,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:08 GMT', + 'Fri, 28 Jun 2019 12:44:38 GMT', 'Connection', 'close', 'Content-Length', - '352' ]); + '2045' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1182,17 +1941,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '69e99d89-0f65-4182-a8ac-171e03d11200', + '6a7d8200-e8e5-4274-a6ce-36f963916400', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHEgAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:30 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHHQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:38 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:29 GMT', + 'Fri, 28 Jun 2019 12:44:38 GMT', 'Connection', 'close', 'Content-Length', @@ -1202,7 +1961,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) .get('/deletedsecrets') .query(true) - .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName0","deletedDate":1560836468,"scheduledPurgeDate":1568612468,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName0","attributes":{"enabled":true,"created":1560836467,"updated":1560836467,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName1","deletedDate":1560836469,"scheduledPurgeDate":1568612469,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName1","attributes":{"enabled":true,"created":1560836468,"updated":1560836468,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/keys156035257289501832","deletedDate":1560352589,"scheduledPurgeDate":1568128589,"id":"https://keyvault_name.vault.azure.net/secrets/keys156035257289501832","attributes":{"enabled":true,"created":1560352578,"updated":1560352578,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/keys156035257289602456","deletedDate":1560352595,"scheduledPurgeDate":1568128595,"id":"https://keyvault_name.vault.azure.net/secrets/keys156035257289602456","attributes":{"enabled":true,"created":1560352584,"updated":1560352584,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWTBJWE5sWTNKbGRDOVRSVU5TUlZReE5UVTVOams0TkRBNU9UY3hNREF6TnpZdlF6aENPRGd3UlRKQlFVSkdORGxDUWtKQ016WXpSVVUyTXpWR1FqWTRNa0loTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156037005065302933","deletedDate":1560370061,"scheduledPurgeDate":1568146061,"id":"https://keyvault_name.vault.azure.net/secrets/secret156037005065302933","attributes":{"enabled":true,"created":1560370056,"updated":1560370056,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156037026758407704","deletedDate":1560370705,"scheduledPurgeDate":1568146705,"id":"https://keyvault_name.vault.azure.net/secrets/secret156037026758407704","attributes":{"enabled":true,"created":1560370284,"updated":1560370284,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044578898402701","deletedDate":1560446082,"scheduledPurgeDate":1568222082,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044578898402701","attributes":{"enabled":true,"created":1560445805,"updated":1560445805,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044598025306659","deletedDate":1560446150,"scheduledPurgeDate":1568222150,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044598025306659","attributes":{"enabled":true,"created":1560445997,"updated":1560445997,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044616159608298","deletedDate":1560446194,"scheduledPurgeDate":1568222194,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044616159608298","attributes":{"enabled":true,"created":1560446178,"updated":1560446178,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044618915107349","deletedDate":1560446233,"scheduledPurgeDate":1568222233,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044618915107349","attributes":{"enabled":true,"created":1560446205,"updated":1560446205,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044658599507851","deletedDate":1560446631,"scheduledPurgeDate":1568222631,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044658599507851","attributes":{"enabled":true,"created":1560446603,"updated":1560446603,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDQhTURBd01ETXlJWE5sWTNKbGRDOVRSVU5TUlZSVE1UVTJNRE0xTVRNeE5qQXhOVEEwTXpVMUlUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1215,11 +1974,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '0ec047a7-76f9-4da6-b71a-ed6e335b57b8', + '49af1405-d15b-48de-afd2-6c93ea4e8523', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1229,11 +1988,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:30 GMT', + 'Fri, 28 Jun 2019 12:44:38 GMT', 'Connection', 'close', 'Content-Length', - '1663' ]); + '2668' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1251,17 +2010,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '441e6579-768d-440c-8098-de7a9a1e5c00', + '2f311bf3-b4f3-4d31-a956-fdfa1b536e00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHEwAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:30 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHHgAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:39 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:30 GMT', + 'Fri, 28 Jun 2019 12:44:39 GMT', 'Connection', 'close', 'Content-Length', @@ -1271,7 +2030,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) .get('/deletedsecrets') .query(true) - .reply(200, {"value":[],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UVTVOell5TmpjM01EQTNNRE14TkRZaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secrets156035131601504355","deletedDate":1560351344,"scheduledPurgeDate":1568127344,"id":"https://keyvault_name.vault.azure.net/secrets/secrets156035131601504355","attributes":{"enabled":true,"created":1560351321,"updated":1560351321,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secrets156036582870903851","deletedDate":1560365851,"scheduledPurgeDate":1568141851,"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036582870903851","attributes":{"enabled":true,"created":1560365840,"updated":1560365840,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secrets156036582870905970","deletedDate":1560365845,"scheduledPurgeDate":1568141845,"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036582870905970","attributes":{"enabled":true,"created":1560365834,"updated":1560365834,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secrets156083455364402057","deletedDate":1560834630,"scheduledPurgeDate":1568610630,"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083455364402057","attributes":{"enabled":true,"created":1560834554,"updated":1560834554,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDghTURBd01EWTFJWE5sWTNKbGRDOVRSVU5TUlZSVE1UVTJNRGd6TkRVNU1qVTNOREE0TURjMkx6aERNVFZCTWtJd1FqQTVRVFJHUVRNNU1UTTVRVU00TXpjNVF6QkZRamxGSVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLSIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1284,11 +2043,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '63a1548d-05dc-41da-8d79-cfca64a9499e', + '74f90906-78fc-45c2-821a-648155155786', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1298,11 +2057,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:31 GMT', + 'Fri, 28 Jun 2019 12:44:38 GMT', 'Connection', 'close', 'Content-Length', - '298' ]); + '1721' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1320,17 +2079,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '192887d1-a33d-45af-b2d0-8cd947311000', + '3d5b07df-44bb-40e1-b0f3-0d10e0b26600', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHFAAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:31 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHHwAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:39 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:30 GMT', + 'Fri, 28 Jun 2019 12:44:39 GMT', 'Connection', 'close', 'Content-Length', @@ -1340,7 +2099,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) .get('/deletedsecrets') .query(true) - .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028838837406917","deletedDate":1560288400,"scheduledPurgeDate":1568064400,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028838837406917","attributes":{"enabled":true,"created":1560288394,"updated":1560288394,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028933587502205","deletedDate":1560289358,"scheduledPurgeDate":1568065358,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028933587502205","attributes":{"enabled":false,"exp":32503680000,"created":1560289341,"updated":1560289347,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028954261707102","deletedDate":1560289559,"scheduledPurgeDate":1568065559,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028954261707102","attributes":{"enabled":false,"exp":32503680000,"created":1560289548,"updated":1560289554,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWTBJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNamc1TlRReU5qRTNNRGN4TURJdk5rSTVPRFZCTUROR01ESkROREZCTXpneU56WXhNRFV6T1RCR05EaEVNRFloTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secrets156083468802106547","deletedDate":1560834787,"scheduledPurgeDate":1568610787,"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083468802106547","attributes":{"enabled":true,"created":1560834689,"updated":1560834689,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":null}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1353,11 +2112,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '00019c60-4b99-4569-abcc-21e80de1c332', + '8b3cdd8f-11f1-4505-a2ad-5ac8dd5a1b94', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1367,11 +2126,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:31 GMT', + 'Fri, 28 Jun 2019 12:44:40 GMT', 'Connection', 'close', 'Content-Length', - '1407' ]); + '367' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1389,17 +2148,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '8020e49f-1d27-4cd4-913a-8b4e2e6e1100', + '752142f3-2370-4393-9a70-82b2a15d6400', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHFQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:31 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHIAAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:40 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:31 GMT', + 'Fri, 28 Jun 2019 12:44:40 GMT', 'Connection', 'close', 'Content-Length', @@ -1407,14 +2166,12 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedsecrets') + .delete('/deletedsecrets/listSecretName-canlistdeletedsecrets-0') .query(true) - .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028963087108194","deletedDate":1560289648,"scheduledPurgeDate":1568065648,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028963087108194","attributes":{"enabled":false,"exp":32503680000,"created":1560289636,"updated":1560289642,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028968597502042","deletedDate":1560289703,"scheduledPurgeDate":1568065703,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028968597502042","attributes":{"enabled":false,"exp":32503680000,"created":1560289691,"updated":1560289697,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028981007704437","deletedDate":1560289831,"scheduledPurgeDate":1568065831,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028981007704437","attributes":{"enabled":false,"exp":32503680000,"created":1560289815,"updated":1560289826,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028997762408585","deletedDate":1560289994,"scheduledPurgeDate":1568065994,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028997762408585","attributes":{"enabled":false,"exp":32503680000,"created":1560289983,"updated":1560289989,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156029003971701409","deletedDate":1560290062,"scheduledPurgeDate":1568066062,"id":"https://keyvault_name.vault.azure.net/secrets/secret156029003971701409","attributes":{"enabled":false,"exp":32503680000,"created":1560290045,"updated":1560290051,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156029020841505555","deletedDate":1560290236,"scheduledPurgeDate":1568066236,"id":"https://keyvault_name.vault.azure.net/secrets/secret156029020841505555","attributes":{"enabled":false,"exp":32503680000,"created":1560290214,"updated":1560290219,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156029021974300578","deletedDate":1560290242,"scheduledPurgeDate":1568066242,"id":"https://keyvault_name.vault.azure.net/secrets/secret156029021974300578","attributes":{"enabled":false,"created":1560290225,"updated":1560290225,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156034699779802419","deletedDate":1560347014,"scheduledPurgeDate":1568123014,"id":"https://keyvault_name.vault.azure.net/secrets/secret156034699779802419","attributes":{"enabled":false,"exp":32503680000,"created":1560347002,"updated":1560347008,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156035467151900829","deletedDate":1560355143,"scheduledPurgeDate":1568131143,"id":"https://keyvault_name.vault.azure.net/secrets/secret156035467151900829","attributes":{"enabled":true,"created":1560354677,"updated":1560354677,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelUwTnpFeE56ZzFNRGc1TVRBaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + .reply(204, "", [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', - 'Content-Type', - 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -1422,11 +2179,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '003e6f78-0ab2-4515-b09a-b1e65f1824f1', + 'bdc5ecac-41f0-442a-8517-dd80cdc6029a', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1436,16 +2193,14 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:32 GMT', + 'Fri, 28 Jun 2019 12:44:40 GMT', 'Connection', - 'close', - 'Content-Length', - '3473' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -1458,17 +2213,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '21bcc44e-77ec-495d-a3ba-1c89ceb65b00', + 'bf03e643-0367-4f82-a25e-f5d2a38e6800', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHFgAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:32 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHIQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:41 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:32 GMT', + 'Fri, 28 Jun 2019 12:44:40 GMT', 'Connection', 'close', 'Content-Length', @@ -1476,14 +2231,12 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedsecrets') + .delete('/deletedsecrets/listSecretName-canlistdeletedsecrets-1') .query(true) - .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156035476213308921","deletedDate":1560354773,"scheduledPurgeDate":1568130773,"id":"https://keyvault_name.vault.azure.net/secrets/secret156035476213308921","attributes":{"enabled":true,"created":1560354767,"updated":1560354767,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036054148104164","deletedDate":1560360558,"scheduledPurgeDate":1568136558,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036054148104164","attributes":{"enabled":true,"exp":32503680000,"created":1560360547,"updated":1560360547,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036566207901067","deletedDate":1560366029,"scheduledPurgeDate":1568142029,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036566207901067","attributes":{"enabled":true,"created":1560365667,"updated":1560365667,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWTBJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelkxTnpFek16TXdNRGc1TXpZdlJEWTJSVEE0TlRnMlFqZEZORFJDUlRnd01VUTVNRGd5UkVFeU56WTRSalVoTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', + .reply(204, "", [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', - 'Content-Type', - 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -1491,11 +2244,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'a387f929-5412-41b9-875b-dd930e0360b4', + 'ce47b99e-aa0e-4014-9199-838a42c51543', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1505,11 +2258,9 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:32 GMT', + 'Fri, 28 Jun 2019 12:44:40 GMT', 'Connection', - 'close', - 'Content-Length', - '1387' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1527,17 +2278,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '7a6f3327-e476-46d4-b047-073512a31300', + '429b6603-ca36-4fe8-a254-43fc64556b00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHFwAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:33 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHIgAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:41 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:33 GMT', + 'Fri, 28 Jun 2019 12:44:41 GMT', 'Connection', 'close', 'Content-Length', @@ -1545,9 +2296,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedsecrets') + .put('/secrets/listSecretName-canretrieveallversionsofasecret-', {"value":"SECRET_VALUE0"}) .query(true) - .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036575195005928","deletedDate":1560365763,"scheduledPurgeDate":1568141763,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036575195005928","attributes":{"enabled":true,"created":1560365757,"updated":1560365757,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036577464301231","deletedDate":1560365785,"scheduledPurgeDate":1568141785,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036577464301231","attributes":{"enabled":true,"created":1560365780,"updated":1560365780,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036598110406898","deletedDate":1560365997,"scheduledPurgeDate":1568141997,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036598110406898","attributes":{"enabled":true,"created":1560365986,"updated":1560365986,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036623881507210","deletedDate":1560366693,"scheduledPurgeDate":1568142693,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036623881507210","attributes":{"enabled":true,"created":1560366244,"updated":1560366244,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelkyTWpjNE5EZ3lNREkyTXpRaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE0","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/9d67ed0b7b7041c99faf570a93389e68","attributes":{"enabled":true,"created":1561725881,"updated":1561725881,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1560,11 +2311,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '7f365108-f298-4350-8f8e-d0c47d7653a7', + '9793e3a5-503c-4e8a-ab5d-5e743410cded', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1574,16 +2325,16 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:33 GMT', + 'Fri, 28 Jun 2019 12:44:40 GMT', 'Connection', 'close', 'Content-Length', - '1649' ]); + '285' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -1596,17 +2347,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '1ee162e1-d659-4847-8573-58c1b6511100', + 'c1a0379a-105b-46ec-8a27-b6b649377800', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHGAAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:33 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHIwAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:41 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:33 GMT', + 'Fri, 28 Jun 2019 12:44:41 GMT', 'Connection', 'close', 'Content-Length', @@ -1614,9 +2365,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedsecrets') + .put('/secrets/listSecretName-canretrieveallversionsofasecret-', {"value":"SECRET_VALUE1"}) .query(true) - .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036632835700621","deletedDate":1560366339,"scheduledPurgeDate":1568142339,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036632835700621","attributes":{"enabled":true,"created":1560366333,"updated":1560366333,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036664460803342","deletedDate":1560366661,"scheduledPurgeDate":1568142661,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036664460803342","attributes":{"enabled":true,"created":1560366650,"updated":1560366650,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036742269706797","deletedDate":1560367433,"scheduledPurgeDate":1568143433,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036742269706797","attributes":{"enabled":true,"created":1560367428,"updated":1560367428,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036761951707796","deletedDate":1560368144,"scheduledPurgeDate":1568144144,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036761951707796","attributes":{"enabled":true,"created":1560367636,"updated":1560367636,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036774298602180","deletedDate":1560368181,"scheduledPurgeDate":1568144181,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036774298602180","attributes":{"enabled":true,"created":1560367748,"updated":1560367748,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWTBJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelkzTnpZd01EQTRNRFV6T0RVdk9UZEJOVVF4TlRnME1EZEdORVF6TlRnNFFUTTBNVGswTlRSRk5ETTJNRGtoTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE1","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/b95608c840de487492bcbcb844c9b852","attributes":{"enabled":true,"created":1561725882,"updated":1561725882,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1629,11 +2380,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'bf567aa6-9edd-4dfa-b8d4-2e6e36e3d6fe', + '17aa2a54-ae38-4416-9b06-c42be08b1b15', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1643,11 +2394,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:33 GMT', + 'Fri, 28 Jun 2019 12:44:41 GMT', 'Connection', 'close', 'Content-Length', - '2045' ]); + '285' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1665,17 +2416,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '15239657-332f-45a9-be3f-347acf1e1000', + '3d7dd699-e28e-423c-a5c6-60e30ce26400', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHGQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:34 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHJAAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:42 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:33 GMT', + 'Fri, 28 Jun 2019 12:44:42 GMT', 'Connection', 'close', 'Content-Length', @@ -1683,9 +2434,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedsecrets') + .put('/secrets/listSecretName-canretrieveallversionsofasecret-', {"value":"SECRET_VALUE2"}) .query(true) - .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156037005065302933","deletedDate":1560370061,"scheduledPurgeDate":1568146061,"id":"https://keyvault_name.vault.azure.net/secrets/secret156037005065302933","attributes":{"enabled":true,"created":1560370056,"updated":1560370056,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156037026758407704","deletedDate":1560370705,"scheduledPurgeDate":1568146705,"id":"https://keyvault_name.vault.azure.net/secrets/secret156037026758407704","attributes":{"enabled":true,"created":1560370284,"updated":1560370284,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044578898402701","deletedDate":1560446082,"scheduledPurgeDate":1568222082,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044578898402701","attributes":{"enabled":true,"created":1560445805,"updated":1560445805,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044598025306659","deletedDate":1560446150,"scheduledPurgeDate":1568222150,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044598025306659","attributes":{"enabled":true,"created":1560445997,"updated":1560445997,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044616159608298","deletedDate":1560446194,"scheduledPurgeDate":1568222194,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044616159608298","attributes":{"enabled":true,"created":1560446178,"updated":1560446178,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044618915107349","deletedDate":1560446233,"scheduledPurgeDate":1568222233,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044618915107349","attributes":{"enabled":true,"created":1560446205,"updated":1560446205,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044658599507851","deletedDate":1560446631,"scheduledPurgeDate":1568222631,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044658599507851","attributes":{"enabled":true,"created":1560446603,"updated":1560446603,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secrets156035131601504355","deletedDate":1560351344,"scheduledPurgeDate":1568127344,"id":"https://keyvault_name.vault.azure.net/secrets/secrets156035131601504355","attributes":{"enabled":true,"created":1560351321,"updated":1560351321,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDQhTURBd01ETXlJWE5sWTNKbGRDOVRSVU5TUlZSVE1UVTJNRE0xTVRNeE5qQXhOakEyTXpNd0lUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE2","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/5cede84ddb30496da62f677b6ceb89d6","attributes":{"enabled":true,"created":1561725882,"updated":1561725882,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1698,11 +2449,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '8bef0967-83ad-4c44-93a4-50c11f6f0595', + '1a3bb1ac-57d8-4e94-94f9-2966081edead', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1712,11 +2463,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:34 GMT', + 'Fri, 28 Jun 2019 12:44:41 GMT', 'Connection', 'close', 'Content-Length', - '3008' ]); + '285' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1734,17 +2485,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '5aa096dc-ef4c-4ebb-ae5c-c6f8d7966500', + '56f70bd2-4f63-4e1b-8744-6829b0966c00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHGgAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:35 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHJQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:42 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:34 GMT', + 'Fri, 28 Jun 2019 12:44:42 GMT', 'Connection', 'close', 'Content-Length', @@ -1752,9 +2503,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedsecrets') + .get('/secrets/listSecretName-canretrieveallversionsofasecret-/versions') .query(true) - .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secrets156036582870903851","deletedDate":1560365851,"scheduledPurgeDate":1568141851,"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036582870903851","attributes":{"enabled":true,"created":1560365840,"updated":1560365840,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secrets156036582870905970","deletedDate":1560365845,"scheduledPurgeDate":1568141845,"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036582870905970","attributes":{"enabled":true,"created":1560365834,"updated":1560365834,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secrets156083455364402057","deletedDate":1560834630,"scheduledPurgeDate":1568610630,"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083455364402057","attributes":{"enabled":true,"created":1560834554,"updated":1560834554,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDghTURBd01EWTFJWE5sWTNKbGRDOVRSVU5TUlZSVE1UVTJNRGd6TkRVNU1qVTNOREE1TkRBMkx6ZzFSRFJGTWpaQlJrWXhNelEwTXpVNE5ETTVOVUUzT0VWR01qYzRRa0k0SVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLSIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/5cede84ddb30496da62f677b6ceb89d6","attributes":{"enabled":true,"created":1561725882,"updated":1561725882,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/9d67ed0b7b7041c99faf570a93389e68","attributes":{"enabled":true,"created":1561725881,"updated":1561725881,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/b95608c840de487492bcbcb844c9b852","attributes":{"enabled":true,"created":1561725882,"updated":1561725882,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":null}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1767,11 +2518,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'aad2e48e-8d16-40d3-86eb-720e57f2dfa5', + 'a472e8ba-6957-49db-abd4-69d8a6de5e75', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1781,11 +2532,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:35 GMT', + 'Fri, 28 Jun 2019 12:44:42 GMT', 'Connection', 'close', 'Content-Length', - '1381' ]); + '813' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1803,17 +2554,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'ae5457a5-ede4-415b-a9cb-e36b18835800', + 'a4d42df8-73aa-483b-9bbe-a83a21a56500', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHGwAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:35 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHJgAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:43 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:34 GMT', + 'Fri, 28 Jun 2019 12:44:42 GMT', 'Connection', 'close', 'Content-Length', @@ -1821,9 +2572,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedsecrets') + .get('/secrets/listSecretName-canretrieveallversionsofasecret-/5cede84ddb30496da62f677b6ceb89d6') .query(true) - .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secrets156083468802106547","deletedDate":1560834787,"scheduledPurgeDate":1568610787,"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083468802106547","attributes":{"enabled":true,"created":1560834689,"updated":1560834689,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":null}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE2","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/5cede84ddb30496da62f677b6ceb89d6","attributes":{"enabled":true,"created":1561725882,"updated":1561725882,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1836,11 +2587,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '9fc66664-1aa9-4fac-82e8-fb300c9d65e1', + '494981f0-94c8-4677-bceb-e7d5d3e077a7', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1850,11 +2601,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:35 GMT', + 'Fri, 28 Jun 2019 12:44:43 GMT', 'Connection', 'close', 'Content-Length', - '367' ]); + '285' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1872,17 +2623,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'c5f7ca3f-a92e-49de-a61d-42ac771b5a00', + '0aaf7f8c-f2fe-4422-a2bf-857a3e076700', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHHAAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:36 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHJwAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:43 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:35 GMT', + 'Fri, 28 Jun 2019 12:44:42 GMT', 'Connection', 'close', 'Content-Length', @@ -1890,12 +2641,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/listSecretName0') + .get('/secrets/listSecretName-canretrieveallversionsofasecret-/9d67ed0b7b7041c99faf570a93389e68') .query(true) - .reply(204, "", [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE0","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/9d67ed0b7b7041c99faf570a93389e68","attributes":{"enabled":true,"created":1561725881,"updated":1561725881,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -1903,11 +2656,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'f33e24db-a6e6-4f0d-8b24-2fc6499c16d0', + '20932ef3-ea69-4800-b6a3-50a0e57c00cf', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1917,9 +2670,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:36 GMT', + 'Fri, 28 Jun 2019 12:44:43 GMT', 'Connection', - 'close' ]); + 'close', + 'Content-Length', + '285' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1937,17 +2692,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '1a6e6c75-bf6c-4dfc-94d7-c01f1ad21400', + 'd644ab08-59f8-4a73-8a25-7e61857f6900', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHHQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:36 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHKAAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:44 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:36 GMT', + 'Fri, 28 Jun 2019 12:44:43 GMT', 'Connection', 'close', 'Content-Length', @@ -1955,12 +2710,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/listSecretName1') + .get('/secrets/listSecretName-canretrieveallversionsofasecret-/b95608c840de487492bcbcb844c9b852') .query(true) - .reply(204, "", [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE1","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/b95608c840de487492bcbcb844c9b852","attributes":{"enabled":true,"created":1561725882,"updated":1561725882,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -1968,11 +2725,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '37234660-2a09-4dd3-a52a-54dd76a6becc', + '21405045-03dc-4cb5-b8f0-1a5296e47414', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1982,9 +2739,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:36 GMT', + 'Fri, 28 Jun 2019 12:44:44 GMT', 'Connection', - 'close' ]); + 'close', + 'Content-Length', + '285' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -2002,17 +2761,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'f9144017-9562-487a-a566-792314901300', + '5085bf37-a064-4717-8430-01991a9a6500', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHHgAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:57 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHKQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:44 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:57 GMT', + 'Fri, 28 Jun 2019 12:44:44 GMT', 'Connection', 'close', 'Content-Length', @@ -2020,9 +2779,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/listSecretName', {"value":"SECRET_VALUE0"}) + .delete('/secrets/listSecretName-canretrieveallversionsofasecret-') .query(true) - .reply(200, {"value":"SECRET_VALUE0","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/0e70cdc004ee4d88a423d10f32977fad","attributes":{"enabled":true,"created":1560836517,"updated":1560836517,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName-canretrieveallversionsofasecret-","deletedDate":1561725884,"scheduledPurgeDate":1569501884,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/5cede84ddb30496da62f677b6ceb89d6","attributes":{"enabled":true,"created":1561725882,"updated":1561725882,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -2035,11 +2794,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'e124e6eb-8104-4f7b-9e2c-699053291ce8', + '78480565-6085-401e-9b73-e7686fe05520', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2049,16 +2808,16 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:57 GMT', + 'Fri, 28 Jun 2019 12:44:44 GMT', 'Connection', 'close', 'Content-Length', - '236' ]); + '448' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -2071,17 +2830,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'e42713f9-d519-4494-aefc-2701eaa26600', + '3b7c14dd-1d68-4149-8c9b-1f8684e76b00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHHwAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:58 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHKgAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:45 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:57 GMT', + 'Fri, 28 Jun 2019 12:44:44 GMT', 'Connection', 'close', 'Content-Length', @@ -2089,12 +2848,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/listSecretName', {"value":"SECRET_VALUE1"}) + .delete('/deletedsecrets/listSecretName-canretrieveallversionsofasecret-') .query(true) - .reply(200, {"value":"SECRET_VALUE1","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/2ce1c404447a4f9cb9dceaa579fc609a","attributes":{"enabled":true,"created":1560836518,"updated":1560836518,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '121', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -2104,11 +2865,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'cc5b32a8-7e58-439a-b32c-9aa0c0195de8', + '9c95c88c-4835-4131-b846-e1f1ecb4d172', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2118,16 +2879,14 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:58 GMT', + 'Fri, 28 Jun 2019 12:44:45 GMT', 'Connection', - 'close', - 'Content-Length', - '236' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -2140,17 +2899,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '5dadc25d-9563-4fb6-83f1-be6e36db1000', + '429b6603-ca36-4fe8-a254-43fc34586b00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHIAAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:58 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHKwAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:44:55 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:58 GMT', + 'Fri, 28 Jun 2019 12:44:55 GMT', 'Connection', 'close', 'Content-Length', @@ -2158,12 +2917,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/listSecretName', {"value":"SECRET_VALUE2"}) + .delete('/deletedsecrets/listSecretName-canretrieveallversionsofasecret-') .query(true) - .reply(200, {"value":"SECRET_VALUE2","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/0f116646986648e3bebe84fd6b166314","attributes":{"enabled":true,"created":1560836518,"updated":1560836518,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '121', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -2173,11 +2934,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'af790d5c-092f-434d-848f-0a5e267968e1', + 'dd0cfca8-886f-428e-a155-45748a154ccb', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2187,11 +2948,9 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:58 GMT', + 'Fri, 28 Jun 2019 12:44:56 GMT', 'Connection', - 'close', - 'Content-Length', - '236' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -2209,17 +2968,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '99ac5212-c804-4151-bb4f-f61614351100', + '62f167e7-7d60-447e-8c0b-a092b4ef7200', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHIQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:59 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLAAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:06 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:58 GMT', + 'Fri, 28 Jun 2019 12:45:06 GMT', 'Connection', 'close', 'Content-Length', @@ -2227,14 +2986,12 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets/listSecretName/versions') + .delete('/deletedsecrets/listSecretName-canretrieveallversionsofasecret-') .query(true) - .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/0e70cdc004ee4d88a423d10f32977fad","attributes":{"enabled":true,"created":1560836517,"updated":1560836517,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/0f116646986648e3bebe84fd6b166314","attributes":{"enabled":true,"created":1560836518,"updated":1560836518,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/2ce1c404447a4f9cb9dceaa579fc609a","attributes":{"enabled":true,"created":1560836518,"updated":1560836518,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":null}, [ 'Cache-Control', + .reply(204, "", [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', - 'Content-Type', - 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -2242,11 +2999,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '7072d37a-3625-4171-8513-284d7b8d9c24', + '89be60a6-c71c-42ca-9634-f406fcc3761a', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2256,11 +3013,9 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:59 GMT', + 'Fri, 28 Jun 2019 12:45:05 GMT', 'Connection', - 'close', - 'Content-Length', - '666' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -2278,17 +3033,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'ebe85c7c-2ab9-4530-8f9e-0fb0d9bb1200', + '4dd21e8b-5a58-458b-a28e-29bb28636b00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHIgAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:41:59 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:06 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:59 GMT', + 'Fri, 28 Jun 2019 12:45:06 GMT', 'Connection', 'close', 'Content-Length', @@ -2296,9 +3051,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets/listSecretName/0e70cdc004ee4d88a423d10f32977fad') + .get('/secrets/listSecretName-canlistsecretversionsnonexisting-/versions') .query(true) - .reply(200, {"value":"SECRET_VALUE0","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/0e70cdc004ee4d88a423d10f32977fad","attributes":{"enabled":true,"created":1560836517,"updated":1560836517,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":[],"nextLink":null}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -2311,11 +3066,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '4355fe1b-c07a-44a1-a150-ae819c34206b', + 'f8af63c4-f854-47fd-9cb4-76b556fb0b2b', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2325,11 +3080,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:41:59 GMT', + 'Fri, 28 Jun 2019 12:45:06 GMT', 'Connection', 'close', 'Content-Length', - '236' ]); + '28' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -2347,17 +3102,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'c3cd31c7-86ad-43af-82f5-6f7667df6300', + '13ecde3e-097b-47ae-9a67-60f6d1c66500', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHIwAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:42:00 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:07 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:41:59 GMT', + 'Fri, 28 Jun 2019 12:45:06 GMT', 'Connection', 'close', 'Content-Length', @@ -2365,9 +3120,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets/listSecretName/0f116646986648e3bebe84fd6b166314') + .put('/secrets/listSecretName-canlistsecrets-0', {"value":"RSA"}) .query(true) - .reply(200, {"value":"SECRET_VALUE2","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/0f116646986648e3bebe84fd6b166314","attributes":{"enabled":true,"created":1560836518,"updated":1560836518,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistsecrets-0/a7ff33289f034132b2caecf356eca5b6","attributes":{"enabled":true,"created":1561725907,"updated":1561725907,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -2380,11 +3135,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '83135725-fa05-4ef6-9037-e120ea29e182', + 'c7419511-9964-48a4-b2a1-b629a3613eff', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2394,16 +3149,16 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:42:00 GMT', + 'Fri, 28 Jun 2019 12:45:07 GMT', 'Connection', 'close', 'Content-Length', - '236' ]); + '259' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -2416,17 +3171,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '2bd2fa2b-c3f5-45ab-8924-1a9242237e00', + '7945225b-7214-46e5-9417-6a10c00e6700', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHJAAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:42:00 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:07 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:42:00 GMT', + 'Fri, 28 Jun 2019 12:45:07 GMT', 'Connection', 'close', 'Content-Length', @@ -2434,9 +3189,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets/listSecretName/2ce1c404447a4f9cb9dceaa579fc609a') + .put('/secrets/listSecretName-canlistsecrets-1', {"value":"RSA"}) .query(true) - .reply(200, {"value":"SECRET_VALUE1","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/2ce1c404447a4f9cb9dceaa579fc609a","attributes":{"enabled":true,"created":1560836518,"updated":1560836518,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistsecrets-1/e3eac4ed0f5d4c40935a473e642c5e11","attributes":{"enabled":true,"created":1561725907,"updated":1561725907,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -2449,11 +3204,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '4bd9b8df-9bec-4966-a5e5-bb1da6d2ade7', + 'c648b42c-b9e8-4310-b541-f4e5cf3c6744', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2463,11 +3218,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:42:00 GMT', + 'Fri, 28 Jun 2019 12:45:07 GMT', 'Connection', 'close', 'Content-Length', - '236' ]); + '259' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -2485,17 +3240,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '1e772efa-87ff-43fa-b5a6-727792ba5e00', + '19fb6f84-7f14-42c1-acdd-64b3831e6900', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHJQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:42:01 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:08 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:42:01 GMT', + 'Fri, 28 Jun 2019 12:45:07 GMT', 'Connection', 'close', 'Content-Length', @@ -2503,9 +3258,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/listSecretName') + .get('/secrets') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName","deletedDate":1560836521,"scheduledPurgeDate":1568612521,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/0f116646986648e3bebe84fd6b166314","attributes":{"enabled":true,"created":1560836518,"updated":1560836518,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/ExamplePassword","attributes":{"enabled":true,"created":1559920536,"updated":1559920536,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/key156035497352907352","attributes":{"enabled":true,"created":1560354978,"updated":1560354978,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/key156035503730605597","attributes":{"enabled":true,"created":1560355042,"updated":1560355042,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/key156035505405304954","attributes":{"enabled":true,"created":1560355059,"updated":1560355059,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistsecrets-0","attributes":{"enabled":true,"created":1561725907,"updated":1561725907,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistsecrets-1","attributes":{"enabled":true,"created":1561725907,"updated":1561725907,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969830299800555","attributes":{"enabled":true,"created":1559698309,"updated":1559698309,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969830501005254","attributes":{"enabled":true,"exp":32503680000,"created":1559698313,"updated":1559698313,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969830702405633","attributes":{"enabled":true,"exp":32503680000,"created":1559698314,"updated":1559698328,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969831104103177","attributes":{"enabled":true,"created":1559698345,"updated":1559698345,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969840997100376","attributes":{"enabled":true,"created":1559698415,"updated":1559698415,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969841605401224","attributes":{"enabled":true,"created":1559698422,"updated":1559698422,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969842993209999","attributes":{"enabled":true,"exp":32503680000,"created":1559698435,"updated":1559698435,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969844356809107","attributes":{"enabled":true,"exp":32503680000,"created":1559698450,"updated":1559698457,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969847359407300","attributes":{"enabled":true,"created":1559698479,"updated":1559698479,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969857586802675","attributes":{"enabled":true,"created":1559698582,"updated":1559698582,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969858938507540","attributes":{"enabled":true,"exp":32503680000,"created":1559698595,"updated":1559698595,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969860209703057","attributes":{"enabled":true,"exp":32503680000,"created":1559698608,"updated":1559698615,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969864161208327","attributes":{"enabled":true,"created":1559698661,"updated":1559698661,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155974871145300045","attributes":{"enabled":true,"created":1559748717,"updated":1559748717,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155974872276605440","attributes":{"enabled":true,"exp":32503680000,"created":1559748728,"updated":1559748728,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UVTVOelE0TnpNek9EQXpNRFl6TmpNaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -2518,11 +3273,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'b13b7d5a-1825-45d8-99a4-f37f2f915fb7', + 'f3fcfc42-fc57-49bf-9d89-1fa28995235c', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2532,11 +3287,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:42:01 GMT', + 'Fri, 28 Jun 2019 12:45:07 GMT', 'Connection', 'close', 'Content-Length', - '350' ]); + '4434' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -2554,17 +3309,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '5f4b869d-c88f-4516-8378-52a53aca1300', + '7e88d5c7-d6d7-463a-a51d-1d545aa07400', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHJgAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:42:31 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:08 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:42:31 GMT', + 'Fri, 28 Jun 2019 12:45:08 GMT', 'Connection', 'close', 'Content-Length', @@ -2572,12 +3327,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/listSecretName') + .get('/secrets') .query(true) - .reply(204, "", [ 'Cache-Control', + .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/secret155974873380306363","attributes":{"enabled":true,"exp":32503680000,"created":1559748739,"updated":1559748744,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155974876803708577","attributes":{"enabled":true,"created":1559748784,"updated":1559748784,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155976267700703146","attributes":{"enabled":true,"created":1559762682,"updated":1559762682,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977987019000658","attributes":{"enabled":true,"created":1559779876,"updated":1559779876,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977987618402041","attributes":{"enabled":true,"created":1559779883,"updated":1559779883,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977989062300314","attributes":{"enabled":true,"exp":32503680000,"created":1559779896,"updated":1559779896,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977990311305514","attributes":{"enabled":true,"exp":32503680000,"created":1559779909,"updated":1559779916,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977994218208573","attributes":{"enabled":true,"created":1559779954,"updated":1559779954,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155985529172800962","attributes":{"enabled":true,"created":1559855297,"updated":1559855297,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155986124522104520","attributes":{"enabled":true,"created":1559861253,"updated":1559861253,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155986125376001211","attributes":{"enabled":true,"created":1559861260,"updated":1559861260,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155986126989703251","attributes":{"enabled":true,"exp":32503680000,"created":1559861276,"updated":1559861276,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035467744608684","attributes":{"enabled":true,"created":1560354683,"updated":1560354683,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelUwTmpnek1Ua3dNREkzTVRnaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -2585,11 +3342,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '9f693a0f-cfdb-4ef8-a785-431c8838e62c', + '2559dfe1-818e-4568-9add-6c98886077c5', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2599,9 +3356,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:42:31 GMT', + 'Fri, 28 Jun 2019 12:45:08 GMT', 'Connection', - 'close' ]); + 'close', + 'Content-Length', + '2832' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -2619,17 +3378,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'ac6f4317-b2a8-4927-ab2e-819bac6c1200', + 'c2ade1ed-3937-4be5-adc7-55aa24a60a00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHJwAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:43:02 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:09 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:43:02 GMT', + 'Fri, 28 Jun 2019 12:45:08 GMT', 'Connection', 'close', 'Content-Length', @@ -2637,9 +3396,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets/listSecretName/versions') + .get('/secrets') .query(true) - .reply(200, {"value":[],"nextLink":null}, [ 'Cache-Control', + .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035468319002718","attributes":{"enabled":true,"exp":32503680000,"created":1560354688,"updated":1560354688,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035469457101815","attributes":{"enabled":true,"exp":32503680000,"created":1560354700,"updated":1560354705,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035471178508910","attributes":{"enabled":false,"exp":32503680000,"created":1560354717,"updated":1560354723,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035472322108987","attributes":{"enabled":true,"created":1560354728,"updated":1560354728,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035473421700992","attributes":{"enabled":false,"created":1560354739,"updated":1560354739,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035474537300332","attributes":{"enabled":true,"created":1560354751,"updated":1560354751,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035492380902463","attributes":{"enabled":true,"created":1560354940,"updated":1560354940,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036566801100575","attributes":{"enabled":true,"created":1560365673,"updated":1560365673,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036567378506379","attributes":{"enabled":true,"exp":32503680000,"created":1560365679,"updated":1560365679,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036568492401952","attributes":{"enabled":true,"exp":32503680000,"created":1560365690,"updated":1560365695,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036570169100621","attributes":{"enabled":false,"exp":32503680000,"created":1560365707,"updated":1560365713,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036571333008936","attributes":{"enabled":true,"created":1560365718,"updated":1560365718,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036572454709051","attributes":{"enabled":false,"created":1560365729,"updated":1560365729,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036573548102072","attributes":{"enabled":true,"created":1560365740,"updated":1560365740,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036585124607918","attributes":{"enabled":true,"created":1560365867,"updated":1560365867,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036590080809323","attributes":{"enabled":true,"created":1560365906,"updated":1560365906,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036596439108652","attributes":{"enabled":true,"created":1560365969,"updated":1560365969,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036624468808284","attributes":{"enabled":true,"created":1560366250,"updated":1560366250,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelkyTWpVd05ETXhNRE15TkRNaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -2652,11 +3411,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '8d055a56-f53f-4581-95d7-487fcb47cbb8', + '6847429c-64a0-4a09-b7eb-8086bf57fc2f', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2666,11 +3425,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:43:02 GMT', + 'Fri, 28 Jun 2019 12:45:09 GMT', 'Connection', 'close', 'Content-Length', - '28' ]); + '3822' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -2688,17 +3447,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '730ea66d-158d-4f3a-b790-3ab11aa51300', + '21fbc47a-f642-4d61-b755-23272f446500', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHKAAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:43:03 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:10 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:43:02 GMT', + 'Fri, 28 Jun 2019 12:45:09 GMT', 'Connection', 'close', 'Content-Length', @@ -2706,9 +3465,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/listSecretName0', {"value":"RSA"}) + .get('/secrets') .query(true) - .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName0/51e5fbc8849b4a59a8bcaa0e6860dada","attributes":{"enabled":true,"created":1560836583,"updated":1560836583,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036625043103243","attributes":{"enabled":true,"exp":32503680000,"created":1560366256,"updated":1560366256,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036626200104356","attributes":{"enabled":true,"exp":32503680000,"created":1560366267,"updated":1560366272,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036627848202634","attributes":{"enabled":false,"exp":32503680000,"created":1560366283,"updated":1560366289,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036628972007025","attributes":{"enabled":true,"created":1560366295,"updated":1560366295,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036630071100034","attributes":{"enabled":false,"created":1560366306,"updated":1560366306,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036631177303153","attributes":{"enabled":true,"created":1560366317,"updated":1560366317,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036651431706935","attributes":{"enabled":true,"created":1560366530,"updated":1560366530,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036656390609451","attributes":{"enabled":true,"created":1560366569,"updated":1560366569,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036662789900557","attributes":{"enabled":true,"created":1560366633,"updated":1560366633,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036776000805385","attributes":{"enabled":true,"created":1560367765,"updated":1560367765,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156083458808007836","attributes":{"enabled":true,"created":1560834589,"updated":1560834589,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156083462580205466","attributes":{"enabled":true,"created":1560834627,"updated":1560834627,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156083472284304384","attributes":{"enabled":true,"created":1560834724,"updated":1560834724,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdPRE0wTnpZeE56ZzVNREk1T0RNaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -2721,11 +3480,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '97718228-d995-4150-98b5-b2bf96a51fe9', + 'e4e02a1d-14bc-4646-b8af-5ac43023c7e4', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2735,16 +3494,16 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:43:03 GMT', + 'Fri, 28 Jun 2019 12:45:09 GMT', 'Connection', 'close', 'Content-Length', - '227' ]); + '2816' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -2757,17 +3516,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '6a892e5a-a689-48b1-a389-3c72421a1100', + '3054dfb1-239c-41c9-a7f9-f1f1d80b6a00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHKQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:43:04 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:10 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:43:03 GMT', + 'Fri, 28 Jun 2019 12:45:10 GMT', 'Connection', 'close', 'Content-Length', @@ -2775,9 +3534,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/listSecretName1', {"value":"RSA"}) + .get('/secrets') .query(true) - .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName1/c198efa967e8445a9c86cbeb37460533","attributes":{"enabled":true,"created":1560836584,"updated":1560836584,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/secret156083476178902983","attributes":{"enabled":true,"created":1560834763,"updated":1560834763,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156035131601606330","attributes":{"enabled":true,"created":1560351327,"updated":1560351327,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156035483280103968","attributes":{"enabled":true,"created":1560354843,"updated":1560354843,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156035483280107298","attributes":{"enabled":true,"created":1560354838,"updated":1560354838,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036581736106694","attributes":{"enabled":true,"created":1560365822,"updated":1560365822,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036581736108753","attributes":{"enabled":true,"created":1560365828,"updated":1560365828,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036639908703029","attributes":{"enabled":true,"created":1560366404,"updated":1560366404,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036639908709648","attributes":{"enabled":true,"created":1560366410,"updated":1560366410,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083455364403280","attributes":{"enabled":true,"created":1560834555,"updated":1560834555,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083459257408076","attributes":{"enabled":true,"created":1560834593,"updated":1560834593,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083459257409406","attributes":{"enabled":true,"created":1560834593,"updated":1560834593,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083472719004650","attributes":{"enabled":true,"created":1560834728,"updated":1560834728,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083472719009472","attributes":{"enabled":true,"created":1560834727,"updated":1560834727,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":null}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -2790,11 +3549,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '442ad889-6470-47c6-967d-977e1eb236ab', + '0d6893c0-13a5-4703-8117-20517ca71150', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2804,11 +3563,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:43:04 GMT', + 'Fri, 28 Jun 2019 12:45:10 GMT', 'Connection', 'close', 'Content-Length', - '227' ]); + '2509' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -2826,17 +3585,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'c545c55e-3b9e-4e13-8933-da027c081000', + 'cd5e1591-0a70-459c-8b7a-b1d98b3d7100', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHKgAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:43:04 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:11 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:43:04 GMT', + 'Fri, 28 Jun 2019 12:45:10 GMT', 'Connection', 'close', 'Content-Length', @@ -2844,9 +3603,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets') + .delete('/secrets/listSecretName-canlistsecrets-0') .query(true) - .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName0","attributes":{"enabled":true,"created":1560836583,"updated":1560836583,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName1","attributes":{"enabled":true,"created":1560836584,"updated":1560836584,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/ExamplePassword","attributes":{"enabled":true,"created":1559920536,"updated":1559920536,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/key156035497352907352","attributes":{"enabled":true,"created":1560354978,"updated":1560354978,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/key156035503730605597","attributes":{"enabled":true,"created":1560355042,"updated":1560355042,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/key156035505405304954","attributes":{"enabled":true,"created":1560355059,"updated":1560355059,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969830299800555","attributes":{"enabled":true,"created":1559698309,"updated":1559698309,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969830501005254","attributes":{"enabled":true,"exp":32503680000,"created":1559698313,"updated":1559698313,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969830702405633","attributes":{"enabled":true,"exp":32503680000,"created":1559698314,"updated":1559698328,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969831104103177","attributes":{"enabled":true,"created":1559698345,"updated":1559698345,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969840997100376","attributes":{"enabled":true,"created":1559698415,"updated":1559698415,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969841605401224","attributes":{"enabled":true,"created":1559698422,"updated":1559698422,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969842993209999","attributes":{"enabled":true,"exp":32503680000,"created":1559698435,"updated":1559698435,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969844356809107","attributes":{"enabled":true,"exp":32503680000,"created":1559698450,"updated":1559698457,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969847359407300","attributes":{"enabled":true,"created":1559698479,"updated":1559698479,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969857586802675","attributes":{"enabled":true,"created":1559698582,"updated":1559698582,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969858938507540","attributes":{"enabled":true,"exp":32503680000,"created":1559698595,"updated":1559698595,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969860209703057","attributes":{"enabled":true,"exp":32503680000,"created":1559698608,"updated":1559698615,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155969864161208327","attributes":{"enabled":true,"created":1559698661,"updated":1559698661,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155974871145300045","attributes":{"enabled":true,"created":1559748717,"updated":1559748717,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155974872276605440","attributes":{"enabled":true,"exp":32503680000,"created":1559748728,"updated":1559748728,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155974873380306363","attributes":{"enabled":true,"exp":32503680000,"created":1559748739,"updated":1559748744,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155974876803708577","attributes":{"enabled":true,"created":1559748784,"updated":1559748784,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UVTVOell5TmpjM01EQTNNRE14TkRZaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName-canlistsecrets-0","deletedDate":1561725911,"scheduledPurgeDate":1569501911,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistsecrets-0/a7ff33289f034132b2caecf356eca5b6","attributes":{"enabled":true,"created":1561725907,"updated":1561725907,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -2859,11 +3618,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'bb961289-d233-4d7b-b44d-feb21d1a4d31', + 'b51158e6-870b-4c1a-9e0d-e04750c3595b', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2873,16 +3632,16 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:43:04 GMT', + 'Fri, 28 Jun 2019 12:45:11 GMT', 'Connection', 'close', 'Content-Length', - '4768' ]); + '416' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -2895,17 +3654,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '0f9f071e-8ffd-4181-ab90-3b1eff385c00', + '3b9f940a-03ac-4bb2-a5c3-ad23ef986600', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHKwAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:43:05 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:11 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:43:04 GMT', + 'Fri, 28 Jun 2019 12:45:11 GMT', 'Connection', 'close', 'Content-Length', @@ -2913,12 +3672,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets') + .delete('/deletedsecrets/listSecretName-canlistsecrets-0') .query(true) - .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/secret155976267700703146","attributes":{"enabled":true,"created":1559762682,"updated":1559762682,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977987019000658","attributes":{"enabled":true,"created":1559779876,"updated":1559779876,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977987618402041","attributes":{"enabled":true,"created":1559779883,"updated":1559779883,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977989062300314","attributes":{"enabled":true,"exp":32503680000,"created":1559779896,"updated":1559779896,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977990311305514","attributes":{"enabled":true,"exp":32503680000,"created":1559779909,"updated":1559779916,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155977994218208573","attributes":{"enabled":true,"created":1559779954,"updated":1559779954,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155985529172800962","attributes":{"enabled":true,"created":1559855297,"updated":1559855297,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155986124522104520","attributes":{"enabled":true,"created":1559861253,"updated":1559861253,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155986125376001211","attributes":{"enabled":true,"created":1559861260,"updated":1559861260,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret155986126989703251","attributes":{"enabled":true,"exp":32503680000,"created":1559861276,"updated":1559861276,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035467744608684","attributes":{"enabled":true,"created":1560354683,"updated":1560354683,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035468319002718","attributes":{"enabled":true,"exp":32503680000,"created":1560354688,"updated":1560354688,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035469457101815","attributes":{"enabled":true,"exp":32503680000,"created":1560354700,"updated":1560354705,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelUwTnpFeE56ZzFNRGc1TVRBaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '121', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -2928,11 +3689,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '291212f9-d0c6-4cbb-bf39-7d44a37e7f74', + '0db8fc9e-619e-467b-b0e5-8c399e84036d', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -2942,11 +3703,9 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:43:05 GMT', + 'Fri, 28 Jun 2019 12:45:11 GMT', 'Connection', - 'close', - 'Content-Length', - '2850' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -2964,17 +3723,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '07e4decf-8966-4724-acfc-25e2a2976500', + 'cf1e3236-fb33-45fc-b258-bd6c6d986500', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLAAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:43:05 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:22 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:43:05 GMT', + 'Fri, 28 Jun 2019 12:45:22 GMT', 'Connection', 'close', 'Content-Length', @@ -2982,12 +3741,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets') + .delete('/deletedsecrets/listSecretName-canlistsecrets-0') .query(true) - .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035471178508910","attributes":{"enabled":false,"exp":32503680000,"created":1560354717,"updated":1560354723,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035472322108987","attributes":{"enabled":true,"created":1560354728,"updated":1560354728,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035473421700992","attributes":{"enabled":false,"created":1560354739,"updated":1560354739,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035474537300332","attributes":{"enabled":true,"created":1560354751,"updated":1560354751,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156035492380902463","attributes":{"enabled":true,"created":1560354940,"updated":1560354940,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036566801100575","attributes":{"enabled":true,"created":1560365673,"updated":1560365673,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036567378506379","attributes":{"enabled":true,"exp":32503680000,"created":1560365679,"updated":1560365679,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036568492401952","attributes":{"enabled":true,"exp":32503680000,"created":1560365690,"updated":1560365695,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036570169100621","attributes":{"enabled":false,"exp":32503680000,"created":1560365707,"updated":1560365713,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036571333008936","attributes":{"enabled":true,"created":1560365718,"updated":1560365718,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036572454709051","attributes":{"enabled":false,"created":1560365729,"updated":1560365729,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036573548102072","attributes":{"enabled":true,"created":1560365740,"updated":1560365740,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036585124607918","attributes":{"enabled":true,"created":1560365867,"updated":1560365867,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036590080809323","attributes":{"enabled":true,"created":1560365906,"updated":1560365906,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036596439108652","attributes":{"enabled":true,"created":1560365969,"updated":1560365969,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036624468808284","attributes":{"enabled":true,"created":1560366250,"updated":1560366250,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036625043103243","attributes":{"enabled":true,"exp":32503680000,"created":1560366256,"updated":1560366256,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036626200104356","attributes":{"enabled":true,"exp":32503680000,"created":1560366267,"updated":1560366272,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelkyTWpjNE5EZ3lNREkyTXpRaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '121', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -2997,11 +3758,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'bb9527fc-391f-40b4-9848-5bd86d9e8416', + '954db4e4-992b-4f54-913a-46be7385f439', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -3011,11 +3772,9 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:43:06 GMT', + 'Fri, 28 Jun 2019 12:45:21 GMT', 'Connection', - 'close', - 'Content-Length', - '3822' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -3033,17 +3792,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'f19861bd-57c5-41b2-87be-80096aa71000', + '3a9efdb5-53a1-4c60-860c-5d1f1bac0b00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:43:06 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:32 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:43:06 GMT', + 'Fri, 28 Jun 2019 12:45:32 GMT', 'Connection', 'close', 'Content-Length', @@ -3051,14 +3810,12 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets') + .delete('/deletedsecrets/listSecretName-canlistsecrets-0') .query(true) - .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036627848202634","attributes":{"enabled":false,"exp":32503680000,"created":1560366283,"updated":1560366289,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036628972007025","attributes":{"enabled":true,"created":1560366295,"updated":1560366295,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036630071100034","attributes":{"enabled":false,"created":1560366306,"updated":1560366306,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036631177303153","attributes":{"enabled":true,"created":1560366317,"updated":1560366317,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036651431706935","attributes":{"enabled":true,"created":1560366530,"updated":1560366530,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036656390609451","attributes":{"enabled":true,"created":1560366569,"updated":1560366569,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036662789900557","attributes":{"enabled":true,"created":1560366633,"updated":1560366633,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156036776000805385","attributes":{"enabled":true,"created":1560367765,"updated":1560367765,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156083458808007836","attributes":{"enabled":true,"created":1560834589,"updated":1560834589,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156083462580205466","attributes":{"enabled":true,"created":1560834627,"updated":1560834627,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156083472284304384","attributes":{"enabled":true,"created":1560834724,"updated":1560834724,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secret156083476178902983","attributes":{"enabled":true,"created":1560834763,"updated":1560834763,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDQhTURBd01ETXlJWE5sWTNKbGRDOVRSVU5TUlZSVE1UVTJNRE0xTVRNeE5qQXhOakEyTXpNd0lUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', + .reply(204, "", [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', - 'Content-Type', - 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -3066,11 +3823,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '2f0e601d-7912-43ce-9585-0fecbfeb37bc', + '3a30d5ec-9913-4666-8024-14dc239e202e', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -3080,16 +3837,14 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:43:07 GMT', + 'Fri, 28 Jun 2019 12:45:32 GMT', 'Connection', - 'close', - 'Content-Length', - '2595' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -3102,17 +3857,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '6c26081c-33a3-4505-8eb6-89b05a356700', + '7e240e0c-74e2-4c83-8721-f8e6a9b46c00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:43:07 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:33 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:43:07 GMT', + 'Fri, 28 Jun 2019 12:45:33 GMT', 'Connection', 'close', 'Content-Length', @@ -3120,9 +3875,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets') + .delete('/secrets/listSecretName-canlistsecrets-1') .query(true) - .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156035131601606330","attributes":{"enabled":true,"created":1560351327,"updated":1560351327,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156035483280103968","attributes":{"enabled":true,"created":1560354843,"updated":1560354843,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156035483280107298","attributes":{"enabled":true,"created":1560354838,"updated":1560354838,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036581736106694","attributes":{"enabled":true,"created":1560365822,"updated":1560365822,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036581736108753","attributes":{"enabled":true,"created":1560365828,"updated":1560365828,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036639908703029","attributes":{"enabled":true,"created":1560366404,"updated":1560366404,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036639908709648","attributes":{"enabled":true,"created":1560366410,"updated":1560366410,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083455364403280","attributes":{"enabled":true,"created":1560834555,"updated":1560834555,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083459257408076","attributes":{"enabled":true,"created":1560834593,"updated":1560834593,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083459257409406","attributes":{"enabled":true,"created":1560834593,"updated":1560834593,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083472719004650","attributes":{"enabled":true,"created":1560834728,"updated":1560834728,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083472719009472","attributes":{"enabled":true,"created":1560834727,"updated":1560834727,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":null}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName-canlistsecrets-1","deletedDate":1561725933,"scheduledPurgeDate":1569501933,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistsecrets-1/e3eac4ed0f5d4c40935a473e642c5e11","attributes":{"enabled":true,"created":1561725907,"updated":1561725907,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -3135,11 +3890,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'a157e615-115a-4d4c-aa33-d4e388bbe255', + '175ece80-73f1-4d3a-bba8-1cc2a68dd27a', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -3149,11 +3904,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:43:07 GMT', + 'Fri, 28 Jun 2019 12:45:32 GMT', 'Connection', 'close', 'Content-Length', - '2319' ]); + '416' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -3171,17 +3926,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '7de38ebc-1974-4f66-895c-888777b51400', + 'ce0caaae-fc83-4538-8ff9-99d2c3855b00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:43:08 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:33 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:43:08 GMT', + 'Fri, 28 Jun 2019 12:45:33 GMT', 'Connection', 'close', 'Content-Length', @@ -3189,12 +3944,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/listSecretName0') + .delete('/deletedsecrets/listSecretName-canlistsecrets-1') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName0","deletedDate":1560836588,"scheduledPurgeDate":1568612588,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName0/51e5fbc8849b4a59a8bcaa0e6860dada","attributes":{"enabled":true,"created":1560836583,"updated":1560836583,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '121', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -3204,11 +3961,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '3a55854c-b74b-44a0-be6a-d04b1352f32d', + '12f5416c-ad86-4cf4-886e-b8e045d827ab', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -3218,11 +3975,9 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:43:08 GMT', + 'Fri, 28 Jun 2019 12:45:34 GMT', 'Connection', - 'close', - 'Content-Length', - '352' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -3240,17 +3995,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '421923c6-58a5-4ffe-9aa9-cc615ac88300', + 'e300d927-ad29-4e81-9857-3df481076f00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:43:29 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:44 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:43:29 GMT', + 'Fri, 28 Jun 2019 12:45:44 GMT', 'Connection', 'close', 'Content-Length', @@ -3258,7 +4013,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/listSecretName0') + .delete('/deletedsecrets/listSecretName-canlistsecrets-1') .query(true) .reply(204, "", [ 'Cache-Control', 'no-cache', @@ -3271,11 +4026,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '140dbc9e-6e59-4b47-a404-0f74505776ad', + '597d2e78-01e0-4e88-9935-cf4b4b86736b', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -3285,14 +4040,14 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:43:28 GMT', + 'Fri, 28 Jun 2019 12:45:44 GMT', 'Connection', 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -3305,17 +4060,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '7d9c79a1-d4b6-43d2-98a0-104308355b00', + 'de278ac7-e98a-4cf4-bc40-42b1cd666700', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:43:29 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:44 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:43:28 GMT', + 'Fri, 28 Jun 2019 12:45:44 GMT', 'Connection', 'close', 'Content-Length', @@ -3323,9 +4078,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/listSecretName1') + .put('/secrets/listSecretName-canlistdeletedsecrets-0', {"value":"RSA"}) .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName1","deletedDate":1560836609,"scheduledPurgeDate":1568612609,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName1/c198efa967e8445a9c86cbeb37460533","attributes":{"enabled":true,"created":1560836584,"updated":1560836584,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistdeletedsecrets-0/4d0aeaa83ef140faae2c80bb99511109","attributes":{"enabled":true,"created":1561725945,"updated":1561725945,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -3338,11 +4093,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '8955c4c1-65d2-471d-af92-12804707f55b', + 'e013bd52-d756-4597-9af8-0ae68255bbe0', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -3352,16 +4107,16 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:43:29 GMT', + 'Fri, 28 Jun 2019 12:45:44 GMT', 'Connection', 'close', 'Content-Length', - '352' ]); + '266' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -3374,17 +4129,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'f02e43a9-4c4e-49af-9412-9b0969766c00', + '04a2d5c0-16c2-4710-957b-e3871b936600', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:43:50 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:45 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:43:50 GMT', + 'Fri, 28 Jun 2019 12:45:44 GMT', 'Connection', 'close', 'Content-Length', @@ -3392,12 +4147,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/listSecretName1') + .put('/secrets/listSecretName-canlistdeletedsecrets-1', {"value":"RSA"}) .query(true) - .reply(204, "", [ 'Cache-Control', + .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistdeletedsecrets-1/9647e2fed0e842349e37eb5ea8b9e969","attributes":{"enabled":true,"created":1561725945,"updated":1561725945,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -3405,11 +4162,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'cec32941-48b1-4682-bbbe-5259b58dd30b', + 'cc3d7db5-b77b-49b9-933a-24c33c8c3ce5', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -3419,14 +4176,16 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:43:50 GMT', + 'Fri, 28 Jun 2019 12:45:45 GMT', 'Connection', - 'close' ]); + 'close', + 'Content-Length', + '266' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -3439,17 +4198,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'ebe71ce7-2135-42e8-9154-30c49cd65400', + '2b7d8a90-1587-46f4-b675-dc9be8ca0900', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:44:11 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:45 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:44:11 GMT', + 'Fri, 28 Jun 2019 12:45:45 GMT', 'Connection', 'close', 'Content-Length', @@ -3457,9 +4216,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/listSecretName0', {"value":"RSA"}) + .delete('/secrets/listSecretName-canlistdeletedsecrets-0') .query(true) - .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName0/ecae117deb654c25a33c4b865c176ac5","attributes":{"enabled":true,"created":1560836651,"updated":1560836651,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName-canlistdeletedsecrets-0","deletedDate":1561725946,"scheduledPurgeDate":1569501946,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistdeletedsecrets-0/4d0aeaa83ef140faae2c80bb99511109","attributes":{"enabled":true,"created":1561725945,"updated":1561725945,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -3472,11 +4231,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '28b01cd2-49f2-4b3a-93e6-b941be9fb0a4', + '820b9dea-bfd4-467e-aa3a-f8ea2f5fbcf4', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -3486,11 +4245,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:44:11 GMT', + 'Fri, 28 Jun 2019 12:45:45 GMT', 'Connection', 'close', 'Content-Length', - '227' ]); + '430' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -3508,17 +4267,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '32f06528-092f-498e-9a84-b0d8bbf61200', + 'dcd53194-1b76-49fe-b904-61746eda7400', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:44:11 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:46 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:44:10 GMT', + 'Fri, 28 Jun 2019 12:45:45 GMT', 'Connection', 'close', 'Content-Length', @@ -3526,9 +4285,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/listSecretName1', {"value":"RSA"}) + .delete('/secrets/listSecretName-canlistdeletedsecrets-1') .query(true) - .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName1/a103eb8db13c4da1ae42923c0109c81d","attributes":{"enabled":true,"created":1560836652,"updated":1560836652,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName-canlistdeletedsecrets-1","deletedDate":1561725946,"scheduledPurgeDate":1569501946,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistdeletedsecrets-1/9647e2fed0e842349e37eb5ea8b9e969","attributes":{"enabled":true,"created":1561725945,"updated":1561725945,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -3541,11 +4300,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '1873484c-a9d1-44eb-ad32-4fb16274ae5d', + 'afeb71b5-b736-490f-89f9-a0bebf8aa2ba', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -3555,11 +4314,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:44:11 GMT', + 'Fri, 28 Jun 2019 12:45:46 GMT', 'Connection', 'close', 'Content-Length', - '227' ]); + '430' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -3577,17 +4336,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '5b4d5b7e-7537-46dd-8780-db7a595a6d00', + '86f8a1b4-c2e6-4f09-90de-599da8186c00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:44:12 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:46 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:44:11 GMT', + 'Fri, 28 Jun 2019 12:45:46 GMT', 'Connection', 'close', 'Content-Length', @@ -3595,12 +4354,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/listSecretName0') + .get('/deletedsecrets/listSecretName-canlistdeletedsecrets-0') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName0","deletedDate":1560836652,"scheduledPurgeDate":1568612652,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName0/ecae117deb654c25a33c4b865c176ac5","attributes":{"enabled":true,"created":1560836651,"updated":1560836651,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(404, {"error":{"code":"SecretNotFound","message":"Deleted Secret not found: listSecretName-canlistdeletedsecrets-0"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '128', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -3610,11 +4371,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'f65fe196-e441-44ea-bff6-25da9757c4c8', + 'd715bb19-52dd-4e03-9027-b6d36ccf37a0', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -3624,16 +4385,14 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:44:11 GMT', + 'Fri, 28 Jun 2019 12:45:47 GMT', 'Connection', - 'close', - 'Content-Length', - '352' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -3646,17 +4405,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '33c14597-3d2b-4a48-87b3-4d36ea851100', + '05bc1431-d91f-48c6-adb4-691f339b6000', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:44:12 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:57 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:44:12 GMT', + 'Fri, 28 Jun 2019 12:45:57 GMT', 'Connection', 'close', 'Content-Length', @@ -3664,9 +4423,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/listSecretName1') + .get('/deletedsecrets/listSecretName-canlistdeletedsecrets-0') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName1","deletedDate":1560836653,"scheduledPurgeDate":1568612653,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName1/a103eb8db13c4da1ae42923c0109c81d","attributes":{"enabled":true,"created":1560836652,"updated":1560836652,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName-canlistdeletedsecrets-0","deletedDate":1561725946,"scheduledPurgeDate":1569501946,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistdeletedsecrets-0/4d0aeaa83ef140faae2c80bb99511109","attributes":{"enabled":true,"created":1561725945,"updated":1561725945,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -3679,11 +4438,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '1243a865-c80c-4109-8b3d-9207b481ab0b', + 'c2ffd348-c7ad-4e7b-9c38-0bc5ab2a2d19', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -3693,11 +4452,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:44:13 GMT', + 'Fri, 28 Jun 2019 12:45:56 GMT', 'Connection', 'close', 'Content-Length', - '352' ]); + '430' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -3715,17 +4474,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'b30bf79e-cde3-406d-bf72-64961fa61200', + '0590ab04-f928-4567-a011-1124cf436a00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:44:33 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:57 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:44:32 GMT', + 'Fri, 28 Jun 2019 12:45:57 GMT', 'Connection', 'close', 'Content-Length', @@ -3735,7 +4494,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) .get('/deletedsecrets') .query(true) - .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName0","deletedDate":1560836652,"scheduledPurgeDate":1568612652,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName0","attributes":{"enabled":true,"created":1560836651,"updated":1560836651,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName1","deletedDate":1560836653,"scheduledPurgeDate":1568612653,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName1","attributes":{"enabled":true,"created":1560836652,"updated":1560836652,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/keys156035257289501832","deletedDate":1560352589,"scheduledPurgeDate":1568128589,"id":"https://keyvault_name.vault.azure.net/secrets/keys156035257289501832","attributes":{"enabled":true,"created":1560352578,"updated":1560352578,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/keys156035257289602456","deletedDate":1560352595,"scheduledPurgeDate":1568128595,"id":"https://keyvault_name.vault.azure.net/secrets/keys156035257289602456","attributes":{"enabled":true,"created":1560352584,"updated":1560352584,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWTBJWE5sWTNKbGRDOVRSVU5TUlZReE5UVTVOams0TkRBNU9UY3hNREF6TnpZdlF6aENPRGd3UlRKQlFVSkdORGxDUWtKQ016WXpSVVUyTXpWR1FqWTRNa0loTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/keys156035257289501832","deletedDate":1560352589,"scheduledPurgeDate":1568128589,"id":"https://keyvault_name.vault.azure.net/secrets/keys156035257289501832","attributes":{"enabled":true,"created":1560352578,"updated":1560352578,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/keys156035257289602456","deletedDate":1560352595,"scheduledPurgeDate":1568128595,"id":"https://keyvault_name.vault.azure.net/secrets/keys156035257289602456","attributes":{"enabled":true,"created":1560352584,"updated":1560352584,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName-canlistdeletedsecrets-0","deletedDate":1561725946,"scheduledPurgeDate":1569501946,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistdeletedsecrets-0","attributes":{"enabled":true,"created":1561725945,"updated":1561725945,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName-canlistdeletedsecrets-1","deletedDate":1561725946,"scheduledPurgeDate":1569501946,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canlistdeletedsecrets-1","attributes":{"enabled":true,"created":1561725945,"updated":1561725945,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/recoverSecretName-canrestoreasecret-08015957746121516","deletedDate":1561725411,"scheduledPurgeDate":1569501411,"id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName-canrestoreasecret-08015957746121516","attributes":{"enabled":true,"created":1561725356,"updated":1561725356,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWTBJWE5sWTNKbGRDOVRSVU5TUlZReE5UVTVOams0TXpFeE1EUXhNRE14Tnpjdk1UYzRSakkxUkVaR01qRTBORVkzT0VJNU4wSkJRVU00UTBaQlFUYzVRa0VoTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -3748,11 +4507,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '37cfbaee-4ecf-4253-8031-62329d354aab', + '29e0e0e2-7012-46b5-a748-ec7dd4a61b01', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -3762,16 +4521,16 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:44:33 GMT', + 'Fri, 28 Jun 2019 12:45:57 GMT', 'Connection', 'close', 'Content-Length', - '1663' ]); + '2215' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -3784,17 +4543,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '3eed74cb-2aea-4f84-be29-ad4cd59c6900', + '2221fefe-eaff-458c-85bf-b00198456900', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:44:34 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:58 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:44:33 GMT', + 'Fri, 28 Jun 2019 12:45:57 GMT', 'Connection', 'close', 'Content-Length', @@ -3804,7 +4563,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) .get('/deletedsecrets') .query(true) - .reply(200, {"value":[],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UVTVOell5TmpjM01EQTNNRE14TkRZaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + .reply(200, {"value":[],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UVTVOelE0TnpZNE1ETTNNRGcxTnpjaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -3817,11 +4576,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'abab53fa-403e-4b3a-8d2f-ddcd25943ae0', + 'ecdfec44-7600-42a9-9e77-0e02f06cbf3f', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -3831,7 +4590,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:44:33 GMT', + 'Fri, 28 Jun 2019 12:45:57 GMT', 'Connection', 'close', 'Content-Length', @@ -3853,17 +4612,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '21ab55dd-8380-4d47-9fb7-aa5053596300', + '5d711923-1ae2-4801-bb4c-d2404ac46d00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:44:34 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:58 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:44:34 GMT', + 'Fri, 28 Jun 2019 12:45:58 GMT', 'Connection', 'close', 'Content-Length', @@ -3873,7 +4632,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) .get('/deletedsecrets') .query(true) - .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028838837406917","deletedDate":1560288400,"scheduledPurgeDate":1568064400,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028838837406917","attributes":{"enabled":true,"created":1560288394,"updated":1560288394,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028933587502205","deletedDate":1560289358,"scheduledPurgeDate":1568065358,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028933587502205","attributes":{"enabled":false,"exp":32503680000,"created":1560289341,"updated":1560289347,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028954261707102","deletedDate":1560289559,"scheduledPurgeDate":1568065559,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028954261707102","attributes":{"enabled":false,"exp":32503680000,"created":1560289548,"updated":1560289554,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWTBJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNamc1TlRReU5qRTNNRGN4TURJdk5rSTVPRFZCTUROR01ESkROREZCTXpneU56WXhNRFV6T1RCR05EaEVNRFloTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028838837406917","deletedDate":1560288400,"scheduledPurgeDate":1568064400,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028838837406917","attributes":{"enabled":true,"created":1560288394,"updated":1560288394,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028933587502205","deletedDate":1560289358,"scheduledPurgeDate":1568065358,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028933587502205","attributes":{"enabled":false,"exp":32503680000,"created":1560289341,"updated":1560289347,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWTBJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNamc1TXpNMU9EYzFNREl5TURVdk5qUkdNak5FTVRORE5UWTJORVpDUmtKRk9UTkRSVEkxTXpkRlF6UXdSalFoTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -3886,11 +4645,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'a5278952-455e-42f4-bcaf-7f5db93ff71d', + '3192fb81-f227-48fc-ad9c-296279281436', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -3900,11 +4659,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:44:34 GMT', + 'Fri, 28 Jun 2019 12:45:58 GMT', 'Connection', 'close', 'Content-Length', - '1407' ]); + '1050' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -3922,17 +4681,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '07956309-211f-412c-b936-3baca5a47700', + '908d8450-e56b-49ee-98f1-6a00019f6d00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:44:35 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:59 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:44:35 GMT', + 'Fri, 28 Jun 2019 12:45:58 GMT', 'Connection', 'close', 'Content-Length', @@ -3942,7 +4701,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) .get('/deletedsecrets') .query(true) - .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028963087108194","deletedDate":1560289648,"scheduledPurgeDate":1568065648,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028963087108194","attributes":{"enabled":false,"exp":32503680000,"created":1560289636,"updated":1560289642,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028968597502042","deletedDate":1560289703,"scheduledPurgeDate":1568065703,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028968597502042","attributes":{"enabled":false,"exp":32503680000,"created":1560289691,"updated":1560289697,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028981007704437","deletedDate":1560289831,"scheduledPurgeDate":1568065831,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028981007704437","attributes":{"enabled":false,"exp":32503680000,"created":1560289815,"updated":1560289826,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028997762408585","deletedDate":1560289994,"scheduledPurgeDate":1568065994,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028997762408585","attributes":{"enabled":false,"exp":32503680000,"created":1560289983,"updated":1560289989,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156029003971701409","deletedDate":1560290062,"scheduledPurgeDate":1568066062,"id":"https://keyvault_name.vault.azure.net/secrets/secret156029003971701409","attributes":{"enabled":false,"exp":32503680000,"created":1560290045,"updated":1560290051,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156029020841505555","deletedDate":1560290236,"scheduledPurgeDate":1568066236,"id":"https://keyvault_name.vault.azure.net/secrets/secret156029020841505555","attributes":{"enabled":false,"exp":32503680000,"created":1560290214,"updated":1560290219,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156029021974300578","deletedDate":1560290242,"scheduledPurgeDate":1568066242,"id":"https://keyvault_name.vault.azure.net/secrets/secret156029021974300578","attributes":{"enabled":false,"created":1560290225,"updated":1560290225,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156034699779802419","deletedDate":1560347014,"scheduledPurgeDate":1568123014,"id":"https://keyvault_name.vault.azure.net/secrets/secret156034699779802419","attributes":{"enabled":false,"exp":32503680000,"created":1560347002,"updated":1560347008,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156035467151900829","deletedDate":1560355143,"scheduledPurgeDate":1568131143,"id":"https://keyvault_name.vault.azure.net/secrets/secret156035467151900829","attributes":{"enabled":true,"created":1560354677,"updated":1560354677,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelUwTnpFeE56ZzFNRGc1TVRBaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028954261707102","deletedDate":1560289559,"scheduledPurgeDate":1568065559,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028954261707102","attributes":{"enabled":false,"exp":32503680000,"created":1560289548,"updated":1560289554,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028963087108194","deletedDate":1560289648,"scheduledPurgeDate":1568065648,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028963087108194","attributes":{"enabled":false,"exp":32503680000,"created":1560289636,"updated":1560289642,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028968597502042","deletedDate":1560289703,"scheduledPurgeDate":1568065703,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028968597502042","attributes":{"enabled":false,"exp":32503680000,"created":1560289691,"updated":1560289697,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028981007704437","deletedDate":1560289831,"scheduledPurgeDate":1568065831,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028981007704437","attributes":{"enabled":false,"exp":32503680000,"created":1560289815,"updated":1560289826,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156028997762408585","deletedDate":1560289994,"scheduledPurgeDate":1568065994,"id":"https://keyvault_name.vault.azure.net/secrets/secret156028997762408585","attributes":{"enabled":false,"exp":32503680000,"created":1560289983,"updated":1560289989,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156029003971701409","deletedDate":1560290062,"scheduledPurgeDate":1568066062,"id":"https://keyvault_name.vault.azure.net/secrets/secret156029003971701409","attributes":{"enabled":false,"exp":32503680000,"created":1560290045,"updated":1560290051,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156029020841505555","deletedDate":1560290236,"scheduledPurgeDate":1568066236,"id":"https://keyvault_name.vault.azure.net/secrets/secret156029020841505555","attributes":{"enabled":false,"exp":32503680000,"created":1560290214,"updated":1560290219,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156029021974300578","deletedDate":1560290242,"scheduledPurgeDate":1568066242,"id":"https://keyvault_name.vault.azure.net/secrets/secret156029021974300578","attributes":{"enabled":false,"created":1560290225,"updated":1560290225,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156034699779802419","deletedDate":1560347014,"scheduledPurgeDate":1568123014,"id":"https://keyvault_name.vault.azure.net/secrets/secret156034699779802419","attributes":{"enabled":false,"exp":32503680000,"created":1560347002,"updated":1560347008,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156035467151900829","deletedDate":1560355143,"scheduledPurgeDate":1568131143,"id":"https://keyvault_name.vault.azure.net/secrets/secret156035467151900829","attributes":{"enabled":true,"created":1560354677,"updated":1560354677,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelUwTmprME5UY3hNREU0TVRVaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -3955,11 +4714,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '15e70c7e-7848-4762-b1cf-6e81cee698ab', + 'a46a42c7-a605-4da0-a4b5-e8fa4902e4d7', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -3969,11 +4728,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:44:35 GMT', + 'Fri, 28 Jun 2019 12:45:58 GMT', 'Connection', 'close', 'Content-Length', - '3473' ]); + '3830' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -3991,17 +4750,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'c1602448-24ac-4311-9dba-87d403f01200', + 'a9fdfa1a-fbcd-4277-8482-4d9174c06c00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:44:36 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:45:59 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:44:35 GMT', + 'Fri, 28 Jun 2019 12:45:58 GMT', 'Connection', 'close', 'Content-Length', @@ -4011,7 +4770,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) .get('/deletedsecrets') .query(true) - .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156035476213308921","deletedDate":1560354773,"scheduledPurgeDate":1568130773,"id":"https://keyvault_name.vault.azure.net/secrets/secret156035476213308921","attributes":{"enabled":true,"created":1560354767,"updated":1560354767,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036054148104164","deletedDate":1560360558,"scheduledPurgeDate":1568136558,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036054148104164","attributes":{"enabled":true,"exp":32503680000,"created":1560360547,"updated":1560360547,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036566207901067","deletedDate":1560366029,"scheduledPurgeDate":1568142029,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036566207901067","attributes":{"enabled":true,"created":1560365667,"updated":1560365667,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWTBJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelkxTnpFek16TXdNRGc1TXpZdlJEWTJSVEE0TlRnMlFqZEZORFJDUlRnd01VUTVNRGd5UkVFeU56WTRSalVoTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156035476213308921","deletedDate":1560354773,"scheduledPurgeDate":1568130773,"id":"https://keyvault_name.vault.azure.net/secrets/secret156035476213308921","attributes":{"enabled":true,"created":1560354767,"updated":1560354767,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036054148104164","deletedDate":1560360558,"scheduledPurgeDate":1568136558,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036054148104164","attributes":{"enabled":true,"exp":32503680000,"created":1560360547,"updated":1560360547,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036566207901067","deletedDate":1560366029,"scheduledPurgeDate":1568142029,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036566207901067","attributes":{"enabled":true,"created":1560365667,"updated":1560365667,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWTBJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelkxTnpBeE5qa3hNREEyTWpFdk5rWXlNemRGTmpRNE1qQXdOREExTUVKQlFqa3pOVEEwT0RBelFVSXpNalloTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -4024,11 +4783,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '648b57b3-013a-4631-8609-c9703a71f704', + '1748c724-7fe6-40a4-942e-09e4009c1eda', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -4038,7 +4797,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:44:35 GMT', + 'Fri, 28 Jun 2019 12:46:00 GMT', 'Connection', 'close', 'Content-Length', @@ -4060,17 +4819,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '65ab46ef-017d-4510-b191-375537715b00', + '36af1cf4-bdb2-4c6e-9497-33acec647100', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:44:36 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:00 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:44:36 GMT', + 'Fri, 28 Jun 2019 12:46:00 GMT', 'Connection', 'close', 'Content-Length', @@ -4080,7 +4839,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) .get('/deletedsecrets') .query(true) - .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036575195005928","deletedDate":1560365763,"scheduledPurgeDate":1568141763,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036575195005928","attributes":{"enabled":true,"created":1560365757,"updated":1560365757,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036577464301231","deletedDate":1560365785,"scheduledPurgeDate":1568141785,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036577464301231","attributes":{"enabled":true,"created":1560365780,"updated":1560365780,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036598110406898","deletedDate":1560365997,"scheduledPurgeDate":1568141997,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036598110406898","attributes":{"enabled":true,"created":1560365986,"updated":1560365986,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036623881507210","deletedDate":1560366693,"scheduledPurgeDate":1568142693,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036623881507210","attributes":{"enabled":true,"created":1560366244,"updated":1560366244,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelkyTWpjNE5EZ3lNREkyTXpRaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036575195005928","deletedDate":1560365763,"scheduledPurgeDate":1568141763,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036575195005928","attributes":{"enabled":true,"created":1560365757,"updated":1560365757,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036577464301231","deletedDate":1560365785,"scheduledPurgeDate":1568141785,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036577464301231","attributes":{"enabled":true,"created":1560365780,"updated":1560365780,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036598110406898","deletedDate":1560365997,"scheduledPurgeDate":1568141997,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036598110406898","attributes":{"enabled":true,"created":1560365986,"updated":1560365986,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036623881507210","deletedDate":1560366693,"scheduledPurgeDate":1568142693,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036623881507210","attributes":{"enabled":true,"created":1560366244,"updated":1560366244,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXhJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelkyTWpZeU1EQXhNRFF6TlRZaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -4093,11 +4852,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'e2f909fc-d261-4682-ba39-ed86ead3893e', + 'd3250ac3-a73d-4363-8760-672253e26deb', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -4107,7 +4866,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:44:36 GMT', + 'Fri, 28 Jun 2019 12:46:00 GMT', 'Connection', 'close', 'Content-Length', @@ -4129,17 +4888,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '388dd88b-f264-457d-9c91-2cb613ae1100', + '480c7350-73f5-48fb-9ffa-69ba25766e00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:44:37 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:00 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:44:36 GMT', + 'Fri, 28 Jun 2019 12:46:00 GMT', 'Connection', 'close', 'Content-Length', @@ -4149,7 +4908,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) .get('/deletedsecrets') .query(true) - .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036632835700621","deletedDate":1560366339,"scheduledPurgeDate":1568142339,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036632835700621","attributes":{"enabled":true,"created":1560366333,"updated":1560366333,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036664460803342","deletedDate":1560366661,"scheduledPurgeDate":1568142661,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036664460803342","attributes":{"enabled":true,"created":1560366650,"updated":1560366650,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036742269706797","deletedDate":1560367433,"scheduledPurgeDate":1568143433,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036742269706797","attributes":{"enabled":true,"created":1560367428,"updated":1560367428,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036761951707796","deletedDate":1560368144,"scheduledPurgeDate":1568144144,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036761951707796","attributes":{"enabled":true,"created":1560367636,"updated":1560367636,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036774298602180","deletedDate":1560368181,"scheduledPurgeDate":1568144181,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036774298602180","attributes":{"enabled":true,"created":1560367748,"updated":1560367748,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWTBJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelkzTnpZd01EQTRNRFV6T0RVdk9UZEJOVVF4TlRnME1EZEdORVF6TlRnNFFUTTBNVGswTlRSRk5ETTJNRGtoTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036632835700621","deletedDate":1560366339,"scheduledPurgeDate":1568142339,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036632835700621","attributes":{"enabled":true,"created":1560366333,"updated":1560366333,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036664460803342","deletedDate":1560366661,"scheduledPurgeDate":1568142661,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036664460803342","attributes":{"enabled":true,"created":1560366650,"updated":1560366650,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036742269706797","deletedDate":1560367433,"scheduledPurgeDate":1568143433,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036742269706797","attributes":{"enabled":true,"created":1560367428,"updated":1560367428,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036761951707796","deletedDate":1560368144,"scheduledPurgeDate":1568144144,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036761951707796","attributes":{"enabled":true,"created":1560367636,"updated":1560367636,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156036774298602180","deletedDate":1560368181,"scheduledPurgeDate":1568144181,"id":"https://keyvault_name.vault.azure.net/secrets/secret156036774298602180","attributes":{"enabled":true,"created":1560367748,"updated":1560367748,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDQhTURBd01EWTBJWE5sWTNKbGRDOVRSVU5TUlZReE5UWXdNelkzTnpReU9UZzJNREl4T0RBdk16UkNNelV6TkVKRE1qUXdORVZETkVGRlJUZEVSak0yUWpnMlFURTVNMFFoTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oIiwiVGFyZ2V0TG9jYXRpb24iOjB9"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -4162,11 +4921,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '58ca39b9-7784-4b04-b50a-4c36013694e0', + 'a0deb193-2953-4708-9da0-050cf4c789f6', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -4176,7 +4935,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:44:37 GMT', + 'Fri, 28 Jun 2019 12:46:00 GMT', 'Connection', 'close', 'Content-Length', @@ -4198,17 +4957,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'b15509e9-1f49-4084-893f-a923666b6600', + '20517aaf-82eb-4494-ae97-c4e5e3a67000', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:44:37 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:01 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:44:37 GMT', + 'Fri, 28 Jun 2019 12:46:00 GMT', 'Connection', 'close', 'Content-Length', @@ -4218,7 +4977,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) .get('/deletedsecrets') .query(true) - .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156037005065302933","deletedDate":1560370061,"scheduledPurgeDate":1568146061,"id":"https://keyvault_name.vault.azure.net/secrets/secret156037005065302933","attributes":{"enabled":true,"created":1560370056,"updated":1560370056,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156037026758407704","deletedDate":1560370705,"scheduledPurgeDate":1568146705,"id":"https://keyvault_name.vault.azure.net/secrets/secret156037026758407704","attributes":{"enabled":true,"created":1560370284,"updated":1560370284,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044578898402701","deletedDate":1560446082,"scheduledPurgeDate":1568222082,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044578898402701","attributes":{"enabled":true,"created":1560445805,"updated":1560445805,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044598025306659","deletedDate":1560446150,"scheduledPurgeDate":1568222150,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044598025306659","attributes":{"enabled":true,"created":1560445997,"updated":1560445997,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044616159608298","deletedDate":1560446194,"scheduledPurgeDate":1568222194,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044616159608298","attributes":{"enabled":true,"created":1560446178,"updated":1560446178,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044618915107349","deletedDate":1560446233,"scheduledPurgeDate":1568222233,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044618915107349","attributes":{"enabled":true,"created":1560446205,"updated":1560446205,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044658599507851","deletedDate":1560446631,"scheduledPurgeDate":1568222631,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044658599507851","attributes":{"enabled":true,"created":1560446603,"updated":1560446603,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secrets156035131601504355","deletedDate":1560351344,"scheduledPurgeDate":1568127344,"id":"https://keyvault_name.vault.azure.net/secrets/secrets156035131601504355","attributes":{"enabled":true,"created":1560351321,"updated":1560351321,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDQhTURBd01ETXlJWE5sWTNKbGRDOVRSVU5TUlZSVE1UVTJNRE0xTVRNeE5qQXhOakEyTXpNd0lUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156037005065302933","deletedDate":1560370061,"scheduledPurgeDate":1568146061,"id":"https://keyvault_name.vault.azure.net/secrets/secret156037005065302933","attributes":{"enabled":true,"created":1560370056,"updated":1560370056,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156037026758407704","deletedDate":1560370705,"scheduledPurgeDate":1568146705,"id":"https://keyvault_name.vault.azure.net/secrets/secret156037026758407704","attributes":{"enabled":true,"created":1560370284,"updated":1560370284,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044578898402701","deletedDate":1560446082,"scheduledPurgeDate":1568222082,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044578898402701","attributes":{"enabled":true,"created":1560445805,"updated":1560445805,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044598025306659","deletedDate":1560446150,"scheduledPurgeDate":1568222150,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044598025306659","attributes":{"enabled":true,"created":1560445997,"updated":1560445997,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044616159608298","deletedDate":1560446194,"scheduledPurgeDate":1568222194,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044616159608298","attributes":{"enabled":true,"created":1560446178,"updated":1560446178,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044618915107349","deletedDate":1560446233,"scheduledPurgeDate":1568222233,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044618915107349","attributes":{"enabled":true,"created":1560446205,"updated":1560446205,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secret156044658599507851","deletedDate":1560446631,"scheduledPurgeDate":1568222631,"id":"https://keyvault_name.vault.azure.net/secrets/secret156044658599507851","attributes":{"enabled":true,"created":1560446603,"updated":1560446603,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDQhTURBd01ETXlJWE5sWTNKbGRDOVRSVU5TUlZSVE1UVTJNRE0xTVRNeE5qQXhOVEEwTXpVMUlUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -4231,11 +4990,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'bbc4cd87-e448-4a5a-8f13-9af5a6a125ec', + '8fd1c34a-7cf9-45bd-b070-cb2f5ec828bf', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -4245,11 +5004,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:44:37 GMT', + 'Fri, 28 Jun 2019 12:46:00 GMT', 'Connection', 'close', 'Content-Length', - '3008' ]); + '2668' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -4267,17 +5026,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'b04b0880-c6b8-46e4-a2b6-8713fe196400', + '04c284ac-e8f7-4935-83d5-537f9bf46d00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:44:38 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:01 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:44:38 GMT', + 'Fri, 28 Jun 2019 12:46:01 GMT', 'Connection', 'close', 'Content-Length', @@ -4287,7 +5046,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) .get('/deletedsecrets') .query(true) - .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secrets156036582870903851","deletedDate":1560365851,"scheduledPurgeDate":1568141851,"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036582870903851","attributes":{"enabled":true,"created":1560365840,"updated":1560365840,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secrets156036582870905970","deletedDate":1560365845,"scheduledPurgeDate":1568141845,"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036582870905970","attributes":{"enabled":true,"created":1560365834,"updated":1560365834,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secrets156083455364402057","deletedDate":1560834630,"scheduledPurgeDate":1568610630,"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083455364402057","attributes":{"enabled":true,"created":1560834554,"updated":1560834554,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDghTURBd01EWTFJWE5sWTNKbGRDOVRSVU5TUlZSVE1UVTJNRGd6TkRVNU1qVTNOREE1TkRBMkx6ZzFSRFJGTWpaQlJrWXhNelEwTXpVNE5ETTVOVUUzT0VWR01qYzRRa0k0SVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLSIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', + .reply(200, {"value":[{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secrets156035131601504355","deletedDate":1560351344,"scheduledPurgeDate":1568127344,"id":"https://keyvault_name.vault.azure.net/secrets/secrets156035131601504355","attributes":{"enabled":true,"created":1560351321,"updated":1560351321,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secrets156036582870903851","deletedDate":1560365851,"scheduledPurgeDate":1568141851,"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036582870903851","attributes":{"enabled":true,"created":1560365840,"updated":1560365840,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secrets156036582870905970","deletedDate":1560365845,"scheduledPurgeDate":1568141845,"id":"https://keyvault_name.vault.azure.net/secrets/secrets156036582870905970","attributes":{"enabled":true,"created":1560365834,"updated":1560365834,"recoveryLevel":"Recoverable+Purgeable"}},{"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/secrets156083455364402057","deletedDate":1560834630,"scheduledPurgeDate":1568610630,"id":"https://keyvault_name.vault.azure.net/secrets/secrets156083455364402057","attributes":{"enabled":true,"created":1560834554,"updated":1560834554,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":"https://keyvault_name.vault.azure.net:443/deletedsecrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNDghTURBd01EWTFJWE5sWTNKbGRDOVRSVU5TUlZSVE1UVTJNRGd6TkRVNU1qVTNOREE0TURjMkx6aERNVFZCTWtJd1FqQTVRVFJHUVRNNU1UTTVRVU00TXpjNVF6QkZRamxGSVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLSIsIlRhcmdldExvY2F0aW9uIjowfQ"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -4300,11 +5059,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '582475d4-cf1e-42e5-964e-1fa6e4e92f72', + '6261b7ea-e3bc-4882-a686-a015a6e6f705', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -4314,11 +5073,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:44:38 GMT', + 'Fri, 28 Jun 2019 12:46:01 GMT', 'Connection', 'close', 'Content-Length', - '1381' ]); + '1721' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -4336,17 +5095,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '0cf841e5-ba63-4a60-af00-508839485a00', + '2228bad4-6555-4b8a-8d93-db08f7bb6800', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:44:39 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:02 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:44:38 GMT', + 'Fri, 28 Jun 2019 12:46:01 GMT', 'Connection', 'close', 'Content-Length', @@ -4369,11 +5128,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '3843202b-cca5-4bab-a921-9a2ef5c14b8d', + 'a6ee1f2d-479b-4e2b-a018-982270bcf453', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -4383,7 +5142,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:44:39 GMT', + 'Fri, 28 Jun 2019 12:46:02 GMT', 'Connection', 'close', 'Content-Length', @@ -4405,17 +5164,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '1b71a9c6-b67d-4103-b457-c3e6d5ae5f00', + '56644893-eb0a-4dd9-bd7d-e0cc31545d00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:44:39 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:02 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:44:38 GMT', + 'Fri, 28 Jun 2019 12:46:02 GMT', 'Connection', 'close', 'Content-Length', @@ -4423,7 +5182,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/listSecretName0') + .delete('/deletedsecrets/listSecretName-canlistdeletedsecrets-0') .query(true) .reply(204, "", [ 'Cache-Control', 'no-cache', @@ -4436,11 +5195,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '64f1c863-9311-4bf9-9794-288b9f135d56', + '8d9cd5f4-a261-42fd-8488-8673d6a131bc', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -4450,7 +5209,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:44:39 GMT', + 'Fri, 28 Jun 2019 12:46:02 GMT', 'Connection', 'close' ]); @@ -4470,17 +5229,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '9ad4c074-3738-41ab-916e-46946fa71100', + '7e240e0c-74e2-4c83-8721-f8e6c6ba6c00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHLQAAAC5wmtQOAAAA; expires=Thu, 18-Jul-2019 05:44:40 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:03 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:44:40 GMT', + 'Fri, 28 Jun 2019 12:46:03 GMT', 'Connection', 'close', 'Content-Length', @@ -4488,7 +5247,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/listSecretName1') + .delete('/deletedsecrets/listSecretName-canlistdeletedsecrets-1') .query(true) .reply(204, "", [ 'Cache-Control', 'no-cache', @@ -4501,11 +5260,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '655cf55b-07b9-4b64-b5b2-b1136b7bc4b1', + '9ca2d78a-7b95-4aa2-ace8-e11b40b8f734', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -4515,7 +5274,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:44:39 GMT', + 'Fri, 28 Jun 2019 12:46:03 GMT', 'Connection', 'close' ]); @@ -4535,17 +5294,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '6277a613-2998-43cb-bec1-e017f8ee6700', + 'c08db772-ac3f-46fb-8a2c-f57270da6300', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHGgAAAFpxmtQOAAAA; expires=Thu, 18-Jul-2019 05:45:01 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:03 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:45:00 GMT', + 'Fri, 28 Jun 2019 12:46:03 GMT', 'Connection', 'close', 'Content-Length', @@ -4553,9 +5312,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/listSecretName', {"value":"SECRET_VALUE0"}) + .put('/secrets/listSecretName-canretrieveallversionsofasecret-', {"value":"SECRET_VALUE0"}) .query(true) - .reply(200, {"value":"SECRET_VALUE0","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/698a6e7c4bd44a7c9aff777c7acf97b6","attributes":{"enabled":true,"created":1560836701,"updated":1560836701,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE0","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/e1e4f2c482c14e0292f3f7049ac9a17f","attributes":{"enabled":true,"created":1561725964,"updated":1561725964,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -4568,11 +5327,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'ec91333a-4996-49d7-9723-4d41453850b2', + '7a47d31b-33a1-4ef2-a4c8-6b1ade502d6d', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -4582,11 +5341,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:45:00 GMT', + 'Fri, 28 Jun 2019 12:46:04 GMT', 'Connection', 'close', 'Content-Length', - '236' ]); + '285' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -4604,17 +5363,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'ea2261f4-54c6-4c2f-9116-2535a2315e00', + '4c96f7fb-aaf3-473e-9453-c1a6867c5800', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHGwAAAFpxmtQOAAAA; expires=Thu, 18-Jul-2019 05:45:01 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:04 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:45:01 GMT', + 'Fri, 28 Jun 2019 12:46:03 GMT', 'Connection', 'close', 'Content-Length', @@ -4622,9 +5381,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/listSecretName', {"value":"SECRET_VALUE1"}) + .put('/secrets/listSecretName-canretrieveallversionsofasecret-', {"value":"SECRET_VALUE1"}) .query(true) - .reply(200, {"value":"SECRET_VALUE1","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/9abdb952793944b1b74a54b746ce2d60","attributes":{"enabled":true,"created":1560836702,"updated":1560836702,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE1","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/9ae984be115a40d881b07b10acbbbe92","attributes":{"enabled":true,"created":1561725964,"updated":1561725964,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -4637,11 +5396,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '61ea96d7-709f-463a-9af4-e12fa88622dd', + 'f972b823-bc3a-43e6-ae6c-7d072e89cda7', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -4651,11 +5410,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:45:01 GMT', + 'Fri, 28 Jun 2019 12:46:04 GMT', 'Connection', 'close', 'Content-Length', - '236' ]); + '285' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -4673,17 +5432,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '04d17588-d745-4f8a-87e7-2fd1d4281400', + '32e3f384-860c-4bff-b2bd-0c1bd2656800', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHHAAAAFpxmtQOAAAA; expires=Thu, 18-Jul-2019 05:45:02 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:04 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:45:01 GMT', + 'Fri, 28 Jun 2019 12:46:04 GMT', 'Connection', 'close', 'Content-Length', @@ -4691,9 +5450,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/listSecretName', {"value":"SECRET_VALUE2"}) + .put('/secrets/listSecretName-canretrieveallversionsofasecret-', {"value":"SECRET_VALUE2"}) .query(true) - .reply(200, {"value":"SECRET_VALUE2","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/3b6a19bc36ef42249e41e71f1c5733b5","attributes":{"enabled":true,"created":1560836702,"updated":1560836702,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE2","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/cc2db9c9fca6432db50d5b4712937745","attributes":{"enabled":true,"created":1561725965,"updated":1561725965,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -4706,11 +5465,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'bf3d9c94-8eec-4ec2-b595-045ff619c948', + '7945e4a7-a528-4215-a744-0a44706582da', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -4720,11 +5479,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:45:02 GMT', + 'Fri, 28 Jun 2019 12:46:04 GMT', 'Connection', 'close', 'Content-Length', - '236' ]); + '285' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -4742,17 +5501,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'e8eb9b66-64b9-4a88-8459-d31778196b00', + '5537efd2-33da-45f7-8a84-f73281646000', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHHQAAAFpxmtQOAAAA; expires=Thu, 18-Jul-2019 05:45:02 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:05 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:45:02 GMT', + 'Fri, 28 Jun 2019 12:46:04 GMT', 'Connection', 'close', 'Content-Length', @@ -4760,9 +5519,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets/listSecretName/versions') + .get('/secrets/listSecretName-canretrieveallversionsofasecret-/versions') .query(true) - .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/3b6a19bc36ef42249e41e71f1c5733b5","attributes":{"enabled":true,"created":1560836702,"updated":1560836702,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/698a6e7c4bd44a7c9aff777c7acf97b6","attributes":{"enabled":true,"created":1560836701,"updated":1560836701,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/9abdb952793944b1b74a54b746ce2d60","attributes":{"enabled":true,"created":1560836702,"updated":1560836702,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":null}, [ 'Cache-Control', + .reply(200, {"value":[{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/9ae984be115a40d881b07b10acbbbe92","attributes":{"enabled":true,"created":1561725964,"updated":1561725964,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/cc2db9c9fca6432db50d5b4712937745","attributes":{"enabled":true,"created":1561725965,"updated":1561725965,"recoveryLevel":"Recoverable+Purgeable"}},{"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/e1e4f2c482c14e0292f3f7049ac9a17f","attributes":{"enabled":true,"created":1561725964,"updated":1561725964,"recoveryLevel":"Recoverable+Purgeable"}}],"nextLink":null}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -4775,11 +5534,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '627fd377-5086-4ad4-b761-1adeef4e7c52', + '5a5ae758-4b9b-4172-86b4-3b234a212955', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -4789,16 +5548,16 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:45:02 GMT', + 'Fri, 28 Jun 2019 12:46:05 GMT', 'Connection', 'close', 'Content-Length', - '666' ]); + '813' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -4811,17 +5570,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '23db4f80-94a4-408e-8c22-6f0f1b256500', + '8707fa6d-cf6f-4329-bb81-711a66520800', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHHgAAAFpxmtQOAAAA; expires=Thu, 18-Jul-2019 05:45:03 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:05 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:45:02 GMT', + 'Fri, 28 Jun 2019 12:46:05 GMT', 'Connection', 'close', 'Content-Length', @@ -4829,9 +5588,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets/listSecretName/3b6a19bc36ef42249e41e71f1c5733b5') + .get('/secrets/listSecretName-canretrieveallversionsofasecret-/9ae984be115a40d881b07b10acbbbe92') .query(true) - .reply(200, {"value":"SECRET_VALUE2","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/3b6a19bc36ef42249e41e71f1c5733b5","attributes":{"enabled":true,"created":1560836702,"updated":1560836702,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE1","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/9ae984be115a40d881b07b10acbbbe92","attributes":{"enabled":true,"created":1561725964,"updated":1561725964,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -4844,11 +5603,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'eccb8fd5-c64c-447e-a71a-15970451325d', + '1788cf3d-8314-48c9-bb6b-294d227808fe', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -4858,11 +5617,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:45:03 GMT', + 'Fri, 28 Jun 2019 12:46:06 GMT', 'Connection', 'close', 'Content-Length', - '236' ]); + '285' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -4880,17 +5639,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'b4dd067e-9598-419d-87d1-1b8583176f00', + 'e5af4030-4e04-4a8d-84d9-f517a0a07400', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHHwAAAFpxmtQOAAAA; expires=Thu, 18-Jul-2019 05:45:03 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:06 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:45:03 GMT', + 'Fri, 28 Jun 2019 12:46:05 GMT', 'Connection', 'close', 'Content-Length', @@ -4898,9 +5657,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets/listSecretName/698a6e7c4bd44a7c9aff777c7acf97b6') + .get('/secrets/listSecretName-canretrieveallversionsofasecret-/cc2db9c9fca6432db50d5b4712937745') .query(true) - .reply(200, {"value":"SECRET_VALUE0","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/698a6e7c4bd44a7c9aff777c7acf97b6","attributes":{"enabled":true,"created":1560836701,"updated":1560836701,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE2","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/cc2db9c9fca6432db50d5b4712937745","attributes":{"enabled":true,"created":1561725965,"updated":1561725965,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -4913,11 +5672,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '625be724-39d3-4533-8aca-6caaa02b9d4b', + 'a501dc0b-773b-410d-a09b-2b30ee753de7', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -4927,11 +5686,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:45:03 GMT', + 'Fri, 28 Jun 2019 12:46:06 GMT', 'Connection', 'close', 'Content-Length', - '236' ]); + '285' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -4949,17 +5708,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '8bd19193-7336-41e0-966c-0b2d25ae1200', + 'ce34b7e8-8e38-410b-8b8f-f924e7c86c00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHIAAAAFpxmtQOAAAA; expires=Thu, 18-Jul-2019 05:45:04 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:06 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:45:04 GMT', + 'Fri, 28 Jun 2019 12:46:06 GMT', 'Connection', 'close', 'Content-Length', @@ -4967,9 +5726,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets/listSecretName/9abdb952793944b1b74a54b746ce2d60') + .get('/secrets/listSecretName-canretrieveallversionsofasecret-/e1e4f2c482c14e0292f3f7049ac9a17f') .query(true) - .reply(200, {"value":"SECRET_VALUE1","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/9abdb952793944b1b74a54b746ce2d60","attributes":{"enabled":true,"created":1560836702,"updated":1560836702,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"SECRET_VALUE0","id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/e1e4f2c482c14e0292f3f7049ac9a17f","attributes":{"enabled":true,"created":1561725964,"updated":1561725964,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -4982,11 +5741,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '649ed105-6ba1-4ae8-8fb2-f0fb03d3aa53', + '1fcc3803-b39c-4484-ac82-6aff6cd75e15', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -4996,11 +5755,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:45:04 GMT', + 'Fri, 28 Jun 2019 12:46:06 GMT', 'Connection', 'close', 'Content-Length', - '236' ]); + '285' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -5018,17 +5777,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'e82be456-cc10-48cc-ab75-416fe0dd6600', + '94fb2dd1-3257-41c8-b45e-b6c2141c7600', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHIQAAAFpxmtQOAAAA; expires=Thu, 18-Jul-2019 05:45:04 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:07 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:45:03 GMT', + 'Fri, 28 Jun 2019 12:46:06 GMT', 'Connection', 'close', 'Content-Length', @@ -5036,9 +5795,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/listSecretName') + .delete('/secrets/listSecretName-canretrieveallversionsofasecret-') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName","deletedDate":1560836705,"scheduledPurgeDate":1568612705,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName/3b6a19bc36ef42249e41e71f1c5733b5","attributes":{"enabled":true,"created":1560836702,"updated":1560836702,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/listSecretName-canretrieveallversionsofasecret-","deletedDate":1561725967,"scheduledPurgeDate":1569501967,"id":"https://keyvault_name.vault.azure.net/secrets/listSecretName-canretrieveallversionsofasecret-/cc2db9c9fca6432db50d5b4712937745","attributes":{"enabled":true,"created":1561725965,"updated":1561725965,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -5051,11 +5810,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '03a91247-937a-4855-8e7b-116178d2afe4', + 'c40a6e18-2e90-413d-b628-6804f6e36613', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -5065,11 +5824,80 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:45:04 GMT', + 'Fri, 28 Jun 2019 12:46:06 GMT', + 'Connection', + 'close', + 'Content-Length', + '448' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'f663f73f-3558-4a45-a112-a26cd35a7600', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:07 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:46:07 GMT', 'Connection', 'close', 'Content-Length', - '350' ]); + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedsecrets/listSecretName-canretrieveallversionsofasecret-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '121', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'adcf7865-4ac5-48d5-a91d-4124e9392c2b', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:46:07 GMT', + 'Connection', + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -5087,17 +5915,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '0d88d8b7-936a-4c4e-a126-93e601196700', + '2c397826-a46a-4cbb-9733-f68874f76500', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHIgAAAFpxmtQOAAAA; expires=Thu, 18-Jul-2019 05:45:35 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:18 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:45:34 GMT', + 'Fri, 28 Jun 2019 12:46:17 GMT', 'Connection', 'close', 'Content-Length', @@ -5105,7 +5933,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/listSecretName') + .delete('/deletedsecrets/listSecretName-canretrieveallversionsofasecret-') .query(true) .reply(204, "", [ 'Cache-Control', 'no-cache', @@ -5118,11 +5946,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'f14f14ab-b8f0-44da-8542-d08253c481a5', + '7bce9178-4f6a-4964-a843-db7f99f41c27', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -5132,7 +5960,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:45:35 GMT', + 'Fri, 28 Jun 2019 12:46:18 GMT', 'Connection', 'close' ]); @@ -5152,17 +5980,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '96c07d5b-8e16-470b-95a6-0dacff2c1100', + '20f188ee-8f55-4efe-9ecb-843929f16400', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=AsXGTur7B71Djk2KmEovJ0w_aSJHIwAAAFpxmtQOAAAA; expires=Thu, 18-Jul-2019 05:46:06 GMT; path=/; secure; HttpOnly', + 'fpc=AuRA0w6qmolPrBxwEeExI8c_aSJHLQAAAHUCqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:18 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 05:46:06 GMT', + 'Fri, 28 Jun 2019 12:46:18 GMT', 'Connection', 'close', 'Content-Length', @@ -5170,7 +5998,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets/listSecretName/versions') + .get('/secrets/listSecretName-canlistsecretversionsnonexisting-/versions') .query(true) .reply(200, {"value":[],"nextLink":null}, [ 'Cache-Control', 'no-cache', @@ -5185,11 +6013,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'ee458ac3-19f2-4b3b-9da7-fe4b93fb9bfc', + 'cf18e711-9687-4b76-bdcb-7f9fbdcf8009', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -5199,7 +6027,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 05:46:05 GMT', + 'Fri, 28 Jun 2019 12:46:18 GMT', 'Connection', 'close', 'Content-Length', diff --git a/sdk/keyvault/keyvault-secrets/recordings/node/secret_client__restore_secrets_and_recover_backups/recording_before_all_hook.js b/sdk/keyvault/keyvault-secrets/recordings/node/secret_client__restore_secrets_and_recover_backups/recording_before_all_hook.js index da6c8f5a15d6..a2d499a71467 100644 --- a/sdk/keyvault/keyvault-secrets/recordings/node/secret_client__restore_secrets_and_recover_backups/recording_before_all_hook.js +++ b/sdk/keyvault/keyvault-secrets/recordings/node/secret_client__restore_secrets_and_recover_backups/recording_before_all_hook.js @@ -17,17 +17,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '492705e5-ea0d-4c5b-9478-f76f623e5d00', + '42bd0ded-0070-4d27-910e-56ef10d86500', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHAQAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:27:23 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHAQAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:19 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:27:23 GMT', + 'Fri, 28 Jun 2019 12:46:18 GMT', 'Connection', 'close', 'Content-Length', @@ -35,9 +35,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/recoverSecretName') + .put('/secrets/recoverSecretName-canrecoveradeletedsecret-', {"value":"RSA"}) .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/recoverSecretName","deletedDate":1560839243,"scheduledPurgeDate":1568615243,"id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName/dd290962a4d54590ae5a42cce6002f3f","attributes":{"enabled":true,"created":1560839191,"updated":1560839191,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName-canrecoveradeletedsecret-/9e63ec65d36848dca7fd397ab0888a9e","attributes":{"enabled":true,"created":1561725979,"updated":1561725979,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -50,11 +50,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '7401204b-46e8-4b9c-a3dd-9a676ea80a27', + 'f01eb835-8bd9-4cf4-8545-89cfb29eabd5', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -64,11 +64,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:27:23 GMT', + 'Fri, 28 Jun 2019 12:46:18 GMT', 'Connection', 'close', 'Content-Length', - '356' ]); + '271' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -86,17 +86,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '1a102bed-789e-4ac1-a8e5-90da7b066900', + 'c7f2989f-1fbf-4352-87c6-efa190240c00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHAgAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:27:54 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHAgAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:19 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:27:53 GMT', + 'Fri, 28 Jun 2019 12:46:18 GMT', 'Connection', 'close', 'Content-Length', @@ -104,12 +104,85 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/recoverSecretName') + .delete('/secrets/recoverSecretName-canrecoveradeletedsecret-') .query(true) - .reply(204, "", [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/recoverSecretName-canrecoveradeletedsecret-","deletedDate":1561725979,"scheduledPurgeDate":1569501979,"id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName-canrecoveradeletedsecret-/9e63ec65d36848dca7fd397ab0888a9e","attributes":{"enabled":true,"created":1561725979,"updated":1561725979,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '83a7a24b-0f4b-4a43-9317-886fedea63ec', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:46:19 GMT', + 'Connection', + 'close', + 'Content-Length', + '440' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '115ccf09-d0f4-42c9-83ba-8a656a4c6800', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHAwAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:19 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:46:19 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/deletedsecrets/recoverSecretName-canrecoveradeletedsecret-') + .query(true) + .reply(404, {"error":{"code":"SecretNotFound","message":"Deleted Secret not found: recoverSecretName-canrecoveradeletedsecret-"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '133', + 'Content-Type', + 'application/json; charset=utf-8', 'Expires', '-1', 'Server', @@ -117,11 +190,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '2af7f59d-56bc-4069-9098-6a7512ec701c', + '2aada259-9a5b-4185-ae4b-be2474ecbb90', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -131,7 +204,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:27:54 GMT', + 'Fri, 28 Jun 2019 12:46:19 GMT', 'Connection', 'close' ]); @@ -151,17 +224,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'e7cdc852-cdb4-4631-96fe-053363b41300', + 'a6bf6c36-fb2f-4411-8f0a-2cc9aad56700', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHAwAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:28:25 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHBAAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:30 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:28:24 GMT', + 'Fri, 28 Jun 2019 12:46:29 GMT', 'Connection', 'close', 'Content-Length', @@ -169,9 +242,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/recoverSecretName', {"value":"RSA"}) + .get('/deletedsecrets/recoverSecretName-canrecoveradeletedsecret-') .query(true) - .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName/6c77e1b75b794979a241a1665f6a4994","attributes":{"enabled":true,"created":1560839305,"updated":1560839305,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/recoverSecretName-canrecoveradeletedsecret-","deletedDate":1561725979,"scheduledPurgeDate":1569501979,"id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName-canrecoveradeletedsecret-/9e63ec65d36848dca7fd397ab0888a9e","attributes":{"enabled":true,"created":1561725979,"updated":1561725979,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -184,11 +257,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'e5ef7957-198e-42fc-8d8c-0b31b830ad2f', + 'ca5e8ff8-2a92-41d8-a36e-32fcd8c43094', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -198,11 +271,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:28:25 GMT', + 'Fri, 28 Jun 2019 12:46:30 GMT', 'Connection', 'close', 'Content-Length', - '229' ]); + '440' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -220,17 +293,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'b38192d3-856b-45d4-9e4d-9dc260691300', + '74af8cad-5d53-4cde-b82e-2930ec646800', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHBAAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:28:26 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHBQAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:30 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:28:25 GMT', + 'Fri, 28 Jun 2019 12:46:30 GMT', 'Connection', 'close', 'Content-Length', @@ -238,9 +311,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/recoverSecretName') + .post('/deletedsecrets/recoverSecretName-canrecoveradeletedsecret-/recover') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/recoverSecretName","deletedDate":1560839306,"scheduledPurgeDate":1568615306,"id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName/6c77e1b75b794979a241a1665f6a4994","attributes":{"enabled":true,"created":1560839305,"updated":1560839305,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName-canrecoveradeletedsecret-/9e63ec65d36848dca7fd397ab0888a9e","attributes":{"enabled":true,"created":1561725979,"updated":1561725979,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -253,11 +326,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '2dd67cff-4e55-470f-ac0d-32735847184d', + 'e4403ef6-d0f9-4b27-8723-167154b71d82', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -267,11 +340,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:28:25 GMT', + 'Fri, 28 Jun 2019 12:46:31 GMT', 'Connection', 'close', 'Content-Length', - '356' ]); + '257' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -289,17 +362,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '4d1dd3de-8356-4052-924a-47e0f0611400', + '38e51130-b879-40e9-a4f4-66fe55ec6d00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHBQAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:28:46 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHBgAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:31 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:28:46 GMT', + 'Fri, 28 Jun 2019 12:46:30 GMT', 'Connection', 'close', 'Content-Length', @@ -307,12 +380,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/deletedsecrets/recoverSecretName') + .get('/secrets/recoverSecretName-canrecoveradeletedsecret-/') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/recoverSecretName","deletedDate":1560839306,"scheduledPurgeDate":1568615306,"id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName/6c77e1b75b794979a241a1665f6a4994","attributes":{"enabled":true,"created":1560839305,"updated":1560839305,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(404, {"error":{"code":"SecretNotFound","message":"Secret not found: recoverSecretName-canrecoveradeletedsecret-"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '125', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -322,11 +397,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '6ae65f95-6093-4661-bb37-fb223d9f2d07', + '4e871fb9-0ad2-4c2c-a385-6bfc0986b88e', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -336,11 +411,78 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:28:46 GMT', + 'Fri, 28 Jun 2019 12:46:31 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '7235b26d-9d11-4852-951f-6bf473456900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHBwAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:41 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:46:41 GMT', 'Connection', 'close', 'Content-Length', - '356' ]); + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .get('/secrets/recoverSecretName-canrecoveradeletedsecret-/') + .query(true) + .reply(404, {"error":{"code":"SecretNotFound","message":"Secret not found: recoverSecretName-canrecoveradeletedsecret-"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '125', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'b2809c30-65cb-4a6b-bf57-8292a105914b', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:46:41 GMT', + 'Connection', + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -358,17 +500,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '590e179f-0245-4ca2-985b-9bbef8881300', + '2cf94599-2de4-4980-a82c-a1b601da6000', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHBgAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:28:47 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHCAAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:52 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:28:47 GMT', + 'Fri, 28 Jun 2019 12:46:51 GMT', 'Connection', 'close', 'Content-Length', @@ -376,9 +518,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .post('/deletedsecrets/recoverSecretName/recover') + .get('/secrets/recoverSecretName-canrecoveradeletedsecret-/') .query(true) - .reply(200, {"id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName/6c77e1b75b794979a241a1665f6a4994","attributes":{"enabled":true,"created":1560839305,"updated":1560839305,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName-canrecoveradeletedsecret-/9e63ec65d36848dca7fd397ab0888a9e","attributes":{"enabled":true,"created":1561725979,"updated":1561725979,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -391,11 +533,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '24000f96-2cf0-42cd-93f5-5471b35c9dd3', + '02becc66-5bf1-4528-81e3-4a1099075b61', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -405,11 +547,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:28:47 GMT', + 'Fri, 28 Jun 2019 12:46:52 GMT', 'Connection', 'close', 'Content-Length', - '215' ]); + '271' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -427,17 +569,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '25a40375-9abe-472e-9496-3d99b39b6500', + 'df484f55-8550-4f90-8031-79475cb96b00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHBwAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:29:08 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHCQAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:52 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:29:07 GMT', + 'Fri, 28 Jun 2019 12:46:52 GMT', 'Connection', 'close', 'Content-Length', @@ -445,9 +587,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets/recoverSecretName/') + .delete('/secrets/recoverSecretName-canrecoveradeletedsecret-') .query(true) - .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName/6c77e1b75b794979a241a1665f6a4994","attributes":{"enabled":true,"created":1560839305,"updated":1560839305,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/recoverSecretName-canrecoveradeletedsecret-","deletedDate":1561726012,"scheduledPurgeDate":1569502012,"id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName-canrecoveradeletedsecret-/9e63ec65d36848dca7fd397ab0888a9e","attributes":{"enabled":true,"created":1561725979,"updated":1561725979,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -460,11 +602,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '4266d14d-0d70-4c9c-aed7-ec9660bc18f3', + '7c3f96eb-6f40-435b-9a8e-e7a9b70fc55c', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -474,11 +616,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:29:08 GMT', + 'Fri, 28 Jun 2019 12:46:52 GMT', 'Connection', 'close', 'Content-Length', - '229' ]); + '440' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -496,17 +638,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'e4452790-1138-443e-91dc-0e3ca06d6400', + 'a530d870-fee2-436e-8c9a-b56b5df76000', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHCAAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:29:08 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHCgAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:46:53 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:29:08 GMT', + 'Fri, 28 Jun 2019 12:46:52 GMT', 'Connection', 'close', 'Content-Length', @@ -514,12 +656,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/recoverSecretName') + .delete('/deletedsecrets/recoverSecretName-canrecoveradeletedsecret-') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/recoverSecretName","deletedDate":1560839349,"scheduledPurgeDate":1568615349,"id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName/6c77e1b75b794979a241a1665f6a4994","attributes":{"enabled":true,"created":1560839305,"updated":1560839305,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '121', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -529,11 +673,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'fc5b0bd1-ed22-4dec-8910-601cda14857d', + '90c61178-d956-4d38-959e-53b5362c3ab1', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -543,11 +687,9 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:29:08 GMT', + 'Fri, 28 Jun 2019 12:46:53 GMT', 'Connection', - 'close', - 'Content-Length', - '356' ]); + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -565,17 +707,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '4676d3c1-3efb-4dc9-818c-1c3105f06400', + '7e145b54-f13a-4a86-91f5-ec401dfb0900', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHCQAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:29:39 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHCwAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:47:03 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:29:38 GMT', + 'Fri, 28 Jun 2019 12:47:03 GMT', 'Connection', 'close', 'Content-Length', @@ -583,7 +725,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/recoverSecretName') + .delete('/deletedsecrets/recoverSecretName-canrecoveradeletedsecret-') .query(true) .reply(204, "", [ 'Cache-Control', 'no-cache', @@ -596,11 +738,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '8a8b49f8-cb73-48e1-bbb4-ebe182530296', + '12fd0f46-0bd1-44d8-8431-9462f6fdfcbe', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -610,7 +752,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:29:39 GMT', + 'Fri, 28 Jun 2019 12:47:03 GMT', 'Connection', 'close' ]); @@ -630,17 +772,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '452a7726-9f3c-4095-a723-2ca4f5581400', + '423e29dc-7941-44d1-b888-244a33cd6a00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHCgAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:30:10 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHDAAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:47:04 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:30:09 GMT', + 'Fri, 28 Jun 2019 12:47:03 GMT', 'Connection', 'close', 'Content-Length', @@ -648,14 +790,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .post('/deletedsecrets/recoverSecretName/recover') + .post('/deletedsecrets/recoverSecretName-canrecoveradeletedsecretnonexisting-/recover') .query(true) - .reply(404, {"error":{"code":"SecretNotFound","message":"Secret not found: recoverSecretName"}}, [ 'Cache-Control', + .reply(404, {"error":{"code":"SecretNotFound","message":"Secret not found: recoverSecretName-canrecoveradeletedsecretnonexisting-"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', 'Content-Length', - '83', + '136', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -665,11 +807,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'be0e1105-0942-4d38-ae50-bc3d958c5235', + 'cec67a39-0cdb-4b93-8071-f1cabdaf976c', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -679,7 +821,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:30:10 GMT', + 'Fri, 28 Jun 2019 12:47:04 GMT', 'Connection', 'close' ]); @@ -699,17 +841,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'd9b03841-173e-41cd-bb8e-81f29b055700', + '88cd10e1-b376-4bd3-bb91-22d7b5e06e00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHCwAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:30:11 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHDQAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:47:04 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:30:10 GMT', + 'Fri, 28 Jun 2019 12:47:04 GMT', 'Connection', 'close', 'Content-Length', @@ -717,9 +859,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/recoverSecretName', {"value":"RSA"}) + .put('/secrets/recoverSecretName-canbackupasecret-', {"value":"RSA"}) .query(true) - .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName/a97b965cd3d74649a52fd5f3f1d8ecab","attributes":{"enabled":true,"created":1560839411,"updated":1560839411,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName-canbackupasecret-/efac000080a24634a805a4f0d9f95eba","attributes":{"enabled":true,"created":1561726025,"updated":1561726025,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -732,11 +874,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '53a73a6b-4042-4753-a65f-f8ecbc286e66', + '5abc2375-bb2a-42fd-a74a-38a5c7dc52f0', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -746,11 +888,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:30:10 GMT', + 'Fri, 28 Jun 2019 12:47:05 GMT', 'Connection', 'close', 'Content-Length', - '229' ]); + '263' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -768,17 +910,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '73a7e154-715c-47f7-a2de-9299f0aa6600', + '5128eada-fd63-4d0d-88ab-7fcf9c226900', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHDAAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:30:11 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHDgAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:47:05 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:30:10 GMT', + 'Fri, 28 Jun 2019 12:47:05 GMT', 'Connection', 'close', 'Content-Length', @@ -786,9 +928,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .post('/secrets/recoverSecretName/backup') + .post('/secrets/recoverSecretName-canbackupasecret-/backup') .query(true) - .reply(200, {"value":"KUF6dXJlS2V5VmF1bHRTZWNyZXRCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLmpndGs1MmpHWFJnd1M4b0F0Q2xRYU43MVdEN3lNb0ZyaUJPZEJRaHJGWHJkeUZ3ZlN1YmdwZzl0ODVESlFJSi1zbG1HTEJnYUpNMjN1d1M1MVBXUGhzeUhKNzhCV0dKZWVpWHpQUUVhb2ZNSk5kWGdHU2xrMDRoRXhRUXBHNnhsQTVGaHpHVFpQM3dCbkJiY0o1S3FEVkd3clZJNXhzVDlHbGRkMXA3OU42MTF4bzRuajktNnVXcm5mcmVSYS05dDhMVXQ4N0I3UUY2RWRVYUpfa1RNUGdzQVBiTGVyVEUtTmxmcXZWUEZFdEdZR1VmRTlHUnp0V2hpNEp0OERJaGpHVnVmY0NNd3IwNHUtTXVCc2ZOdXY0ODBiVzJlQzVWTlRjS0JaT1VyNnBTampGV0g4T2tYaWtYNTBDOTltMEdpVk51TW5DWXFVNnlUazFXNWxFZVY2dy40SFV3YVBCZXZoM2pNZmd2Yi1QT3BnLlJGUUhYenp2RkJsMk1xY0JKWXpjbS1yQ01YX3JmYnhoRU5zaFVTSGhPekluQTJMWDlXVnpVVHdrSzRGZkhNWC1GS0tLczB6c1RudWwyQmY1c0ZtR2VLMkxadjAya0ZJeXNtV25iMmJOR21YNzNmaXkyeUppaEwzQWJhZDhGM3pFQmpwRTJ2T0dkTTR0eFNPZEJHOGRTd2gxSDk5RUU0OUlzVmItbVU5b1ZmRDhwUnB4alFRN1hVRUFwcjZiWkx5SEhCejJSNXB6Wko4UEY5SVJ0SDRUZnNHeXVuWDBRMUVIeG41UHd6OERINUpMSV9oTW9qd0lodENwRTNUdWw0c2poUm54NkE1Tml0T21Eb0Z5OFVHMURRRGhmLWVSVlpIUk43cHVFOWkxTDVNZ2tjZHpaUldlVGRvQkxxeGliOWtGSENpSHdwb19pTGx3dWk5RWJueDM1QURuNy1xakJ6RmtmSU9ac251NTJFLW82UHhJNTlSSFpqQUFhd2h5SzhMVS1MeEhSMTVsbld0V2ZPeGhMZEtrYXVCNjRJZnhLaHZFQ3pVMHotdG9zNWVuYlcyZXlMNnJIX0xtRU03TVU1VDZ5alJBUThwOGxISG1TeEh1ZThSelRRY1FEa081eElYTnZsaDRWOGFFUlQycnVjUDZHcExoUXRmNVdKa3NNNFlGUENKU1k4d0pJVzhVd0drQTBnYXEzUm82OEdQUnVrMm9VZm5UNUttb2NNT0ExcUJDZjBsVDFPaUFSVzRiampUOVpnYklvNTd6M2RXUmRneGtac2F1Z1dTR3NRS0pNMXFJdzMzRkdKeXNjdmR5LWF1MUVwWG0tMUFiR3VEb3NHRUpCLWNWRVBnOF9mVk9mTnJpbm9JNEhFbFZUUGZlLXBtZkZJSXJvMW9TdU5KYzNhV2VzY3VCaG43WjBWeHkydW01eUhxMGpMdGdwWFpIb2Z6SWh4QXNWUm5EOXJ0SU5hemd2TDNXVlhyWE9BamJsby1fTWVGVDdnYlRlcEZyRWt4MmdSNzNxbldGd0V3UzJ5QnlqNGZGMjNFZ1c5VWNjT0ZnMW1Fd1YtLXRmV01EMGRScUdIcEhydDFkMkhxak5Ya01QQ1Q0RnRnQVc3bDhxbmZ5aGR3azlFcXh5ckF0NXlfdkowZ1BYYnVyV3RzNVF4QjJqU0FkVEh3WFFwNHhRaUJWY1dRV3k2enlZMTFzTElLTU0zQ1c4R1VQYWduaF8yQzQ4V2JYNnRsck9nb0dOVDNLaU9EeWNZWnk4SUxoVDVEWFVQWmdvUVhFTHVUalRRNEpldjFFYVVDNTZaZHNXbmE5WENqVGpYT21ITjQzV01jeTZ6ajdXdXc1SU1MWjdxakZLTnZOTU93REF5ZzRaT2FvT3ByOWJTeEVHbTl6OGZjNDJzMFUzcmRBdlRCSERtcXBIaXAxRERwbWR5WUVYTXNJM01tN3l1d2RpdDhtUzhuMjRSTjdFSF9EUllKeFM2SVJiQmFRdXRMODQ3YUREOEJuTXJwOGIteUJ6b20xRWFITDV3R2ZLZnp3d2dMUnkxbm9BWDlaYVNwRnZDVVRwd0tPOVBEdnlwVFdVWlNFeFNSRDJITDhLQnYxdjlsMkpnVWk4czZkYmV0MjlSVmROVzFMZGk2bWFPRjcwYkZINEFvQ1hKbEVyUXJCTWtnbGZuQXlmSHVyVnJ5STl2dXlqR3Bka2ZWQXFHTjllSU5kLXVoRXowSldRV19MRTJBWGdSOVh0WWxYZTAydWxGcDEtaFZHTjlORi1lclV1MnZTV2NKVnEwQ1BRNnhsaURDZ3JtandiZXd3TnpPcXl2bGZEd2NYWXVfZThPd3JoWWt2UU5ONk1fSWF2VFRpUnJnZzU5QTJsZVlnLWE2SVlNSV9qeWtWMlh2OFprMzY1dExKN1U0ZVYtS2Y5eW9wWjZuWHI5SmJ5eVBMOWxIWXNYQUhVNV9EVVMtYnlVLUd4RXg2OGZFNWJzWk9IaWNKOEpnbFdpRGJDUGlzY2RTckNDaEZ6RjBBV09RdjEwRVBibGNSdDN4NGNWdjBveFJFdzFxeWdTRnRmSVNPVU02SFMtUE9ReTRUOTNrZllITmY2akptcTVxWmV4VUhvXy1OV1RENUtYbDdVR2FpSFh0QmxqQ1hZdktONHpBWS1IWWFQaUhvM1kwZHBkcU1oSEZoVGVJS1VMTF9lVWNSMm9reVBuYnEyajc4TjRrSGVxZWFienlZd0dUb2lHTWJwUTVKV3FCMmZGTEJMMkpSakxKOS1FdHl0dVctcm9LX2E0TzNBWWhUbkRaaEl2YVZWUm9xd3NjV2NvanpfdmROakExVm5tdVBMRG54NXFZVUlmUEp6Qm4yT2ExVmo0cy1qMWdSdXFyWnd6d0tTOTNrNUxIeE1qZFdCLVhiYjJHYVZDWEtxZF9Dd2JBVGFjZnVfY1NwUFR6VlYtZ0J3c2M2SXhzbHE1cDdUQVYwcVZBT0xQbk16WVJ3Z1JIOVRmdDZ0by1qNHRwQm51X2VKY05RUDU5azBJNjZONVI1a1k3QU1MYmQ1Q0ZwOW5acHhHS01ZS0V4cHJQak0yV0FraFh0Y3F5NnZDbHRwcjlvaUJFR3ZtNGF5ZkM5NHRyaEthZGl6Y0JhMWpEc2JWRVQybU9lN3RTT2JvT3ZPc0RQbUhGMTUxX3F5RGZtcGVZck9NRkNNSGUxbmhwbFpydzMzbWNnRG10V2pIUURwdV94UDJQSWo3V0I2VlBua3VodXZsWkV4MmEtUUdUcGthSDhEa0hDcHNfZHlRWXlkb1JIOHBmWjVmbjVGRDhvX3hpeGF6NEVFRmticmNMWlV0M1hoRzNDelFHMjM4bE1FeEEwazEtZ2pDX1JfYUZ3eUhtNWdoVzJKckNYMDdGQjRvaHNpYmF2Uk02YkxTd1RFblNHQ3UzSU9yVDVxZi1Pa29nRTRPdVdDOG9yZHBxazV0bUM5TG1ZUHVoUnhtU1FWd05WNzJOTndRZENJWndPWUdvSmhPRHhwa2NEQmlaRk96UDYxWjdGOFNIb2dldDVJMDR3eWstUHZuM2xwVTdSWnJlNWtpYnhTZUFzcFd0TlpGZlBWTjRmZkYzRkcweUY0c2NBVHJEWFY4Qlk0ZmtYSWZTMUtZLWxJSC1Samg4WGFrNGpra0dqTVpaTUFhclNEU0h1MnJ6c1ladDVtVmdPQXVJeGJwdXZrQ3NUM2V4ZlVVbXZGRVZGUU85OTRFdU1KV1c5bUJlb3JhZEVaeTY5RXJFRkRtYUhxQXY4TlluVXNjV2NqQjBKeEtBLW9PRzh0OEFxNVJVVjRULVQ0bXlWd1hra0JvM3dwWm9vWUg4bDRpNFYtZVpyYUZZSjlUaS1sb3RKTzhPRXVPX2wyZHdDOXB6TTNvUlZtQWJheGlmVDRrQllPTF9XZjZ6c0N1alQ2UjdpQVZqVURKeV8xaGxuRzJraFZsVjAtbDRxdnh1QU1Qd3BBTUE1elFSRHBoRzlCZnZ0MW1YOHVsR0M0aDRqYnJQQ29yQldfU08ybHZMb0FlMjJlLUwxOU14VGdKVzk2SU12bFBfQThIZFBGb0ZZVlJVb3pQaUt0MDRjaUlZT29Dd3V3WERfc0NZb1pVdnlKMk5Hc3VOOHZNd3k1M1ZTU2wyYzJTSVAyQl9LYkpwaUJZZW00Y3c3TDg1WjVoU0lhTElDUVdLbFBYQXZiQkhEbVE0WGdNYlhBY2lvWGJqYTk5N1lSUUNDamNPcUdnMUtNTXNncGVPV0g3bS0tX3J3dWRzRWszeE9FMXZVUk51c0lmaXhGVHZQMzczQXpqRGJaOUNDdDdjODZTc3ZqNXZZV1o3WDNManRON0xzY1AwSWY4WVhyZHFWYTRFTTZpbVVpbl82NnBWb0F0TzB0WWpzUVJHYkVlM19NOWtZZTl0SmpNdjcxbW5WbGlEbkdwVkdmNzJMZTBfUWtpTjlHWkgyM2cwT0NJeDFWSmVQUUp4c20xUldPMUJxSy1vV25MeV81eVUtcEY0enQzb1d6cVFYZ1A3dEFyRVRGT1pkcHFsbS0xT3hjd21aTVQwSEkxZV9aUXZ5QTFpZl9mUnNTLWNjSUtET2VaVWxoUlFZMnJIZW5td3ZUcUQyWGg3NWVLOEFGa2tGYnJaekttQUh3ZkJNcTRpcmtJN29rZ1hzdW1SLWxoek5lUU1ZNmg4QkVFOW5XdVE2TkQwZVlDVWFwVFVZcEFpbGV4RzRrdWZsR1JvYThBV1JzdjVfM3FuNWVXZzRpdUFxQnBVYk9uZXA0T0ZsRldtUEE1OU5vbzNvMUFCZmxVajBwY1FVOTIxb3IxQ0s1OVJzbkdOMEZpM28teFVXQnA1NF9IWHJqeDlsMzFvRHVjWU9lOEkzZnQzc2xtZ3hfYk1WZ2g1VkxlN055UWNwd2RnSERpcnB2MW8zeVVXRlE1ajdvaTR6SE1QbGM5QjVhNk1JNkp3ZFVfR0FIODRmMThpNlRhRlJTWFJWb09ncDM5ZkpOWGs1UjY0dmFDUFNVTmhUNTA2VjFRbGN5NGE5R0ZxRjJIeFhTR3Jvc1lIYm01Z2I1SXhYSmVtVndoRlVOLVhZZF9jR2lPOUI1WTk1NXJ5TnhFRmVsSk54c2lhSlJuOXFJYTUzd1ZuTU1mVXJGdUFYRU81YW5TT0pqdHN1SDE2UTZPV3QwT2ctbjdKRmZCNXJ2Q08tX0hnbFlmOWlFdTJvWHE3TDBRcFR0Z0VMRDduSF82ME55TGdYYXJmZ2JBNW1VU3RkLS1zVWJVTDFuWktiRjgzd29IbmdmQ1dKbTl3YlhCcWtYbG16Mkp0U2t3NnQwV3hrVUUzMEFWa0wzSERPSEw1ZUlBY0Y0SUpVQ3h6VjZlWFNiYkV6Zk5JZjBDTF85LWxnRTZ6VndaeHg0cW1BUkZ5TVhjemliQXJCMmZaRDVBSzY2QXFJN2lXSm1SRGZQTzAxOXVyUjk4U2VIOXF5em9iUHhyeUtfRlVFS0FHeDYxd0NvX0ZyamI0S1BfR3p4alk3Y3RwOG1XME9lNjJFM0t6Q2NoWWYtVzAxbXBjZUFnSUxlSGM0OFY3QkZNYkZGTkZBbFpocWt3SndpSEg5cFFqazdYaEdwcWw4MXQtYktHVzhnYmdDc2ZPSzVqdWlJWFk3OVYwMXlGalFrQWFIdGZjQlRWS3ZHSnRIaFNoVFQ3Y2txQzZCdEFpUGZLTmRreDZVZnoxV2dNSkRBX3ZlMGhGaEhQOUtzclBZLWxDX2hfX213VmRDVVBRU2xmSFJPam44bEhlSVZmRUlHZG1iU0VGMlgxYzZfOWpkTFdHSGhWa1hEbjd6T3daTVRDTkloWE81cHc5Q3pUVHVkOXVrQVh4cTdwaWc0X3hYQ2hwcmkzWDN4UmRjY3JhRjF5UkY3OWVrNGZmOUk2MEJMX01vRVIyZlJhR1dSb2UyZWZ5cnhHQWFHeTAzM0pyWDlsa0EwclZBS0h1WjhKT2pPVndGTy1XQkZFWVo3LU5zc0RJeFFueE8xTWtKN21FLjJvR2N1bmFzaWxvTmptWFg0NHdTblE"}, [ 'Cache-Control', + .reply(200, {"value":"KUF6dXJlS2V5VmF1bHRTZWNyZXRCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLlJQQ0RiSENGR0otU01Vdlpka1pnSlFvc1B3NXFfNUtDTWFBM3ZySHcxTVgtU3ltelh5Q3pFQlRVU0FoMHd1QTN3NGhZeFBzdDVTRXVCc0I1cXRtTlVPbTR6bl9HZDNVTjZkMXJKYmYtZnMwNmxmZXNWbXB0dFFacTQzcDhpOU9xbTFtZk5pbjFMajlMUUtWZ1RoZjhobkVjNnVXNFZaY0tacTNLdXphQWV5VjNyZTZ3Y1BIaGU2N1pic0dBa1R5WmJfUHVOdDJLSUlYUlhsWk0zcTJMU3V6XzJJOHBacDViQ2FOb0tMbDV3OVhmc3NLQlBuVHdTTGxUc1cwejQwMnNqMEFFRmIydk5NekxRWldONTNhZUlLams0WUI4Z01NdW5odld2NVNMUWotZGZoYjh1cElFQ3ozZ3Q2cWxmVVM3UWp5Vk13SzFMVENLYmQ4U01IdWdHUS53Q045dktNcUFQczI3aFVSTG1BUG9RLmprTTJFQ3VOWFpCNDFhSjRZNEdDdUNUZXBQdDhOZzJEWGQ2MklyYXVXcE01U2tVSUlLSE1jRTgzNVFtcERIb0EwVmNxOW0wd3JGMVk3MFhYZDZSdHBDWG9fZnBCZWg5aTZtWmI5MDNJV1lKbVpGZzJMQ0hFdUhNRE14bEhuRFlLMUE0QndZaGF6QktXZDB3UlU2S1dTX0R3dnFPc0I3VkxSNy1FLXZHRi11RFBlRy1STFdyTm5vMThYQ3NoWTJDdTRLclNrbm9xbTJJSmwwX0lXaWpISnBnS2ZSRVkwOXZXMjRUdVp2UmFVZVlSWU81cHItSkZsUXJDeDJwOExTazlSUnMtdXpHLVdtTW1mei05a0dLQmp4Rm5iRzZQZ0Z1eWxxTVpDeFlkRXpFWUxWa1JPN0FVVjNsaVhWQlk0VjZTQW1ha21qcU9TYkNDSXJGZnI4OUhIZlRramNKaWNFaktmVWJJSnpROXhkd0hzSUNEdEEwNGtSeVRTNXZnLXBjcDN5X3ZvQllXMWxDYUFiZWMydE9Ga0xjSUkxREc1NXpHX2hhcEN4UHF0eXMwVG1PeEhUUndNdk9acnlhZ09xcjAzY244VDZJR29MZUVZbUQ2WF9Ceml2RXJGNWp0dUVTRHRZMHlZQ2JsNW1ZcTE2Rk1MMmgtWGNlelI1Q2RiRFhtTmJadDYybXR2ZU0tV2JsSUFqTVVMODRMX1VEM21fbjJGYUdFTi1PbGt0dDd0elE2bXF6eFdBOW9WMjQxRVU0RXVwVG5DSTVsYkJKckNiUFRfUThfVDhMVldiYmQwbVF0a3hRNlpOeEpvNkZzcVExYk93UmxQSld0dHZvM1BVbXltbFZ3VHBfOU9xQkVDSmRqa3RTc3k0cWRVX0lRNFN3bUo4azRkLUxkeFNRcU1vaWs1TnFXdkxRaW5zZFNIS3Zvb2NkLUIzUzVwNmxRWWhDMm43UTRUd3k2cDZvN1pVQVRvWFBUZzBMSkZSNk1YTWlsaXl3YVA2TnVCX0lQUVllQ3VWUFhaV1ozVHYtNE1yN2RmQWh2RGxvbExuMVlRbUVJQkFGRk5WaVIzSjVSdlR4NG92cjZuNGRXeVRtNnp2bzYybWE2MjhCR3pVajJrcHlrdV9FZW5wM2FLb21UbHNYVjlRUmNYRXR6S1RlNUJvZXI4bklISEZfb2VFOFRkX0x1OXk0Yk1Ral9CaFJXYy0tNkY5aE53bzYyaG8xb2ZPOEZ3Sks2aEpIRnNaQXRudUVfZUpvMERuSzlzR1pEUzhRc2tMdV9FR3ZEZzFnM2VnaUx2bkh4ZDVGbFZOWE53U1FSNWNZanRMQW9BQTFGNUxjYm81WFZWUERfN2pzQ1ZuZlJOQlRfRTRCQnZXUnQ5OE4wWHl2QU42SFVwa2pweF9JZWVMdWEwQ1NXM0psaVd2QWtTNEh2eS0yZU5UNk1NcE5CZkd5ZFVUalc4TXJqNERITWlCNjBuNmJNQTlwVWZvaDg1MmN2eGU2ZHp5OE55VW5QM0xTZVNFdG10Sy1XLV9uVGVIS0lRQ001SFNIOUlkM0tReXRpZXZuUWR6QzJzdVZtZXFpeEZOS2xUUXlGQnV3dkVkWWREZ2lYUHNHT05BN1BiZTdrYlpyMjJNNmVabXEwaGZVcTI5N2FlSXV0UlpDbnYwR0lLQzhZWjJ3YlAtSGFuQWQzaWVMV3RYUHlWVEtjRGpTLThIemxLRXpBRlVaNVFsY2JFUnkzMVZPd09sSTkxbmVFRkN4SE9OX0Fkci1lNVZNOVpCTG5SWGFvbVVFekE1LVkzT3lUbzFlRjlXRldTZkNNaTJEY0I3M2lTdktXd1pPUk9nQVNqUGdfNE1nMENOX293WnVBOThSbG1UbGVINGVKTDdYYkdpQUdOeXBjMEdUVll4VEdMNFdNMFdQU3JxM1ZvVFVtMndGckpOcEJaQy1JLVQwR3V6a0Rta0dtSmhGVEtSOGVLMVZwRHRQWEpkT291emhOdW5nTUhYd1RTSy00UHpfcWRLUG90MWE4TDZBYlBQaWE4aWVCZlRRRVJ4YXhPT3R0dlg2Q0VCZWxGOHViT0gza1pTOFkySF9jdG9lWXVqNFFzdExuWWpUUm5PQ0VScjFsOE5oNUFVbDVQSk1tOHc5ZVBISVg3NE9WeFZqLU8yZXdiVDV1VVhOdFRPVXhLRkdBSFFHd2NfOGplMTZ3S0FZWmhyQm9ldHhWQ2VlSHBSdTRyTE5XeWptSER0QVRjNVI2aTY1bmQ2X2pDdE84dDZlV3lsVlAwYWktaEQwTkZGd1VZNnJ5TzBWTXRiamZaZkZ4YXAxRjhUeTBvT1pFOV9xZUFqa0ZBdnpXWm1LLVhiNVdFb1pucFJDaFpjSmVhMkE4X0FLNjREeExUTFlua1FzMHdhdGphOFJnWDNYaEp1TGdqUENxMDRsZWM2M3hvc25NSkNkeXBCbWZsVlVpRnFhVkExQndGR2hlamNDb2VaYTliUDJVbmh5LUhFSllGTEJwclZxeGRqWmZtYl9CSmdzVFROWTRuVzM5QzBBby1RQkV3cm9lQTZvZGktWjlTMmp2N1BzMS1zZnN0elJQWHRZMjZ5dFJmTGp0TnpLb2xUQmhvQUVIVW9jOU05RzhGRW5vNE4tRVRhaDVZZkNuLUpCUHVlZDBiOE9TamRiUUNKMllLMWg5TDB1YTk0Z2NhcEhvTnRodVNzalhHQTh1WFhiUlRiOUN0X3pLTFc2bkJ6cVFnd1ZjWko1SnB1NDB2ZUs3VG45b3IteTRNT253dlRCT0pFTUpiMmhqa0lkQXZOajZIWFB4QmJCT2piUGRCNkYtY2YxVnpSVENwajZPVm8zV2R4bzdCNk1pWnZ5YkloVTZHVHA1Tl84U3oybjlkeFMwZW83eG5xZC1YUU1iX0pFc1NiYy1PTGY4cHFWeTdudXNJTHhHR0ZkaG1jVXpTSmw1TnJ5NGgzWkxDeVJscm92b08xZEJIWTc2OVhrcHR2YUhDWU8wcG9saE9GQUdvTkg3TDJYRnpTY3BnWU8xcTZtT2JOY1ZsM3BIOHhDOWQxTWt5alZJQ0RXX0M0YU1CRDNyVUlDNHROUVFXTl83cmV6TUFXX09HNE1NeDRfTzZqdElnOEF3MW52cHo3REI3VGxtOHVfV2dwMjVUd0VteWUwdmNuVGNYclFTWE5XV0ROSFZFeEpUQ2pRQUYzQjUxUm12YzRTTDRJbWdrWEhzOVFnaW10RHRHS2tkMFlqZ1N3SVpHWXBQMkpYaWRENDFYZVRWRWpZaHZmN0RTV25MYUxJOE04eG9jQXdrYWRRUVk1LWhkQXVZSU5FUDN3SElmNnVKd2s3TkZEWGVWODh4M1FTM3REdWhJYU1VaklTNmxPam1meXZLZ3dRQXdQZ2ZhQ0hmaEIyUnctdTJFdHFRZlc4QXVUTTVCR3lDaGl0ODB4d2hkZTBnb2pweU9KYWx1QnNRaHBSeTZNaU5rY2ZsaktzMFNPWElVSWFCS0R3VXhleVZBSXZmbklzMklQV0N5U3BxSm1BbGdUSmRmN2RvZlBmMHUxcWk0ODFpeHdXdDlCeFJ2RGx1RExRdUlDTGl1c0MyNENqbDJzZmFkVnNXM0tkM3J3NlVJX3B5eG5JclpzOFlFUFNGbmRSZndxQjE5R3ZwMy0wbS1sdmRZU081ZlFwN0FNRkw5MEg3RHVYSDVMYW0wcFFqWm12OGY0OC1NVHBKd3hwdWFBa19QSGQ4ZVREaTdVZmJTOUFaaGhUd0Rqb19zRU1mSHZnNmkyMnlKZFp4TnlNT2oycG1xUldQbUlxQm8tV0ZxOXlGYkZRVzZyc25BUnd3ZmthN2pOZU00bW9hLUFUcFVKMmJnNmV6UE92dFZzUThJOFhZTDNEX3FtRGxfZUU4Ml83blFidmlaQmk1RzdYTU1tcWhqSndIUTB5N2RfMzlpZ3ljdG1EUUFjY19DTVo5SGk1Z251VEhySTFLdnlHYTBsbGxPclBsTEpKdWVLbElxN0pWc2NZX1hOcU45cFhMQW00UVg1c3NhZFFTUnZPOHpvSnRQYldBc1Y1Y0JmMTg2bEFkYzNuaElBN1QzY2Z2OGo4MVd0ZUFNa0d4OS0wR0QwclB5czNzUkJzcHM0M0l4VmZ2SkJJS3U5dDVGM0JuVUpSUGNlMnk2OFFxQUhDOHZaVGstRWx2Sm9SSkNSRXlQTlhYeEgyLXFQTVpEN3NFMmUyMG05RGFYc09INXVmcVVxd1hjRUozeVJNblpOQ1RpNmcyVk9sYmVqejB4cXRSTkItZm1PSFJDR1FVOXhqQkdsLWlGc1pLbnpjY1IwY3p6amVCNUVBOS1tN1NvT1RjZW90akhFOWt6eWNIYmlTUzVueHc5LTFtOUcxdW5CMDIxMk9aSVVkS0xTdWVzdnVITmFvUm5Zc2pvZHhVTmRpWkNZbF9NZjFNcGw0WnQtSHRwcDZhZGhqNlhMSUpldXFKa2ptVWlrRUo0ZlVLNGN0bnpXU1VzV2xsSk5CZFg5Sm1ZZ1d1aTZWZDhiQ0wteF9Ua05QRlRxRDVMNi1LT3hMSjRUT1dPeTJXQ1Y2RVBRUDdxR3NqVGlNNmZGQmJ5NkVDR2JfcnZYcEpIenEzZGkxVE9yMFdOOHlONEl3QnpZYnJEcUVPa1VKb003U3lvTU9DbFBpMUJGZDJOWWpDbm5yNlFrbFA1bkNOSEV2X3BRaWMzRXZ1MXo3VVNjOXNMdXZJQnhiUW5QbGZ4bEQ4UTU4M2ZCX0FsM0toVEhMZkVIQVBMbFRsWmpfQkFSazctOHZtVm03ZjlwVkNPek5rMkQ4Q2JwX0pPSWhKNGJOUTV4YWU5cmotTWJ6dlZycVJLaVJwQWU3UTUxQUdZajdsYVo2T01nY3hIS01PZHRXam84OFBfR0wzOU8zRmwybTFvbTZUZFdtR2Nwb3JoVlJZdU5GYjItdGpFbkZpanVESUNjVUIxZU9lSERONWYtaUdYX1VBeWVscWRiYnFKT1MtdjlYWnVPSXNRTGd4ODFMOUxKbW9xNHVaeGZSUnc5OTBxMW5OWDNLWmc2VXNaeWZoY21PNGNqQnNFZTVzSTZfZUMxYTVNYUNlME1DS21VckYxZWlGU0wyZWt4bmxPZ0E3TkIwVFpCWElqa25tSF93WjYyRWJPTGkzVWFIckJPa3lZc3ZneDJtZHNkblNHWmdGSE1MVVNTZ0ViS1UtV3lXT0xVQkNJSHhSb2FCbEdfQmVIR25pbXlzMVMyRFIxV0IySEFjVENxcWl2R2lHajlKS29aUl9CWXJaUEk2Y2FGUzhZZjIyVHNyZzZnbjUwNEdabXVWekdoTEVBRFNYUEZlTFRSem9MYUFHTngzVGJNWUYtOGQ4VV95UDg3cUNSWEdIa1ZVVmN2cDVIUENXZkw1XzNnemNJQzhhTU1NTVAxNHlpZm1LZVlETUZENGNJMnRaUHFvZFpvT1huX3I3ZHhGSVRhSzBTaUNiYVBHVXdMVmRlQURCUU40dlF5TDNLajVlNGVEemV2bDFUN0V5ZHVNTEoyb1hjOWJmbE4wal81ekpWOXNoX3A1STZ0N1RKMVdHeWM4Wm9YaFI2WENFeHdqMmJGdFkzQ0ZBc2duSFUwMURWVmV1TDlJcjMxQ1dUWnM3MlN2Qy1qV2NiSGJsRXcuX2FMREFxRXpFOUw2NXh6RlN3VDVSUQ"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -801,11 +943,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '7f3dccf2-698d-4dfd-bdb0-dd641e11f028', + 'e1e3a38a-1652-4349-aec0-5b30ae0eb59f', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -815,11 +957,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:30:11 GMT', + 'Fri, 28 Jun 2019 12:47:05 GMT', 'Connection', 'close', 'Content-Length', - '6259' ]); + '6402' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -837,17 +979,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '52649bed-6ca0-4c41-b490-f902e7391200', + '3e9a2099-0234-4d89-8128-0d841efa6800', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHDQAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:30:12 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHDwAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:47:05 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:30:11 GMT', + 'Fri, 28 Jun 2019 12:47:05 GMT', 'Connection', 'close', 'Content-Length', @@ -855,9 +997,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/recoverSecretName') + .delete('/secrets/recoverSecretName-canbackupasecret-') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/recoverSecretName","deletedDate":1560839412,"scheduledPurgeDate":1568615412,"id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName/a97b965cd3d74649a52fd5f3f1d8ecab","attributes":{"enabled":true,"created":1560839411,"updated":1560839411,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/recoverSecretName-canbackupasecret-","deletedDate":1561726026,"scheduledPurgeDate":1569502026,"id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName-canbackupasecret-/efac000080a24634a805a4f0d9f95eba","attributes":{"enabled":true,"created":1561726025,"updated":1561726025,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -870,11 +1012,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'e5f11ba7-5229-40a7-8087-30686d534c8e', + '864f3207-0468-42a8-82cc-1f043103c7df', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -884,11 +1026,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:30:11 GMT', + 'Fri, 28 Jun 2019 12:47:05 GMT', 'Connection', 'close', 'Content-Length', - '356' ]); + '424' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -906,17 +1048,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'ac0601c8-c738-475a-b69b-999ecae31200', + '7e240e0c-74e2-4c83-8721-f8e6e7c56c00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHDgAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:30:42 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHEAAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:47:06 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:30:42 GMT', + 'Fri, 28 Jun 2019 12:47:06 GMT', 'Connection', 'close', 'Content-Length', @@ -924,7 +1066,76 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/recoverSecretName') + .delete('/deletedsecrets/recoverSecretName-canbackupasecret-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '121', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'c1051496-57c8-4884-a775-6a338a1d132e', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:47:05 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'a6538e26-a1d0-4607-a231-5240cea86a00', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHEQAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:47:16 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:47:16 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedsecrets/recoverSecretName-canbackupasecret-') .query(true) .reply(204, "", [ 'Cache-Control', 'no-cache', @@ -937,11 +1148,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '379f5924-e04e-4992-af9c-7a9475bb837b', + '6fd60abc-ed3d-48b1-a226-ebc89f5c6569', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -951,7 +1162,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:30:42 GMT', + 'Fri, 28 Jun 2019 12:47:18 GMT', 'Connection', 'close' ]); @@ -971,17 +1182,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '49869f39-661a-418f-becc-5b3760416200', + '0968f313-7f06-4b28-bd19-8b64ad4c0b00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHDwAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:31:13 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHEgAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:47:18 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:31:12 GMT', + 'Fri, 28 Jun 2019 12:47:18 GMT', 'Connection', 'close', 'Content-Length', @@ -989,14 +1200,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .post('/secrets/recoverSecretName/backup') + .post('/secrets/recoverSecretName-canbackupasecretnonexisting-/backup') .query(true) - .reply(404, {"error":{"code":"SecretNotFound","message":"Secret not found: recoverSecretName"}}, [ 'Cache-Control', + .reply(404, {"error":{"code":"SecretNotFound","message":"Secret not found: recoverSecretName-canbackupasecretnonexisting-"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', 'Content-Length', - '83', + '128', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -1006,11 +1217,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '80f9cc8e-3413-43a7-bd53-9d0e095ea965', + '8f044034-c250-489d-8943-da3d00ae496d', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1020,7 +1231,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:31:13 GMT', + 'Fri, 28 Jun 2019 12:47:18 GMT', 'Connection', 'close' ]); @@ -1040,17 +1251,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '7132d0bd-054d-4d60-94b0-f29f8ef06900', + '51bbc777-d92e-478a-93b9-1581defa6600', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHEAAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:31:14 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHEwAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:47:19 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:31:14 GMT', + 'Fri, 28 Jun 2019 12:47:18 GMT', 'Connection', 'close', 'Content-Length', @@ -1058,9 +1269,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .put('/secrets/recoverSecretName', {"value":"RSA"}) + .put('/secrets/recoverSecretName-canrestoreasecret-', {"value":"RSA"}) .query(true) - .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName/8185a55ae5524be8b9c7302f4b3ee8d5","attributes":{"enabled":true,"created":1560839474,"updated":1560839474,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName-canrestoreasecret-/ef2691dfb4c840749a82aed314462995","attributes":{"enabled":true,"created":1561726039,"updated":1561726039,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1073,11 +1284,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '1dc168fb-e52f-4143-8d57-d19437ed6222', + '8158e47d-e0d2-4168-8188-d35c6944728c', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1087,16 +1298,16 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:31:14 GMT', + 'Fri, 28 Jun 2019 12:47:19 GMT', 'Connection', 'close', 'Content-Length', - '229' ]); + '264' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") - .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', 'no-cache, no-store', 'Pragma', 'no-cache', @@ -1109,17 +1320,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'e7cdc852-cdb4-4631-96fe-0533b7ce1300', + 'cdd75623-e9bb-4a5e-8c29-c396c1b47a00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHEQAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:31:15 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHFAAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:47:19 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:31:15 GMT', + 'Fri, 28 Jun 2019 12:47:18 GMT', 'Connection', 'close', 'Content-Length', @@ -1127,9 +1338,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .post('/secrets/recoverSecretName/backup') + .post('/secrets/recoverSecretName-canrestoreasecret-/backup') .query(true) - .reply(200, {"value":"KUF6dXJlS2V5VmF1bHRTZWNyZXRCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLlRlaUhPaVp1eDdmZVNxWTg2MjdUM2JJRGVCZkE4S1BORy1YOExZSUhjbVhCR2ZtSW9DOHN5MFF5bkdPMm5nVVVVZy1fTWFtMGwtTndCQ2M5b01tRDQ4QnU0a0RjTnhzUlNxYWtTRGJ3dDRkVlJTUUREdEFPY3ptbnI2ZzRnb01LSGMtV0dfd3ZfSTQyQmtrTjNXTV9MdXFTNW5OdTBCWkRQd3YwTXB0aUVPV09qd2ZGblV3RmdWRlBTZGRSS3dIcGFwWnZGZ0gyaVNWSFp2RWVIMklPMTI4bEVSVkc1NjA1ZzExSGdlNE5DY0FybXF3bnh0MUNSeUZ4NmViSWN1elVRa183T1FtakQzQTFGQlVDSDdxZl9YcjRtaXF6Z0gza3dqdW9BMTIwMkpGQTAxY2tJbVQwbzZXYklDLXhPMUg3NHFLQWstY0M3TjRUaDd1cWNjTWJhQS5XREF2Tm1YaFhLQmd6cVEtSXVldllnLldWb0xjaWw0ZW50WExabEJyelNDZzh1WlB3V3RwVGRpZ2I5OGctd2hiRzZnSHJCSjFHSWhQbk9fYzNvZnNXRXlucWJqbk1hS2F3MDFzSjgtMzZyQ3lKRFdyRkhRcjlXTkc1TlQ3TlM3ZTJjdGtCb2ZUQlcydjYtTFJfSTY5SlZWREV4aWMwTEdxRVRobzVlcmJZb2ZDYWRMVk5NUGE2azRiYjVQZmc3eHJGeWliSGd3VWZ5R2ZtOXpnd0Z1ejgtSUpndUMxdUFEZ2NpQzliaENpLXFLVkM3aE1xRmxhZzM4ZEhfMy01dEJnN09yLXJFWjM1Z3AtZXNkZkxsMFNDVkUzX3NVWkV6OFpBd3lBbjkzblRPQWVFeTdOV1RVQ0V5dFh5Q3BJbmxhTlVVRXBHb1JCUXNLMDhMZTg5ZVYtN0haUE5DRkM0OFk1VmtTNThvMEJhNTFzT2MtbmhfazNnMmstMjQ0OFN6VXF0YlVHSWE2aWphdjRKSUpnYlJUR1MwQjJBWnZ3ZFRVX0ItUk9lQTM4UmMxcWVuSUJxc2tzVlZDZ2phVnY4eXV1NTdrVWFXcWxIR3YzVWJMbGEyLUNpNnhBOHNjcHJwVXgyVDFacVNlcVhHTVoxY01nR1dvcUtjVEREUGdiZEZRaXpnVFRUWTBKRWkxSGNmaS16UzljR1pTU0x1VS1nNEQtdTNQNFhJSkRuUDhCZU5NVWtSTmx1Q1JzbjVZV0NBQlR6SGdrRDlQZTYzd05xUmdObU9iaTNEMWtKTHNXMTVKd2xyb2N3X2dnN1VxNTl0WWtUZkluQ1hrVTN1dHdqOEZhbDJ0TTNjWHZtSjN4UldiNUpNTUJZWDBsLUUyNENtcFBKUUFCV01nRnY1VHppZGVFZFEtaXdTX3Rrb1dzclJJaWliX05tVGx3TDQ5VnJZbFFkbjNMaFJuc2ljQ3g3YUhpdkw1a1hrMXRLT1pfRjNoa1prNkR0VzJjMDUwcHdacGJlaVU1S3J0SG56SlI3OFY0OVNqVURiRkZQTlRHZUVyRVVFWlF1Q0V4RHZuZ3hiRWxuQWZrclEzUDdzODRWUWg0cHk1RERyZnBzd01za2ZqTjFiX1JFV18zdUpVYjR2NUNBNTlQYy1ITHd0Qm1aRmxyZEp1VDFzalNtYzB2RXJCbzlDeW81WlFZYUJ1OWhJNU1xN0ViX2dGYUdyRUZ1RVY5dzF2N1VBZzNRYVRNM1E1OHdENTRqWk9XVXI0V3p6TVBpRXdYV1g1SzZOZHJodU9CSEFVWnZlMEJRUWk3NGtvTExZR1JzTVdaSEdtdGZlWTcyeDhIVGRkemtDbUtBazVSVVJ6UHZiTWc0OW5GMy1PeWoxOGQ3WWtxZEplZFRhMUtaak5pTDJOTkF6LTJlTERkVVZuOEJ4c05mS1JlTHJjdXRPQkR6V00xcGtXN3NpTUk2TnhaQU1mUXF2bGR0SDZYVXV0QkkybklpWFppQVFLVlQ0bU15NTNUbVg4WkRKUExHQ25WN1QxX3h2aGZYbmlJWGRhaHJMR2Y2OFV1MFZwSFp5aEU0Vkw0UzE5aDJmUTczSnNqLWYwN2stYXphamRuUlBGXzRRT25QRHRRUmJqRURqbjNIT3Bkd0xxYXVpcTdTLTN1QnBzVFBwdXBXeVhMcVR3R2Vza3A2QmdnTEthSUNjdEN6ZldIVjItb3VldENMcm1DNEFOODRpUENrekVVelpBS3VyTGVXR29MdFItbTNGcWhRalVYcEFjdG1BeVpCSGVZNURWZHlPeDlnQzBBcTE4ZWlDQjk2QTJIOUMtZV9pSVhuYXJnMGtsYzhrakRGUUppRzJIMmF3U1V2RDRaVEZ1ZHJVSm0tSFBBNnJGWG1hVGc3UHgyOEw0aVVfVnZ5dGZUeWQybGRmQ0drb3JyejRqUENhWDFJZlFOU2FPbW9FeVdmSlpWVm9KNzN5MGsteVJRcGtpUVgtQXJUZVg5Rlkzek84LWt0LVlONVJqRGxHeXZmUzByRjhjZUJGZHdSZlBPbHdsa1M4ZzB3ZDdUN0tPQUdLZUIwNUVCN2lrYXd6RW44LTFGdEFLQjlJUVNlWmppVVFmdzlnSDQ2VkxSNUVaRHpNaGI5RHV1NEZXQk9IS2sxbTk2dUx1Wmotdk5pUk9sa281S1dqMlNaX2o2UFlOSXFQN3FtOENoSWlBaXYzbnVmMnJONkk1Ui1JNTRIZ0YwR3VCWXlWdzVUQlNqV2FEQWZRcWQtU3BOSm5mTG5QU3YtaDh1ZGRST2tNam92OEUzbmtZOFJ0RDV4WEI2bWpQYVM4Sk4ydEJKX3ZYQmU2Y0psOWlZSzdxY1U5TXJBck1uRkNEemZzNXVheUpPMkIyRzZtaWhDRWFNZDAzNWFBU0lKWHJQU1JLZWFLWnFzN3B3MFNxLVRoWlVoUmpvT0swYjZoMTlPM2t0NXJ2cnB6ODE5QTVtb1FpdmtJTTYwT0pxRXdTdUhuTU9CRnlFTlFjVGsyc3FlYWUxdUNRUTM4ZjR1QVl5R1l4T29PY2NJaWZuVHFiN0dseWR5dkx2TFpPQ2JYYjcwdDE2X0w0djUzeW9SN3ZxaldGOXB6dEMxaXI1OGZISWlXaDRZNVA0NlgtSmVCNDhOQmVMVWZDN2ZKQ3NUOUlYMXRVY0wwdE1wMkNBYmNHMTlaVzc2aElGV214SmJST3ZIX3F6N2FPX1JTZ0tBeS0tYmMwTVYwSEI0NVkzQ2FJNWpSbldxMkFhSFgwZ2VUMG1nbWVkekpNallDTWdfeGRuWjJhMTlVUXNPOTktc1ZJU2VMcnpOMVhPQ1cxNUo1ZFVOLVQxdVdubTQtX2d5WjBPM2JBeXVsQkw1blFnb3h6a3RBVHdyYVZiMFE1UllzcUp6Vk9hYmJWWEN1MUx6RlZRY2MxeklTdVM2b2xFUE4tTDBlMUZiMVhZN2thbXJwNDVVVEV6MDAtc0xuUkltTDA5TkJMQVlfbmRtRjNXWkpnNVZvaUtUd2JVWjVzTUpTNW1sd1g5SjdOZWdnOTNEM2xSUGwwdExDa3NJbFJWV01XNzFSRVN3WG0xVElObnp6d1pmS0pKby13WnFLQ1hCYWV5elhDNDdnd1FKLWRUdzRyOFRFdjM2WFY1R3o4S3FqcU5iZkVYMTMyWWNMZjNXWnRkRlFsMWd2a0ZlelBEQ1h0WmVaZXJMdE51T3VIdk9DSHVoWVpibU9oejdJOGRhajMxOEllelc3eVlTYm5HT2l6Q28ybWNMQ01kWE0xTGpzSzhjTDBUQ2U4eXFFX2ktemdabjJDc2wzZ1BDQXpleF9OVnJ3M2Z3RGpNTEFBVWVYNWs0TFdER1MzN2p0MF94V2ZsT1pid2V5YTZ4T1JtQnhuLXpZb2l1WWE0VERoSjFRVTBzY2VQNUJxS2hseFo3RDktMEd6YUo1VUFHNXFxZzdCVzlMWFdMOGlQY3NxLXJRRDVyc0xsM2tzNTZxWkVuZHgzRDllSVNLaEhWWHM3RzkwWjA4MnRSaW5HNmNHYXAxcTFoZEJFWUNTX2lZM0x0UURmbTJBdTdLMFRoUXg4N3hmMU1idTllM3hYcW0xMkthSjRiTGVzekVSUnpOUmtZemdIUkczLVpvWkgtZl92M0EzQkF3SDYxNGhrai1pZVFvWG5MczhualVtTG5JQ25IWEJWLV9VSmE3bXV4SENsZ0Y2NUVkNzZZZ3RoOGp4OVhERUxQWHdYN1NnbE9HcllCdkdfLUdPVmpxYWM2emdXdkVmYVlVV1VRMkU2ajlHNXRMeFVBX0EwRzlNMDlSSWhlRExKaG4zMlZjU3luQXhJckg0Tjlkd3dpVGR0dkFIa1NLMzRqSVJxLVd3NDExeUoxRDlHaC1JVzN4NzlJajFRbzJlRjQ1bFdOUU1QWDZvTENmNGt3c21HQ1Riakx5eVAwdF9BUXpCcWZQck03bkVNN2Y1WG0tdmtLbGQxUTlzQm9DbFRXYzFSR3V1Q3h6dWNaM0lZZkZ5bm5HTENlODFwYld0UXRzX0d5SzlQOE1qd293NndEZ0d1YndYbTRYcDhSYWQ5SHAwYzFyTWo0OVpZRU1ibHVTcm5iU2hEOUpHc3pzc3ItZC00QXNVbnJjOEthZzdIS1BSYlE5eTNFb2daRF9xa1F0QXZTcnBvWDBLUHp2U25TSm9FajdNbVV4ZjVTNm1MemJ1SS1US29OSWxPRmwzOTJ6QjQxSHBrUE1leUFzNU9VVlFTNURnVVFyUEtGMENqam92WWFncFh4Q2F4WVJOWkFpVWR0bEM4RzVQWWowNWp4R3BoQV94Q2xmazBQRWhsTVhOR2pvTzFndU5UUkRLeUlLMGU5U0dWVVB0cjR0OE9LdTVZNjhWMmxJUVltanc1aGxJdXFaYzZIdy1KeUZNWEJCdzVFZUJBeXVPQWFkcTR6WDBKS2ZBektHN3VubXdITFZieVVyNWJRSG5WdEVVR0twSzJxd1ZSWF9xR2RKelJsa0JGWE80Zm5RZmFJUmhwZmJVbDY0aVkyb1h0MnU3Y2NuUUJ6dVB4LWNQRDdTOHhoeGVRNFFBcERESVdFdmJRdHdGZ2JsamRIcE93ejZIR05hT2taSFNsOUgtOTkyU25MV29rSXJtdmJuYUFpbTF5VGZ1VVFOc2NlV0ZtcHdJNEdmS2ptLVhMRFJ6WDlwYjBpZTFHLUxjRGdYczkxdVVXVm05ejdxR1RGNERDMHEtZXAtbUZSWFJSZV9IYVUyRUFSQUI5YV8teDhFV0FYcDhIZ2JBVHpZcW85U004LWt5NEVDbFU2Z2VhVDRJa2Q2ZWRnWVpmNFFKOVp3V3BsNlJQc0V0enR5bloyX3gyTUFxSUhic3lFZzF2NWNUTDA5SmJwUWd4MWh4Y0cwTG1VN0NhS3BIY0Zha2pPYjRxUjhpSzJBN2s0M1JOVVVodmJkR3QtM3g0bG1IUUx1Rzk4WVprVTlhTlJZSFBSOFdJUHFwYzhtb0pxYzB2UVJwd29UZnJ2cXdaRzRfU3ZRX3RWalp1b3ZWd0NXQVlzdmlmMGlhVUgxM29yeEV0QUY5eWxPc2FfSFhfbktBU25VWkMwMDJEWEdCcldNaU5acDBNQUY3TkFjLVJ1bDZCU290bFI5dnRjd2V0eU1ZMVVDaXAxSldxd2dxTDBvS0xGalNuQmxrZ1hKSzROa0kwazdzb1ZzX1h5UW51ZlhERGtiLXhMbnZVTFFBdjJkb2J4clNiOGVjNkRBdk9GUzZFYktsbzJpSW9SV3l0X2psMUFQMmtXT2tjNVE5bXpldXI4VW1YQUNOdnZ5TUpSa2VnbnREemRxQk9ENGNWaDU2MmRKX3hRR0ZEaEh6MmplREV0bnJRNF9PWDJablNSeklqOUI3RnRuV25kOGpKS2xiZFpseU02YkxSZl9wVGhBUE1SZndzSWo0Nk9fc1JuNjRNWmdJNnFFZ3BNMzdrZGJLV19IYmlaQkVNQnZfOTRlN2VlUENBUE9IWVItWS1fVFE1MXlQWEtnQUIxLTdfWnExTG9FLnRmVFBjRzd4NHY4a283RDJiTWNqekE"}, [ 'Cache-Control', + .reply(200, {"value":"KUF6dXJlS2V5VmF1bHRTZWNyZXRCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLmpFX0pqU1BxS0wwS3BtWEpTZmxzczgzWU5wd2s0ZEpLc2RoRzl2bG5HQTc2alk2MWVYamd4U2JkZTBpaDFUaHpSOXlRSzA2dlJtUE5rdG9ycUpPVnBDbDR4MGZQd3dKVGExRG9XaER4SWVZajZSUzFWNTJCSUV5Z0pHcFd3RFVJQnNyRGxkdFlEbTVuVlo4dVlkaTQtdTE4bzh5UG5xR2hFR3hpZ0kwMWNCZTNQWGx6OGZ4QmRnSTZQeTQzcVF1YmswcGpFdHctNzRYVU1XQUdGRWFYc1BmN241QlQwOXMxSVJDMENPRlh6dUl4SnFEYVpJdmVTaV81NWh4dDBQeWI5YjZXSW9nbXI2d2RsZi1SQnp2RFphWmZyQ3dPWUwxa09HdEhZMmpFMjExN2tKOF9BX05Lc25Pay1YQjhvRjVXN3dZMkxVbGJqOVZkMkgxSjFtZDN1QS5Da1V0eVlEZWxOeXB5TVpvUUM1QkNRLjRGaEM1WUYxc2t0OWdrWGZPYU9wLWZFZGRCZ1RwcDlTME1mNE83UFkyLTV3c1JSUzBxU0IwY25hTG94bXNPTDk0WW5Da2RGOF96cFl4OHB3R3dScWhVVkthZ2JQMDFHZnpfNWNTZjUzcHBZWDNtT2Ywa0VNa1ZHc04taTFnSUlsaUxSODI1aUxwbTF5ZVhpSFpRWE5KOWE1aGpBbDNva29INDBLY0RybnB2LTM5WEV0ZzU3YXZwdlFYdk9QVmp0cDREN2tyc2NpSV9EbG1aVXpkNjRVcm81SjIzaGtLSUR2cTZ5d1Q5c19kbHVLMWR4OEhsd0NmenpzRFZRVW5YSDU1ajNfLWlfUF9jQTFWZml3YW1ZazFiSWRkNFBDZF9GX085VTVCeEo5MUM5M1lHT2hZUWgtWVdxbTJ1RGtaWXN0ZllhSV9HOS1Gdjl4dU5PelZPb2JsVEtuLUpRTGZFSGVBdXBEME9jZXI3QmJoQVBhejhIeE52czFiNnYwTFJselhWTlV3S2l2cjB2SXYwOHI3a09zZm42anRIYUVybFRfQ21vcHNJX21obkpDUENMYVUtN3FSMGtuYWRjSWZTNks4TWs0WjNDZmtJREFIT3RYMWFBWUFNY1RNYUNMcGE1bG9OeWctQnI1RFRSYkw4YWdXZVRhOVZZMG9MYjFTXzlIUEo2Mm92c3lnSEJCMUJka1FScEphQWxFazFrb1d4Slgya1Y2bmMyWTZaSGF5b2gwSHd5enhxOGtrZlk5ZlhkakFaazhVdmtJUndnMU5tT0lMb3lNS0cxQjJZM3h1WjZSVGRRV3dPaVplc0xoVjdxSXc1c2NKbjhLQlI1Rkxkdko5ZGhaVUwzTlBGYUlORlVNcGpuQzFtRmEtb0RiZ2gxMThUaTJiRldJTGYzMkFrUWFVUXAtYjdOclBycHFpNUgyZzBQcHNub2c0V2FKVGVnYmY5d2d6eU1fMnpiYVMxOS00c1ZsYW5UQmJPMUctR3Y5WjhYeXlRa0F6RWZoQ19jWktlcnh4T19jXy01aDM2el9tZGZjYzRKaTR2ekZlY3BsNEJuLS04aGVNU1JIb09yUlY2NzUyQURzdDViMTZYcW5TRmFHRmZZZ2lsUHFyYy1ZbVg4WTRQVVRhZ2VmV1dGMnI2bkZlVnc5MzhaNW9sdFV3d1dDUGdOQUN6eW04aE94dWZ3bVowWjZ6YnM2MWNDcENaX1RZeXdlUHZwX3E1ajI0amI2YjJhbW9UbFdTeHlVT0dqNjR6NlhHWjloUWU1Z1JCRFVtZTdJaVlCMlRpU3JfbW9zOGsyZ3UyQk5ydFdTdVNTVlVPQUFYalcyeU9EbGtBSzl6LWhsM1FIZlBsR1Zzc25DYmlMN212VDVNY2ctZWlxTUVVOXRsaUJHNHhUZ1hXNTRRUU83N05LQzVWQVRkdTEtUThXOENIQlFRVXVLVUFCRFpRaDh6aklGejdGZWI0Tnc0SVVsVGUxMUVGWFZfVEI0Y0lpVHFXWE92eFFsRG1hckJ2Vmdoc205WjVTUXlrOTNidERLV09lUmRSU3JXZ1Z5OWpXOWREaFNiQWxCNnJLV2x2T1dxWEYyZWJQQ19FVkQzcE1pN0stY0lMOWZWM0piOGZ5dGcwQnloUHlTSGJLNDI2eG1vNmEwbHltV1BOcjc0dmpRaGlhUWRZeVFuY1VhRnNlb2E1VkVLTmUtWE5sSVM4UXRybHNTLVgxaGthcU92TTFjS3dtQk1hanhYWGZZaHhkcFdOTk4zQ0hfTVdIeVZ0ZDRtQ2xQcURlZGtBX1d3ZGtTOEJQTUJONnB4QkJ1d1c0TFhvRExSWVBtWW5iTWRTYS1ldEMzR1o1S1hNTHVzWFRGa1BLYXZYMFE1X2praEpkMktvX1B4V0sxcEtjVVhmQ0V1NmpiVVd3TlBnQjVZV2Q1SjFtM3RXT0VtX1g4VmNPZnRkeW1relIxV3ZYYnJ6bHNURk5XT0ZabVNhRG5JTVVENm9IeF9nODBlUGNLTU9MYkZLUXpvelI5cG5MZTlNTnpEdHJMZUR6akpfOHZiSTR4NGhTTkdyX3FWb1o3bkJZcTRWR2puZ29YLUFwSzFRX3lvTHdXTXppMGRIZ3hKN0c1RUVYQTkyc21JbEo3T2twMngwN2p1UTVMNmpfZ1FyMXljZFFiS0hCejhiNGttSTRhVXNvQmM4MzkxWW1qME5vVGo2SjdNUzFGSjFSaDF3Y0NoYTNzZWhiVW9MYl83T2I3dm1MbXdtcVA5czN6OTRDOEF4QXBKSnhFWGRldGRWeWg1VFM2MFdUZEEtVG9BNVNOYlJ5eFhuSG9VYTRPSnB3RDJrODNtRG5WUk1pMVhOSFBPU1pQeFNPRFo0QnNkTjF0YmZFb1BneTc5T1V2enJVQmNXR3pQVmRDSEdHal95N0cxNGh4TUhzSHZOYkhLS2szWUtYdUtPOE5QaDJVU0hQNmozd2cyRGtqOTJuZHdMNmJlRjBLMGo5Y0M5Z21CQjduN1hDMDl4NFVKcVdQYWNILVFqaEtPN1pYaUE4MU40VjZCYmRibnNUM1RNdExyUWthX013U2RnbUNPd3BnT0Q5emFKSG1sbmlMWHotT2E1WDFsa2p3OEoyZmJNMUtFOEVHYmtmakc4RXdEOThJbDFrMmpIa0owbVdQSTYzX2ZTYW5jbEUzZ3FpSURSUlRNM3dzTUE3dnFUZkU0LXJBY19mRkxqN2lhQW13Z0ZFSWF0clJyUTI2bEk0OUNmMWY2OGdlcVpyRXdPclVtNEF1Uk1jNkoyVVFPSGdoRG5EM25CN01QUHJEbGFHc3lBZTF3UUVOSk1FVi1ma2RJVTQyS1h4YTc1MEF1bUMxU0ZKbzZtUHRnbGE1aEZ6TFRaMy1OQkwzVHp4MDc0U2pQUklBS0ZLb1dhWS1wbDdIRUl2VnJMMUt6U29QdkJlMW9WTG1UeGhVdG9oVFJ4OXVOOVJLQXN1QjY5aGQ0cmhEU1NZLXlfQmRzZXRRYXhNblJvdFVhclRha21Fd3V0Wk9VOWFtQ3RZZWxPVkZfVU0yNXh6M1hvLW1SNnR5dnVLTTJLdDZhM3hEZmpQMm5vM1FwNDFuMHlvNlRlcFBjaGdXZTB5MzJnOWFZSFlPTDE5a0tZVnFpS01TWGRObldQR0JCQk5rem90bFFJdGxqS3FsRFpYc3VseHcyYjhrejEyQ1FJQUlXTWVwNTd6Q2U1SmFRX2V2VjBEa01kVVBNWlhtZ21VbE8zUDBmRmtCM09sNkRQQ2tXRWZtVUNzU0RiM3VkLUd3QXV0ZFlCWTM5emN4RklCMkFOQXhBcEhoZ293dzRfcUFmUlU4ZGNxUkVUQjhmOFhXS193UW5aSkkzcGxBRmpHU1RSU3c2Q0ZrY3JHallNMmNuTDNCRW1lVVAyS3hBWFc1bk92LVlTamNqYzBha1pjcUtGemFvUWpsQjIwcVpNbkdfWGVjaTNoQ1VtUmxxSGpsYTZQQ2xHRTRXU2RzeTdRZGdQMVRnVlR0UVBGaUFjT0hjM3ZKbzBtVTVjTy01MWxJRmhLMjRsVnl5SjJvTURyZXNqYnZJblVBSmZDVERpaWowVjRTOU9ycDh2WDhiQ3BnclBXMXdHQmdNRWFZbXZic0ZTT0IxbHpabXI4c1dxLTJ0N1JhN3NTVXJrZWUwUWplNXNPY0xVb0hGYWoxcHB2bFlSdzdmdkVYVF92Qm13UVZwOEF5TnBFRUZudnpOdWxHdGVlQmNBQ2RsbC1SNU5ZRGgtck9hUzdaQU1KYmZyUzdGZUhnM01vWTBodjZpZWZ4VnhON3RKRENvQVBsMktUazJyRFc5OUUybTZWYVdhTWdOVzZGa00zVEVyMVMwc2VfZHgzck15SFdscTRURDE2emlrZU1uSkNQVmtva2paR05lOUIyU21qTl9xMFNZUzVUTWx6c2hxMXVfb2hsT25KOWtrZjBLUXJrdWd4TU5DQWZyNi1LZHFpQmlqRWRSd1B1dzIyLVRnZGdKUUh1dVU0Smt4eTZ0WUtmTjN6cEJ0bG1jMUVLYUJ2amc1YlYya3RaZktjcW1xYXRlVFpkREF3QVNxUkMxSTg3azFfanp3NnFSTllWVXFILTl2c2c4eFpwUlNRQWJqLUtlVXh6WVBBZEw4dC0xT2JTcXEwRzQwdC0yMnAyQmNVMUZzcHhCOHlBY1hxeGFjaGRWNE9QenlMQUJCUlkxbTJpd3BiX0NmeDVzb19hclQzbXBDRzlHUzZ2ekV3eU5iNl9OUmlkZG1heWdnRWZNNHNFbzRrUXVzNnlTNjktUHpyRmM1SGJJWFd1Z3ZfUkFJUFRRXzRsUy1NNVBONFlDMjNxQUpHTnVlSS1LLXhWWlB5UWpGeEYtYWdFUlZYRkM5eVV5dklvNlVtdzlQaFNpanFRaktEVXJBLTdWVXBqNUg2bWdCbTdVSVFONXk2SG9oS05YTU5EdlZKYTNXM2Fndnp2azhFamJfTXViaFlfenkza3RsVzNWdGFWVTJWZ1psanRPVVJEZFVaUW9fQ0d0U0xPbEFzNThoYWN2YVYwdTl4czJyeXItc3hSd0FTOTFyNWdrTnpkT2Z1Mk9oVHBkN09BRUd5MFIwNkgtMDdoNWR2R2tZOHN5QTZ6VVV4WnhDUlk5ejNpX0NfNC1mdkh3WjA2LVVvbGVicm5kQjVMZWp1WkViMWF2blZGRzFrU0NwaDBTMHYwVExlaksxS1R3b3p3amFWa0pwS3RPSW1EUlJsQ1p5dTkxTkNkUExyR3NCcGdxUE5KUEhia1Uxa3NnalRlOERnbFVmNzZkczNRVThpWXV1V01PWnlVZXFQdVdCSEtWaEJoSUoxY2MzbkxsVEV5RDNWX2JkcXFablM3LXZJcXpvTEgwY1ItLW9ieVFsa2xMR3ZFVkZCYXJLY2xZQ1VrNkJMOWdwdUNJUTE3NGluZDREZ0d6dGdwRFd1YkRzdGF6UkpDUEVISTJHZGhvbVZTbjlHWVJjVnpTY2JOOG1PSjlhRTN2cC1LdmtwYTRucTIxdGFJLVplQi1aeURrOU1EN1lyMUhGMlVlNUJCTFdSdVRtZjQxa3l1S0w3RmNROG0zZHZjWnVKUXM2VFFOaVd4YWhtRjU4YjRVTUtuZW1yMTR6dG9vQmE3aVNQRXJUQ1hNbEIyeVJydG9uZmdmVS1rWllRQmROVm5qSTlSNUJXRGM0LV9YZ3BZYUZfdnI1cnkzRXNzNy1kSTNxQVFweDNlekRDa1RSUWhUTTVxUmprQW1DM3dPZXRlVnlYT0RuRnQzRFpVR3V0dTFsczltZy1yYnV5Vlhla2FlRTdmWnJEQTJ0ajhGLS05UnBzMFdrbjZwbTNuTW9fQUZlZ1VPdEU4eFU3V3F0bTkzMzk3TDhweHFrYnh1QUhGSl9QSGFZenlWdEhhMWdpZFZyb3JvZ09pc0d2cVlPbDU2cVRsNU8tWEN2eGlodmZUdTUzRHRFWWVtREhWSXNBSWhYM1V2V3lrcUZ3a203NXlNWEdhbm9ZQUg3bVhMY0drRDkzN3RJUjBFX1Q4S2U3SDZzNDRXMHV2dkhEcGZkeDBpMldpX3BDTktNeDZGNEtoZGpNZEJnZFpFNU82LUU3aGRacm1lN0dvZC16R1llbVF3bXh5RWZLNmdxbEhwMjF2N0EuTlNfRVdxNU1QUmlPRkdCMEVfRzJXQQ"}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1142,11 +1353,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '0406d76d-9740-4f54-b791-cf9e93b886dd', + 'cc9c162a-d54d-43b2-81dd-b07f110cc50f', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1156,11 +1367,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:31:15 GMT', + 'Fri, 28 Jun 2019 12:47:19 GMT', 'Connection', 'close', 'Content-Length', - '6259' ]); + '6402' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1178,17 +1389,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '4087c28d-8607-45eb-9eb1-61b9a8a86400', + 'ba25edd6-1772-4cc3-9446-784f097e6400', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHEgAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:31:15 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHFQAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:47:20 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:31:15 GMT', + 'Fri, 28 Jun 2019 12:47:19 GMT', 'Connection', 'close', 'Content-Length', @@ -1196,9 +1407,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/recoverSecretName') + .delete('/secrets/recoverSecretName-canrestoreasecret-') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/recoverSecretName","deletedDate":1560839475,"scheduledPurgeDate":1568615475,"id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName/8185a55ae5524be8b9c7302f4b3ee8d5","attributes":{"enabled":true,"created":1560839474,"updated":1560839474,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/recoverSecretName-canrestoreasecret-","deletedDate":1561726040,"scheduledPurgeDate":1569502040,"id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName-canrestoreasecret-/ef2691dfb4c840749a82aed314462995","attributes":{"enabled":true,"created":1561726039,"updated":1561726039,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1211,11 +1422,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'a3c9192f-0e80-4a30-8881-53b56220476a', + 'ecc133e7-3334-4009-915c-ca5762d5cf8f', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1225,11 +1436,80 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:31:16 GMT', + 'Fri, 28 Jun 2019 12:47:19 GMT', + 'Connection', + 'close', + 'Content-Length', + '426' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '2221fefe-eaff-458c-85bf-b001f0546900', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHFgAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:47:20 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:47:20 GMT', 'Connection', 'close', 'Content-Length', - '356' ]); + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedsecrets/recoverSecretName-canrestoreasecret-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '121', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'a9a8eb5e-8684-4d99-8a6e-a1350afebedb', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:47:20 GMT', + 'Connection', + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1247,17 +1527,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '55d6131a-93f8-4450-b0e1-a1c42bfe1300', + '503f3ed5-1aef-4b5b-b920-9b3805126900', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHEwAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:31:36 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHFwAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:47:31 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:31:35 GMT', + 'Fri, 28 Jun 2019 12:47:30 GMT', 'Connection', 'close', 'Content-Length', @@ -1265,7 +1545,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/recoverSecretName') + .delete('/deletedsecrets/recoverSecretName-canrestoreasecret-') .query(true) .reply(204, "", [ 'Cache-Control', 'no-cache', @@ -1278,11 +1558,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'a49f3292-644a-46a2-8031-65fe5a4cd8fc', + 'b4eec3ac-03de-4ad7-94a4-e64bf642aa4c', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1292,7 +1572,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:31:36 GMT', + 'Fri, 28 Jun 2019 12:47:30 GMT', 'Connection', 'close' ]); @@ -1312,17 +1592,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - 'c418552b-40cf-424d-be9f-5e7562606d00', + 'c388ab09-48b9-4d12-ae7f-cb0a742c6800', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHFAAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:31:57 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHGAAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:47:31 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:31:57 GMT', + 'Fri, 28 Jun 2019 12:47:30 GMT', 'Connection', 'close', 'Content-Length', @@ -1330,12 +1610,14 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .post('/secrets/restore', {"value":"KUF6dXJlS2V5VmF1bHRTZWNyZXRCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLlRlaUhPaVp1eDdmZVNxWTg2MjdUM2JJRGVCZkE4S1BORy1YOExZSUhjbVhCR2ZtSW9DOHN5MFF5bkdPMm5nVVVVZy1fTWFtMGwtTndCQ2M5b01tRDQ4QnU0a0RjTnhzUlNxYWtTRGJ3dDRkVlJTUUREdEFPY3ptbnI2ZzRnb01LSGMtV0dfd3ZfSTQyQmtrTjNXTV9MdXFTNW5OdTBCWkRQd3YwTXB0aUVPV09qd2ZGblV3RmdWRlBTZGRSS3dIcGFwWnZGZ0gyaVNWSFp2RWVIMklPMTI4bEVSVkc1NjA1ZzExSGdlNE5DY0FybXF3bnh0MUNSeUZ4NmViSWN1elVRa183T1FtakQzQTFGQlVDSDdxZl9YcjRtaXF6Z0gza3dqdW9BMTIwMkpGQTAxY2tJbVQwbzZXYklDLXhPMUg3NHFLQWstY0M3TjRUaDd1cWNjTWJhQS5XREF2Tm1YaFhLQmd6cVEtSXVldllnLldWb0xjaWw0ZW50WExabEJyelNDZzh1WlB3V3RwVGRpZ2I5OGctd2hiRzZnSHJCSjFHSWhQbk9fYzNvZnNXRXlucWJqbk1hS2F3MDFzSjgtMzZyQ3lKRFdyRkhRcjlXTkc1TlQ3TlM3ZTJjdGtCb2ZUQlcydjYtTFJfSTY5SlZWREV4aWMwTEdxRVRobzVlcmJZb2ZDYWRMVk5NUGE2azRiYjVQZmc3eHJGeWliSGd3VWZ5R2ZtOXpnd0Z1ejgtSUpndUMxdUFEZ2NpQzliaENpLXFLVkM3aE1xRmxhZzM4ZEhfMy01dEJnN09yLXJFWjM1Z3AtZXNkZkxsMFNDVkUzX3NVWkV6OFpBd3lBbjkzblRPQWVFeTdOV1RVQ0V5dFh5Q3BJbmxhTlVVRXBHb1JCUXNLMDhMZTg5ZVYtN0haUE5DRkM0OFk1VmtTNThvMEJhNTFzT2MtbmhfazNnMmstMjQ0OFN6VXF0YlVHSWE2aWphdjRKSUpnYlJUR1MwQjJBWnZ3ZFRVX0ItUk9lQTM4UmMxcWVuSUJxc2tzVlZDZ2phVnY4eXV1NTdrVWFXcWxIR3YzVWJMbGEyLUNpNnhBOHNjcHJwVXgyVDFacVNlcVhHTVoxY01nR1dvcUtjVEREUGdiZEZRaXpnVFRUWTBKRWkxSGNmaS16UzljR1pTU0x1VS1nNEQtdTNQNFhJSkRuUDhCZU5NVWtSTmx1Q1JzbjVZV0NBQlR6SGdrRDlQZTYzd05xUmdObU9iaTNEMWtKTHNXMTVKd2xyb2N3X2dnN1VxNTl0WWtUZkluQ1hrVTN1dHdqOEZhbDJ0TTNjWHZtSjN4UldiNUpNTUJZWDBsLUUyNENtcFBKUUFCV01nRnY1VHppZGVFZFEtaXdTX3Rrb1dzclJJaWliX05tVGx3TDQ5VnJZbFFkbjNMaFJuc2ljQ3g3YUhpdkw1a1hrMXRLT1pfRjNoa1prNkR0VzJjMDUwcHdacGJlaVU1S3J0SG56SlI3OFY0OVNqVURiRkZQTlRHZUVyRVVFWlF1Q0V4RHZuZ3hiRWxuQWZrclEzUDdzODRWUWg0cHk1RERyZnBzd01za2ZqTjFiX1JFV18zdUpVYjR2NUNBNTlQYy1ITHd0Qm1aRmxyZEp1VDFzalNtYzB2RXJCbzlDeW81WlFZYUJ1OWhJNU1xN0ViX2dGYUdyRUZ1RVY5dzF2N1VBZzNRYVRNM1E1OHdENTRqWk9XVXI0V3p6TVBpRXdYV1g1SzZOZHJodU9CSEFVWnZlMEJRUWk3NGtvTExZR1JzTVdaSEdtdGZlWTcyeDhIVGRkemtDbUtBazVSVVJ6UHZiTWc0OW5GMy1PeWoxOGQ3WWtxZEplZFRhMUtaak5pTDJOTkF6LTJlTERkVVZuOEJ4c05mS1JlTHJjdXRPQkR6V00xcGtXN3NpTUk2TnhaQU1mUXF2bGR0SDZYVXV0QkkybklpWFppQVFLVlQ0bU15NTNUbVg4WkRKUExHQ25WN1QxX3h2aGZYbmlJWGRhaHJMR2Y2OFV1MFZwSFp5aEU0Vkw0UzE5aDJmUTczSnNqLWYwN2stYXphamRuUlBGXzRRT25QRHRRUmJqRURqbjNIT3Bkd0xxYXVpcTdTLTN1QnBzVFBwdXBXeVhMcVR3R2Vza3A2QmdnTEthSUNjdEN6ZldIVjItb3VldENMcm1DNEFOODRpUENrekVVelpBS3VyTGVXR29MdFItbTNGcWhRalVYcEFjdG1BeVpCSGVZNURWZHlPeDlnQzBBcTE4ZWlDQjk2QTJIOUMtZV9pSVhuYXJnMGtsYzhrakRGUUppRzJIMmF3U1V2RDRaVEZ1ZHJVSm0tSFBBNnJGWG1hVGc3UHgyOEw0aVVfVnZ5dGZUeWQybGRmQ0drb3JyejRqUENhWDFJZlFOU2FPbW9FeVdmSlpWVm9KNzN5MGsteVJRcGtpUVgtQXJUZVg5Rlkzek84LWt0LVlONVJqRGxHeXZmUzByRjhjZUJGZHdSZlBPbHdsa1M4ZzB3ZDdUN0tPQUdLZUIwNUVCN2lrYXd6RW44LTFGdEFLQjlJUVNlWmppVVFmdzlnSDQ2VkxSNUVaRHpNaGI5RHV1NEZXQk9IS2sxbTk2dUx1Wmotdk5pUk9sa281S1dqMlNaX2o2UFlOSXFQN3FtOENoSWlBaXYzbnVmMnJONkk1Ui1JNTRIZ0YwR3VCWXlWdzVUQlNqV2FEQWZRcWQtU3BOSm5mTG5QU3YtaDh1ZGRST2tNam92OEUzbmtZOFJ0RDV4WEI2bWpQYVM4Sk4ydEJKX3ZYQmU2Y0psOWlZSzdxY1U5TXJBck1uRkNEemZzNXVheUpPMkIyRzZtaWhDRWFNZDAzNWFBU0lKWHJQU1JLZWFLWnFzN3B3MFNxLVRoWlVoUmpvT0swYjZoMTlPM2t0NXJ2cnB6ODE5QTVtb1FpdmtJTTYwT0pxRXdTdUhuTU9CRnlFTlFjVGsyc3FlYWUxdUNRUTM4ZjR1QVl5R1l4T29PY2NJaWZuVHFiN0dseWR5dkx2TFpPQ2JYYjcwdDE2X0w0djUzeW9SN3ZxaldGOXB6dEMxaXI1OGZISWlXaDRZNVA0NlgtSmVCNDhOQmVMVWZDN2ZKQ3NUOUlYMXRVY0wwdE1wMkNBYmNHMTlaVzc2aElGV214SmJST3ZIX3F6N2FPX1JTZ0tBeS0tYmMwTVYwSEI0NVkzQ2FJNWpSbldxMkFhSFgwZ2VUMG1nbWVkekpNallDTWdfeGRuWjJhMTlVUXNPOTktc1ZJU2VMcnpOMVhPQ1cxNUo1ZFVOLVQxdVdubTQtX2d5WjBPM2JBeXVsQkw1blFnb3h6a3RBVHdyYVZiMFE1UllzcUp6Vk9hYmJWWEN1MUx6RlZRY2MxeklTdVM2b2xFUE4tTDBlMUZiMVhZN2thbXJwNDVVVEV6MDAtc0xuUkltTDA5TkJMQVlfbmRtRjNXWkpnNVZvaUtUd2JVWjVzTUpTNW1sd1g5SjdOZWdnOTNEM2xSUGwwdExDa3NJbFJWV01XNzFSRVN3WG0xVElObnp6d1pmS0pKby13WnFLQ1hCYWV5elhDNDdnd1FKLWRUdzRyOFRFdjM2WFY1R3o4S3FqcU5iZkVYMTMyWWNMZjNXWnRkRlFsMWd2a0ZlelBEQ1h0WmVaZXJMdE51T3VIdk9DSHVoWVpibU9oejdJOGRhajMxOEllelc3eVlTYm5HT2l6Q28ybWNMQ01kWE0xTGpzSzhjTDBUQ2U4eXFFX2ktemdabjJDc2wzZ1BDQXpleF9OVnJ3M2Z3RGpNTEFBVWVYNWs0TFdER1MzN2p0MF94V2ZsT1pid2V5YTZ4T1JtQnhuLXpZb2l1WWE0VERoSjFRVTBzY2VQNUJxS2hseFo3RDktMEd6YUo1VUFHNXFxZzdCVzlMWFdMOGlQY3NxLXJRRDVyc0xsM2tzNTZxWkVuZHgzRDllSVNLaEhWWHM3RzkwWjA4MnRSaW5HNmNHYXAxcTFoZEJFWUNTX2lZM0x0UURmbTJBdTdLMFRoUXg4N3hmMU1idTllM3hYcW0xMkthSjRiTGVzekVSUnpOUmtZemdIUkczLVpvWkgtZl92M0EzQkF3SDYxNGhrai1pZVFvWG5MczhualVtTG5JQ25IWEJWLV9VSmE3bXV4SENsZ0Y2NUVkNzZZZ3RoOGp4OVhERUxQWHdYN1NnbE9HcllCdkdfLUdPVmpxYWM2emdXdkVmYVlVV1VRMkU2ajlHNXRMeFVBX0EwRzlNMDlSSWhlRExKaG4zMlZjU3luQXhJckg0Tjlkd3dpVGR0dkFIa1NLMzRqSVJxLVd3NDExeUoxRDlHaC1JVzN4NzlJajFRbzJlRjQ1bFdOUU1QWDZvTENmNGt3c21HQ1Riakx5eVAwdF9BUXpCcWZQck03bkVNN2Y1WG0tdmtLbGQxUTlzQm9DbFRXYzFSR3V1Q3h6dWNaM0lZZkZ5bm5HTENlODFwYld0UXRzX0d5SzlQOE1qd293NndEZ0d1YndYbTRYcDhSYWQ5SHAwYzFyTWo0OVpZRU1ibHVTcm5iU2hEOUpHc3pzc3ItZC00QXNVbnJjOEthZzdIS1BSYlE5eTNFb2daRF9xa1F0QXZTcnBvWDBLUHp2U25TSm9FajdNbVV4ZjVTNm1MemJ1SS1US29OSWxPRmwzOTJ6QjQxSHBrUE1leUFzNU9VVlFTNURnVVFyUEtGMENqam92WWFncFh4Q2F4WVJOWkFpVWR0bEM4RzVQWWowNWp4R3BoQV94Q2xmazBQRWhsTVhOR2pvTzFndU5UUkRLeUlLMGU5U0dWVVB0cjR0OE9LdTVZNjhWMmxJUVltanc1aGxJdXFaYzZIdy1KeUZNWEJCdzVFZUJBeXVPQWFkcTR6WDBKS2ZBektHN3VubXdITFZieVVyNWJRSG5WdEVVR0twSzJxd1ZSWF9xR2RKelJsa0JGWE80Zm5RZmFJUmhwZmJVbDY0aVkyb1h0MnU3Y2NuUUJ6dVB4LWNQRDdTOHhoeGVRNFFBcERESVdFdmJRdHdGZ2JsamRIcE93ejZIR05hT2taSFNsOUgtOTkyU25MV29rSXJtdmJuYUFpbTF5VGZ1VVFOc2NlV0ZtcHdJNEdmS2ptLVhMRFJ6WDlwYjBpZTFHLUxjRGdYczkxdVVXVm05ejdxR1RGNERDMHEtZXAtbUZSWFJSZV9IYVUyRUFSQUI5YV8teDhFV0FYcDhIZ2JBVHpZcW85U004LWt5NEVDbFU2Z2VhVDRJa2Q2ZWRnWVpmNFFKOVp3V3BsNlJQc0V0enR5bloyX3gyTUFxSUhic3lFZzF2NWNUTDA5SmJwUWd4MWh4Y0cwTG1VN0NhS3BIY0Zha2pPYjRxUjhpSzJBN2s0M1JOVVVodmJkR3QtM3g0bG1IUUx1Rzk4WVprVTlhTlJZSFBSOFdJUHFwYzhtb0pxYzB2UVJwd29UZnJ2cXdaRzRfU3ZRX3RWalp1b3ZWd0NXQVlzdmlmMGlhVUgxM29yeEV0QUY5eWxPc2FfSFhfbktBU25VWkMwMDJEWEdCcldNaU5acDBNQUY3TkFjLVJ1bDZCU290bFI5dnRjd2V0eU1ZMVVDaXAxSldxd2dxTDBvS0xGalNuQmxrZ1hKSzROa0kwazdzb1ZzX1h5UW51ZlhERGtiLXhMbnZVTFFBdjJkb2J4clNiOGVjNkRBdk9GUzZFYktsbzJpSW9SV3l0X2psMUFQMmtXT2tjNVE5bXpldXI4VW1YQUNOdnZ5TUpSa2VnbnREemRxQk9ENGNWaDU2MmRKX3hRR0ZEaEh6MmplREV0bnJRNF9PWDJablNSeklqOUI3RnRuV25kOGpKS2xiZFpseU02YkxSZl9wVGhBUE1SZndzSWo0Nk9fc1JuNjRNWmdJNnFFZ3BNMzdrZGJLV19IYmlaQkVNQnZfOTRlN2VlUENBUE9IWVItWS1fVFE1MXlQWEtnQUIxLTdfWnExTG9FLnRmVFBjRzd4NHY4a283RDJiTWNqekE"}) + .post('/secrets/restore', {"value":"KUF6dXJlS2V5VmF1bHRTZWNyZXRCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLmpFX0pqU1BxS0wwS3BtWEpTZmxzczgzWU5wd2s0ZEpLc2RoRzl2bG5HQTc2alk2MWVYamd4U2JkZTBpaDFUaHpSOXlRSzA2dlJtUE5rdG9ycUpPVnBDbDR4MGZQd3dKVGExRG9XaER4SWVZajZSUzFWNTJCSUV5Z0pHcFd3RFVJQnNyRGxkdFlEbTVuVlo4dVlkaTQtdTE4bzh5UG5xR2hFR3hpZ0kwMWNCZTNQWGx6OGZ4QmRnSTZQeTQzcVF1YmswcGpFdHctNzRYVU1XQUdGRWFYc1BmN241QlQwOXMxSVJDMENPRlh6dUl4SnFEYVpJdmVTaV81NWh4dDBQeWI5YjZXSW9nbXI2d2RsZi1SQnp2RFphWmZyQ3dPWUwxa09HdEhZMmpFMjExN2tKOF9BX05Lc25Pay1YQjhvRjVXN3dZMkxVbGJqOVZkMkgxSjFtZDN1QS5Da1V0eVlEZWxOeXB5TVpvUUM1QkNRLjRGaEM1WUYxc2t0OWdrWGZPYU9wLWZFZGRCZ1RwcDlTME1mNE83UFkyLTV3c1JSUzBxU0IwY25hTG94bXNPTDk0WW5Da2RGOF96cFl4OHB3R3dScWhVVkthZ2JQMDFHZnpfNWNTZjUzcHBZWDNtT2Ywa0VNa1ZHc04taTFnSUlsaUxSODI1aUxwbTF5ZVhpSFpRWE5KOWE1aGpBbDNva29INDBLY0RybnB2LTM5WEV0ZzU3YXZwdlFYdk9QVmp0cDREN2tyc2NpSV9EbG1aVXpkNjRVcm81SjIzaGtLSUR2cTZ5d1Q5c19kbHVLMWR4OEhsd0NmenpzRFZRVW5YSDU1ajNfLWlfUF9jQTFWZml3YW1ZazFiSWRkNFBDZF9GX085VTVCeEo5MUM5M1lHT2hZUWgtWVdxbTJ1RGtaWXN0ZllhSV9HOS1Gdjl4dU5PelZPb2JsVEtuLUpRTGZFSGVBdXBEME9jZXI3QmJoQVBhejhIeE52czFiNnYwTFJselhWTlV3S2l2cjB2SXYwOHI3a09zZm42anRIYUVybFRfQ21vcHNJX21obkpDUENMYVUtN3FSMGtuYWRjSWZTNks4TWs0WjNDZmtJREFIT3RYMWFBWUFNY1RNYUNMcGE1bG9OeWctQnI1RFRSYkw4YWdXZVRhOVZZMG9MYjFTXzlIUEo2Mm92c3lnSEJCMUJka1FScEphQWxFazFrb1d4Slgya1Y2bmMyWTZaSGF5b2gwSHd5enhxOGtrZlk5ZlhkakFaazhVdmtJUndnMU5tT0lMb3lNS0cxQjJZM3h1WjZSVGRRV3dPaVplc0xoVjdxSXc1c2NKbjhLQlI1Rkxkdko5ZGhaVUwzTlBGYUlORlVNcGpuQzFtRmEtb0RiZ2gxMThUaTJiRldJTGYzMkFrUWFVUXAtYjdOclBycHFpNUgyZzBQcHNub2c0V2FKVGVnYmY5d2d6eU1fMnpiYVMxOS00c1ZsYW5UQmJPMUctR3Y5WjhYeXlRa0F6RWZoQ19jWktlcnh4T19jXy01aDM2el9tZGZjYzRKaTR2ekZlY3BsNEJuLS04aGVNU1JIb09yUlY2NzUyQURzdDViMTZYcW5TRmFHRmZZZ2lsUHFyYy1ZbVg4WTRQVVRhZ2VmV1dGMnI2bkZlVnc5MzhaNW9sdFV3d1dDUGdOQUN6eW04aE94dWZ3bVowWjZ6YnM2MWNDcENaX1RZeXdlUHZwX3E1ajI0amI2YjJhbW9UbFdTeHlVT0dqNjR6NlhHWjloUWU1Z1JCRFVtZTdJaVlCMlRpU3JfbW9zOGsyZ3UyQk5ydFdTdVNTVlVPQUFYalcyeU9EbGtBSzl6LWhsM1FIZlBsR1Zzc25DYmlMN212VDVNY2ctZWlxTUVVOXRsaUJHNHhUZ1hXNTRRUU83N05LQzVWQVRkdTEtUThXOENIQlFRVXVLVUFCRFpRaDh6aklGejdGZWI0Tnc0SVVsVGUxMUVGWFZfVEI0Y0lpVHFXWE92eFFsRG1hckJ2Vmdoc205WjVTUXlrOTNidERLV09lUmRSU3JXZ1Z5OWpXOWREaFNiQWxCNnJLV2x2T1dxWEYyZWJQQ19FVkQzcE1pN0stY0lMOWZWM0piOGZ5dGcwQnloUHlTSGJLNDI2eG1vNmEwbHltV1BOcjc0dmpRaGlhUWRZeVFuY1VhRnNlb2E1VkVLTmUtWE5sSVM4UXRybHNTLVgxaGthcU92TTFjS3dtQk1hanhYWGZZaHhkcFdOTk4zQ0hfTVdIeVZ0ZDRtQ2xQcURlZGtBX1d3ZGtTOEJQTUJONnB4QkJ1d1c0TFhvRExSWVBtWW5iTWRTYS1ldEMzR1o1S1hNTHVzWFRGa1BLYXZYMFE1X2praEpkMktvX1B4V0sxcEtjVVhmQ0V1NmpiVVd3TlBnQjVZV2Q1SjFtM3RXT0VtX1g4VmNPZnRkeW1relIxV3ZYYnJ6bHNURk5XT0ZabVNhRG5JTVVENm9IeF9nODBlUGNLTU9MYkZLUXpvelI5cG5MZTlNTnpEdHJMZUR6akpfOHZiSTR4NGhTTkdyX3FWb1o3bkJZcTRWR2puZ29YLUFwSzFRX3lvTHdXTXppMGRIZ3hKN0c1RUVYQTkyc21JbEo3T2twMngwN2p1UTVMNmpfZ1FyMXljZFFiS0hCejhiNGttSTRhVXNvQmM4MzkxWW1qME5vVGo2SjdNUzFGSjFSaDF3Y0NoYTNzZWhiVW9MYl83T2I3dm1MbXdtcVA5czN6OTRDOEF4QXBKSnhFWGRldGRWeWg1VFM2MFdUZEEtVG9BNVNOYlJ5eFhuSG9VYTRPSnB3RDJrODNtRG5WUk1pMVhOSFBPU1pQeFNPRFo0QnNkTjF0YmZFb1BneTc5T1V2enJVQmNXR3pQVmRDSEdHal95N0cxNGh4TUhzSHZOYkhLS2szWUtYdUtPOE5QaDJVU0hQNmozd2cyRGtqOTJuZHdMNmJlRjBLMGo5Y0M5Z21CQjduN1hDMDl4NFVKcVdQYWNILVFqaEtPN1pYaUE4MU40VjZCYmRibnNUM1RNdExyUWthX013U2RnbUNPd3BnT0Q5emFKSG1sbmlMWHotT2E1WDFsa2p3OEoyZmJNMUtFOEVHYmtmakc4RXdEOThJbDFrMmpIa0owbVdQSTYzX2ZTYW5jbEUzZ3FpSURSUlRNM3dzTUE3dnFUZkU0LXJBY19mRkxqN2lhQW13Z0ZFSWF0clJyUTI2bEk0OUNmMWY2OGdlcVpyRXdPclVtNEF1Uk1jNkoyVVFPSGdoRG5EM25CN01QUHJEbGFHc3lBZTF3UUVOSk1FVi1ma2RJVTQyS1h4YTc1MEF1bUMxU0ZKbzZtUHRnbGE1aEZ6TFRaMy1OQkwzVHp4MDc0U2pQUklBS0ZLb1dhWS1wbDdIRUl2VnJMMUt6U29QdkJlMW9WTG1UeGhVdG9oVFJ4OXVOOVJLQXN1QjY5aGQ0cmhEU1NZLXlfQmRzZXRRYXhNblJvdFVhclRha21Fd3V0Wk9VOWFtQ3RZZWxPVkZfVU0yNXh6M1hvLW1SNnR5dnVLTTJLdDZhM3hEZmpQMm5vM1FwNDFuMHlvNlRlcFBjaGdXZTB5MzJnOWFZSFlPTDE5a0tZVnFpS01TWGRObldQR0JCQk5rem90bFFJdGxqS3FsRFpYc3VseHcyYjhrejEyQ1FJQUlXTWVwNTd6Q2U1SmFRX2V2VjBEa01kVVBNWlhtZ21VbE8zUDBmRmtCM09sNkRQQ2tXRWZtVUNzU0RiM3VkLUd3QXV0ZFlCWTM5emN4RklCMkFOQXhBcEhoZ293dzRfcUFmUlU4ZGNxUkVUQjhmOFhXS193UW5aSkkzcGxBRmpHU1RSU3c2Q0ZrY3JHallNMmNuTDNCRW1lVVAyS3hBWFc1bk92LVlTamNqYzBha1pjcUtGemFvUWpsQjIwcVpNbkdfWGVjaTNoQ1VtUmxxSGpsYTZQQ2xHRTRXU2RzeTdRZGdQMVRnVlR0UVBGaUFjT0hjM3ZKbzBtVTVjTy01MWxJRmhLMjRsVnl5SjJvTURyZXNqYnZJblVBSmZDVERpaWowVjRTOU9ycDh2WDhiQ3BnclBXMXdHQmdNRWFZbXZic0ZTT0IxbHpabXI4c1dxLTJ0N1JhN3NTVXJrZWUwUWplNXNPY0xVb0hGYWoxcHB2bFlSdzdmdkVYVF92Qm13UVZwOEF5TnBFRUZudnpOdWxHdGVlQmNBQ2RsbC1SNU5ZRGgtck9hUzdaQU1KYmZyUzdGZUhnM01vWTBodjZpZWZ4VnhON3RKRENvQVBsMktUazJyRFc5OUUybTZWYVdhTWdOVzZGa00zVEVyMVMwc2VfZHgzck15SFdscTRURDE2emlrZU1uSkNQVmtva2paR05lOUIyU21qTl9xMFNZUzVUTWx6c2hxMXVfb2hsT25KOWtrZjBLUXJrdWd4TU5DQWZyNi1LZHFpQmlqRWRSd1B1dzIyLVRnZGdKUUh1dVU0Smt4eTZ0WUtmTjN6cEJ0bG1jMUVLYUJ2amc1YlYya3RaZktjcW1xYXRlVFpkREF3QVNxUkMxSTg3azFfanp3NnFSTllWVXFILTl2c2c4eFpwUlNRQWJqLUtlVXh6WVBBZEw4dC0xT2JTcXEwRzQwdC0yMnAyQmNVMUZzcHhCOHlBY1hxeGFjaGRWNE9QenlMQUJCUlkxbTJpd3BiX0NmeDVzb19hclQzbXBDRzlHUzZ2ekV3eU5iNl9OUmlkZG1heWdnRWZNNHNFbzRrUXVzNnlTNjktUHpyRmM1SGJJWFd1Z3ZfUkFJUFRRXzRsUy1NNVBONFlDMjNxQUpHTnVlSS1LLXhWWlB5UWpGeEYtYWdFUlZYRkM5eVV5dklvNlVtdzlQaFNpanFRaktEVXJBLTdWVXBqNUg2bWdCbTdVSVFONXk2SG9oS05YTU5EdlZKYTNXM2Fndnp2azhFamJfTXViaFlfenkza3RsVzNWdGFWVTJWZ1psanRPVVJEZFVaUW9fQ0d0U0xPbEFzNThoYWN2YVYwdTl4czJyeXItc3hSd0FTOTFyNWdrTnpkT2Z1Mk9oVHBkN09BRUd5MFIwNkgtMDdoNWR2R2tZOHN5QTZ6VVV4WnhDUlk5ejNpX0NfNC1mdkh3WjA2LVVvbGVicm5kQjVMZWp1WkViMWF2blZGRzFrU0NwaDBTMHYwVExlaksxS1R3b3p3amFWa0pwS3RPSW1EUlJsQ1p5dTkxTkNkUExyR3NCcGdxUE5KUEhia1Uxa3NnalRlOERnbFVmNzZkczNRVThpWXV1V01PWnlVZXFQdVdCSEtWaEJoSUoxY2MzbkxsVEV5RDNWX2JkcXFablM3LXZJcXpvTEgwY1ItLW9ieVFsa2xMR3ZFVkZCYXJLY2xZQ1VrNkJMOWdwdUNJUTE3NGluZDREZ0d6dGdwRFd1YkRzdGF6UkpDUEVISTJHZGhvbVZTbjlHWVJjVnpTY2JOOG1PSjlhRTN2cC1LdmtwYTRucTIxdGFJLVplQi1aeURrOU1EN1lyMUhGMlVlNUJCTFdSdVRtZjQxa3l1S0w3RmNROG0zZHZjWnVKUXM2VFFOaVd4YWhtRjU4YjRVTUtuZW1yMTR6dG9vQmE3aVNQRXJUQ1hNbEIyeVJydG9uZmdmVS1rWllRQmROVm5qSTlSNUJXRGM0LV9YZ3BZYUZfdnI1cnkzRXNzNy1kSTNxQVFweDNlekRDa1RSUWhUTTVxUmprQW1DM3dPZXRlVnlYT0RuRnQzRFpVR3V0dTFsczltZy1yYnV5Vlhla2FlRTdmWnJEQTJ0ajhGLS05UnBzMFdrbjZwbTNuTW9fQUZlZ1VPdEU4eFU3V3F0bTkzMzk3TDhweHFrYnh1QUhGSl9QSGFZenlWdEhhMWdpZFZyb3JvZ09pc0d2cVlPbDU2cVRsNU8tWEN2eGlodmZUdTUzRHRFWWVtREhWSXNBSWhYM1V2V3lrcUZ3a203NXlNWEdhbm9ZQUg3bVhMY0drRDkzN3RJUjBFX1Q4S2U3SDZzNDRXMHV2dkhEcGZkeDBpMldpX3BDTktNeDZGNEtoZGpNZEJnZFpFNU82LUU3aGRacm1lN0dvZC16R1llbVF3bXh5RWZLNmdxbEhwMjF2N0EuTlNfRVdxNU1QUmlPRkdCMEVfRzJXQQ"}) .query(true) - .reply(200, {"id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName/8185a55ae5524be8b9c7302f4b3ee8d5","attributes":{"enabled":true,"created":1560839474,"updated":1560839474,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(409, {"error":{"code":"Conflict","message":"Conflict while restoring secret https://keyvault_name.vault.azure.net/secrets/recoverSecretName-canrestoreasecret-/ef2691dfb4c840749a82aed314462995 - secret already exists or concurrent access"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', + 'Content-Length', + '248', 'Content-Type', 'application/json; charset=utf-8', 'Expires', @@ -1345,11 +1627,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '53426078-ea50-4ab5-a76a-b9454a152490', + '78201048-6fdf-4dab-8dd8-7cdb07ba6478', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1359,11 +1641,147 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:31:57 GMT', + 'Fri, 28 Jun 2019 12:47:31 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'a70bb240-62e3-482c-b8fe-2635a0976400', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHGQAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:47:42 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:47:41 GMT', 'Connection', 'close', 'Content-Length', - '215' ]); + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/secrets/restore', {"value":"KUF6dXJlS2V5VmF1bHRTZWNyZXRCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLmpFX0pqU1BxS0wwS3BtWEpTZmxzczgzWU5wd2s0ZEpLc2RoRzl2bG5HQTc2alk2MWVYamd4U2JkZTBpaDFUaHpSOXlRSzA2dlJtUE5rdG9ycUpPVnBDbDR4MGZQd3dKVGExRG9XaER4SWVZajZSUzFWNTJCSUV5Z0pHcFd3RFVJQnNyRGxkdFlEbTVuVlo4dVlkaTQtdTE4bzh5UG5xR2hFR3hpZ0kwMWNCZTNQWGx6OGZ4QmRnSTZQeTQzcVF1YmswcGpFdHctNzRYVU1XQUdGRWFYc1BmN241QlQwOXMxSVJDMENPRlh6dUl4SnFEYVpJdmVTaV81NWh4dDBQeWI5YjZXSW9nbXI2d2RsZi1SQnp2RFphWmZyQ3dPWUwxa09HdEhZMmpFMjExN2tKOF9BX05Lc25Pay1YQjhvRjVXN3dZMkxVbGJqOVZkMkgxSjFtZDN1QS5Da1V0eVlEZWxOeXB5TVpvUUM1QkNRLjRGaEM1WUYxc2t0OWdrWGZPYU9wLWZFZGRCZ1RwcDlTME1mNE83UFkyLTV3c1JSUzBxU0IwY25hTG94bXNPTDk0WW5Da2RGOF96cFl4OHB3R3dScWhVVkthZ2JQMDFHZnpfNWNTZjUzcHBZWDNtT2Ywa0VNa1ZHc04taTFnSUlsaUxSODI1aUxwbTF5ZVhpSFpRWE5KOWE1aGpBbDNva29INDBLY0RybnB2LTM5WEV0ZzU3YXZwdlFYdk9QVmp0cDREN2tyc2NpSV9EbG1aVXpkNjRVcm81SjIzaGtLSUR2cTZ5d1Q5c19kbHVLMWR4OEhsd0NmenpzRFZRVW5YSDU1ajNfLWlfUF9jQTFWZml3YW1ZazFiSWRkNFBDZF9GX085VTVCeEo5MUM5M1lHT2hZUWgtWVdxbTJ1RGtaWXN0ZllhSV9HOS1Gdjl4dU5PelZPb2JsVEtuLUpRTGZFSGVBdXBEME9jZXI3QmJoQVBhejhIeE52czFiNnYwTFJselhWTlV3S2l2cjB2SXYwOHI3a09zZm42anRIYUVybFRfQ21vcHNJX21obkpDUENMYVUtN3FSMGtuYWRjSWZTNks4TWs0WjNDZmtJREFIT3RYMWFBWUFNY1RNYUNMcGE1bG9OeWctQnI1RFRSYkw4YWdXZVRhOVZZMG9MYjFTXzlIUEo2Mm92c3lnSEJCMUJka1FScEphQWxFazFrb1d4Slgya1Y2bmMyWTZaSGF5b2gwSHd5enhxOGtrZlk5ZlhkakFaazhVdmtJUndnMU5tT0lMb3lNS0cxQjJZM3h1WjZSVGRRV3dPaVplc0xoVjdxSXc1c2NKbjhLQlI1Rkxkdko5ZGhaVUwzTlBGYUlORlVNcGpuQzFtRmEtb0RiZ2gxMThUaTJiRldJTGYzMkFrUWFVUXAtYjdOclBycHFpNUgyZzBQcHNub2c0V2FKVGVnYmY5d2d6eU1fMnpiYVMxOS00c1ZsYW5UQmJPMUctR3Y5WjhYeXlRa0F6RWZoQ19jWktlcnh4T19jXy01aDM2el9tZGZjYzRKaTR2ekZlY3BsNEJuLS04aGVNU1JIb09yUlY2NzUyQURzdDViMTZYcW5TRmFHRmZZZ2lsUHFyYy1ZbVg4WTRQVVRhZ2VmV1dGMnI2bkZlVnc5MzhaNW9sdFV3d1dDUGdOQUN6eW04aE94dWZ3bVowWjZ6YnM2MWNDcENaX1RZeXdlUHZwX3E1ajI0amI2YjJhbW9UbFdTeHlVT0dqNjR6NlhHWjloUWU1Z1JCRFVtZTdJaVlCMlRpU3JfbW9zOGsyZ3UyQk5ydFdTdVNTVlVPQUFYalcyeU9EbGtBSzl6LWhsM1FIZlBsR1Zzc25DYmlMN212VDVNY2ctZWlxTUVVOXRsaUJHNHhUZ1hXNTRRUU83N05LQzVWQVRkdTEtUThXOENIQlFRVXVLVUFCRFpRaDh6aklGejdGZWI0Tnc0SVVsVGUxMUVGWFZfVEI0Y0lpVHFXWE92eFFsRG1hckJ2Vmdoc205WjVTUXlrOTNidERLV09lUmRSU3JXZ1Z5OWpXOWREaFNiQWxCNnJLV2x2T1dxWEYyZWJQQ19FVkQzcE1pN0stY0lMOWZWM0piOGZ5dGcwQnloUHlTSGJLNDI2eG1vNmEwbHltV1BOcjc0dmpRaGlhUWRZeVFuY1VhRnNlb2E1VkVLTmUtWE5sSVM4UXRybHNTLVgxaGthcU92TTFjS3dtQk1hanhYWGZZaHhkcFdOTk4zQ0hfTVdIeVZ0ZDRtQ2xQcURlZGtBX1d3ZGtTOEJQTUJONnB4QkJ1d1c0TFhvRExSWVBtWW5iTWRTYS1ldEMzR1o1S1hNTHVzWFRGa1BLYXZYMFE1X2praEpkMktvX1B4V0sxcEtjVVhmQ0V1NmpiVVd3TlBnQjVZV2Q1SjFtM3RXT0VtX1g4VmNPZnRkeW1relIxV3ZYYnJ6bHNURk5XT0ZabVNhRG5JTVVENm9IeF9nODBlUGNLTU9MYkZLUXpvelI5cG5MZTlNTnpEdHJMZUR6akpfOHZiSTR4NGhTTkdyX3FWb1o3bkJZcTRWR2puZ29YLUFwSzFRX3lvTHdXTXppMGRIZ3hKN0c1RUVYQTkyc21JbEo3T2twMngwN2p1UTVMNmpfZ1FyMXljZFFiS0hCejhiNGttSTRhVXNvQmM4MzkxWW1qME5vVGo2SjdNUzFGSjFSaDF3Y0NoYTNzZWhiVW9MYl83T2I3dm1MbXdtcVA5czN6OTRDOEF4QXBKSnhFWGRldGRWeWg1VFM2MFdUZEEtVG9BNVNOYlJ5eFhuSG9VYTRPSnB3RDJrODNtRG5WUk1pMVhOSFBPU1pQeFNPRFo0QnNkTjF0YmZFb1BneTc5T1V2enJVQmNXR3pQVmRDSEdHal95N0cxNGh4TUhzSHZOYkhLS2szWUtYdUtPOE5QaDJVU0hQNmozd2cyRGtqOTJuZHdMNmJlRjBLMGo5Y0M5Z21CQjduN1hDMDl4NFVKcVdQYWNILVFqaEtPN1pYaUE4MU40VjZCYmRibnNUM1RNdExyUWthX013U2RnbUNPd3BnT0Q5emFKSG1sbmlMWHotT2E1WDFsa2p3OEoyZmJNMUtFOEVHYmtmakc4RXdEOThJbDFrMmpIa0owbVdQSTYzX2ZTYW5jbEUzZ3FpSURSUlRNM3dzTUE3dnFUZkU0LXJBY19mRkxqN2lhQW13Z0ZFSWF0clJyUTI2bEk0OUNmMWY2OGdlcVpyRXdPclVtNEF1Uk1jNkoyVVFPSGdoRG5EM25CN01QUHJEbGFHc3lBZTF3UUVOSk1FVi1ma2RJVTQyS1h4YTc1MEF1bUMxU0ZKbzZtUHRnbGE1aEZ6TFRaMy1OQkwzVHp4MDc0U2pQUklBS0ZLb1dhWS1wbDdIRUl2VnJMMUt6U29QdkJlMW9WTG1UeGhVdG9oVFJ4OXVOOVJLQXN1QjY5aGQ0cmhEU1NZLXlfQmRzZXRRYXhNblJvdFVhclRha21Fd3V0Wk9VOWFtQ3RZZWxPVkZfVU0yNXh6M1hvLW1SNnR5dnVLTTJLdDZhM3hEZmpQMm5vM1FwNDFuMHlvNlRlcFBjaGdXZTB5MzJnOWFZSFlPTDE5a0tZVnFpS01TWGRObldQR0JCQk5rem90bFFJdGxqS3FsRFpYc3VseHcyYjhrejEyQ1FJQUlXTWVwNTd6Q2U1SmFRX2V2VjBEa01kVVBNWlhtZ21VbE8zUDBmRmtCM09sNkRQQ2tXRWZtVUNzU0RiM3VkLUd3QXV0ZFlCWTM5emN4RklCMkFOQXhBcEhoZ293dzRfcUFmUlU4ZGNxUkVUQjhmOFhXS193UW5aSkkzcGxBRmpHU1RSU3c2Q0ZrY3JHallNMmNuTDNCRW1lVVAyS3hBWFc1bk92LVlTamNqYzBha1pjcUtGemFvUWpsQjIwcVpNbkdfWGVjaTNoQ1VtUmxxSGpsYTZQQ2xHRTRXU2RzeTdRZGdQMVRnVlR0UVBGaUFjT0hjM3ZKbzBtVTVjTy01MWxJRmhLMjRsVnl5SjJvTURyZXNqYnZJblVBSmZDVERpaWowVjRTOU9ycDh2WDhiQ3BnclBXMXdHQmdNRWFZbXZic0ZTT0IxbHpabXI4c1dxLTJ0N1JhN3NTVXJrZWUwUWplNXNPY0xVb0hGYWoxcHB2bFlSdzdmdkVYVF92Qm13UVZwOEF5TnBFRUZudnpOdWxHdGVlQmNBQ2RsbC1SNU5ZRGgtck9hUzdaQU1KYmZyUzdGZUhnM01vWTBodjZpZWZ4VnhON3RKRENvQVBsMktUazJyRFc5OUUybTZWYVdhTWdOVzZGa00zVEVyMVMwc2VfZHgzck15SFdscTRURDE2emlrZU1uSkNQVmtva2paR05lOUIyU21qTl9xMFNZUzVUTWx6c2hxMXVfb2hsT25KOWtrZjBLUXJrdWd4TU5DQWZyNi1LZHFpQmlqRWRSd1B1dzIyLVRnZGdKUUh1dVU0Smt4eTZ0WUtmTjN6cEJ0bG1jMUVLYUJ2amc1YlYya3RaZktjcW1xYXRlVFpkREF3QVNxUkMxSTg3azFfanp3NnFSTllWVXFILTl2c2c4eFpwUlNRQWJqLUtlVXh6WVBBZEw4dC0xT2JTcXEwRzQwdC0yMnAyQmNVMUZzcHhCOHlBY1hxeGFjaGRWNE9QenlMQUJCUlkxbTJpd3BiX0NmeDVzb19hclQzbXBDRzlHUzZ2ekV3eU5iNl9OUmlkZG1heWdnRWZNNHNFbzRrUXVzNnlTNjktUHpyRmM1SGJJWFd1Z3ZfUkFJUFRRXzRsUy1NNVBONFlDMjNxQUpHTnVlSS1LLXhWWlB5UWpGeEYtYWdFUlZYRkM5eVV5dklvNlVtdzlQaFNpanFRaktEVXJBLTdWVXBqNUg2bWdCbTdVSVFONXk2SG9oS05YTU5EdlZKYTNXM2Fndnp2azhFamJfTXViaFlfenkza3RsVzNWdGFWVTJWZ1psanRPVVJEZFVaUW9fQ0d0U0xPbEFzNThoYWN2YVYwdTl4czJyeXItc3hSd0FTOTFyNWdrTnpkT2Z1Mk9oVHBkN09BRUd5MFIwNkgtMDdoNWR2R2tZOHN5QTZ6VVV4WnhDUlk5ejNpX0NfNC1mdkh3WjA2LVVvbGVicm5kQjVMZWp1WkViMWF2blZGRzFrU0NwaDBTMHYwVExlaksxS1R3b3p3amFWa0pwS3RPSW1EUlJsQ1p5dTkxTkNkUExyR3NCcGdxUE5KUEhia1Uxa3NnalRlOERnbFVmNzZkczNRVThpWXV1V01PWnlVZXFQdVdCSEtWaEJoSUoxY2MzbkxsVEV5RDNWX2JkcXFablM3LXZJcXpvTEgwY1ItLW9ieVFsa2xMR3ZFVkZCYXJLY2xZQ1VrNkJMOWdwdUNJUTE3NGluZDREZ0d6dGdwRFd1YkRzdGF6UkpDUEVISTJHZGhvbVZTbjlHWVJjVnpTY2JOOG1PSjlhRTN2cC1LdmtwYTRucTIxdGFJLVplQi1aeURrOU1EN1lyMUhGMlVlNUJCTFdSdVRtZjQxa3l1S0w3RmNROG0zZHZjWnVKUXM2VFFOaVd4YWhtRjU4YjRVTUtuZW1yMTR6dG9vQmE3aVNQRXJUQ1hNbEIyeVJydG9uZmdmVS1rWllRQmROVm5qSTlSNUJXRGM0LV9YZ3BZYUZfdnI1cnkzRXNzNy1kSTNxQVFweDNlekRDa1RSUWhUTTVxUmprQW1DM3dPZXRlVnlYT0RuRnQzRFpVR3V0dTFsczltZy1yYnV5Vlhla2FlRTdmWnJEQTJ0ajhGLS05UnBzMFdrbjZwbTNuTW9fQUZlZ1VPdEU4eFU3V3F0bTkzMzk3TDhweHFrYnh1QUhGSl9QSGFZenlWdEhhMWdpZFZyb3JvZ09pc0d2cVlPbDU2cVRsNU8tWEN2eGlodmZUdTUzRHRFWWVtREhWSXNBSWhYM1V2V3lrcUZ3a203NXlNWEdhbm9ZQUg3bVhMY0drRDkzN3RJUjBFX1Q4S2U3SDZzNDRXMHV2dkhEcGZkeDBpMldpX3BDTktNeDZGNEtoZGpNZEJnZFpFNU82LUU3aGRacm1lN0dvZC16R1llbVF3bXh5RWZLNmdxbEhwMjF2N0EuTlNfRVdxNU1QUmlPRkdCMEVfRzJXQQ"}) + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Conflict while restoring secret https://keyvault_name.vault.azure.net/secrets/recoverSecretName-canrestoreasecret-/ef2691dfb4c840749a82aed314462995 - secret already exists or concurrent access"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '248', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '33774fcf-849a-4fd1-a2ad-b5bfa58ca2ac', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:47:42 GMT', + 'Connection', + 'close' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3599,"ext_expires_in":3599,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + '94fb2dd1-3257-41c8-b45e-b6c26b337600', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHGgAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:47:52 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:47:51 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .post('/secrets/restore', {"value":"KUF6dXJlS2V5VmF1bHRTZWNyZXRCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLmpFX0pqU1BxS0wwS3BtWEpTZmxzczgzWU5wd2s0ZEpLc2RoRzl2bG5HQTc2alk2MWVYamd4U2JkZTBpaDFUaHpSOXlRSzA2dlJtUE5rdG9ycUpPVnBDbDR4MGZQd3dKVGExRG9XaER4SWVZajZSUzFWNTJCSUV5Z0pHcFd3RFVJQnNyRGxkdFlEbTVuVlo4dVlkaTQtdTE4bzh5UG5xR2hFR3hpZ0kwMWNCZTNQWGx6OGZ4QmRnSTZQeTQzcVF1YmswcGpFdHctNzRYVU1XQUdGRWFYc1BmN241QlQwOXMxSVJDMENPRlh6dUl4SnFEYVpJdmVTaV81NWh4dDBQeWI5YjZXSW9nbXI2d2RsZi1SQnp2RFphWmZyQ3dPWUwxa09HdEhZMmpFMjExN2tKOF9BX05Lc25Pay1YQjhvRjVXN3dZMkxVbGJqOVZkMkgxSjFtZDN1QS5Da1V0eVlEZWxOeXB5TVpvUUM1QkNRLjRGaEM1WUYxc2t0OWdrWGZPYU9wLWZFZGRCZ1RwcDlTME1mNE83UFkyLTV3c1JSUzBxU0IwY25hTG94bXNPTDk0WW5Da2RGOF96cFl4OHB3R3dScWhVVkthZ2JQMDFHZnpfNWNTZjUzcHBZWDNtT2Ywa0VNa1ZHc04taTFnSUlsaUxSODI1aUxwbTF5ZVhpSFpRWE5KOWE1aGpBbDNva29INDBLY0RybnB2LTM5WEV0ZzU3YXZwdlFYdk9QVmp0cDREN2tyc2NpSV9EbG1aVXpkNjRVcm81SjIzaGtLSUR2cTZ5d1Q5c19kbHVLMWR4OEhsd0NmenpzRFZRVW5YSDU1ajNfLWlfUF9jQTFWZml3YW1ZazFiSWRkNFBDZF9GX085VTVCeEo5MUM5M1lHT2hZUWgtWVdxbTJ1RGtaWXN0ZllhSV9HOS1Gdjl4dU5PelZPb2JsVEtuLUpRTGZFSGVBdXBEME9jZXI3QmJoQVBhejhIeE52czFiNnYwTFJselhWTlV3S2l2cjB2SXYwOHI3a09zZm42anRIYUVybFRfQ21vcHNJX21obkpDUENMYVUtN3FSMGtuYWRjSWZTNks4TWs0WjNDZmtJREFIT3RYMWFBWUFNY1RNYUNMcGE1bG9OeWctQnI1RFRSYkw4YWdXZVRhOVZZMG9MYjFTXzlIUEo2Mm92c3lnSEJCMUJka1FScEphQWxFazFrb1d4Slgya1Y2bmMyWTZaSGF5b2gwSHd5enhxOGtrZlk5ZlhkakFaazhVdmtJUndnMU5tT0lMb3lNS0cxQjJZM3h1WjZSVGRRV3dPaVplc0xoVjdxSXc1c2NKbjhLQlI1Rkxkdko5ZGhaVUwzTlBGYUlORlVNcGpuQzFtRmEtb0RiZ2gxMThUaTJiRldJTGYzMkFrUWFVUXAtYjdOclBycHFpNUgyZzBQcHNub2c0V2FKVGVnYmY5d2d6eU1fMnpiYVMxOS00c1ZsYW5UQmJPMUctR3Y5WjhYeXlRa0F6RWZoQ19jWktlcnh4T19jXy01aDM2el9tZGZjYzRKaTR2ekZlY3BsNEJuLS04aGVNU1JIb09yUlY2NzUyQURzdDViMTZYcW5TRmFHRmZZZ2lsUHFyYy1ZbVg4WTRQVVRhZ2VmV1dGMnI2bkZlVnc5MzhaNW9sdFV3d1dDUGdOQUN6eW04aE94dWZ3bVowWjZ6YnM2MWNDcENaX1RZeXdlUHZwX3E1ajI0amI2YjJhbW9UbFdTeHlVT0dqNjR6NlhHWjloUWU1Z1JCRFVtZTdJaVlCMlRpU3JfbW9zOGsyZ3UyQk5ydFdTdVNTVlVPQUFYalcyeU9EbGtBSzl6LWhsM1FIZlBsR1Zzc25DYmlMN212VDVNY2ctZWlxTUVVOXRsaUJHNHhUZ1hXNTRRUU83N05LQzVWQVRkdTEtUThXOENIQlFRVXVLVUFCRFpRaDh6aklGejdGZWI0Tnc0SVVsVGUxMUVGWFZfVEI0Y0lpVHFXWE92eFFsRG1hckJ2Vmdoc205WjVTUXlrOTNidERLV09lUmRSU3JXZ1Z5OWpXOWREaFNiQWxCNnJLV2x2T1dxWEYyZWJQQ19FVkQzcE1pN0stY0lMOWZWM0piOGZ5dGcwQnloUHlTSGJLNDI2eG1vNmEwbHltV1BOcjc0dmpRaGlhUWRZeVFuY1VhRnNlb2E1VkVLTmUtWE5sSVM4UXRybHNTLVgxaGthcU92TTFjS3dtQk1hanhYWGZZaHhkcFdOTk4zQ0hfTVdIeVZ0ZDRtQ2xQcURlZGtBX1d3ZGtTOEJQTUJONnB4QkJ1d1c0TFhvRExSWVBtWW5iTWRTYS1ldEMzR1o1S1hNTHVzWFRGa1BLYXZYMFE1X2praEpkMktvX1B4V0sxcEtjVVhmQ0V1NmpiVVd3TlBnQjVZV2Q1SjFtM3RXT0VtX1g4VmNPZnRkeW1relIxV3ZYYnJ6bHNURk5XT0ZabVNhRG5JTVVENm9IeF9nODBlUGNLTU9MYkZLUXpvelI5cG5MZTlNTnpEdHJMZUR6akpfOHZiSTR4NGhTTkdyX3FWb1o3bkJZcTRWR2puZ29YLUFwSzFRX3lvTHdXTXppMGRIZ3hKN0c1RUVYQTkyc21JbEo3T2twMngwN2p1UTVMNmpfZ1FyMXljZFFiS0hCejhiNGttSTRhVXNvQmM4MzkxWW1qME5vVGo2SjdNUzFGSjFSaDF3Y0NoYTNzZWhiVW9MYl83T2I3dm1MbXdtcVA5czN6OTRDOEF4QXBKSnhFWGRldGRWeWg1VFM2MFdUZEEtVG9BNVNOYlJ5eFhuSG9VYTRPSnB3RDJrODNtRG5WUk1pMVhOSFBPU1pQeFNPRFo0QnNkTjF0YmZFb1BneTc5T1V2enJVQmNXR3pQVmRDSEdHal95N0cxNGh4TUhzSHZOYkhLS2szWUtYdUtPOE5QaDJVU0hQNmozd2cyRGtqOTJuZHdMNmJlRjBLMGo5Y0M5Z21CQjduN1hDMDl4NFVKcVdQYWNILVFqaEtPN1pYaUE4MU40VjZCYmRibnNUM1RNdExyUWthX013U2RnbUNPd3BnT0Q5emFKSG1sbmlMWHotT2E1WDFsa2p3OEoyZmJNMUtFOEVHYmtmakc4RXdEOThJbDFrMmpIa0owbVdQSTYzX2ZTYW5jbEUzZ3FpSURSUlRNM3dzTUE3dnFUZkU0LXJBY19mRkxqN2lhQW13Z0ZFSWF0clJyUTI2bEk0OUNmMWY2OGdlcVpyRXdPclVtNEF1Uk1jNkoyVVFPSGdoRG5EM25CN01QUHJEbGFHc3lBZTF3UUVOSk1FVi1ma2RJVTQyS1h4YTc1MEF1bUMxU0ZKbzZtUHRnbGE1aEZ6TFRaMy1OQkwzVHp4MDc0U2pQUklBS0ZLb1dhWS1wbDdIRUl2VnJMMUt6U29QdkJlMW9WTG1UeGhVdG9oVFJ4OXVOOVJLQXN1QjY5aGQ0cmhEU1NZLXlfQmRzZXRRYXhNblJvdFVhclRha21Fd3V0Wk9VOWFtQ3RZZWxPVkZfVU0yNXh6M1hvLW1SNnR5dnVLTTJLdDZhM3hEZmpQMm5vM1FwNDFuMHlvNlRlcFBjaGdXZTB5MzJnOWFZSFlPTDE5a0tZVnFpS01TWGRObldQR0JCQk5rem90bFFJdGxqS3FsRFpYc3VseHcyYjhrejEyQ1FJQUlXTWVwNTd6Q2U1SmFRX2V2VjBEa01kVVBNWlhtZ21VbE8zUDBmRmtCM09sNkRQQ2tXRWZtVUNzU0RiM3VkLUd3QXV0ZFlCWTM5emN4RklCMkFOQXhBcEhoZ293dzRfcUFmUlU4ZGNxUkVUQjhmOFhXS193UW5aSkkzcGxBRmpHU1RSU3c2Q0ZrY3JHallNMmNuTDNCRW1lVVAyS3hBWFc1bk92LVlTamNqYzBha1pjcUtGemFvUWpsQjIwcVpNbkdfWGVjaTNoQ1VtUmxxSGpsYTZQQ2xHRTRXU2RzeTdRZGdQMVRnVlR0UVBGaUFjT0hjM3ZKbzBtVTVjTy01MWxJRmhLMjRsVnl5SjJvTURyZXNqYnZJblVBSmZDVERpaWowVjRTOU9ycDh2WDhiQ3BnclBXMXdHQmdNRWFZbXZic0ZTT0IxbHpabXI4c1dxLTJ0N1JhN3NTVXJrZWUwUWplNXNPY0xVb0hGYWoxcHB2bFlSdzdmdkVYVF92Qm13UVZwOEF5TnBFRUZudnpOdWxHdGVlQmNBQ2RsbC1SNU5ZRGgtck9hUzdaQU1KYmZyUzdGZUhnM01vWTBodjZpZWZ4VnhON3RKRENvQVBsMktUazJyRFc5OUUybTZWYVdhTWdOVzZGa00zVEVyMVMwc2VfZHgzck15SFdscTRURDE2emlrZU1uSkNQVmtva2paR05lOUIyU21qTl9xMFNZUzVUTWx6c2hxMXVfb2hsT25KOWtrZjBLUXJrdWd4TU5DQWZyNi1LZHFpQmlqRWRSd1B1dzIyLVRnZGdKUUh1dVU0Smt4eTZ0WUtmTjN6cEJ0bG1jMUVLYUJ2amc1YlYya3RaZktjcW1xYXRlVFpkREF3QVNxUkMxSTg3azFfanp3NnFSTllWVXFILTl2c2c4eFpwUlNRQWJqLUtlVXh6WVBBZEw4dC0xT2JTcXEwRzQwdC0yMnAyQmNVMUZzcHhCOHlBY1hxeGFjaGRWNE9QenlMQUJCUlkxbTJpd3BiX0NmeDVzb19hclQzbXBDRzlHUzZ2ekV3eU5iNl9OUmlkZG1heWdnRWZNNHNFbzRrUXVzNnlTNjktUHpyRmM1SGJJWFd1Z3ZfUkFJUFRRXzRsUy1NNVBONFlDMjNxQUpHTnVlSS1LLXhWWlB5UWpGeEYtYWdFUlZYRkM5eVV5dklvNlVtdzlQaFNpanFRaktEVXJBLTdWVXBqNUg2bWdCbTdVSVFONXk2SG9oS05YTU5EdlZKYTNXM2Fndnp2azhFamJfTXViaFlfenkza3RsVzNWdGFWVTJWZ1psanRPVVJEZFVaUW9fQ0d0U0xPbEFzNThoYWN2YVYwdTl4czJyeXItc3hSd0FTOTFyNWdrTnpkT2Z1Mk9oVHBkN09BRUd5MFIwNkgtMDdoNWR2R2tZOHN5QTZ6VVV4WnhDUlk5ejNpX0NfNC1mdkh3WjA2LVVvbGVicm5kQjVMZWp1WkViMWF2blZGRzFrU0NwaDBTMHYwVExlaksxS1R3b3p3amFWa0pwS3RPSW1EUlJsQ1p5dTkxTkNkUExyR3NCcGdxUE5KUEhia1Uxa3NnalRlOERnbFVmNzZkczNRVThpWXV1V01PWnlVZXFQdVdCSEtWaEJoSUoxY2MzbkxsVEV5RDNWX2JkcXFablM3LXZJcXpvTEgwY1ItLW9ieVFsa2xMR3ZFVkZCYXJLY2xZQ1VrNkJMOWdwdUNJUTE3NGluZDREZ0d6dGdwRFd1YkRzdGF6UkpDUEVISTJHZGhvbVZTbjlHWVJjVnpTY2JOOG1PSjlhRTN2cC1LdmtwYTRucTIxdGFJLVplQi1aeURrOU1EN1lyMUhGMlVlNUJCTFdSdVRtZjQxa3l1S0w3RmNROG0zZHZjWnVKUXM2VFFOaVd4YWhtRjU4YjRVTUtuZW1yMTR6dG9vQmE3aVNQRXJUQ1hNbEIyeVJydG9uZmdmVS1rWllRQmROVm5qSTlSNUJXRGM0LV9YZ3BZYUZfdnI1cnkzRXNzNy1kSTNxQVFweDNlekRDa1RSUWhUTTVxUmprQW1DM3dPZXRlVnlYT0RuRnQzRFpVR3V0dTFsczltZy1yYnV5Vlhla2FlRTdmWnJEQTJ0ajhGLS05UnBzMFdrbjZwbTNuTW9fQUZlZ1VPdEU4eFU3V3F0bTkzMzk3TDhweHFrYnh1QUhGSl9QSGFZenlWdEhhMWdpZFZyb3JvZ09pc0d2cVlPbDU2cVRsNU8tWEN2eGlodmZUdTUzRHRFWWVtREhWSXNBSWhYM1V2V3lrcUZ3a203NXlNWEdhbm9ZQUg3bVhMY0drRDkzN3RJUjBFX1Q4S2U3SDZzNDRXMHV2dkhEcGZkeDBpMldpX3BDTktNeDZGNEtoZGpNZEJnZFpFNU82LUU3aGRacm1lN0dvZC16R1llbVF3bXh5RWZLNmdxbEhwMjF2N0EuTlNfRVdxNU1QUmlPRkdCMEVfRzJXQQ"}) + .query(true) + .reply(200, {"id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName-canrestoreasecret-/ef2691dfb4c840749a82aed314462995","attributes":{"enabled":true,"created":1561726039,"updated":1561726039,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + '7c904d27-428c-4aba-bc6d-6a7eac6ac787', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:47:53 GMT', + 'Connection', + 'close', + 'Content-Length', + '250' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1381,17 +1799,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '0c6acde0-0ea5-437e-b48a-8a6843397800', + '0d8101bc-86b7-4837-bac3-7ca3050c7300', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHFQAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:32:17 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHGwAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:47:53 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:32:17 GMT', + 'Fri, 28 Jun 2019 12:47:52 GMT', 'Connection', 'close', 'Content-Length', @@ -1399,9 +1817,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .get('/secrets/recoverSecretName/') + .get('/secrets/recoverSecretName-canrestoreasecret-/') .query(true) - .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName/8185a55ae5524be8b9c7302f4b3ee8d5","attributes":{"enabled":true,"created":1560839474,"updated":1560839474,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"value":"RSA","id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName-canrestoreasecret-/ef2691dfb4c840749a82aed314462995","attributes":{"enabled":true,"created":1561726039,"updated":1561726039,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1414,11 +1832,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '8f8c9476-9fd6-4faa-bbf9-dfef683813bb', + '93e83d12-18bf-462b-8954-eb2e80a9dfe2', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1428,11 +1846,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:32:17 GMT', + 'Fri, 28 Jun 2019 12:47:52 GMT', 'Connection', 'close', 'Content-Length', - '229' ]); + '264' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1450,17 +1868,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '9d92c6b4-bc9f-4a98-88a6-09d233865c00', + '88481595-ec59-4aa8-8567-580f9ec17100', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHFgAAAEp7mtQOAAAA; expires=Thu, 18-Jul-2019 06:32:18 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHHAAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:47:53 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:32:18 GMT', + 'Fri, 28 Jun 2019 12:47:52 GMT', 'Connection', 'close', 'Content-Length', @@ -1468,9 +1886,9 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/secrets/recoverSecretName') + .delete('/secrets/recoverSecretName-canrestoreasecret-') .query(true) - .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/recoverSecretName","deletedDate":1560839538,"scheduledPurgeDate":1568615538,"id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName/8185a55ae5524be8b9c7302f4b3ee8d5","attributes":{"enabled":true,"created":1560839474,"updated":1560839474,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', + .reply(200, {"recoveryId":"https://keyvault_name.vault.azure.net/deletedsecrets/recoverSecretName-canrestoreasecret-","deletedDate":1561726073,"scheduledPurgeDate":1569502073,"id":"https://keyvault_name.vault.azure.net/secrets/recoverSecretName-canrestoreasecret-/ef2691dfb4c840749a82aed314462995","attributes":{"enabled":true,"created":1561726039,"updated":1561726039,"recoveryLevel":"Recoverable+Purgeable"}}, [ 'Cache-Control', 'no-cache', 'Pragma', 'no-cache', @@ -1483,11 +1901,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - '4d95490d-6d33-4d5f-91a4-3221e3ed1e8b', + 'a5248dd6-ad5d-4a2a-ba5d-7d00fa3ed6d3', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1497,11 +1915,80 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:32:18 GMT', + 'Fri, 28 Jun 2019 12:47:53 GMT', 'Connection', 'close', 'Content-Length', - '356' ]); + '426' ]); + + +nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) + .post('/azure_tenant_id/oauth2/v2.0/token', "response_type=token&grant_type=client_credentials&client_id=azure_client_id&client_secret=azure_client_secret&scope=https%3A%2F%2Fvault.azure.net%2F.default") + .reply(200, {"token_type":"Bearer","expires_in":3600,"ext_expires_in":3600,"access_token":"access_token"}, [ 'Cache-Control', + 'no-cache, no-store', + 'Pragma', + 'no-cache', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Strict-Transport-Security', + 'max-age=31536000; includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'x-ms-request-id', + 'eec41e56-d0f1-46de-b3ba-d950345c6200', + 'P3P', + 'CP="DSP CUR OTPi IND OTRi ONL FIN"', + 'Set-Cookie', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHHQAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:47:54 GMT; path=/; secure; HttpOnly', + 'Set-Cookie', + 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', + 'Set-Cookie', + 'stsservicecookie=ests; path=/; secure; HttpOnly', + 'Date', + 'Fri, 28 Jun 2019 12:47:54 GMT', + 'Connection', + 'close', + 'Content-Length', + '1231' ]); + + +nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) + .delete('/deletedsecrets/recoverSecretName-canrestoreasecret-') + .query(true) + .reply(409, {"error":{"code":"Conflict","message":"Secret is currently being deleted.","innererror":{"code":"ObjectIsBeingDeleted"}}}, [ 'Cache-Control', + 'no-cache', + 'Pragma', + 'no-cache', + 'Content-Length', + '121', + 'Content-Type', + 'application/json; charset=utf-8', + 'Expires', + '-1', + 'Server', + 'Microsoft-IIS/10.0', + 'x-ms-keyvault-region', + 'westus', + 'x-ms-request-id', + 'eef2b4aa-5f36-4747-8e6f-55b7fc1409f0', + 'x-ms-keyvault-service-version', + '1.1.0.866', + 'x-ms-keyvault-network-info', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', + 'X-AspNet-Version', + '4.0.30319', + 'X-Powered-By', + 'ASP.NET', + 'Strict-Transport-Security', + 'max-age=31536000;includeSubDomains', + 'X-Content-Type-Options', + 'nosniff', + 'Date', + 'Fri, 28 Jun 2019 12:47:53 GMT', + 'Connection', + 'close' ]); nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) @@ -1519,17 +2006,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '96b44c52-a76f-43d1-afb9-91161b1c1500', + '26dd0053-9e36-4fa2-a127-266ad53a6e00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHAwAAAHZ8mtQOAAAA; expires=Thu, 18-Jul-2019 06:32:49 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHHgAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:48:04 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:32:48 GMT', + 'Fri, 28 Jun 2019 12:48:04 GMT', 'Connection', 'close', 'Content-Length', @@ -1537,7 +2024,7 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) - .delete('/deletedsecrets/recoverSecretName') + .delete('/deletedsecrets/recoverSecretName-canrestoreasecret-') .query(true) .reply(204, "", [ 'Cache-Control', 'no-cache', @@ -1550,11 +2037,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'f7416d91-1ca8-4300-b1d9-85ba1bd039dd', + '484ace60-d3b9-472f-bb18-e898522cd5f7', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1564,7 +2051,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:32:48 GMT', + 'Fri, 28 Jun 2019 12:48:04 GMT', 'Connection', 'close' ]); @@ -1584,17 +2071,17 @@ nock('https://login.microsoftonline.com:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'x-ms-request-id', - '21ab55dd-8380-4d47-9fb7-aa5002356400', + 'c0620aa9-8c67-443a-8a29-2109b57f6c00', 'P3P', 'CP="DSP CUR OTPi IND OTRi ONL FIN"', 'Set-Cookie', - 'fpc=Aumqdi1TkS5OgGtXovOyKNY_aSJHBAAAAHZ8mtQOAAAA; expires=Thu, 18-Jul-2019 06:33:20 GMT; path=/; secure; HttpOnly', + 'fpc=AhUL2HMsn9hCo-4ptvKSNE4_aSJHHwAAABoDqNQOAAAA; expires=Sun, 28-Jul-2019 12:48:05 GMT; path=/; secure; HttpOnly', 'Set-Cookie', 'x-ms-gateway-slice=prod; path=/; secure; HttpOnly', 'Set-Cookie', 'stsservicecookie=ests; path=/; secure; HttpOnly', 'Date', - 'Tue, 18 Jun 2019 06:33:19 GMT', + 'Fri, 28 Jun 2019 12:48:04 GMT', 'Connection', 'close', 'Content-Length', @@ -1619,11 +2106,11 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'x-ms-keyvault-region', 'westus', 'x-ms-request-id', - 'aab5871a-52a9-4ba3-9d1b-8b73bc5b56f8', + '4d8000fd-acf9-43a0-b113-a94ba031a2a6', 'x-ms-keyvault-service-version', '1.1.0.866', 'x-ms-keyvault-network-info', - 'addr=35.238.119.163;act_addr_fam=InterNetwork;', + 'addr=104.41.142.53;act_addr_fam=InterNetwork;', 'X-AspNet-Version', '4.0.30319', 'X-Powered-By', @@ -1633,7 +2120,7 @@ nock('https://keyvault_name.vault.azure.net:443', {"encodedQueryParams":true}) 'X-Content-Type-Options', 'nosniff', 'Date', - 'Tue, 18 Jun 2019 06:33:19 GMT', + 'Fri, 28 Jun 2019 12:48:05 GMT', 'Connection', 'close' ]); diff --git a/sdk/keyvault/keyvault-secrets/tests/CRUD.test.ts b/sdk/keyvault/keyvault-secrets/tests/CRUD.test.ts index 88ceac94d2bd..5f63c22a00af 100644 --- a/sdk/keyvault/keyvault-secrets/tests/CRUD.test.ts +++ b/sdk/keyvault/keyvault-secrets/tests/CRUD.test.ts @@ -3,49 +3,25 @@ import * as assert from "assert"; import { SecretsClient } from "../src"; -import { record, setReplaceableVariables, delay, setReplacements, env } from "./utils/recorder"; +import { + record, + setReplaceableVariables, + retry, + setReplacements, + env, + uniqueString +} from "./utils/recorder"; import { EnvironmentCredential } from "@azure/identity"; +import TestClient from "./utils/testClient"; describe("Secret client - create, read, update and delete operations", () => { const secretValue = "SECRET_VALUE"; - const version = ""; let client: SecretsClient; + let testClient: TestClient; let recorder: any; - // NOTES: - // - To allow multiple integraton runs at the same time, - // we might need to factor in more environment variables. - // - Another way to improve this is to add a specfic key per test. - // - The environment variable is probably better named like PREFIX_KEY_NAME. - const secretName = `CRUD${env.SECRET_NAME || "SecretName"}`; - - // NOTES: - // - These functions are probably better moved to a common utility file. - // However, to do that we'll have to create a class or closure to maintain - // the instance of the KeyClient available. - async function purgeSecret(): Promise { - await client.purgeDeletedSecret(secretName); - await delay(30000); - } - async function flushSecret(): Promise { - await client.deleteSecret(secretName); - await delay(30000); - await purgeSecret(); - } - async function maybeFlushSecret(): Promise { - try { - await client.deleteSecret(secretName); - await delay(30000); - } catch (e) { - // It will fail if the key doesn't exist. This expected. - } - try { - await client.purgeDeletedSecret(secretName); - await delay(30000); - } catch (e) { - // It will fail if the key doesn't exist. This expected. - } - } + const secretPrefix = `CRUD${env.SECRET_NAME || "SecretName"}`; + let secretSuffix: string; before(async function() { setReplaceableVariables({ @@ -55,8 +31,11 @@ describe("Secret client - create, read, update and delete operations", () => { KEYVAULT_NAME: "keyvault_name" }); + secretSuffix = uniqueString(); setReplacements([ - (recording) => recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`) + (recording) => recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`), + (recording) => + secretSuffix === "" ? recording : recording.replace(new RegExp(secretSuffix, "g"), "") ]); recorder = record(this); // eslint-disable-line no-invalid-this @@ -65,24 +44,24 @@ describe("Secret client - create, read, update and delete operations", () => { const url = `https://${vaultName}.vault.azure.net`; const credential = new EnvironmentCredential(); client = new SecretsClient(url, credential); - - await maybeFlushSecret(); + testClient = new TestClient(client); }); - after(async () => { + after(async function() { recorder.stop(); }); // The tests follow - it("can add a secret", async () => { + it("can add a secret", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); const result = await client.setSecret(secretName, secretValue); assert.equal(result.name, secretName, "Unexpected secret name in result from setSecret()."); assert.equal(result.value, secretValue, "Unexpected secret value in result from setSecret()."); - await flushSecret(); + await testClient.flushSecret(secretName); }); - it("cannot create a secret with an empty name", async () => { + it("cannot create a secret with an empty name", async function() { const secretName = ""; let error; try { @@ -98,15 +77,16 @@ describe("Secret client - create, read, update and delete operations", () => { ); }); - it("can set a secret with Empty Value", async () => { + it("can set a secret with Empty Value", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); const secretValue = ""; const result = await client.setSecret(secretName, secretValue); assert.equal(result.name, secretName, "Unexpected secret name in result from setSecret()."); assert.equal(result.value, secretValue, "Unexpected secret value in result from setSecret()."); - await flushSecret(); + await testClient.flushSecret(secretName); }); - it("cannot create a secret with a null name", async () => { + it("cannot create a secret with a null name", async function() { const secretName = null; let error; try { @@ -122,7 +102,8 @@ describe("Secret client - create, read, update and delete operations", () => { ); }); - it("can set a secret with attributes", async () => { + it("can set a secret with attributes", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); const expiryDate = new Date("3000-01-01"); expiryDate.setMilliseconds(0); await client.setSecret(secretName, secretValue, { expires: expiryDate }); @@ -132,15 +113,16 @@ describe("Secret client - create, read, update and delete operations", () => { updated.expires.getDate(), "Expect attribute 'expires' to be defined." ); - await flushSecret(); + await testClient.flushSecret(secretName); }); - it("can update a secret", async () => { + it("can update a secret", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); const expiryDate = new Date("3000-01-01"); expiryDate.setMilliseconds(0); await client.setSecret(secretName, secretValue); - await client.updateSecretAttributes(secretName, version, { + await client.updateSecretAttributes(secretName, "", { expires: expiryDate }); @@ -150,17 +132,18 @@ describe("Secret client - create, read, update and delete operations", () => { expiryDate.getDate(), "Expect attribute 'expires' to be updated." ); - await flushSecret(); + await testClient.flushSecret(secretName); }); - it("can update a disabled Secret", async () => { + it("can update a disabled Secret", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); const expiryDate = new Date("3000-01-01"); expiryDate.setMilliseconds(0); await client.setSecret(secretName, secretValue, { enabled: false }); - const updated = await client.updateSecretAttributes(secretName, version, { + const updated = await client.updateSecretAttributes(secretName, "", { expires: expiryDate }); assert.equal( @@ -168,18 +151,20 @@ describe("Secret client - create, read, update and delete operations", () => { expiryDate.getDate(), "Expect attribute 'expires' to be updated." ); - await flushSecret(); + await testClient.flushSecret(secretName); }); - it("can get a secret", async () => { + it("can get a secret", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); await client.setSecret(secretName, secretValue); const result = await client.getSecret(secretName); assert.equal(result.name, secretName, "Unexpected secret name in result from setSecret()."); assert.equal(result.value, secretValue, "Unexpected secret value in result from setSecret()."); - await flushSecret(); + await testClient.flushSecret(secretName); }); - it("can't get a disabled Secret", async () => { + it("can't get a disabled Secret", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); const expiryDate = new Date("3000-01-01"); expiryDate.setMilliseconds(0); @@ -198,20 +183,22 @@ describe("Secret client - create, read, update and delete operations", () => { "Operation get is not allowed on a disabled secret.", "Unexpected error after tryign to get a disabled secret" ); - await flushSecret(); + await testClient.flushSecret(secretName); }); - it("can retrieve the latest version of a secret value", async () => { + it("can retrieve the latest version of a secret value", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); await client.setSecret(secretName, secretValue); const result = await client.getSecret(secretName); assert.equal(result.name, secretName, "Unexpected secret name in result from setSecret()."); assert.equal(result.value, secretValue, "Unexpected secret value in result from setSecret()."); - await flushSecret(); + await testClient.flushSecret(secretName); }); - it("can get a secret (Non Existing)", async () => { + it("can get a secret (Non Existing)", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); let error; try { await client.getSecret(secretName); @@ -226,7 +213,8 @@ describe("Secret client - create, read, update and delete operations", () => { ); }); - it("can delete a secret", async () => { + it("can delete a secret", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); await client.setSecret(secretName, secretValue); await client.deleteSecret(secretName); try { @@ -239,11 +227,11 @@ describe("Secret client - create, read, update and delete operations", () => { throw e; } } - await delay(30000); - await purgeSecret(); + await testClient.purgeSecret(secretName); }); - it("can delete a secret (Non Existing)", async () => { + it("can delete a secret (Non Existing)", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); let error; try { await client.deleteSecret(secretName); @@ -258,16 +246,17 @@ describe("Secret client - create, read, update and delete operations", () => { ); }); - it("can get a deleted secret", async () => { + it("can get a deleted secret", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); await client.setSecret(secretName, "RSA"); await client.deleteSecret(secretName); - await delay(30000); - const getResult = await client.getDeletedSecret(secretName); + const getResult = await retry(async () => client.getDeletedSecret(secretName)); assert.equal(getResult.name, secretName, "Unexpected secret name in result from getSecret()."); - await purgeSecret(); + await testClient.purgeSecret(secretName); }); - it("can get a deleted secret (Non Existing)", async () => { + it("can get a deleted secret (Non Existing)", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); let error; try { await client.deleteSecret(secretName); diff --git a/sdk/keyvault/keyvault-secrets/tests/list.test.ts b/sdk/keyvault/keyvault-secrets/tests/list.test.ts index 333b12d43a82..dff9b9fd568d 100644 --- a/sdk/keyvault/keyvault-secrets/tests/list.test.ts +++ b/sdk/keyvault/keyvault-secrets/tests/list.test.ts @@ -4,49 +4,25 @@ import * as assert from "assert"; import { expect } from "chai"; import { SecretsClient } from "../src"; -import { record, setReplaceableVariables, delay, setReplacements, env } from "./utils/recorder"; +import { + record, + setReplaceableVariables, + retry, + setReplacements, + env, + uniqueString +} from "./utils/recorder"; import { EnvironmentCredential } from "@azure/identity"; -import "./utils/utils.common"; // This loads the asyncIterator polyfill +import TestClient from "./utils/testClient"; describe("Secret client - list secrets in various ways", () => { const secretValue = "SECRET_VALUE"; let client: SecretsClient; + let testClient: TestClient; let recorder: any; - // NOTES: - // - To allow multiple integraton runs at the same time, - // we might need to factor in more environment variables. - // - Another way to improve this is to add a specfic key per test. - // - The environment variable is probably better named like PREFIX_KEY_NAME. - const secretName = `list${env.SECRET_NAME || "SecretName"}`; - - // NOTES: - // - These functions are probably better moved to a common utility file. - // However, to do that we'll have to create a class or closure to maintain - // the instance of the KeyClient available. - async function purgeSecret(): Promise { - await client.purgeDeletedSecret(secretName); - await delay(30000); - } - async function flushSecret(): Promise { - await client.deleteSecret(secretName); - await delay(30000); - await purgeSecret(); - } - async function maybeFlushSecret(): Promise { - try { - await client.deleteSecret(secretName); - await delay(30000); - } catch (e) { - // It will fail if the key doesn't exist. This expected. - } - try { - await client.purgeDeletedSecret(secretName); - await delay(30000); - } catch (e) { - // It will fail if the key doesn't exist. This expected. - } - } + const secretPrefix = `list${env.SECRET_NAME || "SecretName"}`; + let secretSuffix: string; before(async function() { setReplaceableVariables({ @@ -56,8 +32,11 @@ describe("Secret client - list secrets in various ways", () => { KEYVAULT_NAME: "keyvault_name" }); + secretSuffix = uniqueString(); setReplacements([ - (recording) => recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`) + (recording) => recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`), + (recording) => + secretSuffix === "" ? recording : recording.replace(new RegExp(secretSuffix, "g"), "") ]); recorder = record(this); // eslint-disable-line no-invalid-this @@ -66,17 +45,17 @@ describe("Secret client - list secrets in various ways", () => { const url = `https://${vaultName}.vault.azure.net`; const credential = new EnvironmentCredential(); client = new SecretsClient(url, credential); - - await maybeFlushSecret(); + testClient = new TestClient(client); }); - after(async () => { + after(async function() { recorder.stop(); }); - + // The tests follow - it("can list secrets", async () => { + it("can list secrets", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); const secretNames = [`${secretName}0`, `${secretName}1`]; for (const name of secretNames) { await client.setSecret(name, "RSA"); @@ -92,14 +71,12 @@ describe("Secret client - list secrets in various ways", () => { assert.equal(found, 2, "Unexpected number of secrets found by getSecrets."); for (const name of secretNames) { - await client.deleteSecret(name); - await delay(20000); - await client.purgeDeletedSecret(name); + await testClient.flushSecret(name); } - await delay(20000); }); - it("can list deleted secrets", async () => { + it("can list deleted secrets", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); const secretNames = [`${secretName}0`, `${secretName}1`]; for (const name of secretNames) { await client.setSecret(name, "RSA"); @@ -108,7 +85,8 @@ describe("Secret client - list secrets in various ways", () => { await client.deleteSecret(name); } - await delay(20000); + // Waiting until the key is deleted + await retry(async () => client.getDeletedSecret(secretNames[0])); let found = 0; for await (const secret of client.listDeletedSecrets()) { @@ -120,12 +98,12 @@ describe("Secret client - list secrets in various ways", () => { assert.equal(found, 2, "Unexpected number of secrets found by getDeletedSecrets."); for (const name of secretNames) { - await client.purgeDeletedSecret(name); + await testClient.purgeSecret(name); } - await delay(20000); }); - it("can retrieve all versions of a secret", async () => { + it("can retrieve all versions of a secret", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); const secretValues = [`${secretValue}0`, `${secretValue}1`, `${secretValue}2`]; interface VersionValuePair { version: string; @@ -150,10 +128,11 @@ describe("Secret client - list secrets in various ways", () => { versions.sort(comp); expect(results).to.deep.equal(versions); - await flushSecret(); + await testClient.flushSecret(secretName); }); - it("can list secret versions (non existing)", async () => { + it("can list secret versions (non existing)", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); let totalVersions = 0; for await (const version of client.listSecretVersions(secretName)) { assert.equal( @@ -166,7 +145,8 @@ describe("Secret client - list secrets in various ways", () => { assert.equal(totalVersions, 0, `Unexpected total versions for secret ${secretName}`); }); - it("can list secrets", async () => { + it("can list secrets", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); const secretNames = [`${secretName}0`, `${secretName}1`]; for (const name of secretNames) { await client.setSecret(name, "RSA"); @@ -181,14 +161,12 @@ describe("Secret client - list secrets in various ways", () => { } assert.equal(found, 2, "Unexpected number of secrets found by getSecrets."); for (const name of secretNames) { - await client.deleteSecret(name); - await delay(20000); - await client.purgeDeletedSecret(name); + await testClient.flushSecret(name); } - await delay(20000); }); - it("can list deleted secrets", async () => { + it("can list deleted secrets", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); const secretNames = [`${secretName}0`, `${secretName}1`]; for (const name of secretNames) { await client.setSecret(name, "RSA"); @@ -196,7 +174,10 @@ describe("Secret client - list secrets in various ways", () => { for (const name of secretNames) { await client.deleteSecret(name); } - await delay(20000); + + // Waiting until the key is deleted + await retry(async () => client.getDeletedSecret(secretNames[0])); + let found = 0; for await (const page of client.listDeletedSecrets().byPage()) { for (const secret of page) { @@ -207,12 +188,12 @@ describe("Secret client - list secrets in various ways", () => { } assert.equal(found, 2, "Unexpected number of secrets found by getDeletedSecrets."); for (const name of secretNames) { - await client.purgeDeletedSecret(name); + await testClient.purgeSecret(name); } - await delay(20000); }); - it("can retrieve all versions of a secret", async () => { + it("can retrieve all versions of a secret", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); const secretValues = [`${secretValue}0`, `${secretValue}1`, `${secretValue}2`]; interface VersionValuePair { version: string; @@ -239,10 +220,11 @@ describe("Secret client - list secrets in various ways", () => { versions.sort(comp); expect(results).to.deep.equal(versions); - await flushSecret(); + await testClient.flushSecret(secretName); }); - it("can list secret versions (non existing)", async () => { + it("can list secret versions (non existing)", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); let totalVersions = 0; for await (const page of client.listSecretVersions(secretName).byPage()) { for (const version of page) { diff --git a/sdk/keyvault/keyvault-secrets/tests/recoverBackupRestore.test.ts b/sdk/keyvault/keyvault-secrets/tests/recoverBackupRestore.test.ts index 4f66ba6a3e51..04e2ae496e12 100644 --- a/sdk/keyvault/keyvault-secrets/tests/recoverBackupRestore.test.ts +++ b/sdk/keyvault/keyvault-secrets/tests/recoverBackupRestore.test.ts @@ -3,47 +3,25 @@ import * as assert from "assert"; import { SecretsClient } from "../src"; -import { record, setReplaceableVariables, delay, setReplacements, env } from "./utils/recorder"; +import { + record, + setReplaceableVariables, + retry, + setReplacements, + env, + uniqueString +} from "./utils/recorder"; import { EnvironmentCredential } from "@azure/identity"; +import TestClient from "./utils/testClient"; describe("Secret client - restore secrets and recover backups", () => { + const secretValue = "SECRET_VALUE"; let client: SecretsClient; + let testClient: TestClient; let recorder: any; - // NOTES: - // - To allow multiple integraton runs at the same time, - // we might need to factor in more environment variables. - // - Another way to improve this is to add a specfic key per test. - // - The environment variable is probably better named like PREFIX_KEY_NAME. - const secretName = `recover${env.SECRET_NAME || "SecretName"}`; - - // NOTES: - // - These functions are probably better moved to a common utility file. - // However, to do that we'll have to create a class or closure to maintain - // the instance of the KeyClient available. - async function purgeSecret(): Promise { - await client.purgeDeletedSecret(secretName); - await delay(30000); - } - async function flushSecret(): Promise { - await client.deleteSecret(secretName); - await delay(30000); - await purgeSecret(); - } - async function maybeFlushSecret(): Promise { - try { - await client.deleteSecret(secretName); - await delay(30000); - } catch (e) { - // It will fail if the key doesn't exist. This expected. - } - try { - await client.purgeDeletedSecret(secretName); - await delay(30000); - } catch (e) { - // It will fail if the key doesn't exist. This expected. - } - } + const secretPrefix = `recover${env.SECRET_NAME || "SecretName"}`; + let secretSuffix: string; before(async function() { setReplaceableVariables({ @@ -53,8 +31,11 @@ describe("Secret client - restore secrets and recover backups", () => { KEYVAULT_NAME: "keyvault_name" }); + secretSuffix = uniqueString(); setReplacements([ - (recording) => recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`) + (recording) => recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`), + (recording) => + secretSuffix === "" ? recording : recording.replace(new RegExp(secretSuffix, "g"), "") ]); recorder = record(this); // eslint-disable-line no-invalid-this @@ -63,8 +44,7 @@ describe("Secret client - restore secrets and recover backups", () => { const url = `https://${vaultName}.vault.azure.net`; const credential = new EnvironmentCredential(); client = new SecretsClient(url, credential); - - await maybeFlushSecret(); + testClient = new TestClient(client); }); after(async function() { @@ -73,24 +53,24 @@ describe("Secret client - restore secrets and recover backups", () => { // The tests follow - it("can recover a deleted secret", async () => { + it("can recover a deleted secret", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); await client.setSecret(secretName, "RSA"); await client.deleteSecret(secretName); - await delay(20000); - const getDeletedResult = await client.getDeletedSecret(secretName); + const getDeletedResult = await retry(async () => client.getDeletedSecret(secretName)); assert.equal( getDeletedResult.name, secretName, "Unexpected secret name in result from getSecret()." ); await client.recoverDeletedSecret(secretName); - await delay(20000); - const getResult = await client.getSecret(secretName); + const getResult = await retry(async () => client.getSecret(secretName)); assert.equal(getResult.name, secretName, "Unexpected secret name in result from getSecret()."); - await flushSecret(); + await testClient.flushSecret(secretName); }); - it("can recover a deleted secret (non existing)", async () => { + it("can recover a deleted secret (non existing)", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); let error; try { await client.recoverDeletedSecret(secretName); @@ -101,7 +81,8 @@ describe("Secret client - restore secrets and recover backups", () => { assert.equal(error.message, `Secret not found: ${secretName}`); }); - it("can backup a secret", async () => { + it("can backup a secret", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); await client.setSecret(secretName, "RSA"); const result = await client.backupSecret(secretName); assert.equal(Buffer.isBuffer(result), true, "Unexpected return value from backupSecret()"); @@ -109,10 +90,11 @@ describe("Secret client - restore secrets and recover backups", () => { result.length > 4500, `Unexpected length (${result.length}) of buffer from backupSecret()` ); - await flushSecret(); + await testClient.flushSecret(secretName); }); - it("can backup a secret (non existing)", async () => { + it("can backup a secret (non existing)", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); let error; try { await client.backupSecret(secretName); @@ -123,21 +105,18 @@ describe("Secret client - restore secrets and recover backups", () => { assert.equal(error.message, `Secret not found: ${secretName}`); }); - it("can restore a secret", async () => { + it("can restore a secret", async function() { + const secretName = testClient.formatName(`${secretPrefix}-${this.test.title}-${secretSuffix}`); await client.setSecret(secretName, "RSA"); const backup = await client.backupSecret(secretName); - await client.deleteSecret(secretName); - await delay(20000); - await client.purgeDeletedSecret(secretName); - await delay(20000); - await client.restoreSecret(backup); - await delay(20000); + await testClient.flushSecret(secretName); + await retry(async () => client.restoreSecret(backup)); const getResult = await client.getSecret(secretName); assert.equal(getResult.name, secretName, "Unexpected secret name in result from getSecret()."); - await flushSecret(); + await testClient.flushSecret(secretName); }); - it("can restore a secret (Malformed Backup Bytes)", async () => { + it("can restore a secret (Malformed Backup Bytes)", async function() { const backup = Buffer.alloc(4728); let error; try { diff --git a/sdk/keyvault/keyvault-secrets/tests/utils/recorder.ts b/sdk/keyvault/keyvault-secrets/tests/utils/recorder.ts index 3f842acafff5..53c6ee44f4f9 100644 --- a/sdk/keyvault/keyvault-secrets/tests/utils/recorder.ts +++ b/sdk/keyvault/keyvault-secrets/tests/utils/recorder.ts @@ -3,6 +3,7 @@ import fs from "fs-extra"; import { delay as restDelay } from "@azure/ms-rest-js"; +import { retry as realRetry } from "./retry"; import * as dotenv from "dotenv"; dotenv.config({ path: "../../.env" }); @@ -43,6 +44,15 @@ export function delay(milliseconds: number): Promise | null { return isPlayingBack ? null : restDelay(milliseconds); } +export async function retry( + target: () => Promise, + delay: number = 10000, + timeout: number = Infinity, + increaseFactor: number +): Promise { + return realRetry(target, isPlayingBack ? 0 : delay, timeout, increaseFactor); +} + abstract class Recorder { protected readonly filepath: string; public uniqueTestInfo: any = {}; @@ -151,6 +161,14 @@ class NockRecorder extends Recorder { } } +export function uniqueString(): string { + return isPlayingBack + ? "" + : Math.random() + .toString() + .slice(2); +} + // To better understand how this class works, it's necessary to comprehend how HTTP async requests are made: // A new request object is created // let req = new XMLHttpRequest(); diff --git a/sdk/keyvault/keyvault-secrets/tests/utils/retry.test.ts b/sdk/keyvault/keyvault-secrets/tests/utils/retry.test.ts new file mode 100644 index 000000000000..77f991eca7b6 --- /dev/null +++ b/sdk/keyvault/keyvault-secrets/tests/utils/retry.test.ts @@ -0,0 +1,25 @@ +import { assert } from "chai"; +import { retry } from "./retry"; + +describe("retry utility function", function() { + it("throws an exception if we reach the maximum retries", async () => { + const startingDate = new Date(); + await retry( + async () => { + throw new Error("I always fail"); + }, + 100, + 200 + ); + const endingDate = new Date(); + + const difference = endingDate.getTime() - startingDate.getTime(); + assert.ok(difference >= 200); // In CI this takes a lot longer than locally + }); + + it("returns the value if resolved on time", async () => { + const success = async () => true; + const result = await retry(async () => true); + assert.strictEqual(result, true); + }); +}); diff --git a/sdk/keyvault/keyvault-secrets/tests/utils/retry.ts b/sdk/keyvault/keyvault-secrets/tests/utils/retry.ts new file mode 100644 index 000000000000..7f9014a073d9 --- /dev/null +++ b/sdk/keyvault/keyvault-secrets/tests/utils/retry.ts @@ -0,0 +1,29 @@ +import { delay as coreDelay } from "@azure/core-http"; + +/** + * A simple abstraction to retry, and exponentially de-escalate retrying, a + * given async function until it is fulfileld. + * @param {() => Promise} target The async function you want to retry + * @param {number} delay The delay between each retry, defaults to 1000 + * @param {number} timeout Maximum time we'll let this lapse before we quit retrying, defaults to Infinity + * @param {number} increaseFactor Increase factor of each retry, defaults to 1 + * @returns {Promise} Resolved promise + */ +export async function retry( + target: () => Promise, + delay: number = 1000, + timeout: number = Infinity, + increaseFactor: number = 1 +): Promise { + const start = new Date().getTime(); + let updatedDelay = delay; + while (new Date().getTime() - start < timeout) { + try { + return await target(); + } catch { + await coreDelay(updatedDelay); + updatedDelay *= increaseFactor; + } + } + return null; +} diff --git a/sdk/keyvault/keyvault-secrets/tests/utils/testClient.ts b/sdk/keyvault/keyvault-secrets/tests/utils/testClient.ts new file mode 100644 index 000000000000..1bcfcc49362c --- /dev/null +++ b/sdk/keyvault/keyvault-secrets/tests/utils/testClient.ts @@ -0,0 +1,28 @@ +import { retry } from "./recorder"; +import { SecretsClient } from "../../src"; + +export default class TestClient { + public readonly client: SecretsClient; + constructor(client: SecretsClient) { + this.client = client; + } + public formatName(name: string) { + return name.replace(/[^0-9a-zA-Z-]/g, ""); + } + public async purgeSecret(secretName: string): Promise { + const that = this; + await retry(async () => { + try { + await that.client.purgeDeletedSecret(secretName); + } catch (e) { + if (["Secret is currently being deleted."].includes(e.message)) throw e; + else return; + } + }); + } + public async flushSecret(secretName: string): Promise { + const that = this; + await that.client.deleteSecret(secretName); + await this.purgeSecret(secretName); + } +} diff --git a/sdk/keyvault/keyvault-secrets/tests/utils/utils.common.ts b/sdk/keyvault/keyvault-secrets/tests/utils/utils.common.ts index 98952bd5ae91..c950af637728 100644 --- a/sdk/keyvault/keyvault-secrets/tests/utils/utils.common.ts +++ b/sdk/keyvault/keyvault-secrets/tests/utils/utils.common.ts @@ -4,7 +4,7 @@ import { env } from "./recorder"; // Async iterator's polyfill for Node 8 -if (!Symbol || !Symbol.asyncIterator) { +if (!Symbol || !(Symbol as any).asyncIterator) { (Symbol as any).asyncIterator = Symbol.for("Symbol.asyncIterator"); } From 5e32b87613059d4be41223da0d448abc8677c373 Mon Sep 17 00:00:00 2001 From: Mitch Denny Date: Mon, 1 Jul 2019 10:21:44 -0700 Subject: [PATCH 220/289] Adds sdk-type to package.json to support CI/PR validation. (#4096) --- sdk/core/core-asynciterator-polyfill/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/sdk/core/core-asynciterator-polyfill/package.json b/sdk/core/core-asynciterator-polyfill/package.json index d03f6866c513..4dcaca141bdc 100644 --- a/sdk/core/core-asynciterator-polyfill/package.json +++ b/sdk/core/core-asynciterator-polyfill/package.json @@ -5,6 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/azure-sdk-for-js" }, + "sdk-type": "client", "version": "1.0.0-preview.1", "description": "Polyfill for IE/Node 8 for Symbol.asyncIterator", "tags": [ From a321fb2e7267b950c6b6f19568118f377629fd7a Mon Sep 17 00:00:00 2001 From: Jonathan Turner Date: Tue, 2 Jul 2019 06:56:28 +1200 Subject: [PATCH 221/289] Update some bad links in the READMEs (#4133) Update some broken/incorrect links in the readmes --- sdk/keyvault/keyvault-keys/README.md | 2 +- sdk/keyvault/keyvault-secrets/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/keyvault/keyvault-keys/README.md b/sdk/keyvault/keyvault-keys/README.md index 146a0688f0b2..e325d272b9e1 100644 --- a/sdk/keyvault/keyvault-keys/README.md +++ b/sdk/keyvault/keyvault-keys/README.md @@ -21,7 +21,7 @@ Use the client library for Azure KeyVault Keys in your Node.js application to - Get the versions of a key. - As well as obtaining the attributes of a key. -[Source code](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/keyvault/keyvault-keys) | [Package (npm)](https://www.npmjs.com/package/@azure/keyvault-keys) | [API Reference Documentation](https://docs.microsoft.com/en-us/javascript/api/%40azure/keyvault/) | [Product documentation](https://azure.microsoft.com/en-us/services/keyvault/) | [Samples](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/keyvault/keyvault-services/samples) +[Source code](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/keyvault/keyvault-keys) | [Package (npm)](https://www.npmjs.com/package/@azure/keyvault-keys) | [API Reference Documentation](https://azure.github.io/azure-sdk-for-js/keyvault-keys) | [Product documentation](https://azure.microsoft.com/en-us/services/key-vault/) | [Samples](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/keyvault/keyvault-keys/samples) ## Getting started diff --git a/sdk/keyvault/keyvault-secrets/README.md b/sdk/keyvault/keyvault-secrets/README.md index 5806792a3a0f..303683310812 100644 --- a/sdk/keyvault/keyvault-secrets/README.md +++ b/sdk/keyvault/keyvault-secrets/README.md @@ -19,7 +19,7 @@ Use the client library for Azure KeyVault Secrets in your Node.js application to - Get all secrets. - Get all deleted secrets. -[Source code](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/keyvault/keyvault-secrets) | [Package (npm)](https://www.npmjs.com/package/@azure/keyvault-secrets) | [API Reference Documentation](https://docs.microsoft.com/en-us/javascript/api/%40azure/keyvault/) | [Product documentation](https://azure.microsoft.com/en-us/services/keyvault/) | [Samples](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/keyvault/keyvault-services/samples) +[Source code](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/keyvault/keyvault-secrets) | [Package (npm)](https://www.npmjs.com/package/@azure/keyvault-secrets) | [API Reference Documentation](https://azure.github.io/azure-sdk-for-js/keyvault-secrets) | [Product documentation](https://azure.microsoft.com/en-us/services/key-vault/) | [Samples](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/keyvault/keyvault-secrets/samples) ## Getting started From 1f4217d0ebdae2f8f09f8ad253f11e29f3c83fa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez?= Date: Mon, 1 Jul 2019 19:25:19 -0400 Subject: [PATCH 222/289] [JS] [KeyVault] TypeDoc documentation cleanup (#4142) Our current documentation has about 251 globals. This PR makes it so we end up with 8 globals only. Most of the links won't work, but the one with 251 globals has a similar issue since most of the methods use types from external resources, like `@core-http`. The current generated docs, with 251 global entries for each of the keyvault packages, requires the user to go several layers deep to understand a single parameter from a function that is of immediate use once initializing either the KeysClient or the SecretsClient. Having said that, our goal is to simplify the current generated docs so that we can make it better incrementally, starting with samples, more control over the generated core files and other tweaks. --- sdk/keyvault/keyvault-keys/typedoc.json | 11 +++++++++++ sdk/keyvault/keyvault-secrets/typedoc.json | 11 +++++++++++ 2 files changed, 22 insertions(+) create mode 100644 sdk/keyvault/keyvault-keys/typedoc.json create mode 100644 sdk/keyvault/keyvault-secrets/typedoc.json diff --git a/sdk/keyvault/keyvault-keys/typedoc.json b/sdk/keyvault/keyvault-keys/typedoc.json new file mode 100644 index 000000000000..16cbd408d4fb --- /dev/null +++ b/sdk/keyvault/keyvault-keys/typedoc.json @@ -0,0 +1,11 @@ +{ + "mode": "file", + "out": "../../../docGen/keyvault-keys ./src", + "excludeNotExported": true, + "excludePrivate": true, + "exclude": [ + "node_modules/**/*", + "src/core/*" + ], + "ignoreCompilerErrors": true +} diff --git a/sdk/keyvault/keyvault-secrets/typedoc.json b/sdk/keyvault/keyvault-secrets/typedoc.json new file mode 100644 index 000000000000..934c0e435e02 --- /dev/null +++ b/sdk/keyvault/keyvault-secrets/typedoc.json @@ -0,0 +1,11 @@ +{ + "mode": "file", + "out": "../../../docGen/keyvault-secrets ./src", + "excludeNotExported": true, + "excludePrivate": true, + "exclude": [ + "node_modules/**/*", + "src/core/*" + ], + "ignoreCompilerErrors": true +} From 54c0f6edad4945a3f3e8af4ee0c39295d1a29bbd Mon Sep 17 00:00:00 2001 From: KarishmaGhiya Date: Mon, 1 Jul 2019 17:20:58 -0700 Subject: [PATCH 223/289] Support doc generation for "feature" branches other than master (#4115) * generate-docs script updated to accept inclusion OR exclusion args, pipeline updated to accept build args to script --- common/scripts/generate-doc.js | 328 +++++++++++++++++++-------------- eng/pipelines/docs.yml | 9 +- 2 files changed, 197 insertions(+), 140 deletions(-) diff --git a/common/scripts/generate-doc.js b/common/scripts/generate-doc.js index 9857fad0bc40..4079058359e6 100644 --- a/common/scripts/generate-doc.js +++ b/common/scripts/generate-doc.js @@ -5,6 +5,7 @@ const nunjucks = require("nunjucks"); nunjucks.configure("documentation/templateDocGen", { autoescape: true }); +/* Traversing the directory */ function walk(dir, checks) { var list = fs.readdirSync(dir); for (const fileName of list) { @@ -29,18 +30,91 @@ function walk(dir, checks) { const stat = fs.statSync(filePath); if (stat && stat.isDirectory()) { checks = walk(filePath, checks); - } else { - // console.log(path.resolve(filePath)); //For-debug } } return checks; } -const [ - nodePath /* Ex: /bin/node */, - scriptPath /* /repo/common/scripts/generate-doc.js */, - docGen /* -dg */ -] = process.argv; +/* Checking if a package exists in the exclusion/ inclusion list */ +function isPackageInArray(package, inputArray) { + for (var i in inputArray) { + if (inputArray[i] == package) { + return true; + } + } + return false; +} + +/* Input arguments to the script */ +var argv = require("yargs") + .options({ + docGenOutput: { + alias: "dgOp", + type: "string", + choices: ["dg", "local"], + describe: + "If value = dg, generate the docs in root/docGen folder, else generated under dist/docs/ of local package", + demandOption: true + }, + includeMode: { + alias: "i", + type: "string", + describe: + "select whether there is inclusion mode, exclusion mode or neither", + choices: ["inc", "exc", "none"], + demandOption: true + }, + include: { + alias: "inc", + type: "array", + describe: + "inclusion list of packages for which the docs should be generated. The index template html is not created in this mode." + }, + exclude: { + alias: "exc", + type: "array", + describe: + "exclusion list for packages for which the docs should be NOT generated.These packages will be added to index template html generated." + } + }) + .demandOption( + ["docGenOutput", "includeMode"], + "Please provide both docGen and includeMode arguments to work with this tool" + ) + .help().argv; + +/* Variables for inclusion or exclusion package lists */ +let exclusionList = []; +let inclusionList = []; + +/* Generate index html from the template by default */ +let generateIndexWithTemplate = true; +if((argv.dgOp === "local") && (argv.includeMode !== "none")){ + console.error(`--includeMode "inc" or "exc" is supported only when the documentGenoutput is set to "dg" instead of "local"!!`); + process.exit(1); +} + +if (argv.includeMode === "inc") { + generateIndexWithTemplate = false; + if (argv.include !== undefined) { + inclusionList = argv.include; + } else { + console.error(`--includeMode "inc" requires the inclusion list --inc to be passed as an argument!!`); + process.exit(1); + } +} +else if(argv.includeMode === "exc"){ + if(argv.exclude !== undefined) { + exclusionList = argv.exclude; + } else { + console.error(`--excludeMode "exc" requires the exclusion list --exc to be passed as an argument!!`); + process.exit(1); + } +} +else if((argv.includeMode === "none")){ + generateIndexWithTemplate = false; +} + let docOutputFolder = "--out ./dist/docs ./src"; console.log("process.cwd = " + process.cwd()); @@ -51,7 +125,6 @@ try { shell: true }); console.log('result.output for "rush install":' + result.output); - //process.exit(result.status); //For-debug } catch (e) { console.error(`\n\n${e.toString()}\n\n`); process.exit(1); @@ -61,167 +134,144 @@ let workingDir = path.join(process.cwd(), "sdk"); let pathToAssets = ""; const serviceFolders = fs.readdirSync(workingDir); -console.log("Service folders:"); //For-debug -console.log(serviceFolders); //For-debug -//Initializing package list for template index generation +/* Initializing package list for template index generation */ let serviceList = []; let count = 0; for (const eachService of serviceFolders) { count++; - //if(count > 5) //For-debug - //break; //For-debug - console.log("count = " + count); const eachServicePath = path.join(workingDir, eachService); const stat = fs.statSync(eachServicePath); if (stat && stat.isDirectory()) { var packageList = fs.readdirSync(eachServicePath); - //Initializing package list for template index generation + + /* Initializing package list for template index generation */ let indexPackageList = []; for (const eachPackage of packageList) { - let checks = { - isRush: false, - isPrivate: false, - srcPresent: false, - typedocPresent: false - }; - console.log( - "checks before walk: checks.isRush = " + - checks.isRush + - " , checks.isPrivate = " + - checks.isPrivate + - ", checks.srcPresent = " + - checks.srcPresent + - ", typedocPresent = " + - checks.typedocPresent - ); - eachPackagePath = path.join(eachServicePath, eachPackage); - pathToAssets = eachPackagePath + "/assets"; - const packageStat = fs.statSync(eachPackagePath); - if (packageStat && packageStat.isDirectory()) { - checks = walk(eachPackagePath, checks); - + if ((argv.includeMode === "inc" && isPackageInArray(eachPackage, inclusionList)) || !(argv.includeMode === "inc")) { + let checks = { + isRush: false, + isPrivate: false, + srcPresent: false, + typedocPresent: false + }; console.log( - "checks after walk: checks.isRush = " + - checks.isRush + - " , checks.isPrivate = " + - checks.isPrivate + - ", checks.srcPresent = " + - checks.srcPresent + - ", typedocPresent = " + - checks.typedocPresent + "checks before walk: checks.isRush = " + checks.isRush + + " , checks.isPrivate = " + checks.isPrivate + + ", checks.srcPresent = " + checks.srcPresent + + ", typedocPresent = " + checks.typedocPresent ); - console.log("Path: " + eachPackagePath); - if (!checks.isPrivate) { - if (checks.srcPresent) { - if (!checks.isRush) { + eachPackagePath = path.join(eachServicePath, eachPackage); + pathToAssets = eachPackagePath + "/assets"; + const packageStat = fs.statSync(eachPackagePath); + if (packageStat && packageStat.isDirectory()) { + checks = walk(eachPackagePath, checks); + + console.log( + "checks after walk: checks.isRush = " + checks.isRush + + " , checks.isPrivate = " + checks.isPrivate + + ", checks.srcPresent = " + checks.srcPresent + + ", typedocPresent = " + checks.typedocPresent + ); + console.log("Path: " + eachPackagePath); + if (!checks.isPrivate) { + if (checks.srcPresent) { + if (!checks.isRush) { + try { + const npmResult = childProcess.spawnSync("npm", ["install"], { + stdio: "inherit", + cwd: eachPackagePath, + shell: true + }); + console.log('npmResult.output for "npm install":' + npmResult.output); + } catch (e) { + console.error(`\n\n${e.toString()}\n\n`); + process.exit(1); + } + } + if (argv.docGenOutput === "dg") { + docOutputFolder = "--out ../../../docGen/" + eachPackage + " ./src"; + } + try { - const result2 = childProcess.spawnSync("npm", ["install"], { - stdio: "inherit", - cwd: eachPackagePath, - shell: true - }); - console.log( - 'result2.output for "npm install":' + result2.output - ); + if (!isPackageInArray(eachPackage, exclusionList)) { + if (checks.typedocPresent) { + const typedocResult = childProcess.spawnSync( + "typedoc", + [docOutputFolder], + { + cwd: eachPackagePath, + shell: true + } + ); + console.log('typedocResult.output for "typedoc ' + docOutputFolder +' ":' + typedocResult.output); + } else { + const typedocResult = childProcess.spawnSync( + "typedoc", + [ + "--excludePrivate", + "--excludeNotExported", + '--exclude "node_modules/**/*"', + "--ignoreCompilerErrors", + "--mode file", + docOutputFolder + ], + { + cwd: eachPackagePath, + shell: true + } + ); + console.log( + 'typedocResult.output for "typedoc --excludePrivate --excludeNotExported --exclude "node_modules/**/*" -ignoreCompilerErrors --mode file ' + docOutputFolder + ' ":' + typedocResult.output); + } + } else { + console.log("... NOT RUNNING TYPEDOC on excluded package " + eachPackage); + } } catch (e) { console.error(`\n\n${e.toString()}\n\n`); process.exit(1); } - } - if (docGen === "-dg") { - docOutputFolder = - "--out ../../../docGen/" + eachPackage + " ./src"; - } - - try { - if (checks.typedocPresent) { - const result3 = childProcess.spawnSync( - "typedoc", - [docOutputFolder], - { - cwd: eachPackagePath, - shell: true - } - ); - console.log( - 'result3.output for "typedoc ' + - docOutputFolder + - ' ":' + - result3.output - ); - } else { - const result3 = childProcess.spawnSync( - "typedoc", - [ - "--excludePrivate", - "--excludeNotExported", - '--exclude "node_modules/**/*"', - "--ignoreCompilerErrors", - "--mode file", - docOutputFolder - ], - { - cwd: eachPackagePath, - shell: true - } - ); - console.log( - 'result3.output for "typedoc --excludePrivate --excludeNotExported --exclude "node_modules/**/*" -ignoreCompilerErrors --mode file ' + - docOutputFolder + - ' ":' + - result3.output - ); + if (generateIndexWithTemplate) { + /* Adding package to packageList for the template index generation */ + indexPackageList.push(eachPackage); } - } catch (e) { - console.error(`\n\n${e.toString()}\n\n`); - process.exit(1); + } else { + console.log("...SKIPPING Since src folder could not be found....."); } - //Adding package to packageList for the template index generation - indexPackageList.push(eachPackage); } else { - console.log("...SKIPPING Since src folder could not be found....."); + console.log("...SKIPPING Since package marked as private..."); } - } else { - console.log("...SKIPPING Since package marked as private..."); } } - } - //Adding service entry for the template index generation + } //end-for each-package + /* Adding service entry for the template index generation */ serviceList.push({ name: eachService, packageList: indexPackageList }); } } // end-for ServiceFolders +console.log("generateIndexWithTemplate=" + generateIndexWithTemplate); +if (generateIndexWithTemplate) { + var renderedIndex = nunjucks.render("template.html", { + serviceList: serviceList + }); -var renderedIndex = nunjucks.render("template.html", { - serviceList: serviceList -}); -//console.log(serviceList); -//console.log("rendered html:"); //For-debug -//console.log(renderedIndex); //For-debug -var dest = process.cwd() + "/docGen/index.html"; -fs.writeFile(dest, renderedIndex, function(err, result) { - if (err) - console.log( - "error in writing the generated html to docGen/index.html", - err - ); - console.log("Generated html written to docGen/index.html"); -}); -console.log(serviceList[0].packageList[0]); -console.log("serviceList length = " + serviceList.length); -if (serviceList.length > 0) { - //copy from pathToAssets to docGen/assets - pathToAssets = - process.cwd() + "/docGen/" + serviceList[0].packageList[0] + "/assets"; - var assetsDest = process.cwd() + "/docGen/assets/"; - fs.copy(pathToAssets, assetsDest, err => { + var dest = process.cwd() + "/docGen/index.html"; + fs.writeFile(dest, renderedIndex, function(err, result) { if (err) - return console.error( - "error copying the assets folder to docGen/assets/", - err - ); - console.log("assets folder copied to docGen!"); + console.log("error in writing the generated html to docGen/index.html", err); + console.log("Generated html written to docGen/index.html"); }); + + console.log("serviceList length = " + serviceList.length); + if (serviceList.length > 0) { + /* Copy from pathToAssets to docGen/assets */ + pathToAssets = process.cwd() + "/docGen/" + serviceList[0].packageList[0] + "/assets"; + var assetsDest = process.cwd() + "/docGen/assets/"; + fs.copy(pathToAssets, assetsDest, err => { + if (err) + return console.error("error copying the assets folder to docGen/assets/",err); + console.log("assets folder copied to docGen!"); + }); + } } diff --git a/eng/pipelines/docs.yml b/eng/pipelines/docs.yml index dcad48fffaf9..18e9f0681c44 100644 --- a/eng/pipelines/docs.yml +++ b/eng/pipelines/docs.yml @@ -1,3 +1,6 @@ +#Pipeline variables: +# $(additionalArgs) eg : -i "exc" --exc arm-advisor arm-apimanagement OR -i "inc" --inc arm-advisor arm-apimanagement + trigger: - master @@ -38,9 +41,13 @@ jobs: npm install fs-extra displayName: "Install fs-extra" + - script: | + npm install yargs + displayName: "Install yargs" + - powershell: | cd $(Build.SourcesDirectory) - node .\common\scripts\generate-doc.js -dg + node .\common\scripts\generate-doc.js --dgOp "dg" $(additionalArgs) Copy-Item -Path $(Build.SourcesDirectory)/docGen/* -Destination $(Build.ArtifactStagingDirectory) -Recurse -Force displayName: "Generate Typedoc Docs" From 86d1791ac3b9f1f2abf83628c6fc896cd4d32a32 Mon Sep 17 00:00:00 2001 From: Jonathan Turner Date: Wed, 3 Jul 2019 06:11:41 +1200 Subject: [PATCH 224/289] Add samples to API docs (#4143) --- sdk/keyvault/keyvault-keys/src/index.ts | 120 +++++++++++++++++++++ sdk/keyvault/keyvault-secrets/src/index.ts | 99 ++++++++++++++++- 2 files changed, 218 insertions(+), 1 deletion(-) diff --git a/sdk/keyvault/keyvault-keys/src/index.ts b/sdk/keyvault/keyvault-keys/src/index.ts index 5dc8588aeac7..1be8b732995c 100644 --- a/sdk/keyvault/keyvault-keys/src/index.ts +++ b/sdk/keyvault/keyvault-keys/src/index.ts @@ -151,6 +151,17 @@ export class KeysClient { /** * Creates an instance of KeysClient. + * + * Example usage: + * ```ts + * import { KeysClient } from "@azure/keyvault-keys"; + * import { EnvironmentCredential } from "@azure/identity"; + * + * let url = `https://.vault.azure.net`; + * let credentials = new EnvironmentCredential(); + * + * let client = new KeysClient(url, credentials); + * ``` * @param {string} url the base url to the key vault. * @param {ServiceClientCredentials | TokenCredential} The credential to use for API requests. * @param {(Pipeline | NewPipelineOptions)} [pipelineOrOptions={}] Optional. A Pipeline, or options to create a default Pipeline instance. @@ -197,6 +208,13 @@ export class KeysClient { * The create key operation can be used to create any key type in Azure Key Vault. If the named key * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create * permission. + * + * Example usage: + * ```ts + * let client = new KeysClient(url, credentials); + * // Create an elliptic-curve key: + * let result = await client.createKey("MyKey", "EC"); + * ``` * @summary Creates a new key, stores it, then returns key parameters and attributes to the client. * @param name The name of the key. * @param keyType The type of the key. @@ -242,6 +260,12 @@ export class KeysClient { * The create key operation can be used to create any key type in Azure Key Vault. If the named key * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create * permission. + * + * Example usage: + * ```ts + * let client = new KeysClient(url, credentials); + * let result = await client.createEcKey("MyKey", { curve: "P-256" }); + * ``` * @summary Creates a new key, stores it, then returns key parameters and attributes to the client. * @param name The name of the key. * @param keyType The type of the key. @@ -283,6 +307,12 @@ export class KeysClient { * The create key operation can be used to create any key type in Azure Key Vault. If the named key * already exists, Azure Key Vault creates a new version of the key. It requires the keys/create * permission. + * + * Example usage: + * ```ts + * let client = new KeysClient(url, credentials); + * let result = await client.createRsaKey("MyKey", { keySize: 2048 }); + * ``` * @summary Creates a new key, stores it, then returns key parameters and attributes to the client. * @param name The name of the key. * @param keyType The type of the key. @@ -324,6 +354,13 @@ export class KeysClient { * The import key operation may be used to import any key type into an Azure Key Vault. If the * named key already exists, Azure Key Vault creates a new version of the key. This operation * requires the keys/import permission. + * + * Example usage: + * ```ts + * let client = new KeysClient(url, credentials); + * // Key contents in myKeyContents + * let result = await client.importKey("MyKey", myKeyContents); + * ``` * @summary Imports an externally created key, stores it, and returns key parameters and attributes * to the client. * @param name Name for the imported key. @@ -363,6 +400,12 @@ export class KeysClient { /** * The DELETE operation applies to any key stored in Azure Key Vault. DELETE cannot be applied * to an individual version of a key. This operation requires the keys/delete permission. + * + * Example usage: + * ```ts + * let client = new KeysClient(url, credentials); + * let result = await client.deleteKey("MyKey"); + * ``` * @summary Deletes a key from a specified key vault. * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. * @param name The name of the key. @@ -382,6 +425,14 @@ export class KeysClient { * The UPDATE operation changes specified attributes of an existing stored key. Attributes that * are not specified in the request are left unchanged. The value of a key itself cannot be * changed. This operation requires the keys/set permission. + * + * Example usage: + * ```ts + * let keyName = "MyKey"; + * let client = new KeysClient(url, credentials); + * let key = await client.getKey(keyName); + * let result = await client.updateKey(keyName, key.version, { enabled: false }); + * ``` * @summary Updates the attributes associated with a specified key in a given key vault. * @param name The name of the key. * @param keyVersion The version of the key. @@ -425,6 +476,12 @@ export class KeysClient { /** * The GET operation is applicable to any key stored in Azure Key Vault. This operation requires * the keys/get permission. + * + * Example usage: + * ```ts + * let client = new KeysClient(url, credentials); + * let key = await client.getKey("MyKey"); + * ``` * @summary Get a specified key from a given key vault. * @param name The name of the key. * @param [options] The optional parameters @@ -443,6 +500,12 @@ export class KeysClient { /** * The Get Deleted Key operation returns the specified deleted key along with its attributes. * This operation requires the keys/get permission. + * + * Example usage: + * ```ts + * let client = new KeysClient(url, credentials); + * let key = await client.getDeletedKey("MyDeletedKey"); + * ``` * @summary Gets the specified deleted key. * @param name The name of the key. * @param [options] The optional parameters @@ -461,6 +524,14 @@ export class KeysClient { * The purge deleted key operation removes the key permanently, without the possibility of * recovery. This operation can only be enabled on a soft-delete enabled vault. This operation * requires the keys/purge permission. + * + * Example usage: + * ```ts + * let client = new KeysClient(url, credentials); + * await client.deleteKey("MyKey"); + * // ... + * await client.purgeDeletedKey("MyKey"); + * ``` * @summary Permanently deletes the specified key. * @param name The name of the key. * @param [options] The optional parameters @@ -477,6 +548,14 @@ export class KeysClient { /** * Recovers the deleted key in the specified vault. This operation can only be performed on a * soft-delete enabled vault. This operation requires the keys/recover permission. + * + * Example usage: + * ```ts + * let client = new KeysClient(url, credentials); + * await client.deleteKey("MyKey"); + * // ... + * await client.recoverDeletedKey("MyKey"); + * ``` * @summary Recovers the deleted key to the latest version. * @param name The name of the deleted key. * @param [options] The optional parameters @@ -494,6 +573,12 @@ export class KeysClient { /** * Requests that a backup of the specified key be downloaded to the client. All versions of the * key will be downloaded. This operation requires the keys/backup permission. + * + * Example usage: + * ```ts + * let client = new KeysClient(url, credentials); + * let backupContents = await client.backupKey("MyKey"); + * ``` * @summary Backs up the specified key. * @param name The name of the key. * @param [options] The optional parameters @@ -511,6 +596,14 @@ export class KeysClient { /** * Restores a backed up key, and all its versions, to a vault. This operation requires the * keys/restore permission. + * + * Example usage: + * ```ts + * let client = new KeysClient(url, credentials); + * let backupContents = await client.backupKey("MyKey"); + * // ... + * let key = await client.restoreKey(backupContents); + * ``` * @summary Restores a backed up key to a vault. * @param backup The backup blob associated with a key bundle. * @param [options] The optional parameters @@ -569,6 +662,15 @@ export class KeysClient { /** * Iterates all versions of the given key in the vault. The full key identifier, attributes, and tags are provided * in the response. This operation requires the keys/list permission. + * + * Example usage: + * ```ts + * let client = new KeysClient(url, credentials); + * for await (const keyAttr of client.listKeyVersions("MyKey")) { + * const key = await client.getKey(keyAttr.name); + * console.log("key version: ", key); + * } + * ``` * @param name Name of the key to fetch versions for * @param [options] The optional parameters * @returns PagedAsyncIterableIterator @@ -625,6 +727,15 @@ export class KeysClient { /** * Iterates the latest version of all keys in the vault. The full key identifier and attributes are provided * in the response. No values are returned for the keys. This operations requires the keys/list permission. + * + * Example usage: + * ```ts + * let client = new KeysClient(url, credentials); + * for await (const keyAttr of client.listKeys()) { + * const key = await client.getKey(keyAttr.name); + * console.log("key: ", key); + * } + * ``` * @summary List all keys in the vault * @param [options] The optional parameters * @returns PagedAsyncIterableIterator @@ -685,6 +796,15 @@ export class KeysClient { /** * Iterates the deleted keys in the vault. The full key identifier and attributes are provided * in the response. No values are returned for the keys. This operations requires the keys/list permission. + * + * Example usage: + * ```ts + * let client = new KeysClient(url, credentials); + * for await (const keyAttr of client.listDeletedKeys()) { + * const deletedKey = await client.getKey(keyAttr.name); + * console.log("deleted key: ", deletedKey); + * } + * ``` * @summary List all keys in the vault * @param [options] The optional parameters * @returns PagedAsyncIterableIterator diff --git a/sdk/keyvault/keyvault-secrets/src/index.ts b/sdk/keyvault/keyvault-secrets/src/index.ts index 6966e841b197..fde47f8f5481 100644 --- a/sdk/keyvault/keyvault-secrets/src/index.ts +++ b/sdk/keyvault/keyvault-secrets/src/index.ts @@ -72,7 +72,6 @@ export { ProxyOptions, RetryOptions, TelemetryOptions }; export class SecretsClient { /** * A static method used to create a new Pipeline object with the provided Credential. - * * @static * @param {ServiceClientCredentials | TokenCredential} The credential to use for API requests. * @param {NewPipelineOptions} [pipelineOptions] Optional. Options. @@ -134,6 +133,17 @@ export class SecretsClient { /** * Creates an instance of SecretsClient. + * + * Example usage: + * ```ts + * import { SecretsClient } from "@azure/keyvault-secrets"; + * import { EnvironmentCredential } from "@azure/identity"; + * + * let url = `https://.vault.azure.net`; + * let credentials = new EnvironmentCredential(); + * + * let client = new SecretsClient(url, credentials); + * ``` * @param {string} url the base url to the key vault. * @param {ServiceClientCredentials | TokenCredential} The credential to use for API requests. * @param {(Pipeline | NewPipelineOptions)} [pipelineOrOptions={}] Optional. A Pipeline, or options to create a default Pipeline instance. @@ -180,6 +190,12 @@ export class SecretsClient { * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, * Azure Key Vault creates a new version of that secret. This operation requires the secrets/set * permission. + * + * Example usage: + * ```ts + * let client = new SecretsClient(url, credentials); + * await client.setSecret("MySecretName", "ABC123"); + * ``` * @summary Adds a secret in a specified key vault. * @param secretName The name of the secret. * @param value The value of the secret. @@ -223,6 +239,12 @@ export class SecretsClient { /** * The DELETE operation applies to any secret stored in Azure Key Vault. DELETE cannot be applied * to an individual version of a secret. This operation requires the secrets/delete permission. + * + * Example usage: + * ```ts + * let client = new SecretsClient(url, credentials); + * await client.deleteSecret("MySecretName"); + * ``` * @summary Deletes a secret from a specified key vault. * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. * @param secretName The name of the secret. @@ -241,6 +263,14 @@ export class SecretsClient { * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that * are not specified in the request are left unchanged. The value of a secret itself cannot be * changed. This operation requires the secrets/set permission. + * + * Example usage: + * ```ts + * let secretName = "MySecretName"; + * let client = new SecretsClient(url, credentials); + * let secret = await client.getSecret(secretName); + * await client.updateSecret(secretName, secret.version, { enabled: false }); + * ``` * @summary Updates the attributes associated with a specified secret in a given key vault. * @param secretName The name of the secret. * @param secretVersion The version of the secret. @@ -289,6 +319,12 @@ export class SecretsClient { /** * The GET operation is applicable to any secret stored in Azure Key Vault. This operation requires * the secrets/get permission. + * + * Example usage: + * ```ts + * let client = new SecretsClient(url, credentials); + * let secret = await client.getSecret("MySecretName"); + * ``` * @summary Get a specified secret from a given key vault. * @param secretName The name of the secret. * @param [options] The optional parameters @@ -307,6 +343,12 @@ export class SecretsClient { /** * The Get Deleted Secret operation returns the specified deleted secret along with its attributes. * This operation requires the secrets/get permission. + * + * Example usage: + * ```ts + * let client = new SecretsClient(url, credentials); + * await client.getDeletedSecret("MyDeletedSecret"); + * ``` * @summary Gets the specified deleted secret. * @param secretName The name of the secret. * @param [options] The optional parameters @@ -324,6 +366,13 @@ export class SecretsClient { * The purge deleted secret operation removes the secret permanently, without the possibility of * recovery. This operation can only be enabled on a soft-delete enabled vault. This operation * requires the secrets/purge permission. + * + * Example usage: + * ```ts + * let client = new SecretsClient(url, credentials); + * await client.deleteSecret("MySecretName"); + * await client.purgeDeletedSecret("MySecretName"); + * ``` * @summary Permanently deletes the specified secret. * @param secretName The name of the secret. * @param [options] The optional parameters @@ -336,6 +385,13 @@ export class SecretsClient { /** * Recovers the deleted secret in the specified vault. This operation can only be performed on a * soft-delete enabled vault. This operation requires the secrets/recover permission. + * + * Example usage: + * ```ts + * let client = new SecretsClient(url, credentials); + * await client.deleteSecret("MySecretName"); + * await client.recoverDeletedSecret("MySecretName"); + * ``` * @summary Recovers the deleted secret to the latest version. * @param secretName The name of the deleted secret. * @param [options] The optional parameters @@ -352,6 +408,12 @@ export class SecretsClient { /** * Requests that a backup of the specified secret be downloaded to the client. All versions of the * secret will be downloaded. This operation requires the secrets/backup permission. + * + * Example usage: + * ```ts + * let client = new SecretsClient(url, credentials); + * let backupResult = await client.backupSecret("MySecretName"); + * ``` * @summary Backs up the specified secret. * @param secretName The name of the secret. * @param [options] The optional parameters @@ -369,6 +431,14 @@ export class SecretsClient { /** * Restores a backed up secret, and all its versions, to a vault. This operation requires the * secrets/restore permission. + * + * Example usage: + * ```ts + * let client = new SecretsClient(url, credentials); + * let mySecretBundle = await client.backupSecret("MySecretName"); + * // ... + * await client.restoreSecret(mySecretBundle); + * ``` * @summary Restores a backed up secret to a vault. * @param secretBundleBackup The backup blob associated with a secret bundle. * @param [options] The optional parameters @@ -430,6 +500,15 @@ export class SecretsClient { /** * Iterates all versions of the given secret in the vault. The full secret identifier and attributes are provided * in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * Example usage: + * ```ts + * let client = new SecretsClient(url, credentials); + * for await (const secretAttr of client.listSecretVersions("MySecretName")) { + * const secret = await client.getSecret(secretAttr.name); + * console.log("secret version: ", secret); + * } + * ``` * @param secretName Name of the secret to fetch versions for * @param [options] The optional parameters * @returns PagedAsyncIterableIterator @@ -489,6 +568,15 @@ export class SecretsClient { /** * Iterates the latest version of all secrets in the vault. The full secret identifier and attributes are provided * in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * Example usage: + * ```ts + * let client = new SecretsClient(url, credentials); + * for await (const secretAttr of client.listSecrets()) { + * const secret = await client.getSecret(secretAttr.name); + * console.log("secret: ", secret); + * } + * ``` * @summary List all secrets in the vault * @param [options] The optional parameters * @returns PagedAsyncIterableIterator @@ -549,6 +637,15 @@ export class SecretsClient { /** * Iterates the deleted secrets in the vault. The full secret identifier and attributes are provided * in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * Example usage: + * ```ts + * let client = new SecretsClient(url, credentials); + * for await (const secretAttr of client.listDeletedSecrets()) { + * const deletedSecret = await client.getSecret(secretAttr.name); + * console.log("deleted secret: ", deletedSecret); + * } + * ``` * @summary List all secrets in the vault * @param [options] The optional parameters * @returns PagedAsyncIterableIterator From 636d56b4eb3d813718bae03e743652079c162f7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez?= Date: Tue, 2 Jul 2019 14:30:48 -0400 Subject: [PATCH 225/289] [JS] [KeyVault] Fixed the LICENSE files (#4138) Took the changes and the recommendations from https://github.com/Azure/azure-sdk-for-js/pull/4012 Fixes #3842 --- sdk/keyvault/keyvault-keys/{LICENSE.md => LICENSE.TXT} | 6 +++--- sdk/keyvault/keyvault-secrets/{LICENSE.md => LICENSE.TXT} | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) rename sdk/keyvault/keyvault-keys/{LICENSE.md => LICENSE.TXT} (87%) rename sdk/keyvault/keyvault-secrets/{LICENSE.md => LICENSE.TXT} (87%) diff --git a/sdk/keyvault/keyvault-keys/LICENSE.md b/sdk/keyvault/keyvault-keys/LICENSE.TXT similarity index 87% rename from sdk/keyvault/keyvault-keys/LICENSE.md rename to sdk/keyvault/keyvault-keys/LICENSE.TXT index 769167ada543..75f196e24648 100644 --- a/sdk/keyvault/keyvault-keys/LICENSE.md +++ b/sdk/keyvault/keyvault-keys/LICENSE.TXT @@ -1,6 +1,6 @@ -The MIT License (MIT) +Copyright (c) Microsoft Corporation. All rights reserved. -Copyright (c) 2018 Microsoft +MIT License Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -12,7 +12,7 @@ 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 +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 diff --git a/sdk/keyvault/keyvault-secrets/LICENSE.md b/sdk/keyvault/keyvault-secrets/LICENSE.TXT similarity index 87% rename from sdk/keyvault/keyvault-secrets/LICENSE.md rename to sdk/keyvault/keyvault-secrets/LICENSE.TXT index 769167ada543..75f196e24648 100644 --- a/sdk/keyvault/keyvault-secrets/LICENSE.md +++ b/sdk/keyvault/keyvault-secrets/LICENSE.TXT @@ -1,6 +1,6 @@ -The MIT License (MIT) +Copyright (c) Microsoft Corporation. All rights reserved. -Copyright (c) 2018 Microsoft +MIT License Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -12,7 +12,7 @@ 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 +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 From 5483598d48c15dc9c6775de45caf1a9efcb3a120 Mon Sep 17 00:00:00 2001 From: Jonathan Turner Date: Wed, 3 Jul 2019 07:06:18 +1200 Subject: [PATCH 226/289] Bump versions to .2 (#4144) * Bump versions to .2 * Bump version given to pipeline --- sdk/keyvault/keyvault-keys/package.json | 2 +- sdk/keyvault/keyvault-keys/src/core/utils/constants.ts | 2 +- sdk/keyvault/keyvault-secrets/package.json | 2 +- sdk/keyvault/keyvault-secrets/src/core/utils/constants.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sdk/keyvault/keyvault-keys/package.json b/sdk/keyvault/keyvault-keys/package.json index 15809f60c8a9..f2fce775bf8c 100644 --- a/sdk/keyvault/keyvault-keys/package.json +++ b/sdk/keyvault/keyvault-keys/package.json @@ -2,7 +2,7 @@ "name": "@azure/keyvault-keys", "sdk-type": "client", "author": "Microsoft Corporation", - "version": "4.0.0-preview.1", + "version": "4.0.0-preview.2", "license": "MIT", "description": "Isomorphic client library for Azure KeyVault's keys.", "homepage": "https://github.com/Azure/azure-sdk-for-js#readme", diff --git a/sdk/keyvault/keyvault-keys/src/core/utils/constants.ts b/sdk/keyvault/keyvault-keys/src/core/utils/constants.ts index ba30459a5889..101b93a1cfb3 100644 --- a/sdk/keyvault/keyvault-keys/src/core/utils/constants.ts +++ b/sdk/keyvault/keyvault-keys/src/core/utils/constants.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -export const SDK_VERSION: string = "1.0.0-preview1"; +export const SDK_VERSION: string = "4.0.0-preview.2"; export const RetryConstants = { MIN_RETRY_INTERVAL_MS: 3000 diff --git a/sdk/keyvault/keyvault-secrets/package.json b/sdk/keyvault/keyvault-secrets/package.json index 1765d9dba7f2..6e1cb88c6c51 100644 --- a/sdk/keyvault/keyvault-secrets/package.json +++ b/sdk/keyvault/keyvault-secrets/package.json @@ -2,7 +2,7 @@ "name": "@azure/keyvault-secrets", "sdk-type": "client", "author": "Microsoft Corporation", - "version": "4.0.0-preview.1", + "version": "4.0.0-preview.2", "license": "MIT", "description": "Isomorphic client library for Azure KeyVault's secrets.", "homepage": "https://github.com/Azure/azure-sdk-for-js#readme", diff --git a/sdk/keyvault/keyvault-secrets/src/core/utils/constants.ts b/sdk/keyvault/keyvault-secrets/src/core/utils/constants.ts index ba30459a5889..101b93a1cfb3 100644 --- a/sdk/keyvault/keyvault-secrets/src/core/utils/constants.ts +++ b/sdk/keyvault/keyvault-secrets/src/core/utils/constants.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -export const SDK_VERSION: string = "1.0.0-preview1"; +export const SDK_VERSION: string = "4.0.0-preview.2"; export const RetryConstants = { MIN_RETRY_INTERVAL_MS: 3000 From 303488d27c1a679e061acc715c0281a9880d0d7d Mon Sep 17 00:00:00 2001 From: Jonathan Turner Date: Wed, 3 Jul 2019 09:29:13 +1200 Subject: [PATCH 227/289] Update typedoc to block the prebuilt definitions (#4152) --- sdk/keyvault/keyvault-keys/typedoc.json | 4 ++-- sdk/keyvault/keyvault-secrets/typedoc.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sdk/keyvault/keyvault-keys/typedoc.json b/sdk/keyvault/keyvault-keys/typedoc.json index 16cbd408d4fb..07dad5886716 100644 --- a/sdk/keyvault/keyvault-keys/typedoc.json +++ b/sdk/keyvault/keyvault-keys/typedoc.json @@ -1,11 +1,11 @@ { "mode": "file", - "out": "../../../docGen/keyvault-keys ./src", + "out": "../../../docGen/keyvault-keys", "excludeNotExported": true, "excludePrivate": true, "exclude": [ "node_modules/**/*", - "src/core/*" + "src/core/**/*" ], "ignoreCompilerErrors": true } diff --git a/sdk/keyvault/keyvault-secrets/typedoc.json b/sdk/keyvault/keyvault-secrets/typedoc.json index 934c0e435e02..081b83fb6014 100644 --- a/sdk/keyvault/keyvault-secrets/typedoc.json +++ b/sdk/keyvault/keyvault-secrets/typedoc.json @@ -1,11 +1,11 @@ { "mode": "file", - "out": "../../../docGen/keyvault-secrets ./src", + "out": "../../../docGen/keyvault-secrets", "excludeNotExported": true, "excludePrivate": true, "exclude": [ "node_modules/**/*", - "src/core/*" + "src/core/**/*" ], "ignoreCompilerErrors": true } From 8f444e8e4cc8fc0990837d7552862da768a30e12 Mon Sep 17 00:00:00 2001 From: bsiegel <96068+bsiegel@users.noreply.github.com> Date: Wed, 3 Jul 2019 12:23:24 -0700 Subject: [PATCH 228/289] Apply tag to scheduled builds (#4159) --- eng/pipelines/templates/jobs/archetype-sdk-client.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/eng/pipelines/templates/jobs/archetype-sdk-client.yml b/eng/pipelines/templates/jobs/archetype-sdk-client.yml index 9188e0055a3a..0f99b5247e6e 100644 --- a/eng/pipelines/templates/jobs/archetype-sdk-client.yml +++ b/eng/pipelines/templates/jobs/archetype-sdk-client.yml @@ -7,6 +7,11 @@ jobs: vmImage: "ubuntu-16.04" steps: + - script: | + echo "##vso[build.addbuildtag]Scheduled" + displayName: 'Tag scheduled builds' + condition: and(eq(variables['Build.SourceBranchName'],'master'),eq(variables['Build.Reason'],'Schedule')) + - task: NodeTool@0 inputs: versionSpec: "$(NodeVersion)" From c1942693029a69df3517a3a1f840eea39133e2f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez?= Date: Wed, 3 Jul 2019 15:52:51 -0400 Subject: [PATCH 229/289] [JS] [KeyVault] User agent fixed (#4151) * User agent fixed (Fixes #4150) * CHANGELOG changes --- sdk/keyvault/keyvault-keys/CHANGELOG.md | 4 ++++ sdk/keyvault/keyvault-keys/src/index.ts | 2 +- sdk/keyvault/keyvault-secrets/CHANGELOG.md | 4 ++++ sdk/keyvault/keyvault-secrets/src/index.ts | 2 +- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/sdk/keyvault/keyvault-keys/CHANGELOG.md b/sdk/keyvault/keyvault-keys/CHANGELOG.md index ca1936b72834..021262c20674 100644 --- a/sdk/keyvault/keyvault-keys/CHANGELOG.md +++ b/sdk/keyvault/keyvault-keys/CHANGELOG.md @@ -1,5 +1,9 @@ # Release History +## 4.0.0-preview.2 (2019-07-03) +- Fix broken links for API references and samples. +- Update custom user agent string to include the right package name and version. + ## 4.0.0-preview.1 (2019-06-28) For release notes and more information please visit https://aka.ms/azure-sdk-preview1-js diff --git a/sdk/keyvault/keyvault-keys/src/index.ts b/sdk/keyvault/keyvault-keys/src/index.ts index 1be8b732995c..c60814ffbed6 100644 --- a/sdk/keyvault/keyvault-keys/src/index.ts +++ b/sdk/keyvault/keyvault-keys/src/index.ts @@ -191,7 +191,7 @@ export class KeysClient { userAgentInfo.push(telemetry.value); } } - const libInfo = `Azure-KeyVault-Keys/${SDK_VERSION}`; + const libInfo = `azsdk-js-keyvault-keys/${SDK_VERSION}`; if (userAgentInfo.indexOf(libInfo) === -1) { userAgentInfo.push(libInfo); } diff --git a/sdk/keyvault/keyvault-secrets/CHANGELOG.md b/sdk/keyvault/keyvault-secrets/CHANGELOG.md index ca1936b72834..28e65db645df 100644 --- a/sdk/keyvault/keyvault-secrets/CHANGELOG.md +++ b/sdk/keyvault/keyvault-secrets/CHANGELOG.md @@ -1,5 +1,9 @@ # Release History +## 4.0.0-preview.2 (2019-07-03) +- Fix broken links for API references and samples. +- Update custom user agent string to include the right package name and version. + ## 4.0.0-preview.1 (2019-06-28) For release notes and more information please visit https://aka.ms/azure-sdk-preview1-js diff --git a/sdk/keyvault/keyvault-secrets/src/index.ts b/sdk/keyvault/keyvault-secrets/src/index.ts index fde47f8f5481..340df37d4c18 100644 --- a/sdk/keyvault/keyvault-secrets/src/index.ts +++ b/sdk/keyvault/keyvault-secrets/src/index.ts @@ -173,7 +173,7 @@ export class SecretsClient { userAgentInfo.push(telemetry.value); } } - const libInfo = `Azure-KeyVault-Secrets/${SDK_VERSION}`; + const libInfo = `azsdk-js-keyvault-secrets/${SDK_VERSION}`; if (userAgentInfo.indexOf(libInfo) === -1) { userAgentInfo.push(libInfo); } From 1ec40b6b9ba6f18e714c32152361860a026b1031 Mon Sep 17 00:00:00 2001 From: David Wilson Date: Wed, 3 Jul 2019 14:47:30 -0700 Subject: [PATCH 230/289] [core-auth] Create @azure/core-auth for base authentication interfaces (#3964) * Create @azure/core-auth for base authentication interfaces * Use core-auth in core-http and core-amqp * Remove unneeded msRest.ts * Add core-auth to .docsettings.yml exclusion list * Use AbortSignalLike from @azure/abort-controller * Set @azure/core-auth version to 1.0.0-preview.1 --- .docsettings.yml | 1 + common/config/rush/pnpm-lock.yaml | 283 ++++++++++-------- rush.json | 4 + sdk/core/core-amqp/package.json | 2 +- .../core-amqp/src/ConnectionContextBase.ts | 2 +- sdk/core/core-amqp/src/auth/iotSas.ts | 2 +- sdk/core/core-amqp/src/auth/sas.ts | 2 +- sdk/core/core-amqp/src/cbs.ts | 2 +- sdk/core/core-amqp/src/index.ts | 2 +- sdk/core/core-auth/.vscode/launch.json | 17 ++ sdk/core/core-auth/.vscode/tasks.json | 16 + sdk/core/core-auth/README.md | 6 + sdk/core/core-auth/api-extractor.json | 31 ++ sdk/core/core-auth/package.json | 96 ++++++ sdk/core/core-auth/review/core-auth.api.md | 33 ++ sdk/core/core-auth/rollup.base.config.js | 95 ++++++ sdk/core/core-auth/rollup.config.js | 14 + sdk/core/core-auth/rollup.test.config.js | 3 + sdk/core/core-auth/samples/.gitkeep | 0 sdk/core/core-auth/src/index.ts | 11 + .../src}/tokenCredential.ts | 2 +- sdk/core/core-auth/test/index.spec.ts | 32 ++ sdk/core/core-auth/tsconfig.json | 61 ++++ sdk/core/core-http/lib/coreHttp.ts | 2 +- sdk/core/core-http/lib/msRest.ts | 50 ---- .../bearerTokenAuthenticationPolicy.ts | 2 +- sdk/core/core-http/lib/serviceClient.ts | 2 +- sdk/core/core-http/package.json | 1 + .../bearerTokenAuthenticationPolicyTests.ts | 2 +- 29 files changed, 594 insertions(+), 182 deletions(-) create mode 100644 sdk/core/core-auth/.vscode/launch.json create mode 100644 sdk/core/core-auth/.vscode/tasks.json create mode 100644 sdk/core/core-auth/README.md create mode 100644 sdk/core/core-auth/api-extractor.json create mode 100644 sdk/core/core-auth/package.json create mode 100644 sdk/core/core-auth/review/core-auth.api.md create mode 100644 sdk/core/core-auth/rollup.base.config.js create mode 100644 sdk/core/core-auth/rollup.config.js create mode 100644 sdk/core/core-auth/rollup.test.config.js create mode 100644 sdk/core/core-auth/samples/.gitkeep create mode 100644 sdk/core/core-auth/src/index.ts rename sdk/core/{core-http/lib/credentials => core-auth/src}/tokenCredential.ts (95%) create mode 100644 sdk/core/core-auth/test/index.spec.ts create mode 100644 sdk/core/core-auth/tsconfig.json delete mode 100644 sdk/core/core-http/lib/msRest.ts diff --git a/.docsettings.yml b/.docsettings.yml index a3a194819515..ee0833557858 100644 --- a/.docsettings.yml +++ b/.docsettings.yml @@ -62,6 +62,7 @@ known_content_issues: - ["sdk/cognitiveservices/cognitiveservices-websearch/README.md", "#1583"] - ["sdk/eventgrid/eventgrid/README.md", "#1583"] - ["sdk/core/abort-controller/README.md", "#1583"] + - ["sdk/core/core-auth/README.md", "#1583"] - ["sdk/cosmosdb/cosmos/README.md", "#1583"] - ["sdk/cosmosdb/cosmos/src/test/readme.md", "#1583"] - ["sdk/cosmosdb/cosmos/samples/readme.md", "#1583"] diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 70c64b37a7cd..52c610f5b0f5 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -6,10 +6,11 @@ dependencies: '@azure/ms-rest-azure-js': 1.3.8 '@azure/ms-rest-js': 1.8.13 '@azure/ms-rest-nodeauth': 0.9.3 - '@microsoft/api-extractor': 7.2.1 + '@microsoft/api-extractor': 7.2.2 '@rush-temp/abort-controller': 'file:projects/abort-controller.tgz' '@rush-temp/core-amqp': 'file:projects/core-amqp.tgz' '@rush-temp/core-asynciterator-polyfill': 'file:projects/core-asynciterator-polyfill.tgz' + '@rush-temp/core-auth': 'file:projects/core-auth.tgz' '@rush-temp/core-http': 'file:projects/core-http.tgz' '@rush-temp/core-paging': 'file:projects/core-paging.tgz' '@rush-temp/cosmos': 'file:projects/cosmos.tgz' @@ -52,8 +53,8 @@ dependencies: '@types/sinon': 5.0.7 '@types/tough-cookie': 2.3.5 '@types/tunnel': 0.0.0 - '@types/underscore': 1.9.1 - '@types/uuid': 3.4.4 + '@types/underscore': 1.9.2 + '@types/uuid': 3.4.5 '@types/webpack': 4.4.34 '@types/webpack-dev-middleware': 2.0.3 '@types/ws': 6.0.1 @@ -65,7 +66,7 @@ dependencies: assert: 1.5.0 async-lock: 1.2.0 axios: 0.19.0 - axios-mock-adapter: 1.16.0 + axios-mock-adapter: 1.17.0 azure-storage: 2.10.3 binary-search-bounds: 2.0.3 buffer: 5.2.1 @@ -114,7 +115,7 @@ dependencies: karma-remap-coverage: 0.1.5 karma-rollup-preprocessor: 7.0.0 karma-sourcemap-loader: 0.3.7 - karma-typescript-es6-transform: 4.1.0 + karma-typescript-es6-transform: 4.1.1 karma-webpack: 4.0.2 long: 4.0.0 mocha: 5.2.0 @@ -149,7 +150,7 @@ dependencies: rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-globals: 1.4.0 - rollup-plugin-node-resolve: 5.1.0 + rollup-plugin-node-resolve: 5.2.0 rollup-plugin-replace: 2.2.0 rollup-plugin-resolve: 0.0.1-predev.1 rollup-plugin-shim: 1.0.0 @@ -179,7 +180,7 @@ dependencies: url: 0.11.0 util: 0.11.1 uuid: 3.3.2 - webpack: 4.35.0 + webpack: 4.35.2 webpack-cli: 3.3.5 webpack-dev-middleware: 3.7.0 ws: 6.2.1 @@ -395,7 +396,7 @@ packages: dev: false resolution: integrity: sha512-LYMnA1cB2W3YuCOAFruNvnQBZ64OzEnsHxzcxclBhTcUGag6NrtGnip90AVTvVzFlXDLoT7trvPEenlWflWZFQ== - /@microsoft/api-extractor/7.2.1: + /@microsoft/api-extractor/7.2.2: dependencies: '@microsoft/api-extractor-model': 7.2.0 '@microsoft/node-core-library': 3.13.0 @@ -409,7 +410,7 @@ packages: dev: false hasBin: true resolution: - integrity: sha512-ClUKSplAoeVMQntRR+bydS+MziJ8EK44RzELVvNpjtV7L2+1SalafsOw5qo4kL1qcsSh1ZFB2NoO9EzfDSP7/g== + integrity: sha512-hSE60reobyp6hpk7MfqCRXUCDeXAYyfbCM1tyZxfT5kSsHuQRQhpFrRh+YvoKIFlo9DDw90GOlcMQBxspp6RAg== /@microsoft/node-core-library/3.13.0: dependencies: '@types/fs-extra': 5.0.4 @@ -703,16 +704,16 @@ packages: dev: false resolution: integrity: sha512-SudIN9TRJ+v8g5pTG8RRCqfqTMNqgWCKKd3vtynhGzkIIjxaicNAMuY5TRadJ6tzDu3Dotf3ngaMILtmOdmWEQ== - /@types/underscore/1.9.1: + /@types/underscore/1.9.2: dev: false resolution: - integrity: sha512-ROHiJBeuXxVVaKm65tM/LHWlkcTFBQJqJgDB90Vj3fsl8Q290Z29cmEwnpvtlb0nSzuMIaIYWj0ZvmVgim8khA== - /@types/uuid/3.4.4: + integrity: sha512-KgOKTAD+9X+qvZnB5S1+onqKc4E+PZ+T6CM/NA5ohRPLHJXb+yCJMVf8pWOnvuBuKFNUAJW8N97IA6lba6mZGg== + /@types/uuid/3.4.5: dependencies: '@types/node': 8.10.49 dev: false resolution: - integrity: sha512-tPIgT0GUmdJQNSHxp0X2jnpQfBSTfGxUMc/2CXBU2mnyTFVYVa2ojpoQ74w0U2yn2vw3jnC640+77lkFFpdVDw== + integrity: sha512-MNL15wC3EKyw1VLF+RoVO4hJJdk9t/Hlv3rt1OL65Qvuadm4BYo6g9ZJQqoq7X8NBFSsQXgAujWciovh2lpVjA== /@types/webpack-dev-middleware/2.0.3: dependencies: '@types/connect': 3.4.32 @@ -1496,15 +1497,15 @@ packages: dev: false resolution: integrity: sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== - /axios-mock-adapter/1.16.0: + /axios-mock-adapter/1.17.0: dependencies: deep-equal: 1.0.1 dev: false peerDependencies: axios: '>= 0.9.0' resolution: - integrity: sha512-m2D8ngMTQ5p4zZNBsPKoENgwz5rDfd0pZmXI/spdE2eeeKIcR3jquk+NRiBVFtb9UJlciBYplNzSUmgQ6X385Q== - /axios-mock-adapter/1.16.0_axios@0.19.0: + integrity: sha512-q3efmwJUOO4g+wsLNSk9Ps1UlJoF3fQ3FSEe4uEEhkRtu7SoiAVPj8R3Hc/WP55MBTVFzaDP9QkdJhdVhP8A1Q== + /axios-mock-adapter/1.17.0_axios@0.19.0: dependencies: axios: 0.19.0 deep-equal: 1.0.1 @@ -1512,7 +1513,7 @@ packages: peerDependencies: axios: '>= 0.9.0' resolution: - integrity: sha512-m2D8ngMTQ5p4zZNBsPKoENgwz5rDfd0pZmXI/spdE2eeeKIcR3jquk+NRiBVFtb9UJlciBYplNzSUmgQ6X385Q== + integrity: sha512-q3efmwJUOO4g+wsLNSk9Ps1UlJoF3fQ3FSEe4uEEhkRtu7SoiAVPj8R3Hc/WP55MBTVFzaDP9QkdJhdVhP8A1Q== /axios/0.19.0: dependencies: follow-redirects: 1.5.10 @@ -2205,8 +2206,8 @@ packages: integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== /browserslist/3.2.8: dependencies: - caniuse-lite: 1.0.30000978 - electron-to-chromium: 1.3.176 + caniuse-lite: 1.0.30000979 + electron-to-chromium: 1.3.185 dev: false hasBin: true resolution: @@ -2394,10 +2395,10 @@ packages: node: '>=6' resolution: integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - /caniuse-lite/1.0.30000978: + /caniuse-lite/1.0.30000979: dev: false resolution: - integrity: sha512-H6gK6kxUzG6oAwg/Jal279z8pHw0BzrpZfwo/CA9FFm/vA0l8IhDfkZtepyJNE2Y4V6Dp3P3ubz6czby1/Mgsw== + integrity: sha512-gcu45yfq3B7Y+WB05fOMfr0EiSlq+1u+m6rPHyJli/Wy3PVQNGaU7VA4bZE5qw+AU2UVOBR/N5g1bzADUqdvFw== /caseless/0.12.0: dev: false resolution: @@ -3304,10 +3305,10 @@ packages: dev: false resolution: integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - /electron-to-chromium/1.3.176: + /electron-to-chromium/1.3.185: dev: false resolution: - integrity: sha512-hsQ/BH6x2iCvJ7WOIbNTAlsT39vsVGIVoJJ9i6ZkGXUE2LdzWsNv0xJI2uZ5/Hkqv1oTTLxAYjbtGKVJzqYbjA== + integrity: sha512-h2iW0AHIwix8ifNJg/RkXhQjUDqBME8TvX8qQQMvvF2Tb6F2KnO6febvI+JqI9CdZOWnl90CPxdBRWGDrdk9UA== /elliptic/6.5.0: dependencies: bn.js: 4.11.8 @@ -3609,7 +3610,7 @@ packages: glob: 7.1.4 globals: 11.12.0 ignore: 4.0.6 - import-fresh: 3.0.0 + import-fresh: 3.1.0 imurmurhash: 0.1.4 inquirer: 6.4.1 js-yaml: 3.13.1 @@ -4935,7 +4936,7 @@ packages: node: '>= 4' resolution: integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - /import-fresh/3.0.0: + /import-fresh/3.1.0: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 @@ -4943,7 +4944,7 @@ packages: engines: node: '>=6' resolution: - integrity: sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== + integrity: sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ== /import-local/1.0.0: dependencies: pkg-dir: 2.0.0 @@ -5412,7 +5413,7 @@ packages: '@babel/traverse': 7.4.5 '@babel/types': 7.4.4 istanbul-lib-coverage: 2.0.5 - semver: 6.1.2 + semver: 6.2.0 dev: false engines: node: '>=6' @@ -5829,17 +5830,17 @@ packages: dev: false resolution: integrity: sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg= - /karma-typescript-es6-transform/4.1.0: + /karma-typescript-es6-transform/4.1.1: dependencies: acorn: 6.1.1 acorn-walk: 6.1.1 babel-core: 6.26.3 babel-preset-env: 1.7.0 log4js: 4.4.0 - magic-string: 0.25.2 + magic-string: 0.25.3 dev: false resolution: - integrity: sha512-N5s8dn4OMt6ekN/4PPc3ZLlP6ka7BNkWKcXbKr2fyGXlLTOcCKN02VbcEmKr8z+l7Ye0HSmAL+Qk69f1bTIQ8g== + integrity: sha512-WTGGThwufBT73c20q30iTcXq8Jb3Wat/h+JW1lwKgMtymT5rVxLknoaUVNfenaV3+cRMiTEsBT773kz9jWk6IQ== /karma-webpack/4.0.2: dependencies: clone-deep: 4.0.1 @@ -5855,15 +5856,15 @@ packages: webpack: ^4.0.0 resolution: integrity: sha512-970/okAsdUOmiMOCY8sb17A2I8neS25Ad9uhyK3GHgmRSIFJbDcNEFE8dqqUhNe9OHiCC9k3DMrSmtd/0ymP1A== - /karma-webpack/4.0.2_webpack@4.35.0: + /karma-webpack/4.0.2_webpack@4.35.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.35.0 - webpack-dev-middleware: 3.7.0_webpack@4.35.0 + webpack: 4.35.2 + webpack-dev-middleware: 3.7.0_webpack@4.35.2 dev: false engines: node: '>= 8.9.0' @@ -6196,12 +6197,12 @@ packages: dev: false resolution: integrity: sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w== - /magic-string/0.25.2: + /magic-string/0.25.3: dependencies: sourcemap-codec: 1.4.4 dev: false resolution: - integrity: sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg== + integrity: sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA== /make-dir/1.3.0: dependencies: pify: 3.0.0 @@ -7101,20 +7102,20 @@ packages: node: '>=4' resolution: integrity: sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - /open/6.3.0: + /open/6.4.0: dependencies: is-wsl: 1.1.0 dev: false engines: node: '>=8' resolution: - integrity: sha512-6AHdrJxPvAXIowO/aIaeHZ8CeMdDf7qCyRNq8NwJpinmCdXhz+NZR7ie1Too94lpciCDsG+qHGO9Mt0svA4OqA== + integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== /opn-cli/4.1.0: dependencies: file-type: 10.11.0 get-stdin: 6.0.0 meow: 5.0.0 - open: 6.3.0 + open: 6.4.0 temp-write: 3.4.0 dev: false engines: @@ -7642,10 +7643,10 @@ packages: dev: false resolution: integrity: sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - /psl/1.1.33: + /psl/1.2.0: dev: false resolution: - integrity: sha512-LTDP2uSrsc7XCb5lO7A8BI1qYxRe/8EqlRvMeEl6rsnYAqDOl8xHR+8lSAIVfrNaSAlTPTNOCgNjWcoUL3AZsw== + integrity: sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA== /public-encrypt/4.0.3: dependencies: bn.js: 4.11.8 @@ -8199,7 +8200,7 @@ packages: dependencies: estree-walker: 0.6.1 is-reference: 1.1.2 - magic-string: 0.25.2 + magic-string: 0.25.3 resolve: 1.11.1 rollup-pluginutils: 2.8.1 dev: false @@ -8211,7 +8212,7 @@ packages: dependencies: estree-walker: 0.6.1 is-reference: 1.1.2 - magic-string: 0.25.2 + magic-string: 0.25.3 resolve: 1.11.1 rollup: 1.13.1 rollup-pluginutils: 2.8.1 @@ -8223,7 +8224,7 @@ packages: /rollup-plugin-inject/2.2.0: dependencies: estree-walker: 0.5.2 - magic-string: 0.25.2 + magic-string: 0.25.3 rollup-pluginutils: 2.8.1 dev: false resolution: @@ -8251,7 +8252,7 @@ packages: dev: false resolution: integrity: sha512-xRkB+W/m1KLIzPUmG0ofvR+CPNcvuCuNdjVBVS7ALKSxr3EDhnzNceGkGi1m8MToSli13AzKFYH4ie9w3I5L3g== - /rollup-plugin-node-resolve/5.1.0: + /rollup-plugin-node-resolve/5.2.0: dependencies: '@types/resolve': 0.0.8 builtin-modules: 3.1.0 @@ -8262,8 +8263,8 @@ packages: peerDependencies: rollup: '>=1.11.0' resolution: - integrity: sha512-2hwwHNj0s8UEtUNT+lJq8rFWEznP7yJm3GCHBicadF6hiNX1aRARRZIjz2doeTlTGg/hOvJr4C/8+3k9Y/J5Hg== - /rollup-plugin-node-resolve/5.1.0_rollup@1.13.1: + integrity: sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== + /rollup-plugin-node-resolve/5.2.0_rollup@1.13.1: dependencies: '@types/resolve': 0.0.8 builtin-modules: 3.1.0 @@ -8275,10 +8276,10 @@ packages: peerDependencies: rollup: '>=1.11.0' resolution: - integrity: sha512-2hwwHNj0s8UEtUNT+lJq8rFWEznP7yJm3GCHBicadF6hiNX1aRARRZIjz2doeTlTGg/hOvJr4C/8+3k9Y/J5Hg== + integrity: sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== /rollup-plugin-replace/2.2.0: dependencies: - magic-string: 0.25.2 + magic-string: 0.25.3 rollup-pluginutils: 2.8.1 dev: false resolution: @@ -8482,11 +8483,11 @@ packages: hasBin: true resolution: integrity: sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== - /semver/6.1.2: + /semver/6.2.0: dev: false hasBin: true resolution: - integrity: sha512-z4PqiCpomGtWj8633oeAdXm1Kn1W++3T8epkZYnwiVgIYIJ0QHszhInYSJTYxebByQH7KVCEAn8R9duzZW2PhQ== + integrity: sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== /send/0.17.1: dependencies: debug: 2.6.9 @@ -9163,7 +9164,7 @@ packages: schema-utils: 1.0.0 serialize-javascript: 1.7.0 source-map: 0.6.1 - terser: 4.0.0 + terser: 4.0.2 webpack-sources: 1.3.0 worker-farm: 1.7.0 dev: false @@ -9184,7 +9185,7 @@ packages: hasBin: true resolution: integrity: sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ== - /terser/4.0.0: + /terser/4.0.2: dependencies: commander: 2.20.0 source-map: 0.6.1 @@ -9194,7 +9195,7 @@ packages: node: '>=6.0.0' hasBin: true resolution: - integrity: sha512-dOapGTU0hETFl1tCo4t56FN+2jffoKyER9qBGoUFyZ6y7WLoKT0bF+lAYi6B6YsILcGF3q1C2FBh8QcKSCgkgA== + integrity: sha512-IWLuJqTvx97KP3uTYkFVn93cXO+EtlzJu8TdJylq+H0VBDlPMIfQA9MBS5Vc5t3xTEUG1q0hIfHMpAP2R+gWTw== /test-exclude/5.2.3: dependencies: glob: 7.1.4 @@ -9330,7 +9331,7 @@ packages: integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== /tough-cookie/2.4.3: dependencies: - psl: 1.1.33 + psl: 1.2.0 punycode: 1.4.1 dev: false engines: @@ -9339,7 +9340,7 @@ packages: integrity: sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== /tough-cookie/2.5.0: dependencies: - psl: 1.1.33 + psl: 1.2.0 punycode: 2.1.1 dev: false engines: @@ -10009,7 +10010,7 @@ packages: webpack: 4.x.x resolution: integrity: sha512-w0j/s42c5UhchwTmV/45MLQnTVwRoaUTu9fM5LuyOd/8lFoCNCELDogFoecx5NzRUndO0yD/gF2b02XKMnmAWQ== - /webpack-cli/3.3.5_webpack@4.35.0: + /webpack-cli/3.3.5_webpack@4.35.2: dependencies: chalk: 2.4.2 cross-spawn: 6.0.5 @@ -10021,7 +10022,7 @@ packages: loader-utils: 1.2.3 supports-color: 6.1.0 v8-compile-cache: 2.0.3 - webpack: 4.35.0 + webpack: 4.35.2 yargs: 13.2.4 dev: false engines: @@ -10044,12 +10045,12 @@ packages: webpack: ^4.0.0 resolution: integrity: sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA== - /webpack-dev-middleware/3.7.0_webpack@4.35.0: + /webpack-dev-middleware/3.7.0_webpack@4.35.2: dependencies: memory-fs: 0.4.1 mime: 2.4.4 range-parser: 1.2.1 - webpack: 4.35.0 + webpack: 4.35.2 webpack-log: 2.0.0 dev: false engines: @@ -10074,7 +10075,7 @@ packages: dev: false resolution: integrity: sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== - /webpack/4.35.0: + /webpack/4.35.2: dependencies: '@webassemblyjs/ast': 1.8.5 '@webassemblyjs/helper-module-context': 1.8.5 @@ -10105,7 +10106,7 @@ packages: node: '>=6.11.5' hasBin: true resolution: - integrity: sha512-M5hL3qpVvtr8d4YaJANbAQBc4uT01G33eDpl/psRTBCfjxFTihdhin1NtAKB1ruDwzeVdcsHHV3NX+QsAgOosw== + integrity: sha512-TZAmorNymV4q66gAM/h90cEjG+N3627Q2MnkSgKlX/z3DlNVKUtqy57lz1WmZU2+FUZwzM+qm7cGaO95PyrX5A== /which-module/1.0.0: dev: false resolution: @@ -10414,7 +10415,7 @@ packages: integrity: sha1-T6akXQDbwV8xikr6HZr8Aljhdsw= 'file:projects/abort-controller.tgz': dependencies: - '@microsoft/api-extractor': 7.2.1 + '@microsoft/api-extractor': 7.2.2 '@types/mocha': 5.2.7 '@types/node': 8.10.49 assert: 1.5.0 @@ -10440,7 +10441,7 @@ packages: rollup: 1.13.1 rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 rollup-plugin-uglify: 6.0.2_rollup@1.13.1 @@ -10449,7 +10450,7 @@ packages: dev: false name: '@rush-temp/abort-controller' resolution: - integrity: sha512-KGfiIH8MJknuIKxWlFzHjusZ9WViPf3KdfjttVtk4f0KWb/g7ob8Ec7LHzX/BvSJe9sjLQG+93+muRz8o2GG1w== + integrity: sha512-dQgpPI6o7hPPHX6ARp74NnRX+s8stpdg9sbHfd8oMgl6PUsz/gCO0WcgD2yc/IbRtb7cgegeWIAX7f2DxBQ9Wg== tarball: 'file:projects/abort-controller.tgz' version: 0.0.0 'file:projects/core-amqp.tgz': @@ -10503,7 +10504,7 @@ packages: rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-globals: 1.4.0 - rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 @@ -10520,16 +10521,55 @@ packages: dev: false name: '@rush-temp/core-amqp' resolution: - integrity: sha512-O3IcR/YobE8pJnOPI+26sLqh1wTF7AxI4yD/fCGf9fLOUVCun/DqVCquLtfRvC90OxGdqXcleg+r52lTh7yxRw== + integrity: sha512-IWfVNV23Bq1FyiW1pSfcJ9irbx9cwcaX9mDEZs+3GCex+GH6dofWL0tHQZJpqcmOVpFpB8T+gswVdgPqTeY4og== tarball: 'file:projects/core-amqp.tgz' version: 0.0.0 'file:projects/core-asynciterator-polyfill.tgz': dev: false name: '@rush-temp/core-asynciterator-polyfill' resolution: - integrity: sha512-nTzv3dFArVWVRUZ449C4eSmeIbMPJv0e74K546PPVWVZQn1cATgjxnT7eFnaJyPbi7h+6ozuXH8lDm3lYmz/WA== + integrity: sha512-Oyo+KWfiYuxyayvsUF72zXsW0kDMFqFtan0v6zJufmHOOS9uitBJHg1gmu0E3BPL5TPXm+RGiVeLaV13p+p0gA== tarball: 'file:projects/core-asynciterator-polyfill.tgz' version: 0.0.0 + 'file:projects/core-auth.tgz': + dependencies: + '@microsoft/api-extractor': 7.2.2 + '@types/mocha': 5.2.7 + '@types/node': 8.10.49 + '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + assert: 1.5.0 + cross-env: 5.2.0 + eslint: 5.16.0 + eslint-config-prettier: 4.3.0_eslint@5.16.0 + eslint-detailed-reporter: 0.8.0_eslint@5.16.0 + eslint-plugin-no-null: 1.0.2_eslint@5.16.0 + eslint-plugin-no-only-tests: 2.3.1 + eslint-plugin-promise: 4.2.1 + inherits: 2.0.4 + mocha: 5.2.0 + mocha-junit-reporter: 1.23.0_mocha@5.2.0 + mocha-multi: 1.1.0_mocha@5.2.0 + prettier: 1.18.2 + rimraf: 2.6.3 + rollup: 1.13.1 + rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 + rollup-plugin-json: 3.1.0 + rollup-plugin-multi-entry: 2.1.0 + rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 + rollup-plugin-replace: 2.2.0 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 + rollup-plugin-uglify: 6.0.2_rollup@1.13.1 + rollup-plugin-visualizer: 1.1.1_rollup@1.13.1 + tslib: 1.10.0 + typescript: 3.5.2 + util: 0.11.1 + dev: false + name: '@rush-temp/core-auth' + resolution: + integrity: sha512-pE/affOGKzVu72h8HhVnnKyXfk8KGnz/snYFIAzygqy1E/N2oK5dCDzgypWGsS4coJUNuyenzC38i8NJQ833kQ== + tarball: 'file:projects/core-auth.tgz' + version: 0.0.0 'file:projects/core-http.tgz': dependencies: '@azure/logger-js': 1.1.0 @@ -10544,13 +10584,13 @@ packages: '@types/sinon': 5.0.7 '@types/tough-cookie': 2.3.5 '@types/tunnel': 0.0.0 - '@types/uuid': 3.4.4 + '@types/uuid': 3.4.5 '@types/webpack': 4.4.34 '@types/webpack-dev-middleware': 2.0.3 '@types/xml2js': 0.4.4 abortcontroller-polyfill: 1.3.0 axios: 0.19.0 - axios-mock-adapter: 1.16.0_axios@0.19.0 + axios-mock-adapter: 1.17.0_axios@0.19.0 chai: 4.2.0 express: 4.17.1 form-data: 2.4.0 @@ -10561,8 +10601,8 @@ packages: karma-mocha: 1.3.0 karma-rollup-preprocessor: 7.0.0_rollup@1.13.1 karma-sourcemap-loader: 0.3.7 - karma-typescript-es6-transform: 4.1.0 - karma-webpack: 4.0.2_webpack@4.35.0 + karma-typescript-es6-transform: 4.1.1 + karma-webpack: 4.0.2_webpack@4.35.2 mocha: 5.2.0 mocha-chrome: 1.1.0 mocha-junit-reporter: 1.23.0_mocha@5.2.0 @@ -10578,7 +10618,7 @@ packages: rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 rollup-plugin-resolve: 0.0.1-predev.1 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 rollup-plugin-visualizer: 1.1.1_rollup@1.13.1 @@ -10595,16 +10635,16 @@ packages: typescript: 3.5.2 uglify-js: 3.6.0 uuid: 3.3.2 - webpack: 4.35.0 - webpack-cli: 3.3.5_webpack@4.35.0 - webpack-dev-middleware: 3.7.0_webpack@4.35.0 + webpack: 4.35.2 + webpack-cli: 3.3.5_webpack@4.35.2 + webpack-dev-middleware: 3.7.0_webpack@4.35.2 xhr-mock: 2.4.1 xml2js: 0.4.19 yarn: 1.16.0 dev: false name: '@rush-temp/core-http' resolution: - integrity: sha512-jKUV5PQCbPdIm2WIY/KQKz9RxK2FCpW+SSUqnJ3Qky1lvI/eIBx5gumoKtqxQpPk5tinRdXQ/v5uamf5edfOCA== + integrity: sha512-mn7OKA5ItOyTQR8XIRnjT29RYpnEvi0oH9ryKsPP+9qj6mv4TI7KiEbi/x1BrmP/LqEGVITZM7n0TuHB+vFSHg== tarball: 'file:projects/core-http.tgz' version: 0.0.0 'file:projects/core-paging.tgz': @@ -10623,7 +10663,7 @@ packages: dev: false name: '@rush-temp/core-paging' resolution: - integrity: sha512-zo8CqqlCrpzrLOWMJ4Pm30a9qC71E1bB3neF47oq2VYulLOyTpgaKvZZjN6w1YEz3yY4G1GAnq6JuwOyC7q6Yw== + integrity: sha512-3cvTSZGmlAxyyfCsE4f3ag8t7H9eGHcJ4rpXjVcTmwzvajiutRU6ddOHLrRq0QpiPbuspuvGxRIMG+DHZlCVFQ== tarball: 'file:projects/core-paging.tgz' version: 0.0.0 'file:projects/cosmos.tgz': @@ -10634,7 +10674,7 @@ packages: '@types/semaphore': 1.1.0 '@types/sinon': 5.0.7 '@types/tunnel': 0.0.0 - '@types/underscore': 1.9.1 + '@types/underscore': 1.9.2 binary-search-bounds: 2.0.3 create-hmac: 1.1.7 execa: 1.0.0 @@ -10654,17 +10694,17 @@ packages: tslint-config-prettier: 1.18.0 tunnel: 0.0.6 typescript: 3.5.2 - webpack: 4.35.0 - webpack-cli: 3.3.5_webpack@4.35.0 + webpack: 4.35.2 + webpack-cli: 3.3.5_webpack@4.35.2 dev: false name: '@rush-temp/cosmos' resolution: - integrity: sha512-TOCQxf0WCu5cMmRg0MctcaHctzwWutcqwTA3XgzcCtCCNwzBVphmtVm5zNNUqQcBzagPy9B2NOTdFAr0kHzs1g== + integrity: sha512-Lfcygdf9C55ABgzDWp3G56itwgHTWnLof4ibZxnVQd4vfTimab4GXakRAgzPc6MJoV2YrZnj49oww2MOn7zXiQ== tarball: 'file:projects/cosmos.tgz' version: 0.0.0 'file:projects/event-hubs.tgz': dependencies: - '@microsoft/api-extractor': 7.2.1 + '@microsoft/api-extractor': 7.2.2 '@types/async-lock': 1.1.1 '@types/chai': 4.1.7 '@types/chai-as-promised': 7.1.0 @@ -10674,7 +10714,7 @@ packages: '@types/long': 4.0.0 '@types/mocha': 5.2.7 '@types/node': 8.10.49 - '@types/uuid': 3.4.4 + '@types/uuid': 3.4.5 '@types/ws': 6.0.1 '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 @@ -10719,7 +10759,7 @@ packages: rollup-plugin-inject: 2.2.0 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 @@ -10734,13 +10774,13 @@ packages: dev: false name: '@rush-temp/event-hubs' resolution: - integrity: sha512-bRn9XMn/RGG8wcsrhgyeTmAvQkHaJzao1BN9wPJEf4O67WTNrGJGdDI97Vu1x7AOIHi+UlC9U6AIMMNTcBvq5g== + integrity: sha512-XDXToRIToMJpzCtrSwc1IvtdmExS0vDvQ3b0g8Eq9y30J1Dcs9xUB3t9V3cQRWPQi/5hx8rPddPFKohwdcdUcA== tarball: 'file:projects/event-hubs.tgz' version: 0.0.0 'file:projects/event-processor-host.tgz': dependencies: '@azure/event-hubs': 1.0.8 - '@microsoft/api-extractor': 7.2.1 + '@microsoft/api-extractor': 7.2.2 '@types/async-lock': 1.1.1 '@types/chai': 4.1.7 '@types/chai-as-promised': 7.1.0 @@ -10749,7 +10789,7 @@ packages: '@types/dotenv': 6.1.1 '@types/mocha': 5.2.7 '@types/node': 8.10.49 - '@types/uuid': 3.4.4 + '@types/uuid': 3.4.5 '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 async-lock: 1.2.0 @@ -10778,7 +10818,7 @@ packages: rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 rollup-plugin-uglify: 6.0.2_rollup@1.13.1 @@ -10790,7 +10830,7 @@ packages: dev: false name: '@rush-temp/event-processor-host' resolution: - integrity: sha512-2ONWfGH7nWY7RIYdXxg3VUNiGHut6j/KFAiWbYJRu9p3apHZrY6gknUdM916qdlU+zRovl1hH/yTSThMiKEN8Q== + integrity: sha512-atlc5w8bm/WHhZZzwdZMZe0Hn4+l10/oVak/btfh+zk2UyNRoSmvW8wmoIK+qwq83YesUL5KO9L70lI8y+uZOw== tarball: 'file:projects/event-processor-host.tgz' version: 0.0.0 'file:projects/identity.tgz': @@ -10799,7 +10839,7 @@ packages: '@types/mocha': 5.2.7 '@types/node': 8.10.49 '@types/qs': 6.5.3 - '@types/uuid': 3.4.4 + '@types/uuid': 3.4.5 '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 @@ -10818,7 +10858,7 @@ packages: rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 rollup-plugin-uglify: 6.0.2_rollup@1.13.1 @@ -10830,12 +10870,12 @@ packages: dev: false name: '@rush-temp/identity' resolution: - integrity: sha512-bvjjTG+z2fyIOtEyFJ+gWiRJjq190CV52hHLEbkrTzAbHzpi4ClThitxNagxagbsJAKmkgy/FFEYuC78CDThUQ== + integrity: sha512-jnWpAJ7lg5mOxqp40EHLoU5KbXAb+0HoCmEayQhJ7hKaeikYP3Pdrs5o9muCpMgxj5jWRwBl6BroZh3uCOTfSg== tarball: 'file:projects/identity.tgz' version: 0.0.0 'file:projects/keyvault-certificates.tgz': dependencies: - '@microsoft/api-extractor': 7.2.1 + '@microsoft/api-extractor': 7.2.2 '@types/chai': 4.1.7 '@types/node': 8.10.49 chai: 4.2.0 @@ -10843,7 +10883,7 @@ packages: rimraf: 2.6.3 rollup: 1.13.1 rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 - rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 tslib: 1.10.0 typescript: 3.5.2 uglify-js: 3.6.0 @@ -10851,12 +10891,12 @@ packages: dev: false name: '@rush-temp/keyvault-certificates' resolution: - integrity: sha512-x3QICw0QJ0SuhfgjNiZLcaTyz33+c8JiD3r82dvVpMMipU/JC/gSVWhcbhgSOy6kg8EAjGYMRjDrCn3cOE3A2A== + integrity: sha512-4XqaiduZT5uyw3pfoyu2HLVq1miY+ImbutGaQIsueR2S4zf7FcTn0wbqCQQ19qZQhF6VYqUihSW170v0R3b9Zg== tarball: 'file:projects/keyvault-certificates.tgz' version: 0.0.0 'file:projects/keyvault-keys.tgz': dependencies: - '@microsoft/api-extractor': 7.2.1 + '@microsoft/api-extractor': 7.2.2 '@types/chai': 4.1.7 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 @@ -10881,7 +10921,7 @@ packages: rimraf: 2.6.3 rollup: 1.13.1 rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 - rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 ts-mocha: 6.0.0_mocha@5.2.0 tslib: 1.10.0 typescript: 3.5.2 @@ -10890,14 +10930,14 @@ packages: dev: false name: '@rush-temp/keyvault-keys' resolution: - integrity: sha512-flxzyozdBr9KYE0FPRg8WG9naEA4LX3Aso9b3lpNVkRQSCXzsUtpqLlWXl5FIknQciLeDWCavSG0t0GjNL/SGw== + integrity: sha512-ghm72q7BJkdvHYa2oGtTAXmkRAq8dUZNKHW4edkVamfrdkipmXNRY+ubkLPfBJyE/h90GHdLWl/gDG+YpiIPiA== tarball: 'file:projects/keyvault-keys.tgz' version: 0.0.0 'file:projects/keyvault-secrets.tgz': dependencies: '@azure/ms-rest-azure-js': 1.3.8 '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.2.1 + '@microsoft/api-extractor': 7.2.2 '@types/chai': 4.1.7 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 @@ -10922,7 +10962,7 @@ packages: rimraf: 2.6.3 rollup: 1.13.1 rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 - rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 ts-mocha: 6.0.0_mocha@5.2.0 tslib: 1.10.0 typescript: 3.5.2 @@ -10931,7 +10971,7 @@ packages: dev: false name: '@rush-temp/keyvault-secrets' resolution: - integrity: sha512-TE3NpoxEMEx7UbK5UusLrfzYtf+YBCy5TTuZyC+36iUR+0awFqQblaqEdWo4ZMn3zMGBjTa4sHv4f4wG00HHiw== + integrity: sha512-8didgi3zgSZUt9VU5935DxKtUZiAQGjTv1g1DaRPdczTygQugGwKkiFANb0oced4vdgaaT/McWnm7A+RxjkiQg== tarball: 'file:projects/keyvault-secrets.tgz' version: 0.0.0 'file:projects/service-bus.tgz': @@ -10939,7 +10979,7 @@ packages: '@azure/amqp-common': 1.0.0-preview.5_rhea-promise@0.1.15 '@azure/arm-servicebus': 0.1.0 '@azure/ms-rest-nodeauth': 0.9.3 - '@microsoft/api-extractor': 7.2.1 + '@microsoft/api-extractor': 7.2.2 '@types/async-lock': 1.1.1 '@types/chai': 4.1.7 '@types/chai-as-promised': 7.1.0 @@ -10997,7 +11037,7 @@ packages: rollup-plugin-inject: 2.2.0 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 @@ -11009,13 +11049,13 @@ packages: dev: false name: '@rush-temp/service-bus' resolution: - integrity: sha512-7l/yq0tRiXJn0TmY+W+MvJ3qx1F3JhesbSEwB6K1jAEyjrFefsdUATDrdSwgsU97c262gl4YUtjOfUZRS+ipPw== + integrity: sha512-AqbR3ohTsML/cQ/IDGKLBRdQYQx0GeGHwtZAJI/67OM2UZD+VI9Y+CB7i/b7dm9Kn9oLeBBnHwVN3kEu1nqQrA== tarball: 'file:projects/service-bus.tgz' version: 0.0.0 'file:projects/storage-blob.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.2.1 + '@microsoft/api-extractor': 7.2.2 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 @@ -11065,7 +11105,7 @@ packages: rollup: 1.13.1 rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 @@ -11079,7 +11119,7 @@ packages: dev: false name: '@rush-temp/storage-blob' resolution: - integrity: sha512-l5yU6XZLr3m7h/x6Ys/djenWCnucnjO/0T+uktjvDhljbG/bbtuAKMrSxLcyaHnzThUon6Sm2/hMc1+clvz1qw== + integrity: sha512-UgIe5RKZRXsy9iibksf6oihckZwPXzwAK7NaeQEwsIPRqzHwHgf7mcdFUDJeZkWZ3q2+XtIBPExbekZI6pRf1g== tarball: 'file:projects/storage-blob.tgz' version: 0.0.0 'file:projects/storage-datalake.tgz': @@ -11095,7 +11135,7 @@ packages: eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 rollup: 1.13.1 - rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 ts-node: 7.0.1 tslib: 1.10.0 typescript: 3.5.2 @@ -11104,13 +11144,13 @@ packages: dev: false name: '@rush-temp/storage-datalake' resolution: - integrity: sha512-0SQNaH5RCVSAxB/KfdnoD50DQdSjUHmJf4SjzYT43lGRxP8ZoG5DKq1iWI5PqqcV8V0oLRPSsmc6BGf+wwvWaQ== + integrity: sha512-vK8bqT/ekqAiju+IdR7WBbJoNpRKUKidA5a1OImncpEOp4/dDcoM47fqoX1gwl96wnQ7X09Ll6TqmcKnYk7oIg== tarball: 'file:projects/storage-datalake.tgz' version: 0.0.0 'file:projects/storage-file.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.2.1 + '@microsoft/api-extractor': 7.2.2 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 @@ -11160,7 +11200,7 @@ packages: rollup: 1.13.1 rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 @@ -11174,13 +11214,13 @@ packages: dev: false name: '@rush-temp/storage-file' resolution: - integrity: sha512-tAqHoFkbYa6cD/wOQ3dxmK3z6nalybxDBrRcQ0AQPrHWUyUOfRcB/3ULXlw+Dft8JUz9PRRN5PZUJrzqNJZ25w== + integrity: sha512-zYuft8JDR6mKJXmH4etUkykOw4EimENEYIXKbRyELbYlkyi259n+47TQi1xLyNfODJCczUZwHp6JeG/E6rfJbw== tarball: 'file:projects/storage-file.tgz' version: 0.0.0 'file:projects/storage-queue.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.2.1 + '@microsoft/api-extractor': 7.2.2 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 @@ -11229,7 +11269,7 @@ packages: rollup: 1.13.1 rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 @@ -11243,13 +11283,13 @@ packages: dev: false name: '@rush-temp/storage-queue' resolution: - integrity: sha512-PCuySUTDzKi4E6dYBAZFqNwqUc1lFaf9T2YMN5fP7tzyOqLac0xRQeq2vIDZtAv3QmXI7tojP76BJTuQukTPdQ== + integrity: sha512-7JHEw7k6rwNG8OB4R3XywPkV0MZ+TW5fnW1Mr1oJtq6/DSAeIsQckCkzAR1Lq64u0BAQc/9dG9kRhAWyOvLKRA== tarball: 'file:projects/storage-queue.tgz' version: 0.0.0 'file:projects/template.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.2.1 + '@microsoft/api-extractor': 7.2.2 '@types/mocha': 5.2.7 '@types/node': 8.10.49 '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 @@ -11273,7 +11313,7 @@ packages: rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.1.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 rollup-plugin-replace: 2.2.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 rollup-plugin-uglify: 6.0.2_rollup@1.13.1 @@ -11284,14 +11324,14 @@ packages: dev: false name: '@rush-temp/template' resolution: - integrity: sha512-srNXzGxTJrcvCGIZbmilAWiHqqBaR1U8O2UpC1Hi8jYv6hMKOcoJS9kGdMUPD/eK2FJsON6gMXFXuCmiN87cfA== + integrity: sha512-XARlGSN+et+vsZ5nBeY4DRhhEeg1qDRjSFRLl8um4fxDV5yH8HmzawpPiYNSbZscCP5yM7KRDOsFkpde2sXr3A== tarball: 'file:projects/template.tgz' version: 0.0.0 'file:projects/testhub.tgz': dependencies: '@azure/event-hubs': 1.0.8 '@types/node': 8.10.49 - '@types/uuid': 3.4.4 + '@types/uuid': 3.4.5 '@types/yargs': 11.1.2 async-lock: 1.2.0 death: 1.1.0 @@ -11309,7 +11349,7 @@ packages: dev: false name: '@rush-temp/testhub' resolution: - integrity: sha512-c3cFI0Our99carkgcyOFLmX5QRh5fIqyVv9S75VRX7woNtBGXPvWRE8VOxEN9o8N8FjSEQzc6PPEO6YRz7ok8Q== + integrity: sha512-IIhgwGeM3S6e3snigbvVfVsSh+X7T8iOKRToJ9fkFRjpviiH3jpdpOm186AyYHuEfZzR/dQlxmdQxEoZUVH3qA== tarball: 'file:projects/testhub.tgz' version: 0.0.0 registry: '' @@ -11325,6 +11365,7 @@ specifiers: '@rush-temp/abort-controller': 'file:./projects/abort-controller.tgz' '@rush-temp/core-amqp': 'file:./projects/core-amqp.tgz' '@rush-temp/core-asynciterator-polyfill': 'file:./projects/core-asynciterator-polyfill.tgz' + '@rush-temp/core-auth': 'file:./projects/core-auth.tgz' '@rush-temp/core-http': 'file:./projects/core-http.tgz' '@rush-temp/core-paging': 'file:./projects/core-paging.tgz' '@rush-temp/cosmos': 'file:./projects/cosmos.tgz' @@ -11375,7 +11416,7 @@ specifiers: '@types/xml2js': ^0.4.3 '@types/yargs': ^11.0.0 '@typescript-eslint/eslint-plugin': ^1.11.0 - '@typescript-eslint/parser': ^1.7.0 + '@typescript-eslint/parser': ^1.11.0 abortcontroller-polyfill: ^1.1.9 assert: ^1.4.1 async-lock: ^1.1.3 diff --git a/rush.json b/rush.json index c88380c2bd45..8e182494756b 100644 --- a/rush.json +++ b/rush.json @@ -318,6 +318,10 @@ "packageName": "@azure/abort-controller", "projectFolder": "sdk/core/abort-controller" }, + { + "packageName": "@azure/core-auth", + "projectFolder": "sdk/core/core-auth" + }, { "packageName": "@azure/core-http", "projectFolder": "sdk/core/core-http" diff --git a/sdk/core/core-amqp/package.json b/sdk/core/core-amqp/package.json index f957d24d506e..1884799a08fb 100644 --- a/sdk/core/core-amqp/package.json +++ b/sdk/core/core-amqp/package.json @@ -53,7 +53,7 @@ }, "dependencies": { "@azure/abort-controller": "1.0.0-preview.1", - "@azure/core-http": "^1.0.0-preview.1", + "@azure/core-auth": "^1.0.0-preview.1", "@types/async-lock": "^1.1.0", "@types/is-buffer": "^2.0.0", "async-lock": "^1.1.3", diff --git a/sdk/core/core-amqp/src/ConnectionContextBase.ts b/sdk/core/core-amqp/src/ConnectionContextBase.ts index 9389017eb82e..6cf827519c46 100644 --- a/sdk/core/core-amqp/src/ConnectionContextBase.ts +++ b/sdk/core/core-amqp/src/ConnectionContextBase.ts @@ -4,7 +4,7 @@ import { Connection, ConnectionOptions, generate_uuid } from "rhea-promise"; import { CbsClient } from "./cbs"; import { DataTransformer, DefaultDataTransformer } from "./dataTransformer"; -import { TokenCredential } from "@azure/core-http"; +import { TokenCredential } from "@azure/core-auth"; import { ConnectionConfig } from "./connectionConfig/connectionConfig"; import { SharedKeyCredential } from "./auth/sas"; diff --git a/sdk/core/core-amqp/src/auth/iotSas.ts b/sdk/core/core-amqp/src/auth/iotSas.ts index ff94efafbdd0..e32e36896e73 100644 --- a/sdk/core/core-amqp/src/auth/iotSas.ts +++ b/sdk/core/core-amqp/src/auth/iotSas.ts @@ -2,7 +2,7 @@ // Licensed under the MIT License. import { SharedKeyCredential } from "./sas"; -import { AccessToken } from "@azure/core-http"; +import { AccessToken } from "@azure/core-auth"; import { Buffer } from "buffer"; /** diff --git a/sdk/core/core-amqp/src/auth/sas.ts b/sdk/core/core-amqp/src/auth/sas.ts index b108f22bca88..df85c6201d80 100644 --- a/sdk/core/core-amqp/src/auth/sas.ts +++ b/sdk/core/core-amqp/src/auth/sas.ts @@ -2,7 +2,7 @@ // Licensed under the MIT License. import { parseConnectionString, ServiceBusConnectionStringModel } from "../util/utils"; -import { AccessToken } from "@azure/core-http"; +import { AccessToken } from "@azure/core-auth"; import { Buffer } from "buffer"; import isBuffer from "is-buffer"; import jssha from "jssha"; diff --git a/sdk/core/core-amqp/src/cbs.ts b/sdk/core/core-amqp/src/cbs.ts index 4aa1deb90d4e..591f87aa2aa4 100644 --- a/sdk/core/core-amqp/src/cbs.ts +++ b/sdk/core/core-amqp/src/cbs.ts @@ -2,7 +2,7 @@ // Licensed under the MIT License. import { TokenType } from "./auth/token"; -import { AccessToken } from "@azure/core-http"; +import { AccessToken } from "@azure/core-auth"; import { EventContext, ReceiverOptions, diff --git a/sdk/core/core-amqp/src/index.ts b/sdk/core/core-amqp/src/index.ts index a7660bbdccf1..970f9dae200b 100644 --- a/sdk/core/core-amqp/src/index.ts +++ b/sdk/core/core-amqp/src/index.ts @@ -7,7 +7,7 @@ export { RequestResponseLink, SendRequestOptions } from "./requestResponseLink"; export { retry, RetryConfig, RetryOperationType } from "./retry"; export { DataTransformer, DefaultDataTransformer } from "./dataTransformer"; export { TokenType } from "./auth/token"; -export { AccessToken, TokenCredential, isTokenCredential } from "@azure/core-http"; +export { AccessToken, TokenCredential, isTokenCredential } from "@azure/core-auth"; export { SharedKeyCredential } from "./auth/sas"; export { IotSharedKeyCredential } from "./auth/iotSas"; diff --git a/sdk/core/core-auth/.vscode/launch.json b/sdk/core/core-auth/.vscode/launch.json new file mode 100644 index 000000000000..8db7350f51e1 --- /dev/null +++ b/sdk/core/core-auth/.vscode/launch.json @@ -0,0 +1,17 @@ +{ + // 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": "Launch Program", + "preLaunchTask": "Build Node", + "program": "${workspaceFolder}\\src\\index.ts", + "outFiles": ["${workspaceFolder}/dist/**/*.js"], + "sourceMaps": true + } + ] +} diff --git a/sdk/core/core-auth/.vscode/tasks.json b/sdk/core/core-auth/.vscode/tasks.json new file mode 100644 index 000000000000..83bb44526db4 --- /dev/null +++ b/sdk/core/core-auth/.vscode/tasks.json @@ -0,0 +1,16 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "Build Node", + "type": "npm", + "script": "build:node", + "group": { + "kind": "build", + "isDefault": true + } + } + ] +} diff --git a/sdk/core/core-auth/README.md b/sdk/core/core-auth/README.md new file mode 100644 index 000000000000..52f96fd524eb --- /dev/null +++ b/sdk/core/core-auth/README.md @@ -0,0 +1,6 @@ +## Azure Core Authentiation + +This library provides core interfaces and helper methods for authenticating with Azure Active Directory. As a "core" library, it shouldn't need to be added as a dependency to any user code, only other Azure SDK libraries. + + +![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/core/core-auth/README.png) diff --git a/sdk/core/core-auth/api-extractor.json b/sdk/core/core-auth/api-extractor.json new file mode 100644 index 000000000000..1c8107b49276 --- /dev/null +++ b/sdk/core/core-auth/api-extractor.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", + "mainEntryPointFilePath": "types/src/index.d.ts", + "docModel": { + "enabled": false + }, + "apiReport": { + "enabled": true, + "reportFolder": "./review" + }, + "dtsRollup": { + "enabled": true, + "untrimmedFilePath": "", + "publicTrimmedFilePath": "./types/core-auth.d.ts" + }, + "messages": { + "tsdocMessageReporting": { + "default": { + "logLevel": "none" + } + }, + "extractorMessageReporting": { + "ae-missing-release-tag": { + "logLevel": "none" + }, + "ae-unresolved-link": { + "logLevel": "none" + } + } + } +} diff --git a/sdk/core/core-auth/package.json b/sdk/core/core-auth/package.json new file mode 100644 index 000000000000..34ed1c0b0c49 --- /dev/null +++ b/sdk/core/core-auth/package.json @@ -0,0 +1,96 @@ +{ + "name": "@azure/core-auth", + "version": "1.0.0-preview.1", + "description": "Provides low-level interfaces and helper methods for authentication in Azure SDK", + "main": "dist/index.js", + "module": "dist-esm/src/index.js", + "browser": { + "./dist/index.js": "./browser/index.js", + "./dist-esm/src/print.js": "./dist-esm/src/print.browser.js" + }, + "types": "types/core-auth.d.ts", + "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": "tsc -p . && rollup -c rollup.test.config.js 2>&1", + "build": "tsc -p . && rollup -c 2>&1 && api-extractor run --local", + "check-format": "prettier --list-different --config ../../.prettierrc.json \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "clean": "rimraf dist dist-esm test-dist types *.tgz *.log", + "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": "echo skipped", + "integration-test": "npm run integration-test:node && npm run integration-test:browser", + "lint:fix": "eslint \"src/**/*.ts\" \"test/**/*.ts\" -c ../../.eslintrc.json --fix --fix-type [problem,suggestion]", + "lint": "eslint -c ../../.eslintrc.json src test --ext .ts -f node_modules/eslint-detailed-reporter/lib/detailed.js -o template-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": "mocha test-dist/**/*.js --reporter mocha-multi --reporter-options spec=-,mocha-junit-reporter=-", + "unit-test": "npm run unit-test:node && npm run unit-test:browser" + }, + "files": [ + "browser/*.js*", + "dist/", + "dist-esm/src/", + "src/", + "types/core-auth.d.ts" + ], + "repository": "github:Azure/azure-sdk-for-js", + "keywords": [ + "azure", + "authentication" + ], + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/azure/azure-sdk-for-js/issues" + }, + "engine": { + "node": ">=6.0.0" + }, + "homepage": "https://github.com/azure/azure-sdk-for-js/tree/master/sdk/core/core-auth", + "sideEffects": false, + "private": true, + "dependencies": { + "tslib": "^1.9.3" + }, + "devDependencies": { + "@azure/abort-controller": "1.0.0-preview.1", + "@microsoft/api-extractor": "^7.1.5", + "@types/mocha": "^5.2.5", + "@types/node": "^8.0.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", + "assert": "^1.4.1", + "cross-env": "^5.2.0", + "eslint": "^5.16.0", + "eslint-config-prettier": "^4.2.0", + "eslint-detailed-reporter": "^0.8.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", + "mocha": "^5.2.0", + "mocha-junit-reporter": "^1.18.0", + "mocha-multi": "^1.0.1", + "prettier": "^1.16.4", + "rimraf": "^2.6.2", + "rollup": "~1.13.1", + "rollup-plugin-commonjs": "^10.0.0", + "rollup-plugin-json": "^3.1.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-uglify": "^6.0.0", + "rollup-plugin-visualizer": "^1.0.0", + "typescript": "^3.2.2", + "util": "^0.11.1" + } +} diff --git a/sdk/core/core-auth/review/core-auth.api.md b/sdk/core/core-auth/review/core-auth.api.md new file mode 100644 index 000000000000..e93ce203f34b --- /dev/null +++ b/sdk/core/core-auth/review/core-auth.api.md @@ -0,0 +1,33 @@ +## API Report File for "@azure/core-auth" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import { AbortSignalLike } from '@azure/abort-controller'; + +export { AbortSignalLike } + +// @public +export interface AccessToken { + expiresOnTimestamp: number; + token: string; +} + +// @public +export interface GetTokenOptions { + abortSignal?: AbortSignalLike; +} + +// @public +export function isTokenCredential(credential: any): credential is TokenCredential; + +// @public +export interface TokenCredential { + getToken(scopes: string | string[], options?: GetTokenOptions): Promise; +} + + +// (No @packageDocumentation comment for this package) + +``` diff --git a/sdk/core/core-auth/rollup.base.config.js b/sdk/core/core-auth/rollup.base.config.js new file mode 100644 index 000000000000..8897d63bd33e --- /dev/null +++ b/sdk/core/core-auth/rollup.base.config.js @@ -0,0 +1,95 @@ +import nodeResolve from "rollup-plugin-node-resolve"; +import multiEntry from "rollup-plugin-multi-entry"; +import cjs from "rollup-plugin-commonjs"; +import replace from "rollup-plugin-replace"; +import { uglify } from "rollup-plugin-uglify"; +import sourcemaps from "rollup-plugin-sourcemaps"; +import viz from "rollup-plugin-visualizer"; + +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"]; + 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() + ] + }; + + 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"); + } else if (production) { + baseConfig.plugins.push(uglify()); + } + + return baseConfig; +} + +export function browserConfig(test = false, production = false) { + const baseConfig = { + input: input, + output: { + file: "browser/core-auth.js", + format: "umd", + name: "Azure.Core.Auth", + sourcemap: true + }, + preserveSymlinks: false, + plugins: [ + sourcemaps(), + replace({ + 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)" + } + }), + nodeResolve({ + mainFields: ['module', 'browser'], + preferBuiltins: false + }), + cjs({ + namedExports: { events: ["EventEmitter"] } + }), + viz({ filename: "browser/browser-stats.html", sourcemap: false }) + ] + }; + + if (test) { + baseConfig.input = "dist-esm/test/**/*.spec.js"; + baseConfig.plugins.unshift(multiEntry({ exports: false })); + baseConfig.output.file = "test-browser/index.js"; + } else if (production) { + baseConfig.output.file = "browser/core-auth.min.js"; + baseConfig.plugins.push(uglify()); + } + + return baseConfig; +} diff --git a/sdk/core/core-auth/rollup.config.js b/sdk/core/core-auth/rollup.config.js new file mode 100644 index 000000000000..49a26bd6fdd6 --- /dev/null +++ b/sdk/core/core-auth/rollup.config.js @@ -0,0 +1,14 @@ +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()); + inputs.push(base.browserConfig(false, true)); +} + +export default inputs; diff --git a/sdk/core/core-auth/rollup.test.config.js b/sdk/core/core-auth/rollup.test.config.js new file mode 100644 index 000000000000..925a4421a53e --- /dev/null +++ b/sdk/core/core-auth/rollup.test.config.js @@ -0,0 +1,3 @@ +import * as base from "./rollup.base.config"; + +export default [base.nodeConfig(true), base.browserConfig(true)]; diff --git a/sdk/core/core-auth/samples/.gitkeep b/sdk/core/core-auth/samples/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/sdk/core/core-auth/src/index.ts b/sdk/core/core-auth/src/index.ts new file mode 100644 index 000000000000..99c0cf108b17 --- /dev/null +++ b/sdk/core/core-auth/src/index.ts @@ -0,0 +1,11 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +export { + TokenCredential, + GetTokenOptions, + AccessToken, + isTokenCredential +} from "./tokenCredential"; + +export { AbortSignalLike } from '@azure/abort-controller'; diff --git a/sdk/core/core-http/lib/credentials/tokenCredential.ts b/sdk/core/core-auth/src/tokenCredential.ts similarity index 95% rename from sdk/core/core-http/lib/credentials/tokenCredential.ts rename to sdk/core/core-auth/src/tokenCredential.ts index 2ba7d2a5ac54..3f1178be1441 100644 --- a/sdk/core/core-http/lib/credentials/tokenCredential.ts +++ b/sdk/core/core-auth/src/tokenCredential.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { AbortSignalLike } from "../webResource"; +import { AbortSignalLike } from "@azure/abort-controller"; /** * Represents a credential capable of providing an authentication token. diff --git a/sdk/core/core-auth/test/index.spec.ts b/sdk/core/core-auth/test/index.spec.ts new file mode 100644 index 000000000000..b957de72056f --- /dev/null +++ b/sdk/core/core-auth/test/index.spec.ts @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +import assert from "assert"; +import { isTokenCredential } from "../src/tokenCredential"; + +describe("isTokenCredential", function () { + it("should return true for an object that resembles a TokenCredential", () => { + assert.ok(isTokenCredential({ + getToken() { + return Promise.resolve({ + token: "secret", + expiresOnTimestamp: 12345 + }); + } + })); + }); + + it("should return false for an object that does not resemble a TokenCredential", () => { + assert.strictEqual(isTokenCredential({ + doStuff() { + return false; + } + }), false); + }); + + it("should return false for an object that has a non-function field named 'getToken'", () => { + assert.strictEqual(isTokenCredential({ + getToken: true + }), false); + }); +}); diff --git a/sdk/core/core-auth/tsconfig.json b/sdk/core/core-auth/tsconfig.json new file mode 100644 index 000000000000..2e1218772c63 --- /dev/null +++ b/sdk/core/core-auth/tsconfig.json @@ -0,0 +1,61 @@ +{ + "compilerOptions": { + /* Basic Options */ + "target": "es5" /* 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'. */, + // "lib": [], /* Specify library files to be included in the compilation. */ + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + "declaration": true /* Generates corresponding '.d.ts' file. */, + "declarationMap": true /* Generates a sourcemap for each corresponding '.d.ts' file. */, + "declarationDir": "./types" /* Output directory for generated declaration files.*/, + "sourceMap": true /* Generates corresponding '.map' file. */, + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./dist-esm" /* Redirect output structure to the directory. */, + // "rootDir": "." /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */, + // "composite": true, /* Enable project compilation */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + "importHelpers": true /* Import emit helpers from 'tslib'. */, + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [] /* List of root folders whose combined content represents the structure of the project at runtime. */, + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + "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'. */, + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + "forceConsistentCasingInFileNames": true + } +} diff --git a/sdk/core/core-http/lib/coreHttp.ts b/sdk/core/core-http/lib/coreHttp.ts index a283cfc975dc..04a989000ce1 100644 --- a/sdk/core/core-http/lib/coreHttp.ts +++ b/sdk/core/core-http/lib/coreHttp.ts @@ -43,7 +43,7 @@ export { export { URLBuilder, URLQuery } from "./url"; // Credentials -export { TokenCredential, GetTokenOptions, AccessToken, isTokenCredential } from "./credentials/tokenCredential"; +export { TokenCredential, GetTokenOptions, AccessToken, isTokenCredential } from "@azure/core-auth"; export { TokenCredentials } from "./credentials/tokenCredentials"; export { BasicAuthenticationCredentials } from "./credentials/basicAuthenticationCredentials"; export { ApiKeyCredentials, ApiKeyCredentialOptions } from "./credentials/apiKeyCredentials"; diff --git a/sdk/core/core-http/lib/msRest.ts b/sdk/core/core-http/lib/msRest.ts deleted file mode 100644 index 85344f18509c..000000000000 --- a/sdk/core/core-http/lib/msRest.ts +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -export { WebResource, HttpRequestBody, RequestPrepareOptions, HttpMethods, ParameterValue, RequestOptionsBase, TransferProgressEvent, AbortSignalLike } from "./webResource"; -export { DefaultHttpClient } from "./defaultHttpClient"; -export { HttpClient } from "./httpClient"; -export { HttpHeaders } from "./httpHeaders"; -export { HttpOperationResponse, HttpResponse, RestResponse } from "./httpOperationResponse"; -export { HttpPipelineLogger } from "./httpPipelineLogger"; -export { HttpPipelineLogLevel } from "./httpPipelineLogLevel"; -export { RestError } from "./restError"; -export { OperationArguments } from "./operationArguments"; -export { OperationParameter, OperationQueryParameter, OperationURLParameter } from "./operationParameter"; -export { OperationResponse } from "./operationResponse"; -export { OperationSpec } from "./operationSpec"; -export { ServiceClient, ServiceClientOptions, flattenResponse } from "./serviceClient"; -export { QueryCollectionFormat } from "./queryCollectionFormat"; -export { Constants } from "./util/constants"; -export { logPolicy } from "./policies/logPolicy"; -export { BaseRequestPolicy, RequestPolicy, RequestPolicyFactory, RequestPolicyOptions } from "./policies/requestPolicy"; -export { generateClientRequestIdPolicy } from "./policies/generateClientRequestIdPolicy"; -export { exponentialRetryPolicy } from "./policies/exponentialRetryPolicy"; -export { systemErrorRetryPolicy } from "./policies/systemErrorRetryPolicy"; -export { throttlingRetryPolicy } from "./policies/throttlingRetryPolicy"; -export { getDefaultProxySettings, proxyPolicy } from "./policies/proxyPolicy"; -export { redirectPolicy } from "./policies/redirectPolicy"; -export { signingPolicy } from "./policies/signingPolicy"; -export { userAgentPolicy, getDefaultUserAgentValue } from "./policies/userAgentPolicy"; -export { deserializationPolicy, deserializeResponseBody } from "./policies/deserializationPolicy"; -export { - MapperType, SimpleMapperType, CompositeMapperType, DictionaryMapperType, SequenceMapperType, EnumMapperType, - Mapper, BaseMapper, CompositeMapper, SequenceMapper, DictionaryMapper, EnumMapper, - MapperConstraints, PolymorphicDiscriminator, - Serializer, UrlParameterValue, serializeObject -} from "./serializer"; -export { - stripRequest, stripResponse, delay, - executePromisesSequentially, generateUuid, encodeUri, ServiceCallback, - promiseToCallback, promiseToServiceCallback, isValidUuid, - applyMixins, isNode, isDuration -} from "./util/utils"; -export { URLBuilder, URLQuery } from "./url"; - -// Credentials -export { TokenCredentials } from "./credentials/tokenCredentials"; -export { BasicAuthenticationCredentials } from "./credentials/basicAuthenticationCredentials"; -export { ApiKeyCredentials, ApiKeyCredentialOptions } from "./credentials/apiKeyCredentials"; -export { ServiceClientCredentials } from "./credentials/serviceClientCredentials"; -export { TopicCredentials } from "./credentials/topicCredentials"; -export { Authenticator } from "./credentials/credentials"; diff --git a/sdk/core/core-http/lib/policies/bearerTokenAuthenticationPolicy.ts b/sdk/core/core-http/lib/policies/bearerTokenAuthenticationPolicy.ts index 08d5f4e53999..e474ab967fb9 100644 --- a/sdk/core/core-http/lib/policies/bearerTokenAuthenticationPolicy.ts +++ b/sdk/core/core-http/lib/policies/bearerTokenAuthenticationPolicy.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { TokenCredential, AccessToken, GetTokenOptions } from "../credentials/tokenCredential"; +import { TokenCredential, AccessToken, GetTokenOptions } from "@azure/core-auth"; import { BaseRequestPolicy, RequestPolicy, RequestPolicyOptions, RequestPolicyFactory } from "../policies/requestPolicy"; import { Constants } from "../util/constants"; import { HttpOperationResponse } from "../httpOperationResponse"; diff --git a/sdk/core/core-http/lib/serviceClient.ts b/sdk/core/core-http/lib/serviceClient.ts index 3cc3a42f5906..fe4f430a08d3 100644 --- a/sdk/core/core-http/lib/serviceClient.ts +++ b/sdk/core/core-http/lib/serviceClient.ts @@ -2,7 +2,7 @@ // Licensed under the MIT License. import { ServiceClientCredentials } from "./credentials/serviceClientCredentials"; -import { TokenCredential, isTokenCredential } from "./credentials/tokenCredential"; +import { TokenCredential, isTokenCredential } from "@azure/core-auth"; import { DefaultHttpClient } from "./defaultHttpClient"; import { HttpClient } from "./httpClient"; import { HttpOperationResponse, RestResponse } from "./httpOperationResponse"; diff --git a/sdk/core/core-http/package.json b/sdk/core/core-http/package.json index 5e20e906f82c..93072b75b0bc 100644 --- a/sdk/core/core-http/package.json +++ b/sdk/core/core-http/package.json @@ -111,6 +111,7 @@ }, "dependencies": { "@types/tunnel": "^0.0.0", + "@azure/core-auth": "^1.0.0-preview.1", "axios": "^0.19.0", "form-data": "^2.3.2", "process": "^0.11.10", diff --git a/sdk/core/core-http/test/policies/bearerTokenAuthenticationPolicyTests.ts b/sdk/core/core-http/test/policies/bearerTokenAuthenticationPolicyTests.ts index 3b3ad214cde6..f90dbee44152 100644 --- a/sdk/core/core-http/test/policies/bearerTokenAuthenticationPolicyTests.ts +++ b/sdk/core/core-http/test/policies/bearerTokenAuthenticationPolicyTests.ts @@ -4,7 +4,7 @@ import { assert } from "chai"; import { fake } from "sinon"; import { OperationSpec } from "../../lib/operationSpec"; -import { TokenCredential, GetTokenOptions, AccessToken } from "../../lib/credentials/tokenCredential"; +import { TokenCredential, GetTokenOptions, AccessToken } from "@azure/core-auth"; import { RequestPolicy, RequestPolicyOptions, } from "../../lib/policies/requestPolicy"; import { Constants } from "../../lib/util/constants"; import { HttpOperationResponse } from "../../lib/httpOperationResponse"; From 76187a1b0d9c3c84e3b11079ec40b2683b95030c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez?= Date: Fri, 5 Jul 2019 11:11:17 -0400 Subject: [PATCH 231/289] [KeyVault] Using the proxy only if isNode (#4170) * [KeyVault] Using the proxy only if isNode --- sdk/keyvault/keyvault-certificates/src/index.ts | 12 +++++++++--- sdk/keyvault/keyvault-keys/src/index.ts | 12 +++++++++--- sdk/keyvault/keyvault-secrets/src/index.ts | 12 +++++++++--- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/sdk/keyvault/keyvault-certificates/src/index.ts b/sdk/keyvault/keyvault-certificates/src/index.ts index d6a246f749f9..bf67d048c880 100644 --- a/sdk/keyvault/keyvault-certificates/src/index.ts +++ b/sdk/keyvault/keyvault-certificates/src/index.ts @@ -13,6 +13,7 @@ import { proxyPolicy, throttlingRetryPolicy, getDefaultProxySettings, + isNode, userAgentPolicy } from "@azure/core-http"; @@ -60,8 +61,13 @@ export class CertificatesClient { const userAgentString: string = CertificatesClient.getUserAgentString(pipelineOptions.telemetry); - const requestPolicyFactories: RequestPolicyFactory[] = [ - proxyPolicy(getDefaultProxySettings((pipelineOptions.proxyOptions || {}).proxySettings)), + let requestPolicyFactories: RequestPolicyFactory[] = []; + if (isNode) { + requestPolicyFactories.push( + proxyPolicy(getDefaultProxySettings((pipelineOptions.proxyOptions || {}).proxySettings)) + ); + } + requestPolicyFactories = requestPolicyFactories.concat([ userAgentPolicy({ value: userAgentString }), generateClientRequestIdPolicy(), deserializationPolicy(), // Default deserializationPolicy is provided by protocol layer @@ -77,7 +83,7 @@ export class CertificatesClient { isTokenCredential(credential) ? bearerTokenAuthenticationPolicy(credential, "https://vault.azure.net/.default") : signingPolicy(credential) - ]; + ]); return { httpClient: pipelineOptions.HTTPClient, diff --git a/sdk/keyvault/keyvault-keys/src/index.ts b/sdk/keyvault/keyvault-keys/src/index.ts index c60814ffbed6..d3706a69911c 100644 --- a/sdk/keyvault/keyvault-keys/src/index.ts +++ b/sdk/keyvault/keyvault-keys/src/index.ts @@ -17,6 +17,7 @@ import { proxyPolicy, throttlingRetryPolicy, getDefaultProxySettings, + isNode, userAgentPolicy } from "@azure/core-http"; @@ -107,8 +108,13 @@ export class KeysClient { const userAgentString: string = KeysClient.getUserAgentString(pipelineOptions.telemetry); - const requestPolicyFactories: RequestPolicyFactory[] = [ - proxyPolicy(getDefaultProxySettings((pipelineOptions.proxyOptions || {}).proxySettings)), + let requestPolicyFactories: RequestPolicyFactory[] = []; + if (isNode) { + requestPolicyFactories.push( + proxyPolicy(getDefaultProxySettings((pipelineOptions.proxyOptions || {}).proxySettings)) + ); + } + requestPolicyFactories = requestPolicyFactories.concat([ userAgentPolicy({ value: userAgentString }), generateClientRequestIdPolicy(), deserializationPolicy(), // Default deserializationPolicy is provided by protocol layer @@ -124,7 +130,7 @@ export class KeysClient { isTokenCredential(credential) ? bearerTokenAuthenticationPolicy(credential, "https://vault.azure.net/.default") : signingPolicy(credential) - ]; + ]); return { httpClient: pipelineOptions.HTTPClient, diff --git a/sdk/keyvault/keyvault-secrets/src/index.ts b/sdk/keyvault/keyvault-secrets/src/index.ts index 340df37d4c18..38a0e2f25a67 100644 --- a/sdk/keyvault/keyvault-secrets/src/index.ts +++ b/sdk/keyvault/keyvault-secrets/src/index.ts @@ -18,6 +18,7 @@ import { proxyPolicy, throttlingRetryPolicy, getDefaultProxySettings, + isNode, userAgentPolicy } from "@azure/core-http"; @@ -89,8 +90,13 @@ export class SecretsClient { const userAgentString: string = SecretsClient.getUserAgentString(pipelineOptions.telemetry); - const requestPolicyFactories: RequestPolicyFactory[] = [ - proxyPolicy(getDefaultProxySettings((pipelineOptions.proxyOptions || {}).proxySettings)), + let requestPolicyFactories: RequestPolicyFactory[] = []; + if (isNode) { + requestPolicyFactories.push( + proxyPolicy(getDefaultProxySettings((pipelineOptions.proxyOptions || {}).proxySettings)) + ); + } + requestPolicyFactories = requestPolicyFactories.concat([ userAgentPolicy({ value: userAgentString }), generateClientRequestIdPolicy(), deserializationPolicy(), // Default deserializationPolicy is provided by protocol layer @@ -106,7 +112,7 @@ export class SecretsClient { isTokenCredential(credential) ? bearerTokenAuthenticationPolicy(credential, "https://vault.azure.net/.default") : signingPolicy(credential) - ]; + ]); return { httpClient: pipelineOptions.HTTPClient, From a9bd621aca1687df04c323615b7d0d7b9264003b Mon Sep 17 00:00:00 2001 From: ramya0820 <45977823+ramya0820@users.noreply.github.com> Date: Fri, 5 Jul 2019 10:21:57 -0700 Subject: [PATCH 232/289] [core-amqp] [Event Hubs] Update retry count related parameters to use maxRetries (#4158) * Update variable names to use 'maxRetries' convention * Update implementation per convention --- sdk/core/core-amqp/src/requestResponseLink.ts | 6 ++-- sdk/core/core-amqp/src/retry.ts | 35 ++++++++++--------- sdk/core/core-amqp/src/util/constants.ts | 4 +-- sdk/core/core-amqp/test/retry.spec.ts | 22 ++++++------ .../event-hubs/src/batchingReceiver.ts | 9 ++--- sdk/eventhub/event-hubs/src/eventHubClient.ts | 4 +-- .../event-hubs/src/eventHubReceiver.ts | 2 +- sdk/eventhub/event-hubs/src/eventHubSender.ts | 11 +++--- .../event-hubs/src/managementClient.ts | 4 +-- 9 files changed, 46 insertions(+), 51 deletions(-) diff --git a/sdk/core/core-amqp/src/requestResponseLink.ts b/sdk/core/core-amqp/src/requestResponseLink.ts index eca70c1a050c..1b3e18a25b87 100644 --- a/sdk/core/core-amqp/src/requestResponseLink.ts +++ b/sdk/core/core-amqp/src/requestResponseLink.ts @@ -36,10 +36,10 @@ export interface SendRequestOptions { */ timeoutInSeconds?: number; /** - * @property {number} [times] Number of times the operation needs to be retried in case + * @property {number} [maxRetries] Number of times the operation needs to be retried in case * of error. Default: 3. */ - times?: number; + maxRetries?: number; /** * @property {number} [delayInSeconds] Amount of time to wait in seconds before making the * next attempt. Default: 15. @@ -257,7 +257,7 @@ export class RequestResponseLink implements ReqResLink { ? RetryOperationType.cbsAuth : RetryOperationType.management, delayInSeconds: options.delayInSeconds, - times: options.times + maxRetries: options.maxRetries }; return retry(config); } diff --git a/sdk/core/core-amqp/src/retry.ts b/sdk/core/core-amqp/src/retry.ts index 001a1d157d9e..58245b1576c1 100644 --- a/sdk/core/core-amqp/src/retry.ts +++ b/sdk/core/core-amqp/src/retry.ts @@ -4,7 +4,7 @@ import { translate, MessagingError } from "./errors"; import { delay, isNode } from "./util/utils"; import * as log from "./log"; -import { defaultRetryAttempts, defaultDelayBetweenRetriesInSeconds } from "./util/constants"; +import { defaultMaxRetries, defaultDelayBetweenRetriesInSeconds } from "./util/constants"; import { resolve } from "dns"; /** @@ -60,10 +60,10 @@ export interface RetryConfig { */ operationType: RetryOperationType; /** - * @property {number} [times] Number of times the operation needs to be retried in case + * @property {number} [maxRetries] Number of times the operation needs to be retried in case * of error. Default: 3. */ - times?: number; + maxRetries?: number; /** * @property {number} [delayInSeconds] Amount of time to wait in seconds before making the * next attempt. Default: 15. @@ -111,8 +111,12 @@ async function checkNetworkConnection(host: string): Promise { } /** - * It will attempt to linearly retry an operation specified number of times with a specified - * delay in between each retry. The retries will only happen if the error is retryable. + * Additional attempts are made if the previous attempt failed with a `retryable` error. + * The number of additional attempts is governed by the `maxRetries` property provided + * on the `RetryConfig` argument. + * + * The retries when made are done so linearly on the given operation for a specified number of times, + * with a specified delay in between each retry. * * @param {RetryConfig} config Parameters to configure retry operation. * @@ -120,21 +124,18 @@ async function checkNetworkConnection(host: string): Promise { */ export async function retry(config: RetryConfig): Promise { validateRetryConfig(config); - if (config.times == undefined) config.times = defaultRetryAttempts; - if (config.delayInSeconds == undefined) { + if (config.maxRetries == undefined || config.maxRetries < 0) { + config.maxRetries = defaultMaxRetries; + } + if (config.delayInSeconds == undefined || config.delayInSeconds < 0) { config.delayInSeconds = defaultDelayBetweenRetriesInSeconds; } let lastError: MessagingError | undefined; let result: any; let success = false; - for (let i = 0; i < config.times; i++) { - const j = i + 1; - log.retry( - "[%s] Retry for '%s', attempt number: %d", - config.connectionId, - config.operationType, - j - ); + const totalNumberOfAttempts = config.maxRetries + 1; + for (let i = 1; i <= totalNumberOfAttempts; i++) { + log.retry("[%s] Attempt number: %d", config.connectionId, config.operationType, i); try { result = await config.operation(); success = true; @@ -142,7 +143,7 @@ export async function retry(config: RetryConfig): Promise { "[%s] Success for '%s', after attempt number: %d.", config.connectionId, config.operationType, - j + i ); if (result && !isDelivery(result)) { log.retry( @@ -170,7 +171,7 @@ export async function retry(config: RetryConfig): Promise { "[%s] Error occured for '%s' in attempt number %d: %O", config.connectionId, config.operationType, - j, + i, err ); if (lastError && lastError.retryable) { diff --git a/sdk/core/core-amqp/src/util/constants.ts b/sdk/core/core-amqp/src/util/constants.ts index e5619bff3f32..41339362bccb 100644 --- a/sdk/core/core-amqp/src/util/constants.ts +++ b/sdk/core/core-amqp/src/util/constants.ts @@ -73,8 +73,8 @@ export const minDurationValue = -922337203685477; export const maxAbsoluteExpiryTime = new Date("9999-12-31T07:59:59.000Z").getTime(); export const aadTokenValidityMarginSeconds = 5; export const connectionReconnectDelay = 300; -export const defaultRetryAttempts = 3; -export const defaultConnectionRetryAttempts = 150; +export const defaultMaxRetries = 3; +export const defaultMaxRetriesForConnection = 150; export const defaultDelayBetweenOperationRetriesInSeconds = 5; export const defaultDelayBetweenRetriesInSeconds = 15; export const receiverSettleMode = "receiver-settle-mode"; diff --git a/sdk/core/core-amqp/test/retry.spec.ts b/sdk/core/core-amqp/test/retry.spec.ts index 9945b9497935..7b28526c6fd0 100644 --- a/sdk/core/core-amqp/test/retry.spec.ts +++ b/sdk/core/core-amqp/test/retry.spec.ts @@ -88,7 +88,7 @@ describe("retry function", function() { }, connectionId: "connection-1", operationType: RetryOperationType.receiverLink, - times: 3, + maxRetries: 2, delayInSeconds: 0.5 }; const result = await retry(config); @@ -125,7 +125,7 @@ describe("retry function", function() { }, connectionId: "connection-1", operationType: RetryOperationType.senderLink, - times: 3, + maxRetries: 2, delayInSeconds: 0.5 }; const result = await retry(config); @@ -163,7 +163,7 @@ describe("retry function", function() { }, connectionId: "connection-1", operationType: RetryOperationType.sendMessage, - times: 3, + maxRetries: 2, delayInSeconds: 0.5 }; await retry(config); @@ -188,7 +188,7 @@ describe("retry function", function() { }, connectionId: "connection-1", operationType: RetryOperationType.session, - times: 4, + maxRetries: 4, delayInSeconds: 0.5 }; await retry(config); @@ -196,16 +196,16 @@ describe("retry function", function() { should.exist(err); should.equal(true, err instanceof MessagingError); err.message.should.equal("I would always like to fail, keep retrying."); - counter.should.equal(4); + counter.should.equal(5); } }); - describe("with config.times set to Infinity", function() { + describe("with config.maxRetries set to Infinity", function() { it("should succeed if the operation succeeds.", async function() { let counter = 0; try { const config: RetryConfig = { - times: Infinity, + maxRetries: Infinity, operation: async () => { debug("counter: %d", ++counter); await delay(200); @@ -241,7 +241,7 @@ describe("retry function", function() { }, connectionId: "connection-1", operationType: RetryOperationType.management, - times: Infinity + maxRetries: Infinity }; await retry(config); } catch (err) { @@ -273,7 +273,7 @@ describe("retry function", function() { }, connectionId: "connection-1", operationType: RetryOperationType.receiverLink, - times: Infinity, + maxRetries: Infinity, delayInSeconds: 0.5 }; const result = await retry(config); @@ -310,7 +310,7 @@ describe("retry function", function() { }, connectionId: "connection-1", operationType: RetryOperationType.senderLink, - times: Infinity, + maxRetries: Infinity, delayInSeconds: 0.5 }; const result = await retry(config); @@ -348,7 +348,7 @@ describe("retry function", function() { }, connectionId: "connection-1", operationType: RetryOperationType.sendMessage, - times: Constants.defaultConnectionRetryAttempts, + maxRetries: Constants.defaultMaxRetriesForConnection, delayInSeconds: 0.0001 }; await retry(config); diff --git a/sdk/eventhub/event-hubs/src/batchingReceiver.ts b/sdk/eventhub/event-hubs/src/batchingReceiver.ts index ea5dc7bfeb99..31f2dc3899a7 100644 --- a/sdk/eventhub/event-hubs/src/batchingReceiver.ts +++ b/sdk/eventhub/event-hubs/src/batchingReceiver.ts @@ -351,19 +351,16 @@ export class BatchingReceiver extends EventHubReceiver { }); const jitterInSeconds = randomNumberFromInterval(1, 4); - const times = - retryOptions && retryOptions.retryCount && retryOptions.retryCount > 0 - ? retryOptions.retryCount - : Constants.defaultRetryAttempts; + const maxRetries = retryOptions && retryOptions.maxRetries; const delayInSeconds = - retryOptions && retryOptions.retryInterval && retryOptions.retryInterval > 0 + retryOptions && retryOptions.retryInterval && retryOptions.retryInterval >= 0 ? retryOptions.retryInterval / 1000 : Constants.defaultDelayBetweenOperationRetriesInSeconds; const config: RetryConfig = { operation: receiveEventPromise, connectionId: this._context.connectionId, operationType: RetryOperationType.receiveMessage, - times: times, + maxRetries: maxRetries, connectionHost: this._context.config.host, delayInSeconds: delayInSeconds + jitterInSeconds }; diff --git a/sdk/eventhub/event-hubs/src/eventHubClient.ts b/sdk/eventhub/event-hubs/src/eventHubClient.ts index e5c35f9d2796..bfb4d7fe9d6e 100644 --- a/sdk/eventhub/event-hubs/src/eventHubClient.ts +++ b/sdk/eventhub/event-hubs/src/eventHubClient.ts @@ -28,9 +28,9 @@ import { throwTypeErrorIfParameterMissing, throwErrorIfConnectionClosed } from " */ export interface RetryOptions { /** - * The maximum number of times to attempt an operation. + * The maximum number of times an operation will be retried. */ - retryCount?: number; + maxRetries?: number; /** * Number of milliseconds to wait between attempts. */ diff --git a/sdk/eventhub/event-hubs/src/eventHubReceiver.ts b/sdk/eventhub/event-hubs/src/eventHubReceiver.ts index d746515a41fa..303fae020760 100644 --- a/sdk/eventhub/event-hubs/src/eventHubReceiver.ts +++ b/sdk/eventhub/event-hubs/src/eventHubReceiver.ts @@ -477,7 +477,7 @@ export class EventHubReceiver extends LinkEntity { operation: () => this._init(options), connectionId: this._context.connectionId, operationType: RetryOperationType.receiverLink, - times: Constants.defaultConnectionRetryAttempts, + maxRetries: Constants.defaultMaxRetriesForConnection, connectionHost: this._context.config.host, delayInSeconds: 15 }; diff --git a/sdk/eventhub/event-hubs/src/eventHubSender.ts b/sdk/eventhub/event-hubs/src/eventHubSender.ts index fcb03529394e..3fdfb925bee6 100644 --- a/sdk/eventhub/event-hubs/src/eventHubSender.ts +++ b/sdk/eventhub/event-hubs/src/eventHubSender.ts @@ -280,7 +280,7 @@ export class EventHubSender extends LinkEntity { operation: () => this._init(options), connectionId: this._context.connectionId, operationType: RetryOperationType.senderLink, - times: Constants.defaultConnectionRetryAttempts, + maxRetries: Constants.defaultMaxRetriesForConnection, connectionHost: this._context.config.host, delayInSeconds: 15 }; @@ -601,19 +601,16 @@ export class EventHubSender extends LinkEntity { }); const jitterInSeconds = randomNumberFromInterval(1, 4); - const times = - options.retryOptions && options.retryOptions.retryCount && options.retryOptions.retryCount > 0 - ? options.retryOptions.retryCount - : Constants.defaultRetryAttempts; + const maxRetries = options.retryOptions && options.retryOptions.maxRetries; const delayInSeconds = - options.retryOptions && options.retryOptions.retryInterval && options.retryOptions.retryInterval > 0 + options.retryOptions && options.retryOptions.retryInterval && options.retryOptions.retryInterval >= 0 ? options.retryOptions.retryInterval / 1000 : Constants.defaultDelayBetweenOperationRetriesInSeconds; const config: RetryConfig = { operation: sendEventPromise, connectionId: this._context.connectionId, operationType: RetryOperationType.sendMessage, - times: times, + maxRetries: maxRetries, delayInSeconds: delayInSeconds + jitterInSeconds }; return retry(config); diff --git a/sdk/eventhub/event-hubs/src/managementClient.ts b/sdk/eventhub/event-hubs/src/managementClient.ts index 9054e242e6d4..528182be79f3 100644 --- a/sdk/eventhub/event-hubs/src/managementClient.ts +++ b/sdk/eventhub/event-hubs/src/managementClient.ts @@ -293,11 +293,11 @@ export class ManagementClient extends LinkEntity { } const sendRequestOptions: SendRequestOptions = { - times: options.retryOptions && options.retryOptions.retryCount, + maxRetries: options.retryOptions && options.retryOptions.maxRetries, abortSignal: options.abortSignal, requestName: options.requestName, delayInSeconds: - options.retryOptions && options.retryOptions.retryInterval + options.retryOptions && options.retryOptions.retryInterval && options.retryOptions.retryInterval >= 0 ? options.retryOptions.retryInterval / 1000 : undefined }; From 11134107c727ac20797f80131e46fe693eaccb91 Mon Sep 17 00:00:00 2001 From: bsiegel <96068+bsiegel@users.noreply.github.com> Date: Fri, 5 Jul 2019 14:46:20 -0700 Subject: [PATCH 233/289] Clean up leftover files from onboarded libraries (#3683) * Centralize gitignore rules * Remove unneeded npmignores * Remove old github metadata dirs * Centralize vscode settings & remove editorconfigs * Remove old travis & AzDevOps configs * Use centralized prettierrc * Use eslint everywhere, use centralized eslintrc * Rush update --- .azure-pipelines/client.yml | 2 +- .gitignore | 9 + .vscode/settings.json | 18 +- common/config/rush/pnpm-lock.yaml | 392 +++++++-------- sdk/.eslintrc.json | 3 +- sdk/core/abort-controller/package.json | 12 +- .../.github/ISSUE_TEMPLATE/Bug_report.md | 21 - .../.github/ISSUE_TEMPLATE/feature_request.md | 17 - .../.github/PULL_REQUEST_TEMPLATE.md | 9 - sdk/core/core-amqp/.travis.yml | 9 - sdk/core/core-amqp/.vscode/settings.json | 27 - sdk/core/core-amqp/package.json | 5 +- sdk/core/core-amqp/tslint.json | 86 ---- .../core-asynciterator-polyfill/package.json | 22 +- sdk/core/core-http/.gitignore | 102 ---- sdk/core/core-http/package.json | 18 +- sdk/core/core-http/tslint.json | 55 --- sdk/core/core-paging/package.json | 8 +- sdk/cosmosdb/cosmos/.editorConfig | 16 - sdk/cosmosdb/cosmos/.gitattributes | 22 - sdk/cosmosdb/cosmos/.gitignore | 269 ---------- sdk/cosmosdb/cosmos/.prettierrc.json | 4 - sdk/cosmosdb/cosmos/.travis.yml | 7 - sdk/cosmosdb/cosmos/.vscode/settings.json | 4 - sdk/cosmosdb/cosmos/package.json | 18 +- .../cosmos/samples/TodoApp/.gitignore | 2 - sdk/cosmosdb/cosmos/src/test/tslint.json | 10 - sdk/cosmosdb/cosmos/tslint.json | 15 - .../.github/ISSUE_TEMPLATE/Bug_report.md | 22 - .../.github/ISSUE_TEMPLATE/feature_request.md | 17 - sdk/eventhub/.github/PULL_REQUEST_TEMPLATE.md | 9 - sdk/eventhub/.travis.yml | 12 - sdk/eventhub/.vscode/settings.json | 30 -- sdk/eventhub/event-hubs/.prettierrc.json | 4 - sdk/eventhub/event-hubs/package.json | 5 +- sdk/eventhub/event-hubs/tslint.json | 67 --- .../event-processor-host/package.json | 5 +- sdk/eventhub/event-processor-host/tslint.json | 67 --- .../keyvault-certificates/package.json | 16 +- sdk/keyvault/keyvault-keys/.eslintignore | 3 - sdk/keyvault/keyvault-keys/.gitignore | 3 - sdk/keyvault/keyvault-secrets/.eslintignore | 2 - sdk/keyvault/keyvault-secrets/.gitignore | 2 - sdk/servicebus/service-bus/.editorconfig | 10 - .../.github/ISSUE_TEMPLATE/Bug_report.md | 21 - .../.github/PULL_REQUEST_TEMPLATE.md | 9 - sdk/servicebus/service-bus/.travis.yml | 9 - .../service-bus/.vscode/extensions.json | 3 - .../service-bus/.vscode/settings.json | 27 - sdk/storage/azure-pipelines.yml | 462 ------------------ sdk/storage/storage-blob/.npmignore | 40 -- sdk/storage/storage-blob/.prettierignore | 2 - sdk/storage/storage-blob/tslint.json | 13 - sdk/storage/storage-file/.npmignore | 35 -- sdk/storage/storage-file/.prettierignore | 2 - sdk/storage/storage-file/tslint.json | 13 - sdk/storage/storage-queue/.npmignore | 34 -- sdk/storage/storage-queue/.prettierignore | 2 - sdk/storage/storage-queue/tslint.json | 13 - 59 files changed, 298 insertions(+), 1843 deletions(-) delete mode 100644 sdk/core/core-amqp/.github/ISSUE_TEMPLATE/Bug_report.md delete mode 100644 sdk/core/core-amqp/.github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 sdk/core/core-amqp/.github/PULL_REQUEST_TEMPLATE.md delete mode 100644 sdk/core/core-amqp/.travis.yml delete mode 100644 sdk/core/core-amqp/.vscode/settings.json delete mode 100644 sdk/core/core-amqp/tslint.json delete mode 100644 sdk/core/core-http/.gitignore delete mode 100644 sdk/core/core-http/tslint.json delete mode 100644 sdk/cosmosdb/cosmos/.editorConfig delete mode 100644 sdk/cosmosdb/cosmos/.gitattributes delete mode 100644 sdk/cosmosdb/cosmos/.gitignore delete mode 100644 sdk/cosmosdb/cosmos/.prettierrc.json delete mode 100644 sdk/cosmosdb/cosmos/.travis.yml delete mode 100644 sdk/cosmosdb/cosmos/.vscode/settings.json delete mode 100644 sdk/cosmosdb/cosmos/samples/TodoApp/.gitignore delete mode 100644 sdk/cosmosdb/cosmos/src/test/tslint.json delete mode 100644 sdk/cosmosdb/cosmos/tslint.json delete mode 100644 sdk/eventhub/.github/ISSUE_TEMPLATE/Bug_report.md delete mode 100644 sdk/eventhub/.github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 sdk/eventhub/.github/PULL_REQUEST_TEMPLATE.md delete mode 100644 sdk/eventhub/.travis.yml delete mode 100644 sdk/eventhub/.vscode/settings.json delete mode 100644 sdk/eventhub/event-hubs/.prettierrc.json delete mode 100644 sdk/eventhub/event-hubs/tslint.json delete mode 100644 sdk/eventhub/event-processor-host/tslint.json delete mode 100644 sdk/keyvault/keyvault-keys/.eslintignore delete mode 100644 sdk/keyvault/keyvault-keys/.gitignore delete mode 100644 sdk/keyvault/keyvault-secrets/.eslintignore delete mode 100644 sdk/keyvault/keyvault-secrets/.gitignore delete mode 100644 sdk/servicebus/service-bus/.editorconfig delete mode 100644 sdk/servicebus/service-bus/.github/ISSUE_TEMPLATE/Bug_report.md delete mode 100644 sdk/servicebus/service-bus/.github/PULL_REQUEST_TEMPLATE.md delete mode 100644 sdk/servicebus/service-bus/.travis.yml delete mode 100644 sdk/servicebus/service-bus/.vscode/extensions.json delete mode 100644 sdk/servicebus/service-bus/.vscode/settings.json delete mode 100644 sdk/storage/azure-pipelines.yml delete mode 100644 sdk/storage/storage-blob/.npmignore delete mode 100644 sdk/storage/storage-blob/.prettierignore delete mode 100644 sdk/storage/storage-blob/tslint.json delete mode 100644 sdk/storage/storage-file/.npmignore delete mode 100644 sdk/storage/storage-file/.prettierignore delete mode 100644 sdk/storage/storage-file/tslint.json delete mode 100644 sdk/storage/storage-queue/.npmignore delete mode 100644 sdk/storage/storage-queue/.prettierignore delete mode 100644 sdk/storage/storage-queue/tslint.json diff --git a/.azure-pipelines/client.yml b/.azure-pipelines/client.yml index 88e5b0b4bb6d..ebd33aafe4b9 100644 --- a/.azure-pipelines/client.yml +++ b/.azure-pipelines/client.yml @@ -164,7 +164,7 @@ jobs: - script: | node common/scripts/install-run-rush.js build $(rushFlags) - displayName: 'Build libraries"' + displayName: 'Build libraries' - script: | node common/scripts/install-run-rush.js build:test $(rushFlags) diff --git a/.gitignore b/.gitignore index 3b5ee83a2877..50279f09482e 100644 --- a/.gitignore +++ b/.gitignore @@ -139,6 +139,15 @@ test-browser typings typedoc types +es +sdk/cosmosdb/cosmos/lib +*.test.js +*.test.js.map +*lintReport.html # autorest generated files swagger/*.json + +# library-specific ignores +sdk/keyvault/*/src/**/*.js +sdk/keyvault/*/samples/**/*.js diff --git a/.vscode/settings.json b/.vscode/settings.json index 3793787b46ea..754573dda2fe 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,8 +1,24 @@ { "editor.autoIndent": true, + "editor.detectIndentation": false, + "editor.formatOnPaste": true, "editor.formatOnSave": true, + "editor.insertSpaces": true, "editor.tabSize": 2, + "eslint.validate": [ + "javascript", + "javascriptreact", + { "language": "typescript", "autoFix": true } + ], + "files.exclude": { + "**/.git": true, + "**/.svn": true, + "**/.DS_Store": true + }, "files.insertFinalNewline": true, "files.trimFinalNewlines": true, - "typescript.disableAutomaticTypeAcquisition": true + "javascript.preferences.quoteStyle": "double", + "prettier.eslintIntegration": true, + "typescript.disableAutomaticTypeAcquisition": true, + "typescript.preferences.quoteStyle": "double" } diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 52c610f5b0f5..f4a94519f812 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -1,5 +1,5 @@ dependencies: - '@azure/amqp-common': 1.0.0-preview.5 + '@azure/amqp-common': 1.0.0-preview.6 '@azure/arm-servicebus': 0.1.0 '@azure/event-hubs': 1.0.8 '@azure/logger-js': 1.1.0 @@ -45,7 +45,7 @@ dependencies: '@types/mocha': 5.2.7 '@types/nise': 1.4.0 '@types/nock': 10.0.3 - '@types/node': 8.10.49 + '@types/node': 8.10.50 '@types/priorityqueuejs': 1.0.1 '@types/qs': 6.5.3 '@types/semaphore': 1.1.0 @@ -89,7 +89,7 @@ dependencies: events: 3.0.0 execa: 1.0.0 express: 4.17.1 - form-data: 2.4.0 + form-data: 2.5.0 fs-extra: 8.0.1 glob: 7.1.4 gulp: 4.0.2 @@ -170,9 +170,6 @@ dependencies: ts-mocha: 6.0.0 ts-node: 7.0.1 tslib: 1.10.0 - tslint: 5.18.0 - tslint-config-prettier: 1.18.0 - tslint-eslint-rules: 5.4.0 tunnel: 0.0.6 typescript: 3.5.2 uglify: 0.1.5 @@ -204,7 +201,7 @@ packages: rhea-promise: ^0.1.13 resolution: integrity: sha512-B/HFWNbqAjFjhj8x/zlHcpuYtsr92l3ZVArJdumi2kpN2Di/h4g6GIa2JeQEDD+rkLa3oAR6zHKfJbGnybOmvg== - /@azure/amqp-common/1.0.0-preview.5: + /@azure/amqp-common/1.0.0-preview.6: dependencies: '@azure/ms-rest-nodeauth': 0.9.3 '@types/async-lock': 1.1.1 @@ -224,8 +221,8 @@ packages: peerDependencies: rhea-promise: ^0.1.15 resolution: - integrity: sha512-ICtYUGzkrOEia7DN3t5znbPucZB7RAUHVuNwuJ0GvnLPXflZggMOxCt5s+fKupZ5xzRVzsC27lFZX52f3Wpg4Q== - /@azure/amqp-common/1.0.0-preview.5_rhea-promise@0.1.15: + integrity: sha512-5XJZaJGtGoPmLhFx5y0vfCXiAHksoA4fdSnHAfkgEm4krhCW1jt1LH/6aJdUwUTJe+bz6m3Pv0sG/ILG0Vd65g== + /@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 @@ -246,7 +243,7 @@ packages: peerDependencies: rhea-promise: ^0.1.15 resolution: - integrity: sha512-ICtYUGzkrOEia7DN3t5znbPucZB7RAUHVuNwuJ0GvnLPXflZggMOxCt5s+fKupZ5xzRVzsC27lFZX52f3Wpg4Q== + integrity: sha512-5XJZaJGtGoPmLhFx5y0vfCXiAHksoA4fdSnHAfkgEm4krhCW1jt1LH/6aJdUwUTJe+bz6m3Pv0sG/ILG0Vd65g== /@azure/arm-servicebus/0.1.0: dependencies: '@azure/ms-rest-azure-js': 1.3.8 @@ -290,7 +287,7 @@ packages: dependencies: '@types/tunnel': 0.0.0 axios: 0.19.0 - form-data: 2.4.0 + form-data: 2.5.0 tough-cookie: 2.5.0 tslib: 1.10.0 tunnel: 0.0.6 @@ -309,85 +306,85 @@ packages: integrity: sha512-aFHRw/IHhg3I9ZJW+Va4L+sCirFHMVIu6B7lFdL5mGLfG3xC5vDIdd957LRXFgy2OiKFRUC0QaKknd0YCsQIqA== /@babel/code-frame/7.0.0: dependencies: - '@babel/highlight': 7.0.0 + '@babel/highlight': 7.5.0 dev: false resolution: integrity: sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== - /@babel/generator/7.4.4: + /@babel/generator/7.5.0: dependencies: - '@babel/types': 7.4.4 + '@babel/types': 7.5.0 jsesc: 2.5.2 lodash: 4.17.11 source-map: 0.5.7 trim-right: 1.0.1 dev: false resolution: - integrity: sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ== + integrity: sha512-1TTVrt7J9rcG5PMjvO7VEG3FrEoEJNHxumRq66GemPmzboLWtIjjcJgk8rokuAS7IiRSpgVSu5Vb9lc99iJkOA== /@babel/helper-function-name/7.1.0: dependencies: '@babel/helper-get-function-arity': 7.0.0 '@babel/template': 7.4.4 - '@babel/types': 7.4.4 + '@babel/types': 7.5.0 dev: false resolution: integrity: sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== /@babel/helper-get-function-arity/7.0.0: dependencies: - '@babel/types': 7.4.4 + '@babel/types': 7.5.0 dev: false resolution: integrity: sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== /@babel/helper-split-export-declaration/7.4.4: dependencies: - '@babel/types': 7.4.4 + '@babel/types': 7.5.0 dev: false resolution: integrity: sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== - /@babel/highlight/7.0.0: + /@babel/highlight/7.5.0: dependencies: chalk: 2.4.2 esutils: 2.0.2 js-tokens: 4.0.0 dev: false resolution: - integrity: sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== - /@babel/parser/7.4.5: + integrity: sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== + /@babel/parser/7.5.0: dev: false engines: node: '>=6.0.0' hasBin: true resolution: - integrity: sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew== + integrity: sha512-I5nW8AhGpOXGCCNYGc+p7ExQIBxRFnS2fd/d862bNOKvmoEPjYPcfIjsfdy0ujagYOIYPczKgD9l3FsgTkAzKA== /@babel/template/7.4.4: dependencies: '@babel/code-frame': 7.0.0 - '@babel/parser': 7.4.5 - '@babel/types': 7.4.4 + '@babel/parser': 7.5.0 + '@babel/types': 7.5.0 dev: false resolution: integrity: sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== - /@babel/traverse/7.4.5: + /@babel/traverse/7.5.0: dependencies: '@babel/code-frame': 7.0.0 - '@babel/generator': 7.4.4 + '@babel/generator': 7.5.0 '@babel/helper-function-name': 7.1.0 '@babel/helper-split-export-declaration': 7.4.4 - '@babel/parser': 7.4.5 - '@babel/types': 7.4.4 + '@babel/parser': 7.5.0 + '@babel/types': 7.5.0 debug: 4.1.1 globals: 11.12.0 lodash: 4.17.11 dev: false resolution: - integrity: sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A== - /@babel/types/7.4.4: + integrity: sha512-SnA9aLbyOCcnnbQEGwdfBggnc142h/rbqqsXcaATj2hZcegCl903pUD/lfpsNBlBSuWow/YDfRyJuWi2EPR5cg== + /@babel/types/7.5.0: dependencies: esutils: 2.0.2 lodash: 4.17.11 to-fast-properties: 2.0.0 dev: false resolution: - integrity: sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ== + integrity: sha512-UFpDVqRABKsW01bvw7/wSUe56uy6RXM5+VJibVVAybDGxEW25jdwiFJEf7ASvSaC7sN7rbE/l3cLp2izav+CtQ== /@microsoft/api-extractor-model/7.2.0: dependencies: '@microsoft/node-core-library': 3.13.0 @@ -481,7 +478,7 @@ packages: /@types/body-parser/1.17.0: dependencies: '@types/connect': 3.4.32 - '@types/node': 8.10.49 + '@types/node': 8.10.50 dev: false resolution: integrity: sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w== @@ -503,7 +500,7 @@ packages: integrity: sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA== /@types/connect/3.4.32: dependencies: - '@types/node': 8.10.49 + '@types/node': 8.10.50 dev: false resolution: integrity: sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg== @@ -513,7 +510,7 @@ packages: integrity: sha512-LS1MCPaQKqspg7FvexuhmDbWUhE2yIJ+4AgVIyObfc06/UKZ8REgxGNjZc82wPLWmbeOm7S+gSsLgo75TanG4A== /@types/dotenv/6.1.1: dependencies: - '@types/node': 8.10.49 + '@types/node': 8.10.50 dev: false resolution: integrity: sha512-ftQl3DtBvqHl9L16tpqqzA4YzCSXZfi7g8cQceTz5rOlYtk/IZbFjAv3mLOQlNIgOaylCQWQoBdDQHPgEBJPHg== @@ -531,7 +528,7 @@ packages: integrity: sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== /@types/express-serve-static-core/4.16.7: dependencies: - '@types/node': 8.10.49 + '@types/node': 8.10.50 '@types/range-parser': 1.2.3 dev: false resolution: @@ -546,19 +543,19 @@ packages: integrity: sha512-CjaMu57cjgjuZbh9DpkloeGxV45CnMGlVd+XpG7Gm9QgVrd7KFq+X4HY0vM+2v0bczS48Wg7bvnMY5TN+Xmcfw== /@types/form-data/2.2.1: dependencies: - '@types/node': 8.10.49 + '@types/node': 8.10.50 dev: false resolution: integrity: sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ== /@types/fs-extra/5.0.4: dependencies: - '@types/node': 8.10.49 + '@types/node': 8.10.50 dev: false resolution: integrity: sha512-DsknoBvD8s+RFfSGjmERJ7ZOP1HI0UZRA3FSI+Zakhrc/Gy26YQsLI+m5V5DHxroHRJqCDLKJp7Hixn8zyaF7g== /@types/fs-extra/7.0.0: dependencies: - '@types/node': 8.10.49 + '@types/node': 8.10.50 dev: false resolution: integrity: sha512-ndoMMbGyuToTy4qB6Lex/inR98nPiNHacsgMPvy+zqMLgSxbt8VtWpDArpGp69h1fEDQHn1KB+9DWD++wgbwYA== @@ -566,13 +563,13 @@ packages: dependencies: '@types/events': 3.0.0 '@types/minimatch': 3.0.3 - '@types/node': 8.10.49 + '@types/node': 8.10.50 dev: false resolution: integrity: sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== /@types/is-buffer/2.0.0: dependencies: - '@types/node': 8.10.49 + '@types/node': 8.10.50 dev: false resolution: integrity: sha512-0f7N/e3BAz32qDYvgB4d2cqv1DqUwvGxHkXsrucICn8la1Vb6Yl6Eg8mPScGwUiqHJeE7diXlzaK+QMA9m4Gxw== @@ -591,14 +588,14 @@ packages: integrity: sha512-oBnY3csYnXfqZXDRBJwP1nDDJCW/+VMJ88UHT4DCy0deSXpJIQvMCwYlnmdW4M+u7PiSfQc44LmiFcUbJ8hLEw== /@types/jws/3.2.0: dependencies: - '@types/node': 8.10.49 + '@types/node': 8.10.50 dev: false resolution: integrity: sha512-2s6isKtNTfbfeP/VtvdB9JXE1LkFXndO2AjQ2f+nvTqwL8bxK1s9qxmymwklCpNthJG16dwvpsBjKE14Yc/pbA== /@types/karma/3.0.3: dependencies: '@types/bluebird': 3.5.27 - '@types/node': 8.10.49 + '@types/node': 8.10.50 log4js: 3.0.6 dev: false resolution: @@ -609,7 +606,7 @@ packages: integrity: sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q== /@types/memory-fs/0.3.2: dependencies: - '@types/node': 8.10.49 + '@types/node': 8.10.50 dev: false resolution: integrity: sha512-j5AcZo7dbMxHoOimcHEIh0JZe5e1b8q8AqGSpZJrYc7xOgCIP79cIjTdx5jSDLtySnQDwkDTqwlC7Xw7uXw7qg== @@ -631,18 +628,18 @@ packages: integrity: sha512-DPxmjiDwubsNmguG5X4fEJ+XCyzWM3GXWsqQlvUcjJKa91IOoJUy51meDr0GkzK64qqNcq85ymLlyjoct9tInw== /@types/nock/10.0.3: dependencies: - '@types/node': 8.10.49 + '@types/node': 8.10.50 dev: false resolution: integrity: sha512-OthuN+2FuzfZO3yONJ/QVjKmLEuRagS9TV9lEId+WHL9KhftYG+/2z+pxlr0UgVVXSpVD8woie/3fzQn8ft/Ow== - /@types/node/12.0.10: + /@types/node/12.0.12: dev: false resolution: - integrity: sha512-LcsGbPomWsad6wmMNv7nBLw7YYYyfdYcz6xryKYQhx89c3XXan+8Q6AJ43G5XDIaklaVkK3mE4fCb0SBvMiPSQ== - /@types/node/8.10.49: + integrity: sha512-Uy0PN4R5vgBUXFoJrKryf5aTk3kJ8Rv3PdlHjl6UaX+Cqp1QE0yPQ68MPXGrZOfG7gZVNDIJZYyot0B9ubXUrQ== + /@types/node/8.10.50: dev: false resolution: - integrity: sha512-YX30JVx0PvSmJ3Eqr74fYLGeBxD+C7vIL20ek+GGGLJeUbVYRUW3EzyAXpIRA0K8c8o0UWqR/GwEFYiFoz1T8w== + integrity: sha512-+ZbcUwJdaBgOZpwXeT0v+gHC/jQbEfzoc9s4d0rN0JIKeQbuTrT+A2n1aQY6LpZjrLXJT7avVUqiCecCJeeZxA== /@types/node/8.5.8: dev: false resolution: @@ -661,7 +658,7 @@ packages: integrity: sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== /@types/resolve/0.0.8: dependencies: - '@types/node': 8.10.49 + '@types/node': 8.10.50 dev: false resolution: integrity: sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== @@ -694,7 +691,7 @@ packages: integrity: sha512-SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg== /@types/tunnel/0.0.0: dependencies: - '@types/node': 8.10.49 + '@types/node': 8.10.50 dev: false resolution: integrity: sha512-FGDp0iBRiBdPjOgjJmn1NH0KDLN+Z8fRmo+9J7XGBhubq1DPrGrbmG4UTlGzrpbCpesMqD0sWkzi27EYkOMHyg== @@ -710,7 +707,7 @@ packages: integrity: sha512-KgOKTAD+9X+qvZnB5S1+onqKc4E+PZ+T6CM/NA5ohRPLHJXb+yCJMVf8pWOnvuBuKFNUAJW8N97IA6lba6mZGg== /@types/uuid/3.4.5: dependencies: - '@types/node': 8.10.49 + '@types/node': 8.10.50 dev: false resolution: integrity: sha512-MNL15wC3EKyw1VLF+RoVO4hJJdk9t/Hlv3rt1OL65Qvuadm4BYo6g9ZJQqoq7X8NBFSsQXgAujWciovh2lpVjA== @@ -726,7 +723,7 @@ packages: /@types/webpack/4.4.34: dependencies: '@types/anymatch': 1.3.1 - '@types/node': 8.10.49 + '@types/node': 8.10.50 '@types/tapable': 1.0.4 '@types/uglify-js': 3.0.4 source-map: 0.6.1 @@ -736,13 +733,13 @@ packages: /@types/ws/6.0.1: dependencies: '@types/events': 3.0.0 - '@types/node': 8.10.49 + '@types/node': 8.10.50 dev: false resolution: integrity: sha512-EzH8k1gyZ4xih/MaZTXwT2xOkPiIMSrhQ9b8wrlX88L0T02eYsddatQlwVFlEPyEqV0ChpdpNnE51QPH6NVT4Q== /@types/xml2js/0.4.4: dependencies: - '@types/node': 8.10.49 + '@types/node': 8.10.50 dev: false resolution: integrity: sha512-O6Xgai01b9PB3IGA0lRIp1Ex3JBcxGDhdO0n3NIIpCyDOAjxcIGQFmkvgJpP8anTrthxOUQjBfLdRRi0Zn/TXA== @@ -1009,28 +1006,28 @@ packages: node: '>= 0.6' resolution: integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - /acorn-dynamic-import/4.0.0_acorn@6.1.1: + /acorn-dynamic-import/4.0.0_acorn@6.2.0: dependencies: - acorn: 6.1.1 + acorn: 6.2.0 dev: false peerDependencies: acorn: ^6.0.0 resolution: integrity: sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== - /acorn-jsx/5.0.1_acorn@6.1.1: + /acorn-jsx/5.0.1_acorn@6.2.0: dependencies: - acorn: 6.1.1 + acorn: 6.2.0 dev: false peerDependencies: acorn: ^6.0.0 resolution: integrity: sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== - /acorn-walk/6.1.1: + /acorn-walk/6.2.0: dev: false engines: node: '>=0.4.0' resolution: - integrity: sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw== + integrity: sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== /acorn/5.7.3: dev: false engines: @@ -1038,16 +1035,16 @@ packages: hasBin: true resolution: integrity: sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== - /acorn/6.1.1: + /acorn/6.2.0: dev: false engines: node: '>=0.4.0' hasBin: true resolution: - integrity: sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== + integrity: sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw== /adal-node/0.1.28: dependencies: - '@types/node': 8.10.49 + '@types/node': 8.10.50 async: 3.1.0 date-utils: 1.2.21 jws: 3.2.2 @@ -2154,7 +2151,7 @@ packages: create-hash: 1.2.0 evp_bytestokey: 1.0.3 inherits: 2.0.4 - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 dev: false resolution: integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== @@ -2171,7 +2168,7 @@ packages: cipher-base: 1.0.4 des.js: 1.0.0 inherits: 2.0.4 - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 dev: false resolution: integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== @@ -2206,8 +2203,8 @@ packages: integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== /browserslist/3.2.8: dependencies: - caniuse-lite: 1.0.30000979 - electron-to-chromium: 1.3.185 + caniuse-lite: 1.0.30000980 + electron-to-chromium: 1.3.187 dev: false hasBin: true resolution: @@ -2293,7 +2290,7 @@ packages: /cacache/11.3.3: dependencies: bluebird: 3.5.5 - chownr: 1.1.1 + chownr: 1.1.2 figgy-pudding: 3.5.1 glob: 7.1.4 graceful-fs: 4.2.0 @@ -2395,10 +2392,10 @@ packages: node: '>=6' resolution: integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - /caniuse-lite/1.0.30000979: + /caniuse-lite/1.0.30000980: dev: false resolution: - integrity: sha512-gcu45yfq3B7Y+WB05fOMfr0EiSlq+1u+m6rPHyJli/Wy3PVQNGaU7VA4bZE5qw+AU2UVOBR/N5g1bzADUqdvFw== + integrity: sha512-as0PRtWHaX3gl2gpC7qA7bX88lr+qLacMMXm1QKLLQtBCwT/Ljbgrv5EXKMNBoeEX6yFZ4vIsBb4Nh+PEwW2Rw== /caseless/0.12.0: dev: false resolution: @@ -2499,13 +2496,13 @@ packages: fsevents: 1.2.9 resolution: integrity: sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== - /chownr/1.1.1: + /chownr/1.1.2: dev: false resolution: - integrity: sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== + integrity: sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A== /chrome-launcher/0.10.7: dependencies: - '@types/node': 8.10.49 + '@types/node': 8.10.50 is-wsl: 1.1.0 lighthouse-logger: 1.2.0 mkdirp: 0.5.1 @@ -2541,7 +2538,7 @@ packages: /cipher-base/1.0.4: dependencies: inherits: 2.0.4 - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 dev: false resolution: integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== @@ -2865,7 +2862,7 @@ packages: make-dir: 2.1.0 nested-error-stacks: 2.1.0 pify: 4.0.1 - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 dev: false engines: node: '>=6' @@ -2894,7 +2891,7 @@ packages: create-hash: 1.2.0 inherits: 2.0.4 ripemd160: 2.0.2 - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 sha.js: 2.4.11 dev: false resolution: @@ -3293,7 +3290,7 @@ packages: integrity: sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= /ecdsa-sig-formatter/1.0.11: dependencies: - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 dev: false resolution: integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== @@ -3305,10 +3302,10 @@ packages: dev: false resolution: integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - /electron-to-chromium/1.3.185: + /electron-to-chromium/1.3.187: dev: false resolution: - integrity: sha512-h2iW0AHIwix8ifNJg/RkXhQjUDqBME8TvX8qQQMvvF2Tb6F2KnO6febvI+JqI9CdZOWnl90CPxdBRWGDrdk9UA== + integrity: sha512-XCEygaK7Fs35/RwS+67YbBWs/ydG+oUFPuy1wv558jC3Opd2DHwRyRqrCmhxpmPmCSVlZujYX4TOmOXuMz2GZA== /elliptic/6.5.0: dependencies: bn.js: 4.11.8 @@ -3637,8 +3634,8 @@ packages: integrity: sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== /espree/5.0.1: dependencies: - acorn: 6.1.1 - acorn-jsx: 5.0.1_acorn@6.1.1 + acorn: 6.2.0 + acorn-jsx: 5.0.1_acorn@6.2.0 eslint-visitor-keys: 1.0.0 dev: false engines: @@ -3737,7 +3734,7 @@ packages: /evp_bytestokey/1.0.3: dependencies: md5.js: 1.3.5 - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 dev: false resolution: integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== @@ -4146,7 +4143,7 @@ packages: node: '>= 0.12' resolution: integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - /form-data/2.4.0: + /form-data/2.5.0: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 @@ -4155,7 +4152,7 @@ packages: engines: node: '>= 0.12' resolution: - integrity: sha512-4FinE8RfqYnNim20xDwZZE0V2kOs/AuElIjFUbPuegQSaoZM+vUT5FnwSl10KPugH4voTg1bEQlcbCG9ka75TA== + integrity: sha512-WXieX3G/8side6VIqx44ablyULoGruSde5PNTxoUyo5CeyAMX6nVWUd0rgist/EuX655cjhUhTo1Fo3tRYqbcA== /forwarded/0.1.2: dev: false engines: @@ -4791,7 +4788,7 @@ packages: /hash-base/3.0.4: dependencies: inherits: 2.0.4 - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 dev: false engines: node: '>=4' @@ -5407,11 +5404,11 @@ packages: integrity: sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA== /istanbul-lib-instrument/3.3.0: dependencies: - '@babel/generator': 7.4.4 - '@babel/parser': 7.4.5 + '@babel/generator': 7.5.0 + '@babel/parser': 7.5.0 '@babel/template': 7.4.4 - '@babel/traverse': 7.4.5 - '@babel/types': 7.4.4 + '@babel/traverse': 7.5.0 + '@babel/types': 7.5.0 istanbul-lib-coverage: 2.0.5 semver: 6.2.0 dev: false @@ -5623,14 +5620,14 @@ packages: dependencies: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 dev: false resolution: integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== /jws/3.2.2: dependencies: jwa: 1.4.1 - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 dev: false resolution: integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== @@ -5832,8 +5829,8 @@ packages: integrity: sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg= /karma-typescript-es6-transform/4.1.1: dependencies: - acorn: 6.1.1 - acorn-walk: 6.1.1 + acorn: 6.2.0 + acorn-walk: 6.2.0 babel-core: 6.26.3 babel-preset-env: 1.7.0 log4js: 4.4.0 @@ -5896,7 +5893,7 @@ packages: qjobs: 1.2.0 range-parser: 1.2.1 rimraf: 2.6.3 - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 socket.io: 2.1.1 source-map: 0.6.1 tmp: 0.0.33 @@ -6199,7 +6196,7 @@ packages: integrity: sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w== /magic-string/0.25.3: dependencies: - sourcemap-codec: 1.4.4 + sourcemap-codec: 1.4.6 dev: false resolution: integrity: sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA== @@ -6309,7 +6306,7 @@ packages: dependencies: hash-base: 3.0.4 inherits: 2.0.4 - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 dev: false resolution: integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== @@ -7301,7 +7298,7 @@ packages: create-hash: 1.2.0 evp_bytestokey: 1.0.3 pbkdf2: 3.0.17 - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 dev: false resolution: integrity: sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw== @@ -7465,7 +7462,7 @@ packages: create-hash: 1.2.0 create-hmac: 1.1.7 ripemd160: 2.0.2 - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 sha.js: 2.4.11 dev: false engines: @@ -7654,7 +7651,7 @@ packages: create-hash: 1.2.0 parse-asn1: 5.1.4 randombytes: 2.1.0 - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 dev: false resolution: integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== @@ -7758,14 +7755,14 @@ packages: integrity: sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= /randombytes/2.1.0: dependencies: - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 dev: false resolution: integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== /randomfill/1.0.4: dependencies: randombytes: 2.1.0 - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 dev: false resolution: integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== @@ -7982,7 +7979,7 @@ packages: /remove-bom-stream/1.2.0: dependencies: remove-bom-buffer: 3.0.0 - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 through2: 2.0.5 dev: false engines: @@ -8047,7 +8044,7 @@ packages: oauth-sign: 0.9.0 performance-now: 2.1.0 qs: 6.5.2 - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 tough-cookie: 2.4.3 tunnel-agent: 0.6.0 uuid: 3.3.2 @@ -8399,8 +8396,8 @@ packages: /rollup/1.13.1: dependencies: '@types/estree': 0.0.39 - '@types/node': 12.0.10 - acorn: 6.1.1 + '@types/node': 12.0.12 + acorn: 6.2.0 dev: false hasBin: true resolution: @@ -8431,6 +8428,10 @@ packages: dev: false resolution: integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + /safe-buffer/5.2.0: + dev: false + resolution: + integrity: sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== /safe-regex/1.1.0: dependencies: ret: 0.1.15 @@ -8549,7 +8550,7 @@ packages: /sha.js/2.4.11: dependencies: inherits: 2.0.4 - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 dev: false hasBin: true resolution: @@ -8790,10 +8791,10 @@ packages: node: '>= 8' resolution: integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - /sourcemap-codec/1.4.4: + /sourcemap-codec/1.4.6: dev: false resolution: - integrity: sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg== + integrity: sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg== /sparkles/1.0.1: dev: false engines: @@ -9463,17 +9464,6 @@ packages: hasBin: true resolution: integrity: sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg== - /tslint-eslint-rules/5.4.0: - dependencies: - doctrine: 0.7.2 - tslib: 1.9.0 - tsutils: 3.14.0 - dev: false - peerDependencies: - tslint: ^5.0.0 - typescript: ^2.2.0 || ^3.0.0 - resolution: - integrity: sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w== /tslint-eslint-rules/5.4.0_tslint@5.18.0+typescript@3.5.2: dependencies: doctrine: 0.7.2 @@ -9487,29 +9477,6 @@ packages: typescript: ^2.2.0 || ^3.0.0 resolution: integrity: sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w== - /tslint/5.18.0: - dependencies: - '@babel/code-frame': 7.0.0 - builtin-modules: 1.1.1 - chalk: 2.4.2 - commander: 2.20.0 - diff: 3.5.0 - glob: 7.1.4 - js-yaml: 3.13.1 - minimatch: 3.0.4 - mkdirp: 0.5.1 - resolve: 1.11.1 - semver: 5.7.0 - tslib: 1.10.0 - tsutils: 2.29.0 - dev: false - engines: - node: '>=4.8.0' - hasBin: true - peerDependencies: - typescript: '>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev' - resolution: - integrity: sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w== /tslint/5.18.0_typescript@3.5.2: dependencies: '@babel/code-frame': 7.0.0 @@ -9534,14 +9501,6 @@ packages: typescript: '>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev' resolution: integrity: sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w== - /tsutils/2.29.0: - dependencies: - tslib: 1.10.0 - dev: false - peerDependencies: - typescript: '>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev' - resolution: - integrity: sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== /tsutils/2.29.0_typescript@3.5.2: dependencies: tslib: 1.10.0 @@ -9578,7 +9537,7 @@ packages: integrity: sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= /tunnel-agent/0.6.0: dependencies: - safe-buffer: 5.1.2 + safe-buffer: 5.2.0 dev: false resolution: integrity: sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= @@ -10081,8 +10040,8 @@ packages: '@webassemblyjs/helper-module-context': 1.8.5 '@webassemblyjs/wasm-edit': 1.8.5 '@webassemblyjs/wasm-parser': 1.8.5 - acorn: 6.1.1 - acorn-dynamic-import: 4.0.0_acorn@6.1.1 + acorn: 6.2.0 + acorn-dynamic-import: 4.0.0_acorn@6.2.0 ajv: 6.10.0 ajv-keywords: 3.4.0_ajv@6.10.0 chrome-trace-event: 1.0.2 @@ -10417,10 +10376,18 @@ packages: dependencies: '@microsoft/api-extractor': 7.2.2 '@types/mocha': 5.2.7 - '@types/node': 8.10.49 + '@types/node': 8.10.50 + '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 cross-env: 5.2.0 delay: 4.3.0 + eslint: 5.16.0 + eslint-config-prettier: 4.3.0_eslint@5.16.0 + eslint-detailed-reporter: 0.8.0_eslint@5.16.0 + eslint-plugin-no-null: 1.0.2_eslint@5.16.0 + eslint-plugin-no-only-tests: 2.3.1 + eslint-plugin-promise: 4.2.1 karma: 4.1.0 karma-chrome-launcher: 2.2.0 karma-coverage: 1.1.2 @@ -10450,7 +10417,7 @@ packages: dev: false name: '@rush-temp/abort-controller' resolution: - integrity: sha512-dQgpPI6o7hPPHX6ARp74NnRX+s8stpdg9sbHfd8oMgl6PUsz/gCO0WcgD2yc/IbRtb7cgegeWIAX7f2DxBQ9Wg== + integrity: sha512-4x14SAFGZXqlVRY24PbG75WGfWxDdwRiiUxBwniFCaR69Cygcjb1HcxLTF39mXN1HMFGzMaO3+WJ+TnRzVZDZw== tarball: 'file:projects/abort-controller.tgz' version: 0.0.0 'file:projects/core-amqp.tgz': @@ -10464,7 +10431,7 @@ packages: '@types/is-buffer': 2.0.0 '@types/jssha': 2.0.0 '@types/mocha': 5.2.7 - '@types/node': 8.10.49 + '@types/node': 8.10.50 '@types/sinon': 5.0.7 '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 @@ -10521,21 +10488,33 @@ packages: dev: false name: '@rush-temp/core-amqp' resolution: - integrity: sha512-IWfVNV23Bq1FyiW1pSfcJ9irbx9cwcaX9mDEZs+3GCex+GH6dofWL0tHQZJpqcmOVpFpB8T+gswVdgPqTeY4og== + integrity: sha512-/J9I2HAPbgTFDqAupdWFPA7dp/4HkdLJc1EvXFmHOQYx/RaXjqucN0b8zcuGepdmZC1i0qrMgPWjbi7EhWxNJA== tarball: 'file:projects/core-amqp.tgz' version: 0.0.0 'file:projects/core-asynciterator-polyfill.tgz': + dependencies: + '@types/node': 8.10.50 + '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + eslint: 5.16.0 + eslint-config-prettier: 4.3.0_eslint@5.16.0 + eslint-detailed-reporter: 0.8.0_eslint@5.16.0 + eslint-plugin-no-null: 1.0.2_eslint@5.16.0 + eslint-plugin-no-only-tests: 2.3.1 + eslint-plugin-promise: 4.2.1 + prettier: 1.18.2 + typescript: 3.5.2 dev: false name: '@rush-temp/core-asynciterator-polyfill' resolution: - integrity: sha512-Oyo+KWfiYuxyayvsUF72zXsW0kDMFqFtan0v6zJufmHOOS9uitBJHg1gmu0E3BPL5TPXm+RGiVeLaV13p+p0gA== + integrity: sha512-v2OkkGp4BscubKnr7qikdSqLJttDTy5skuwpX+KeQv9H5aMDtfGU4CKUmqdwGsI/+vnXlPU57ZBVJ0BtucQBng== tarball: 'file:projects/core-asynciterator-polyfill.tgz' version: 0.0.0 'file:projects/core-auth.tgz': dependencies: '@microsoft/api-extractor': 7.2.2 '@types/mocha': 5.2.7 - '@types/node': 8.10.49 + '@types/node': 8.10.50 '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 @@ -10567,7 +10546,7 @@ packages: dev: false name: '@rush-temp/core-auth' resolution: - integrity: sha512-pE/affOGKzVu72h8HhVnnKyXfk8KGnz/snYFIAzygqy1E/N2oK5dCDzgypWGsS4coJUNuyenzC38i8NJQ833kQ== + integrity: sha512-cq3K0U9XrSRmaBbCgOb4s2vfPQGxNuWNzbi8sju2CR2dOxYfDOxoED5CZutfyr9rtPRjSJ0YqvkXcqrCQ8mwEg== tarball: 'file:projects/core-auth.tgz' version: 0.0.0 'file:projects/core-http.tgz': @@ -10579,7 +10558,7 @@ packages: '@types/glob': 7.1.1 '@types/karma': 3.0.3 '@types/mocha': 5.2.7 - '@types/node': 8.10.49 + '@types/node': 8.10.50 '@types/semver': 5.5.0 '@types/sinon': 5.0.7 '@types/tough-cookie': 2.3.5 @@ -10588,12 +10567,20 @@ packages: '@types/webpack': 4.4.34 '@types/webpack-dev-middleware': 2.0.3 '@types/xml2js': 0.4.4 + '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 abortcontroller-polyfill: 1.3.0 axios: 0.19.0 axios-mock-adapter: 1.17.0_axios@0.19.0 chai: 4.2.0 + eslint: 5.16.0 + eslint-config-prettier: 4.3.0_eslint@5.16.0 + eslint-detailed-reporter: 0.8.0_eslint@5.16.0 + eslint-plugin-no-null: 1.0.2_eslint@5.16.0 + eslint-plugin-no-only-tests: 2.3.1 + eslint-plugin-promise: 4.2.1 express: 4.17.1 - form-data: 2.4.0 + form-data: 2.5.0 glob: 7.1.4 karma: 4.1.0 karma-chai: 0.1.0_chai@4.2.0+karma@4.1.0 @@ -10644,12 +10631,12 @@ packages: dev: false name: '@rush-temp/core-http' resolution: - integrity: sha512-mn7OKA5ItOyTQR8XIRnjT29RYpnEvi0oH9ryKsPP+9qj6mv4TI7KiEbi/x1BrmP/LqEGVITZM7n0TuHB+vFSHg== + integrity: sha512-LFCnXpufdTqIHE2S6dGpq1G+JZBwDgghmfKILYZw1vUJUqeltdqVbd3P6Qv3GG7pKYYztpidYEYOuQCsVnXrIA== tarball: 'file:projects/core-http.tgz' version: 0.0.0 'file:projects/core-paging.tgz': dependencies: - '@types/node': 8.10.49 + '@types/node': 8.10.50 '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 eslint: 5.16.0 @@ -10663,20 +10650,28 @@ packages: dev: false name: '@rush-temp/core-paging' resolution: - integrity: sha512-3cvTSZGmlAxyyfCsE4f3ag8t7H9eGHcJ4rpXjVcTmwzvajiutRU6ddOHLrRq0QpiPbuspuvGxRIMG+DHZlCVFQ== + integrity: sha512-Cw6EIkpujQw6NoJ997kmGhTHYp+NyN1ANdUWlpisHR8eC8HUWhIenZ66XnwsUopIKDS7K+IFojGMi3nqukbSxg== tarball: 'file:projects/core-paging.tgz' version: 0.0.0 'file:projects/cosmos.tgz': dependencies: '@types/mocha': 5.2.7 - '@types/node': 8.10.49 + '@types/node': 8.10.50 '@types/priorityqueuejs': 1.0.1 '@types/semaphore': 1.1.0 '@types/sinon': 5.0.7 '@types/tunnel': 0.0.0 '@types/underscore': 1.9.2 + '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 binary-search-bounds: 2.0.3 create-hmac: 1.1.7 + eslint: 5.16.0 + eslint-config-prettier: 4.3.0_eslint@5.16.0 + eslint-detailed-reporter: 0.8.0_eslint@5.16.0 + eslint-plugin-no-null: 1.0.2_eslint@5.16.0 + eslint-plugin-no-only-tests: 2.3.1 + eslint-plugin-promise: 4.2.1 execa: 1.0.0 mocha: 5.2.0 mocha-junit-reporter: 1.23.0_mocha@5.2.0 @@ -10699,7 +10694,7 @@ packages: dev: false name: '@rush-temp/cosmos' resolution: - integrity: sha512-Lfcygdf9C55ABgzDWp3G56itwgHTWnLof4ibZxnVQd4vfTimab4GXakRAgzPc6MJoV2YrZnj49oww2MOn7zXiQ== + integrity: sha512-f7IyBbSYkZZ+guO7QopSGUb/7d5QYQiotA3hWoIvC0iUo4XhGa+DqlnQ/yn5zx+p8ogWU8pvIixA8GQU4nMUfA== tarball: 'file:projects/cosmos.tgz' version: 0.0.0 'file:projects/event-hubs.tgz': @@ -10713,7 +10708,7 @@ packages: '@types/dotenv': 6.1.1 '@types/long': 4.0.0 '@types/mocha': 5.2.7 - '@types/node': 8.10.49 + '@types/node': 8.10.50 '@types/uuid': 3.4.5 '@types/ws': 6.0.1 '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 @@ -10774,7 +10769,7 @@ packages: dev: false name: '@rush-temp/event-hubs' resolution: - integrity: sha512-XDXToRIToMJpzCtrSwc1IvtdmExS0vDvQ3b0g8Eq9y30J1Dcs9xUB3t9V3cQRWPQi/5hx8rPddPFKohwdcdUcA== + integrity: sha512-Tsf4fSqJrxQXz4G7QIyJd3Y31GwECO9uyLtYpVJSpuoNL8t5KPNi3C2v0Hge0qr1izMDAzegIszn/GUYD0bmfg== tarball: 'file:projects/event-hubs.tgz' version: 0.0.0 'file:projects/event-processor-host.tgz': @@ -10788,7 +10783,7 @@ packages: '@types/debug': 0.0.31 '@types/dotenv': 6.1.1 '@types/mocha': 5.2.7 - '@types/node': 8.10.49 + '@types/node': 8.10.50 '@types/uuid': 3.4.5 '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 @@ -10830,14 +10825,14 @@ packages: dev: false name: '@rush-temp/event-processor-host' resolution: - integrity: sha512-atlc5w8bm/WHhZZzwdZMZe0Hn4+l10/oVak/btfh+zk2UyNRoSmvW8wmoIK+qwq83YesUL5KO9L70lI8y+uZOw== + integrity: sha512-TX5+iYIxJazD53rfS4N/X8haYQUKKF0x4J4+mNOCAs2PKvzrciVR9HqPWIUtnfWkAT6UuL21emJKpnl6UmHcAQ== tarball: 'file:projects/event-processor-host.tgz' version: 0.0.0 'file:projects/identity.tgz': dependencies: '@types/jws': 3.2.0 '@types/mocha': 5.2.7 - '@types/node': 8.10.49 + '@types/node': 8.10.50 '@types/qs': 6.5.3 '@types/uuid': 3.4.5 '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 @@ -10870,15 +10865,23 @@ packages: dev: false name: '@rush-temp/identity' resolution: - integrity: sha512-jnWpAJ7lg5mOxqp40EHLoU5KbXAb+0HoCmEayQhJ7hKaeikYP3Pdrs5o9muCpMgxj5jWRwBl6BroZh3uCOTfSg== + integrity: sha512-67UnNThZEl07ASqL+ITpArWym/Vzry7/bwjGtZ6Z4vaGHTnS4IcGfrNn61USyh2r+fIKMDzipA4Ld+GQBkQo/g== tarball: 'file:projects/identity.tgz' version: 0.0.0 'file:projects/keyvault-certificates.tgz': dependencies: '@microsoft/api-extractor': 7.2.2 '@types/chai': 4.1.7 - '@types/node': 8.10.49 + '@types/node': 8.10.50 + '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 chai: 4.2.0 + eslint: 5.16.0 + eslint-config-prettier: 4.3.0_eslint@5.16.0 + eslint-detailed-reporter: 0.8.0_eslint@5.16.0 + eslint-plugin-no-null: 1.0.2_eslint@5.16.0 + eslint-plugin-no-only-tests: 2.3.1 + eslint-plugin-promise: 4.2.1 prettier: 1.18.2 rimraf: 2.6.3 rollup: 1.13.1 @@ -10891,7 +10894,7 @@ packages: dev: false name: '@rush-temp/keyvault-certificates' resolution: - integrity: sha512-4XqaiduZT5uyw3pfoyu2HLVq1miY+ImbutGaQIsueR2S4zf7FcTn0wbqCQQ19qZQhF6VYqUihSW170v0R3b9Zg== + integrity: sha512-mBYPALUGpeQXoCQrVIRg3/AAh5wfeSIJTfqV00ucy3SEC+acN/7WC9gbu/Qd6fVjSOhEVj48MvI54x1FYkO5Rg== tarball: 'file:projects/keyvault-certificates.tgz' version: 0.0.0 'file:projects/keyvault-keys.tgz': @@ -10902,7 +10905,7 @@ packages: '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 '@types/nock': 10.0.3 - '@types/node': 8.10.49 + '@types/node': 8.10.50 '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 chai: 4.2.0 @@ -10930,7 +10933,7 @@ packages: dev: false name: '@rush-temp/keyvault-keys' resolution: - integrity: sha512-ghm72q7BJkdvHYa2oGtTAXmkRAq8dUZNKHW4edkVamfrdkipmXNRY+ubkLPfBJyE/h90GHdLWl/gDG+YpiIPiA== + integrity: sha512-8bHVuOcxrqCoE0e7oOIUqyVXK+XKNEBJaFR8H+U+N9pid4feets2pT/0IckOc4PkYcrmMxpMpoJJcUxlD3a8og== tarball: 'file:projects/keyvault-keys.tgz' version: 0.0.0 'file:projects/keyvault-secrets.tgz': @@ -10943,7 +10946,7 @@ packages: '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 '@types/nock': 10.0.3 - '@types/node': 8.10.49 + '@types/node': 8.10.50 '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 chai: 4.2.0 @@ -10971,12 +10974,12 @@ packages: dev: false name: '@rush-temp/keyvault-secrets' resolution: - integrity: sha512-8didgi3zgSZUt9VU5935DxKtUZiAQGjTv1g1DaRPdczTygQugGwKkiFANb0oced4vdgaaT/McWnm7A+RxjkiQg== + integrity: sha512-So5rOz0pSn20Wd8SCEEIomykd4viPpwWGFDO4NNT6EZzOfx1YJ+iTFBm1d7U/vY/yWZkeo+vqNOTh/QJ23KuEw== tarball: 'file:projects/keyvault-secrets.tgz' version: 0.0.0 'file:projects/service-bus.tgz': dependencies: - '@azure/amqp-common': 1.0.0-preview.5_rhea-promise@0.1.15 + '@azure/amqp-common': 1.0.0-preview.6_rhea-promise@0.1.15 '@azure/arm-servicebus': 0.1.0 '@azure/ms-rest-nodeauth': 0.9.3 '@microsoft/api-extractor': 7.2.2 @@ -10988,7 +10991,7 @@ packages: '@types/is-buffer': 2.0.0 '@types/long': 4.0.0 '@types/mocha': 5.2.7 - '@types/node': 8.10.49 + '@types/node': 8.10.50 '@types/ws': 6.0.1 '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 @@ -11049,7 +11052,7 @@ packages: dev: false name: '@rush-temp/service-bus' resolution: - integrity: sha512-AqbR3ohTsML/cQ/IDGKLBRdQYQx0GeGHwtZAJI/67OM2UZD+VI9Y+CB7i/b7dm9Kn9oLeBBnHwVN3kEu1nqQrA== + integrity: sha512-npz1y2nxkp0Zd+Ib9RfNjUiW2pjnADmtx/GvO0PNnghoWa4v59FgVpurEppOfa3tpRpo9JN9TgQ3i6caKLeqpg== tarball: 'file:projects/service-bus.tgz' version: 0.0.0 'file:projects/storage-blob.tgz': @@ -11061,7 +11064,7 @@ packages: '@types/mocha': 5.2.7 '@types/nise': 1.4.0 '@types/nock': 10.0.3 - '@types/node': 8.10.49 + '@types/node': 8.10.50 '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 @@ -11119,7 +11122,7 @@ packages: dev: false name: '@rush-temp/storage-blob' resolution: - integrity: sha512-UgIe5RKZRXsy9iibksf6oihckZwPXzwAK7NaeQEwsIPRqzHwHgf7mcdFUDJeZkWZ3q2+XtIBPExbekZI6pRf1g== + integrity: sha512-Xge/oNPTvK9QWY2lfIWmEMhLaACee30KwgJLjhwUNBhRBB6S3cg7lJflNO/eVOmhQ42dPq/hJRHJoENk5rjtrA== tarball: 'file:projects/storage-blob.tgz' version: 0.0.0 'file:projects/storage-datalake.tgz': @@ -11144,7 +11147,7 @@ packages: dev: false name: '@rush-temp/storage-datalake' resolution: - integrity: sha512-vK8bqT/ekqAiju+IdR7WBbJoNpRKUKidA5a1OImncpEOp4/dDcoM47fqoX1gwl96wnQ7X09Ll6TqmcKnYk7oIg== + integrity: sha512-Kcd+0GTZn50m2RJjMQQCkIkUZkKwiWRkmapTBKGZxyXYe7jevU8L3dT6Wdykbk+jaa3gjhd7mG8OUecgXe0ZlQ== tarball: 'file:projects/storage-datalake.tgz' version: 0.0.0 'file:projects/storage-file.tgz': @@ -11156,7 +11159,7 @@ packages: '@types/mocha': 5.2.7 '@types/nise': 1.4.0 '@types/nock': 10.0.3 - '@types/node': 8.10.49 + '@types/node': 8.10.50 '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 @@ -11214,7 +11217,7 @@ packages: dev: false name: '@rush-temp/storage-file' resolution: - integrity: sha512-zYuft8JDR6mKJXmH4etUkykOw4EimENEYIXKbRyELbYlkyi259n+47TQi1xLyNfODJCczUZwHp6JeG/E6rfJbw== + integrity: sha512-b6//yYerjSKpEE0yXOFRoaiRWSyX381zGKpYWu545tsgHDU6+AM8IOOyckI3Y8+u4jlbfVfdF74Nrrfqd19jmA== tarball: 'file:projects/storage-file.tgz' version: 0.0.0 'file:projects/storage-queue.tgz': @@ -11226,7 +11229,7 @@ packages: '@types/mocha': 5.2.7 '@types/nise': 1.4.0 '@types/nock': 10.0.3 - '@types/node': 8.10.49 + '@types/node': 8.10.50 '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 @@ -11283,7 +11286,7 @@ packages: dev: false name: '@rush-temp/storage-queue' resolution: - integrity: sha512-7JHEw7k6rwNG8OB4R3XywPkV0MZ+TW5fnW1Mr1oJtq6/DSAeIsQckCkzAR1Lq64u0BAQc/9dG9kRhAWyOvLKRA== + integrity: sha512-oCSqF9VBshZFR+ZCkuoAHtbZwA97RM0cY+5YcqrSENyNcb41l65bzqupHkYZXFIl9st9enGadVtQhNIT6+pe/A== tarball: 'file:projects/storage-queue.tgz' version: 0.0.0 'file:projects/template.tgz': @@ -11291,7 +11294,7 @@ packages: '@azure/ms-rest-js': 1.8.13 '@microsoft/api-extractor': 7.2.2 '@types/mocha': 5.2.7 - '@types/node': 8.10.49 + '@types/node': 8.10.50 '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 assert: 1.5.0 @@ -11324,13 +11327,13 @@ packages: dev: false name: '@rush-temp/template' resolution: - integrity: sha512-XARlGSN+et+vsZ5nBeY4DRhhEeg1qDRjSFRLl8um4fxDV5yH8HmzawpPiYNSbZscCP5yM7KRDOsFkpde2sXr3A== + integrity: sha512-eqA3sGy4TWvpvejaW9qHXnqOoyIaRCnemNTKf/ZDGknl/nBYj/8byzu8uOE4g0+L7WW4Z56jPdix3NjSSNUavg== tarball: 'file:projects/template.tgz' version: 0.0.0 'file:projects/testhub.tgz': dependencies: '@azure/event-hubs': 1.0.8 - '@types/node': 8.10.49 + '@types/node': 8.10.50 '@types/uuid': 3.4.5 '@types/yargs': 11.1.2 async-lock: 1.2.0 @@ -11349,7 +11352,7 @@ packages: dev: false name: '@rush-temp/testhub' resolution: - integrity: sha512-IIhgwGeM3S6e3snigbvVfVsSh+X7T8iOKRToJ9fkFRjpviiH3jpdpOm186AyYHuEfZzR/dQlxmdQxEoZUVH3qA== + integrity: sha512-+7/S5QILzUUjTQx8iAqLnUHRABhgKs/lVmB5/+F0s9n2n+MZZ7hHhzW3B/efbVCXv6xt+7eFwVT4g0mmX5lGyw== tarball: 'file:projects/testhub.tgz' version: 0.0.0 registry: '' @@ -11525,9 +11528,6 @@ specifiers: ts-mocha: ^6.0.0 ts-node: ^7.0.1 tslib: ^1.9.3 - tslint: ^5.15.0 - tslint-config-prettier: ^1.14.0 - tslint-eslint-rules: ^5.4.0 tunnel: 0.0.6 typescript: ^3.2.2 uglify: ^0.1.5 diff --git a/sdk/.eslintrc.json b/sdk/.eslintrc.json index 30a7cbd553bb..9b8d7eb99684 100644 --- a/sdk/.eslintrc.json +++ b/sdk/.eslintrc.json @@ -30,7 +30,7 @@ "no-unsafe-finally": "error", "no-unused-vars": "off", "no-unused-expressions": "error", - "no-useless-constructor": "error", + "no-useless-constructor": "off", "no-use-before-define": ["error", { "functions": false, "classes": false }], "no-var": "error", "one-var-declaration-per-line": "error", @@ -51,6 +51,7 @@ "@typescript-eslint/no-namespace": "off", "@typescript-eslint/no-non-null-assertion": "off", "@typescript-eslint/no-unused-vars": "warn", + "@typescript-eslint/no-useless-constructor": "error", "@typescript-eslint/no-use-before-define": "off", "@typescript-eslint/no-var-requires": "off", "@typescript-eslint/member-ordering": [ diff --git a/sdk/core/abort-controller/package.json b/sdk/core/abort-controller/package.json index d6fcfd272f8d..92520e2e985e 100644 --- a/sdk/core/abort-controller/package.json +++ b/sdk/core/abort-controller/package.json @@ -21,8 +21,8 @@ "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "lint:fix": "echo skipped", - "lint": "echo skipped", + "lint:fix": "eslint \"src/**/*.ts\" \"test/**/*.ts\" -c ../../.eslintrc.json --fix --fix-type [problem,suggestion]", + "lint": "eslint -c ../../.eslintrc.json src test --ext .ts -f node_modules/eslint-detailed-reporter/lib/detailed.js -o abort-controller-lintReport.html || exit 0", "pack": "npm pack 2>&1", "prebuild": "npm run clean", "pretest": "npm run build:test", @@ -73,9 +73,17 @@ "@microsoft/api-extractor": "^7.1.5", "@types/mocha": "^5.2.5", "@types/node": "^8.0.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", "assert": "^1.4.1", "cross-env": "^5.2.0", "delay": "^4.2.0", + "eslint": "^5.16.0", + "eslint-config-prettier": "^4.2.0", + "eslint-detailed-reporter": "^0.8.0", + "eslint-plugin-no-null": "^1.0.2", + "eslint-plugin-no-only-tests": "^2.3.0", + "eslint-plugin-promise": "^4.1.1", "karma": "^4.0.1", "karma-chrome-launcher": "^2.2.0", "karma-coverage": "^1.1.2", diff --git a/sdk/core/core-amqp/.github/ISSUE_TEMPLATE/Bug_report.md b/sdk/core/core-amqp/.github/ISSUE_TEMPLATE/Bug_report.md deleted file mode 100644 index af15bc30eacd..000000000000 --- a/sdk/core/core-amqp/.github/ISSUE_TEMPLATE/Bug_report.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -name: Bug_report.md -about: Create a report to help us improve - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Package-version**: -**node.js version**: -**OS name and version**: - -**Additional context** -Add any other context about the problem here. diff --git a/sdk/core/core-amqp/.github/ISSUE_TEMPLATE/feature_request.md b/sdk/core/core-amqp/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 066b2d920a28..000000000000 --- a/sdk/core/core-amqp/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/sdk/core/core-amqp/.github/PULL_REQUEST_TEMPLATE.md b/sdk/core/core-amqp/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 9985c903106f..000000000000 --- a/sdk/core/core-amqp/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,9 +0,0 @@ -## Description - -Brief description of the changes made in the PR. This helps in making better changelog -- -- -- - -# Reference to any github issues -- diff --git a/sdk/core/core-amqp/.travis.yml b/sdk/core/core-amqp/.travis.yml deleted file mode 100644 index 17a8a6635414..000000000000 --- a/sdk/core/core-amqp/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: node_js - -node_js: - - "10" - - "8" - - "6" - -script: - - npm test diff --git a/sdk/core/core-amqp/.vscode/settings.json b/sdk/core/core-amqp/.vscode/settings.json deleted file mode 100644 index ac81a4f234eb..000000000000 --- a/sdk/core/core-amqp/.vscode/settings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "files.exclude": { - "**/.git": true, - "**/.svn": true, - "**/.DS_Store": true - }, - "[typescript]": { - "editor.formatOnSave": true, - "editor.formatOnPaste": true, - "editor.tabSize": 2, - "editor.detectIndentation": false - }, - "[json]": { - "editor.formatOnSave": true, - "editor.formatOnPaste": true, - "editor.tabSize": 2, - "editor.detectIndentation": false - }, - "[yaml]": { - "editor.formatOnSave": true, - "editor.formatOnPaste": true, - "editor.tabSize": 2, - "editor.detectIndentation": false - }, - "editor.rulers": [100], - "typescript.tsdk": "./node_modules/typescript/lib" -} diff --git a/sdk/core/core-amqp/package.json b/sdk/core/core-amqp/package.json index 1884799a08fb..bb9a577a3409 100644 --- a/sdk/core/core-amqp/package.json +++ b/sdk/core/core-amqp/package.json @@ -26,9 +26,9 @@ "build:samples": "cd samples && tsc -p .", "build:test": "tsc -p . && rollup -c rollup.test.config.js 2>&1", "build": "tsc -p . && rollup -c 2>&1", - "check-format": "prettier --list-different --config .prettierrc.json \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "check-format": "prettier --list-different --config ../../.prettierrc.json \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", "clean": "rimraf dist dist-esm typings temp browser/*.js* browser/*.zip statistics.html coverage coverage-browser test-browser .nyc_output *.tgz *.log test*.xml TEST*.xml", - "format": "prettier --write --config .prettierrc.json \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "format": "prettier --write --config ../../.prettierrc.json \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", @@ -119,7 +119,6 @@ "rollup-plugin-uglify": "^6.0.0", "sinon": "^7.1.0", "ts-node": "^7.0.1", - "tslint": "^5.15.0", "typescript": "^3.2.2", "ws": "^6.2.1" } diff --git a/sdk/core/core-amqp/tslint.json b/sdk/core/core-amqp/tslint.json deleted file mode 100644 index 14aa73ff7c54..000000000000 --- a/sdk/core/core-amqp/tslint.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "rules": { - "member-ordering": [ - true, - { - "order": "instance-sandwich" - } - ], - "typedef": [ - true, - "call-signature", - "parameter", - "property-declaration", - "member-variable-declaration" - ], - "typedef-whitespace": [ - true, - { - "call-signature": "nospace", - "index-signature": "nospace", - "parameter": "nospace", - "property-declaration": "nospace", - "variable-declaration": "nospace" - }, - { - "call-signature": "onespace", - "index-signature": "onespace", - "parameter": "onespace", - "property-declaration": "onespace", - "variable-declaration": "onespace" - } - ], - "import-blacklist": [true, "rhea", ["rhea/.*"]], - "prefer-const": true, - "no-construct": true, - "no-duplicate-variable": true, - "no-empty": true, - "no-invalid-this": true, - "no-null-keyword": true, - "no-string-literal": true, - "no-switch-case-fall-through": true, - "no-unsafe-finally": true, - "no-unused-expression": true, - "no-unused-variable": false, - "no-use-before-declare": true, - "no-var-keyword": true, - "no-floating-promises": true, - "no-return-await": true, - "triple-equals": [true, "allow-null-check", "allow-undefined-check"], - "use-isnan": true, - "eofline": true, - "indent": [true, "spaces"], - "no-trailing-whitespace": true, - "arrow-parens": false, - "class-name": true, - "comment-format": [true, "check-space"], - "interface-name": [true, "never-prefix"], - "jsdoc-format": true, - "new-parens": true, - "one-line": [ - true, - "check-catch", - "check-finally", - "check-else", - "check-open-brace" - ], - "one-variable-per-declaration": [true, "ignore-for-loop"], - "semicolon": [true, "always"], - "curly": [true, "ignore-same-line"], - "variable-name": [ - true, - "check-format", - "allow-leading-underscore", - "ban-keywords" - ], - "whitespace": [ - true, - "check-branch", - "check-decl", - "check-operator", - "check-module", - "check-seperator", - "check-type" - ] - } -} diff --git a/sdk/core/core-asynciterator-polyfill/package.json b/sdk/core/core-asynciterator-polyfill/package.json index 4dcaca141bdc..29e745ca2cdc 100644 --- a/sdk/core/core-asynciterator-polyfill/package.json +++ b/sdk/core/core-asynciterator-polyfill/package.json @@ -36,14 +36,14 @@ "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", "build": "tsc -p .", "build:test": "echo skipped", - "check-format": "prettier --list-different --config ../../.prettierrc.json \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "check-format": "prettier --list-different --config ../../.prettierrc.json \"src/**/*.ts\" \"*.{js,json}\"", "clean": "echo skipped", - "format": "prettier --write --config ../../.prettierrc.json \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "format": "prettier --write --config ../../.prettierrc.json \"src/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "lint": "eslint -c ../../.eslintrc.json src test --ext .ts -f node_modules/eslint-detailed-reporter/lib/detailed.js -o template-lintReport.html || exit 0", - "lint:fix": "eslint \"src/**/*.ts\" \"test/**/*.ts\" -c ../../.eslintrc.json --fix --fix-type [problem,suggestion]", + "lint": "eslint -c ../../.eslintrc.json src --ext .ts -f node_modules/eslint-detailed-reporter/lib/detailed.js -o template-lintReport.html || exit 0", + "lint:fix": "eslint \"src/**/*.ts\" -c ../../.eslintrc.json --fix --fix-type [problem,suggestion]", "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", @@ -56,5 +56,17 @@ "sideEffects": true, "private": false, "dependencies": {}, - "devDependencies": {} + "devDependencies": { + "@types/node": "^8.0.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", + "eslint": "^5.16.0", + "eslint-config-prettier": "^4.2.0", + "eslint-detailed-reporter": "^0.8.0", + "eslint-plugin-no-null": "^1.0.2", + "eslint-plugin-no-only-tests": "^2.3.0", + "eslint-plugin-promise": "^4.1.1", + "prettier": "^1.16.4", + "typescript": "^3.2.2" + } } diff --git a/sdk/core/core-http/.gitignore b/sdk/core/core-http/.gitignore deleted file mode 100644 index 6d0a81ee740b..000000000000 --- a/sdk/core/core-http/.gitignore +++ /dev/null @@ -1,102 +0,0 @@ -#### linux gitignore -*~ - -# KDE directory preferences -.directory - -# Linux trash folder which might appear on any partition or disk -.Trash-* - -/obj/* -/node_modules -.ntvs_analysis.dat -.ntvs_analysis.* -npm-debug.log -tmp/* -packages/* -*.njsperf -.vs/ -bin/* -/.vscode/* -ValidationTool.njsproj -ValidationTool.sln -.vscode/launch.json - -#### win gitignore - -# Windows image file caches -Thumbs.db -ehthumbs.db - -# Folder config file -Desktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Windows Installer files -*.cab -*.msi -*.msm -*.msp - -# Windows shortcuts -*.lnk - -#### osx gitignore - -.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - -node_modules - -#### JetBrains -.idea - -# ignore code gen virtual env folder -SdkCodeGen - -output/* -package-lock.json - -# Typescript output -dist/ -*.d.ts -*.d.ts.map -*.js -*.js.map -test-results.xml -.nyc_output/ -coverage/ - -# Rollup -!rollup.config.js -*stats.html - -*.log - -# Tests -coverage -.nyc_output diff --git a/sdk/core/core-http/package.json b/sdk/core/core-http/package.json index 93072b75b0bc..eba87d0ea37f 100644 --- a/sdk/core/core-http/package.json +++ b/sdk/core/core-http/package.json @@ -67,14 +67,14 @@ "build:rollup": "rollup -c rollup.config.ts 2>&1", "build:minify-browser": "uglifyjs -c -m --comments --source-map \"content='./dist/coreHttp.browser.js.map'\" -o ./dist/coreHttp.browser.min.js ./dist/coreHttp.browser.js", "build:test-browser": "webpack --config webpack.testconfig.ts", - "check-format": "prettier --list-different --config .prettierrc.json \"src/**/*.ts\"", + "check-format": "prettier --list-different --config ../../.prettierrc.json \"lib/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", "clean": "rimraf ./es ./dist", - "format": "prettier --write --config .prettierrc.json \"src/**/*.ts\"", + "format": "prettier --write --config ../../.prettierrc.json \"lib/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "lint": "tslint -p .", - "lint:fix": "tslint -p . --fix", + "lint:fix": "eslint \"lib/**/*.ts\" \"test/**/*.ts\" -c ../../.eslintrc.json --fix --fix-type [problem,suggestion]", + "lint": "eslint -c ../../.eslintrc.json lib test --ext .ts -f node_modules/eslint-detailed-reporter/lib/detailed.js -o core-http-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", @@ -137,9 +137,17 @@ "@types/webpack": "^4.4.13", "@types/webpack-dev-middleware": "^2.0.2", "@types/xml2js": "^0.4.3", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", "abortcontroller-polyfill": "^1.1.9", "axios-mock-adapter": "^1.16.0", "chai": "^4.2.0", + "eslint": "^5.16.0", + "eslint-config-prettier": "^4.2.0", + "eslint-detailed-reporter": "^0.8.0", + "eslint-plugin-no-null": "^1.0.2", + "eslint-plugin-no-only-tests": "^2.3.0", + "eslint-plugin-promise": "^4.1.1", "express": "^4.16.3", "glob": "^7.1.2", "karma": "^4.0.1", @@ -173,8 +181,6 @@ "sinon": "^7.1.0", "ts-loader": "^5.3.1", "ts-node": "^7.0.1", - "tslint": "^5.15.0", - "tslint-eslint-rules": "^5.4.0", "typescript": "^3.2.2", "uglify-js": "^3.4.9", "webpack": "^4.16.3", diff --git a/sdk/core/core-http/tslint.json b/sdk/core/core-http/tslint.json deleted file mode 100644 index 1afdce492628..000000000000 --- a/sdk/core/core-http/tslint.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "extends": [ - "tslint-eslint-rules" - ], - "rules": { - "class-name": true, - "comment-format": [true, "check-space"], - "indent": [true, "spaces"], - "ter-indent": [true, 2], - "one-line": [true, - "check-open-brace", - "check-whitespace" - ], - "no-var-keyword": true, - "quotemark": [true, - "double", - "avoid-escape" - ], - "semicolon": [true, "always", "ignore-bound-class-methods"], - "whitespace": [true, - "check-branch", - "check-decl", - "check-operator", - "check-module", - "check-separator", - "check-type" - ], - "typedef-whitespace": [ - true, - { - "call-signature": "nospace", - "index-signature": "nospace", - "parameter": "nospace", - "property-declaration": "nospace", - "variable-declaration": "nospace" - }, - { - "call-signature": "onespace", - "index-signature": "onespace", - "parameter": "onespace", - "property-declaration": "onespace", - "variable-declaration": "onespace" - } - ], - "jsdoc-format": true, - "no-inferrable-types": [true], - "no-internal-module": true, - "no-null-keyword": true, - "no-return-await": true, - "no-switch-case-fall-through": true, - "no-trailing-whitespace": true, - "prefer-const": true, - "triple-equals": [true, "allow-undefined-check"] - } -} diff --git a/sdk/core/core-paging/package.json b/sdk/core/core-paging/package.json index e6c516bd94ad..08de7f6ae86b 100644 --- a/sdk/core/core-paging/package.json +++ b/sdk/core/core-paging/package.json @@ -37,14 +37,14 @@ "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", "build": "tsc -p .", "build:test": "echo skipped", - "check-format": "prettier --list-different --config ../../.prettierrc.json \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "check-format": "prettier --list-different --config ../../.prettierrc.json \"src/**/*.ts\" \"*.{js,json}\"", "clean": "echo skipped", - "format": "prettier --write --config ../../.prettierrc.json \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "format": "prettier --write --config ../../.prettierrc.json \"src/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "lint": "eslint -c ../../.eslintrc.json src test --ext .ts -f node_modules/eslint-detailed-reporter/lib/detailed.js -o template-lintReport.html || exit 0", - "lint:fix": "eslint \"src/**/*.ts\" \"test/**/*.ts\" -c ../../.eslintrc.json --fix --fix-type [problem,suggestion]", + "lint": "eslint -c ../../.eslintrc.json src --ext .ts -f node_modules/eslint-detailed-reporter/lib/detailed.js -o template-lintReport.html || exit 0", + "lint:fix": "eslint \"src/**/*.ts\" -c ../../.eslintrc.json --fix --fix-type [problem,suggestion]", "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", diff --git a/sdk/cosmosdb/cosmos/.editorConfig b/sdk/cosmosdb/cosmos/.editorConfig deleted file mode 100644 index f8c17c3f155b..000000000000 --- a/sdk/cosmosdb/cosmos/.editorConfig +++ /dev/null @@ -1,16 +0,0 @@ -# http://editorconfig.org -root = true - -[*] -end_of_line = crlf -indent_style = space -indent_size = 4 -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.md] -trim_trailing_whitespace = false - -[*.ts] -indent_size = 2 diff --git a/sdk/cosmosdb/cosmos/.gitattributes b/sdk/cosmosdb/cosmos/.gitattributes deleted file mode 100644 index 412eeda78dc9..000000000000 --- a/sdk/cosmosdb/cosmos/.gitattributes +++ /dev/null @@ -1,22 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto - -# Custom for Visual Studio -*.cs diff=csharp -*.sln merge=union -*.csproj merge=union -*.vbproj merge=union -*.fsproj merge=union -*.dbproj merge=union - -# Standard to msysgit -*.doc diff=astextplain -*.DOC diff=astextplain -*.docx diff=astextplain -*.DOCX diff=astextplain -*.dot diff=astextplain -*.DOT diff=astextplain -*.pdf diff=astextplain -*.PDF diff=astextplain -*.rtf diff=astextplain -*.RTF diff=astextplain diff --git a/sdk/cosmosdb/cosmos/.gitignore b/sdk/cosmosdb/cosmos/.gitignore deleted file mode 100644 index c8495698d1fb..000000000000 --- a/sdk/cosmosdb/cosmos/.gitignore +++ /dev/null @@ -1,269 +0,0 @@ -*.csproj -*.cmd - -config.js -.vs/ - -################# -## Eclipse -################# - -*.pydevproject -.project -.metadata -bin/ -obj/ -tmp/ -*.tmp -*.bak -*.swp -*~.nib -local.properties -.classpath -.settings/ -.loadpath - -# External tool builders -.externalToolBuilders/ - -# Locally stored "Eclipse launch configurations" -*.launch - -# CDT-specific -.cproject - -# PDT-specific -.buildpath - - -################# -## Visual Studio -################# - -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# User-specific files -*.suo -*.user -*.sln.docstates - -# Build results - -[Dd]ebug/ -[Rr]elease/ -x64/ -build/ -[Bb]in/ -[Oo]bj/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -*_i.c -*_p.c -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.log -*.scc - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opensdf -*.sdf -*.cachefile - -# Visual Studio profiler -*.psess -*.vsp -*.vspx - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -*.ncrunch* -.*crunch*.local.xml - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.Publish.xml -*.pubxml - -# NuGet Packages Directory -## TODO: If you have NuGet Package Restore enabled, uncomment the next line -#packages/ - -# Windows Azure Build Output -csx -*.build.csdef - -# Windows Store app package directory -AppPackages/ - -# Others -sql/ -*.Cache -ClientBin/ -[Ss]tyle[Cc]op.* -~$* -*~ -*.dbmdl -*.[Pp]ublish.xml -*.pfx -*.publishsettings - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file to a newer -# Visual Studio version. Backup files are not needed, because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -App_Data/*.mdf -App_Data/*.ldf - -############# -## Windows detritus -############# - -# Windows image file caches -Thumbs.db -ehthumbs.db - -# Folder config file -Desktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Mac crap -.DS_Store - - -############# -## Python -############# - -*.py[cod] - -# Packages -*.egg -*.egg-info -dist/ -build/ -eggs/ -parts/ -var/ -sdist/ -develop-eggs/ -.installed.cfg - -# Installer logs -pip-log.txt - -# Unit test / coverage reports -.coverage -.tox - -#Translations -*.mo - -#Mr Developer -.mr.developer.cfg - -############# -## Node.js -############# - -# Logs -logs - -# Runtime data -pids -*.pid -*.seed - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directory -# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git- -node_modules - -# Dependency sub-directories for samples -**/node_nodules/ - -*.dat - -lib/** - -*.tgz - -ts-test/package-lock.json -ts-test/package.json -ts-test/*.js - -dist-esm -dist-test \ No newline at end of file diff --git a/sdk/cosmosdb/cosmos/.prettierrc.json b/sdk/cosmosdb/cosmos/.prettierrc.json deleted file mode 100644 index ac615848e118..000000000000 --- a/sdk/cosmosdb/cosmos/.prettierrc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "printWidth": 120, - "tabWidth": 2 -} \ No newline at end of file diff --git a/sdk/cosmosdb/cosmos/.travis.yml b/sdk/cosmosdb/cosmos/.travis.yml deleted file mode 100644 index 55589b9b5ca7..000000000000 --- a/sdk/cosmosdb/cosmos/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: node_js -notifications: - email: false -node_js: - - 10 -script: - - npm run ci diff --git a/sdk/cosmosdb/cosmos/.vscode/settings.json b/sdk/cosmosdb/cosmos/.vscode/settings.json deleted file mode 100644 index 75dab0788698..000000000000 --- a/sdk/cosmosdb/cosmos/.vscode/settings.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "mocha.files.glob":"test/legacy/**/*.js", - "editor.formatOnSave": true -} \ No newline at end of file diff --git a/sdk/cosmosdb/cosmos/package.json b/sdk/cosmosdb/cosmos/package.json index ee94aa7b92ad..169648a14aec 100644 --- a/sdk/cosmosdb/cosmos/package.json +++ b/sdk/cosmosdb/cosmos/package.json @@ -24,16 +24,16 @@ "build:dev": "npm run check-format && npm run lint && npm run build:test", "build:test": "npm run compile:dev && npm run webpack:dev", "build": "npm run compile && npm run webpack", - "check-format": "prettier --list-different --config .prettierrc.json \"src/**/*.ts\"", + "check-format": "prettier --list-different --config ../../.prettierrc.json \"src/**/*.ts\" \"ts-test/**/*.ts\" \"*.{js,json}\"", "clean": "rimraf lib", "compile:dev": "echo Using TypeScript && tsc --version && tsc --pretty", "compile": "echo Using TypeScript && tsc --version && tsc -p tsconfig.prod.json --pretty", - "format": "prettier --write --config .prettierrc.json \"src/**/*.ts\"", + "format": "prettier --write --config ../../.prettierrc.json \"src/**/*.ts\" \"ts-test/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "mocha -r ./src/test/common/setup.ts ./lib/src/test/ --recursive --timeout 100000 --reporter mocha-multi --reporter-options spec=-,mocha-junit-reporter=- -i -g .*ignore.js", "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "lint:fix": "tslint --project tsconfig.json --fix", - "lint": "tslint --project tsconfig.json", + "lint:fix": "eslint \"src/**/*.ts\" \"ts-test/**/*.ts\" -c ../../.eslintrc.json --fix --fix-type [problem,suggestion]", + "lint": "eslint -c ../../.eslintrc.json src ts-test --ext .ts -f node_modules/eslint-detailed-reporter/lib/detailed.js -o cosmos-lintReport.html || exit 0", "pack": "npm pack 2>&1", "prebuild": "npm run clean", "smoke-test": "node ts-test.js", @@ -54,6 +54,14 @@ "@types/sinon": "^5.0.5", "@types/tunnel": "^0.0.0", "@types/underscore": "^1.8.8", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", + "eslint": "^5.16.0", + "eslint-config-prettier": "^4.2.0", + "eslint-detailed-reporter": "^0.8.0", + "eslint-plugin-no-null": "^1.0.2", + "eslint-plugin-no-only-tests": "^2.3.0", + "eslint-plugin-promise": "^4.1.1", "execa": "1.0.0", "mocha": "^5.2.0", "mocha-junit-reporter": "^1.18.0", @@ -63,8 +71,6 @@ "rimraf": "^2.6.2", "sinon": "^7.1.0", "ts-node": "^7.0.1", - "tslint": "^5.15.0", - "tslint-config-prettier": "^1.14.0", "typescript": "^3.2.2", "webpack": "^4.16.3", "webpack-cli": "^3.2.3" diff --git a/sdk/cosmosdb/cosmos/samples/TodoApp/.gitignore b/sdk/cosmosdb/cosmos/samples/TodoApp/.gitignore deleted file mode 100644 index 09f767e769ca..000000000000 --- a/sdk/cosmosdb/cosmos/samples/TodoApp/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -!config.js -!bin \ No newline at end of file diff --git a/sdk/cosmosdb/cosmos/src/test/tslint.json b/sdk/cosmosdb/cosmos/src/test/tslint.json deleted file mode 100644 index d96028aeeecf..000000000000 --- a/sdk/cosmosdb/cosmos/src/test/tslint.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tslint.json", - "rules": { - "only-arrow-functions": false, - "space-before-function-paren": false, - "no-console": false, - "no-implicit-dependencies": [true, "dev"], - "import-blacklist": false - } -} diff --git a/sdk/cosmosdb/cosmos/tslint.json b/sdk/cosmosdb/cosmos/tslint.json deleted file mode 100644 index 19c995a42ee2..000000000000 --- a/sdk/cosmosdb/cosmos/tslint.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": ["tslint:recommended", "tslint-config-prettier"], - "exclude": "./node_modules", - "rules": { - "interface-name": false, - "no-string-literal": false, - "object-literal-sort-keys": false, - "member-ordering": false, // TODO: might want to look at this eventually... - "no-floating-promises": true, - "import-blacklist": [true, "assert", "util"] - }, - "linterOptions": { - "exclude": ["*.json"] - } -} diff --git a/sdk/eventhub/.github/ISSUE_TEMPLATE/Bug_report.md b/sdk/eventhub/.github/ISSUE_TEMPLATE/Bug_report.md deleted file mode 100644 index 818ba9bbfc47..000000000000 --- a/sdk/eventhub/.github/ISSUE_TEMPLATE/Bug_report.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -name: Bug_report.md -about: Create a report to help us improve - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Package-name**: **azure-event-hubs** | **azure-event-processor-host** -**Package-version**: -**node.js version**: -**OS name and version**: - -**Additional context** -Add any other context about the problem here. diff --git a/sdk/eventhub/.github/ISSUE_TEMPLATE/feature_request.md b/sdk/eventhub/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 066b2d920a28..000000000000 --- a/sdk/eventhub/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/sdk/eventhub/.github/PULL_REQUEST_TEMPLATE.md b/sdk/eventhub/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 9985c903106f..000000000000 --- a/sdk/eventhub/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,9 +0,0 @@ -## Description - -Brief description of the changes made in the PR. This helps in making better changelog -- -- -- - -# Reference to any github issues -- diff --git a/sdk/eventhub/.travis.yml b/sdk/eventhub/.travis.yml deleted file mode 100644 index c519e9faf62b..000000000000 --- a/sdk/eventhub/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: node_js - -node_js: - - "6" - - "8" - - "10" - -env: - - TEST_DIR=client - - TEST_DIR=processor -script: - - cd $TEST_DIR && npm install && npm test diff --git a/sdk/eventhub/.vscode/settings.json b/sdk/eventhub/.vscode/settings.json deleted file mode 100644 index e048d87517d1..000000000000 --- a/sdk/eventhub/.vscode/settings.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "files.exclude": { - "**/.git": true, - "**/.svn": true, - "**/.DS_Store": true - }, - "[typescript]": { - "editor.formatOnSave": true, - "editor.formatOnPaste": true, - "editor.tabSize": 2, - "editor.detectIndentation": false - }, - "[json]": { - "editor.formatOnSave": true, - "editor.formatOnPaste": true, - "editor.tabSize": 2, - "editor.detectIndentation": false - }, - "[yaml]": { - "editor.formatOnSave": true, - "editor.formatOnPaste": true, - "editor.tabSize": 2, - "editor.detectIndentation": false - }, - "editor.rulers": [100], - "typescript.preferences.quoteStyle": "double", - "javascript.preferences.quoteStyle": "double", - "typescript.tsdk": "./event-hubs/node_modules/typescript/lib", - "prettier.arrowParens": "always" - } \ No newline at end of file diff --git a/sdk/eventhub/event-hubs/.prettierrc.json b/sdk/eventhub/event-hubs/.prettierrc.json deleted file mode 100644 index acbeeec27167..000000000000 --- a/sdk/eventhub/event-hubs/.prettierrc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "printWidth": 120, - "tabWidth": 2 -} diff --git a/sdk/eventhub/event-hubs/package.json b/sdk/eventhub/event-hubs/package.json index 297fe0c4bd49..22c61e4e1902 100644 --- a/sdk/eventhub/event-hubs/package.json +++ b/sdk/eventhub/event-hubs/package.json @@ -42,11 +42,11 @@ "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}\"", + "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}\"", + "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", @@ -132,7 +132,6 @@ "rollup-plugin-uglify": "^6.0.0", "ts-mocha": "^6.0.0", "ts-node": "^7.0.1", - "tslint": "^5.15.0", "typescript": "^3.2.2", "ws": "^6.2.1" } diff --git a/sdk/eventhub/event-hubs/tslint.json b/sdk/eventhub/event-hubs/tslint.json deleted file mode 100644 index 35a46a8f6861..000000000000 --- a/sdk/eventhub/event-hubs/tslint.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "rules": { - "member-ordering": [ - true, - { - "order": "instance-sandwich" - } - ], - "typedef": [true, "call-signature", "parameter", "property-declaration", "member-variable-declaration"], - "typedef-whitespace": [ - true, - { - "call-signature": "nospace", - "index-signature": "nospace", - "parameter": "nospace", - "property-declaration": "nospace", - "variable-declaration": "nospace" - }, - { - "call-signature": "onespace", - "index-signature": "onespace", - "parameter": "onespace", - "property-declaration": "onespace", - "variable-declaration": "onespace" - } - ], - "import-blacklist": [true, "rhea", ["rhea/.*"]], - "prefer-const": true, - "no-construct": true, - "no-duplicate-variable": true, - "no-empty": true, - "no-invalid-this": true, - "no-null-keyword": true, - "no-switch-case-fall-through": true, - "no-unsafe-finally": true, - "no-unused-expression": true, - "no-use-before-declare": true, - "no-var-keyword": true, - "no-floating-promises": true, - "no-return-await": true, - "triple-equals": [true, "allow-null-check", "allow-undefined-check"], - "use-isnan": true, - "eofline": true, - "indent": [true, "spaces"], - "no-trailing-whitespace": true, - "arrow-parens": [true, "ban-single-arg-parens"], - "class-name": true, - "comment-format": [true, "check-space"], - "interface-name": [true, "never-prefix"], - "jsdoc-format": true, - "new-parens": true, - "one-line": [true, "check-catch", "check-finally", "check-else", "check-open-brace"], - "one-variable-per-declaration": [true, "ignore-for-loop"], - "semicolon": [true, "always"], - "curly": [true, "ignore-same-line"], - "variable-name": [true, "check-format", "allow-leading-underscore", "ban-keywords"], - "whitespace": [ - true, - "check-branch", - "check-decl", - "check-operator", - "check-module", - "check-seperator", - "check-type" - ] - } -} diff --git a/sdk/eventhub/event-processor-host/package.json b/sdk/eventhub/event-processor-host/package.json index c3eb459477b7..6c7a6da755fe 100644 --- a/sdk/eventhub/event-processor-host/package.json +++ b/sdk/eventhub/event-processor-host/package.json @@ -38,11 +38,11 @@ "build:samples": "cd samples && tsc -p .", "build:test": "tsc -p . && cross-env ONLY_NODE=true rollup -c rollup.test.config.js 2>&1", "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}\"", + "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}\"", + "format": "prettier --write --config ../../.prettierrc.json \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "mocha -t 120000 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", @@ -106,7 +106,6 @@ "rollup-plugin-sourcemaps": "^0.4.2", "rollup-plugin-uglify": "^6.0.0", "ts-node": "^7.0.1", - "tslint": "^5.15.0", "typescript": "^3.2.2" } } diff --git a/sdk/eventhub/event-processor-host/tslint.json b/sdk/eventhub/event-processor-host/tslint.json deleted file mode 100644 index 35a46a8f6861..000000000000 --- a/sdk/eventhub/event-processor-host/tslint.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "rules": { - "member-ordering": [ - true, - { - "order": "instance-sandwich" - } - ], - "typedef": [true, "call-signature", "parameter", "property-declaration", "member-variable-declaration"], - "typedef-whitespace": [ - true, - { - "call-signature": "nospace", - "index-signature": "nospace", - "parameter": "nospace", - "property-declaration": "nospace", - "variable-declaration": "nospace" - }, - { - "call-signature": "onespace", - "index-signature": "onespace", - "parameter": "onespace", - "property-declaration": "onespace", - "variable-declaration": "onespace" - } - ], - "import-blacklist": [true, "rhea", ["rhea/.*"]], - "prefer-const": true, - "no-construct": true, - "no-duplicate-variable": true, - "no-empty": true, - "no-invalid-this": true, - "no-null-keyword": true, - "no-switch-case-fall-through": true, - "no-unsafe-finally": true, - "no-unused-expression": true, - "no-use-before-declare": true, - "no-var-keyword": true, - "no-floating-promises": true, - "no-return-await": true, - "triple-equals": [true, "allow-null-check", "allow-undefined-check"], - "use-isnan": true, - "eofline": true, - "indent": [true, "spaces"], - "no-trailing-whitespace": true, - "arrow-parens": [true, "ban-single-arg-parens"], - "class-name": true, - "comment-format": [true, "check-space"], - "interface-name": [true, "never-prefix"], - "jsdoc-format": true, - "new-parens": true, - "one-line": [true, "check-catch", "check-finally", "check-else", "check-open-brace"], - "one-variable-per-declaration": [true, "ignore-for-loop"], - "semicolon": [true, "always"], - "curly": [true, "ignore-same-line"], - "variable-name": [true, "check-format", "allow-leading-underscore", "ban-keywords"], - "whitespace": [ - true, - "check-branch", - "check-decl", - "check-operator", - "check-module", - "check-seperator", - "check-type" - ] - } -} diff --git a/sdk/keyvault/keyvault-certificates/package.json b/sdk/keyvault/keyvault-certificates/package.json index d9a6f1ebffb8..9f53d927ea84 100644 --- a/sdk/keyvault/keyvault-certificates/package.json +++ b/sdk/keyvault/keyvault-certificates/package.json @@ -46,14 +46,14 @@ "build:minify": "uglifyjs -c -m --comments --source-map \"content='./dist/index.js.map'\" -o ./dist/index.min.js ./dist/index.js 2>&1", "build:test": "npm run build", "build": "tsc && rollup -c rollup.config.js 2>&1", - "check-format": "prettier --list-different --config .prettierrc.json \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "check-format": "prettier --list-different --config ../../.prettierrc.json \"src/**/*.ts\" \"*.{js,json}\"", "clean": "rimraf dist esm test-dist typings *.tgz *.log", - "format": "prettier --write --config .prettierrc.json \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", + "format": "prettier --write --config ../../.prettierrc.json \"src/**/*.ts\" \"*.{js,json}\"", "integration-test:browser": "echo skipped", "integration-test:node": "echo skipped", "integration-test": "npm run integration-test:node && npm run integration-test:browser", - "lint:fix": "echo skipped", - "lint": "echo skipped", + "lint:fix": "eslint \"src/**/*.ts\" -c ../../.eslintrc.json --fix --fix-type [problem,suggestion]", + "lint": "eslint -c ../../.eslintrc.json src --ext .ts -f node_modules/eslint-detailed-reporter/lib/detailed.js -o keyvault-certificates-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", @@ -73,7 +73,15 @@ "@microsoft/api-extractor": "^7.1.5", "@types/chai": "^4.1.6", "@types/node": "^8.0.0", + "@typescript-eslint/eslint-plugin": "^1.11.0", + "@typescript-eslint/parser": "^1.11.0", "chai": "^4.2.0", + "eslint": "^5.16.0", + "eslint-config-prettier": "^4.2.0", + "eslint-detailed-reporter": "^0.8.0", + "eslint-plugin-no-null": "^1.0.2", + "eslint-plugin-no-only-tests": "^2.3.0", + "eslint-plugin-promise": "^4.1.1", "prettier": "^1.16.4", "rimraf": "^2.6.2", "rollup": "~1.13.1", diff --git a/sdk/keyvault/keyvault-keys/.eslintignore b/sdk/keyvault/keyvault-keys/.eslintignore deleted file mode 100644 index ab0cccfdf864..000000000000 --- a/sdk/keyvault/keyvault-keys/.eslintignore +++ /dev/null @@ -1,3 +0,0 @@ -src/core -**/*.js -*lintReport.html diff --git a/sdk/keyvault/keyvault-keys/.gitignore b/sdk/keyvault/keyvault-keys/.gitignore deleted file mode 100644 index 68fc6ac101a9..000000000000 --- a/sdk/keyvault/keyvault-keys/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -src/**/*.js -samples/**/*.js -*lintReport.html diff --git a/sdk/keyvault/keyvault-secrets/.eslintignore b/sdk/keyvault/keyvault-secrets/.eslintignore deleted file mode 100644 index ccf966f598d6..000000000000 --- a/sdk/keyvault/keyvault-secrets/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -src/core -**/*.js diff --git a/sdk/keyvault/keyvault-secrets/.gitignore b/sdk/keyvault/keyvault-secrets/.gitignore deleted file mode 100644 index 24a5c125f08e..000000000000 --- a/sdk/keyvault/keyvault-secrets/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -src/**/*.js -samples/**/*.js diff --git a/sdk/servicebus/service-bus/.editorconfig b/sdk/servicebus/service-bus/.editorconfig deleted file mode 100644 index ea28947c77f2..000000000000 --- a/sdk/servicebus/service-bus/.editorconfig +++ /dev/null @@ -1,10 +0,0 @@ -# EditorConfig is awesome: https://EditorConfig.org - root = true - [*] -charset = utf-8 -eol = lf -insert_final_newline = true -trim_trailing_whitespace = true - [*.{ts,json,yaml}] -indent_style = space -indent_size = 2 \ No newline at end of file diff --git a/sdk/servicebus/service-bus/.github/ISSUE_TEMPLATE/Bug_report.md b/sdk/servicebus/service-bus/.github/ISSUE_TEMPLATE/Bug_report.md deleted file mode 100644 index af15bc30eacd..000000000000 --- a/sdk/servicebus/service-bus/.github/ISSUE_TEMPLATE/Bug_report.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -name: Bug_report.md -about: Create a report to help us improve - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Package-version**: -**node.js version**: -**OS name and version**: - -**Additional context** -Add any other context about the problem here. diff --git a/sdk/servicebus/service-bus/.github/PULL_REQUEST_TEMPLATE.md b/sdk/servicebus/service-bus/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 9985c903106f..000000000000 --- a/sdk/servicebus/service-bus/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,9 +0,0 @@ -## Description - -Brief description of the changes made in the PR. This helps in making better changelog -- -- -- - -# Reference to any github issues -- diff --git a/sdk/servicebus/service-bus/.travis.yml b/sdk/servicebus/service-bus/.travis.yml deleted file mode 100644 index de1098ee60a8..000000000000 --- a/sdk/servicebus/service-bus/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: node_js - -node_js: - - 6 - - 8 - - 10 - -script: - - npm test \ No newline at end of file diff --git a/sdk/servicebus/service-bus/.vscode/extensions.json b/sdk/servicebus/service-bus/.vscode/extensions.json deleted file mode 100644 index c83e26348e1f..000000000000 --- a/sdk/servicebus/service-bus/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["esbenp.prettier-vscode"] -} diff --git a/sdk/servicebus/service-bus/.vscode/settings.json b/sdk/servicebus/service-bus/.vscode/settings.json deleted file mode 100644 index 7ceb5ace3e9d..000000000000 --- a/sdk/servicebus/service-bus/.vscode/settings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "files.exclude": { - "**/.git": true, - "**/.svn": true, - "**/.DS_Store": true - }, - "[typescript]": { - "editor.formatOnSave": true, - "editor.tabSize": 2, - "editor.detectIndentation": false - }, - "[json]": { - "editor.formatOnSave": true, - "editor.tabSize": 2, - "editor.detectIndentation": false - }, - "[yaml]": { - "editor.formatOnSave": true, - "editor.tabSize": 2, - "editor.detectIndentation": false - }, - "editor.rulers": [ - 100 - ], - "typescript.preferences.quoteStyle": "double", - "javascript.preferences.quoteStyle": "double" - } \ No newline at end of file diff --git a/sdk/storage/azure-pipelines.yml b/sdk/storage/azure-pipelines.yml deleted file mode 100644 index cc5e20d1ebac..000000000000 --- a/sdk/storage/azure-pipelines.yml +++ /dev/null @@ -1,462 +0,0 @@ -# Node.js -# Build a general Node.js project with npm. -# Add steps that analyze code, save build artifacts, deploy, and more: -# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript -# https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema - -jobs: - - job: blobnodejslinux - displayName: Blob Linux - pool: - vmImage: "ubuntu-16.04" - strategy: - matrix: - node_6_x: - node_version: 6.x - node_8_x: - node_version: 8.x - node_10_x: - node_version: 10.x - steps: - - task: NodeTool@0 - inputs: - versionSpec: "$(node_version)" - displayName: "Install Node.js" - - - script: | - npm install - npm run build - workingDirectory: "./blob" - displayName: "npm install and build" - - - script: | - npm run test:node - workingDirectory: "./blob" - displayName: "npm run test:node" - env: { ACCOUNT_NAME: "$(ACCOUNT-NAME)", ACCOUNT_KEY: "$(ACCOUNT-KEY)" } - - - task: PublishTestResults@2 - inputs: - testRunner: JUnit - testResultsFiles: "./blob/test-results.xml" - condition: succeededOrFailed() - - - task: PublishCodeCoverageResults@1 - inputs: - codeCoverageTool: Cobertura - summaryFileLocation: "$(System.DefaultWorkingDirectory)/**/*coverage.xml" - reportDirectory: "$(System.DefaultWorkingDirectory)/**/coverage" - - - job: blobnodejswin - displayName: Blob Windows - pool: - vmImage: "vs2017-win2016" - strategy: - matrix: - node_6_x: - node_version: 6.x - node_8_x: - node_version: 8.x - node_10_x: - node_version: 10.x - steps: - - task: NodeTool@0 - inputs: - versionSpec: "$(node_version)" - displayName: "Install Node.js" - - - script: | - npm install - npm run build - workingDirectory: "./blob" - displayName: "npm install and build" - - - script: | - npm run test:node - workingDirectory: "./blob" - displayName: "npm run test:node" - env: { ACCOUNT_NAME: "$(ACCOUNT-NAME)", ACCOUNT_KEY: "$(ACCOUNT-KEY)" } - - - task: PublishTestResults@2 - inputs: - testRunner: JUnit - testResultsFiles: "./blob/test-results.xml" - condition: succeededOrFailed() - - - task: PublishCodeCoverageResults@1 - inputs: - codeCoverageTool: Cobertura - summaryFileLocation: "$(System.DefaultWorkingDirectory)/**/*coverage.xml" - reportDirectory: "$(System.DefaultWorkingDirectory)/**/coverage" - - - job: blobnodejsmac - displayName: Blob Mac - pool: - vmImage: "macOS-10.13" - strategy: - matrix: - node_6_x: - node_version: 6.x - node_8_x: - node_version: 8.x - node_10_x: - node_version: 10.x - steps: - - task: NodeTool@0 - inputs: - versionSpec: "$(node_version)" - displayName: "Install Node.js" - - - script: | - npm install - npm run build - workingDirectory: "./blob" - displayName: "npm install and build" - - - script: | - npm run test:node - workingDirectory: "./blob" - displayName: "npm run test:node" - env: { ACCOUNT_NAME: "$(ACCOUNT-NAME)", ACCOUNT_KEY: "$(ACCOUNT-KEY)" } - - - task: PublishTestResults@2 - inputs: - testRunner: JUnit - testResultsFiles: "./blob/test-results.xml" - condition: succeededOrFailed() - - - task: PublishCodeCoverageResults@1 - inputs: - codeCoverageTool: Cobertura - summaryFileLocation: "$(System.DefaultWorkingDirectory)/**/*coverage.xml" - reportDirectory: "$(System.DefaultWorkingDirectory)/**/coverage" - - - job: blobbrowser - displayName: Blob Browser - pool: - vmImage: "Ubuntu 16.04" - steps: - - task: NodeTool@0 - inputs: - versionSpec: "10.x" - displayName: "Install Node.js" - - - script: | - npm install - npm run build - workingDirectory: "./blob" - displayName: "npm install and build" - - - script: | - npm run test:browser - workingDirectory: "./blob" - displayName: "npm run test:browser" - env: { ACCOUNT_NAME: "$(ACCOUNT-NAME)", ACCOUNT_SAS: "$(ACCOUNT-SAS)" } - - - task: PublishTestResults@2 - inputs: - testRunner: JUnit - testResultsFiles: "./blob/test-results.browser.xml" - condition: succeededOrFailed() - - - task: PublishCodeCoverageResults@1 - inputs: - codeCoverageTool: Cobertura - summaryFileLocation: "$(System.DefaultWorkingDirectory)/**/*coverage.xml" - reportDirectory: "$(System.DefaultWorkingDirectory)/**/coverage-browser" - - - job: filenodejslinux - displayName: File Linux - pool: - vmImage: "ubuntu-16.04" - strategy: - matrix: - node_6_x: - node_version: 6.x - node_8_x: - node_version: 8.x - node_10_x: - node_version: 10.x - steps: - - task: NodeTool@0 - inputs: - versionSpec: "$(node_version)" - displayName: "Install Node.js" - - - script: | - npm install - npm run build - workingDirectory: "./file" - displayName: "npm install and build" - - - script: | - npm run test:node - workingDirectory: "./file" - displayName: "npm run test:node" - env: { ACCOUNT_NAME: "$(ACCOUNT-NAME)", ACCOUNT_KEY: "$(ACCOUNT-KEY)" } - - - task: PublishTestResults@2 - inputs: - testRunner: JUnit - testResultsFiles: "./file/test-results.xml" - condition: succeededOrFailed() - - - job: filenodejswin - displayName: File Windows - pool: - vmImage: "vs2017-win2016" - strategy: - matrix: - node_6_x: - node_version: 6.x - node_8_x: - node_version: 8.x - node_10_x: - node_version: 10.x - steps: - - task: NodeTool@0 - inputs: - versionSpec: "$(node_version)" - displayName: "Install Node.js" - - - script: | - npm install - npm run build - workingDirectory: "./file" - displayName: "npm install and build" - - - script: | - npm run test:node - workingDirectory: "./file" - displayName: "npm run test:node" - env: { ACCOUNT_NAME: "$(ACCOUNT-NAME)", ACCOUNT_KEY: "$(ACCOUNT-KEY)" } - - - task: PublishTestResults@2 - inputs: - testRunner: JUnit - testResultsFiles: "./file/test-results.xml" - condition: succeededOrFailed() - - - job: filenodejsmac - displayName: File Mac - pool: - vmImage: "macOS-10.13" - strategy: - matrix: - node_6_x: - node_version: 6.x - node_8_x: - node_version: 8.x - node_10_x: - node_version: 10.x - steps: - - task: NodeTool@0 - inputs: - versionSpec: "$(node_version)" - displayName: "Install Node.js" - - - script: | - npm install - npm run build - workingDirectory: "./file" - displayName: "npm install and build" - - - script: | - npm run test:node - workingDirectory: "./file" - displayName: "npm run test:node" - env: { ACCOUNT_NAME: "$(ACCOUNT-NAME)", ACCOUNT_KEY: "$(ACCOUNT-KEY)" } - - - task: PublishTestResults@2 - inputs: - testRunner: JUnit - testResultsFiles: "./file/test-results.xml" - condition: succeededOrFailed() - - - job: filebrowser - displayName: File Browser - pool: - vmImage: "Ubuntu 16.04" - steps: - - task: NodeTool@0 - inputs: - versionSpec: "10.x" - displayName: "Install Node.js" - - - script: | - npm install - npm run build - workingDirectory: "./file" - displayName: "npm install and build" - - - script: | - npm run test:browser - workingDirectory: "./file" - displayName: "npm run test:browser" - env: { ACCOUNT_NAME: "$(ACCOUNT-NAME)", ACCOUNT_SAS: "$(ACCOUNT-SAS)" } - - - task: PublishTestResults@2 - inputs: - testRunner: JUnit - testResultsFiles: "./file/test-results.browser.xml" - condition: succeededOrFailed() - - - job: queuenodejslinux - displayName: Queue Linux - pool: - vmImage: "ubuntu-16.04" - strategy: - matrix: - node_6_x: - node_version: 6.x - node_8_x: - node_version: 8.x - node_10_x: - node_version: 10.x - steps: - - task: NodeTool@0 - inputs: - versionSpec: "$(node_version)" - displayName: "Install Node.js" - - - script: | - npm install - npm run build - workingDirectory: "./queue" - displayName: "npm install and build" - - - script: | - npm run test:node - workingDirectory: "./queue" - displayName: "npm run test:node" - env: { ACCOUNT_NAME: "$(ACCOUNT-NAME)", ACCOUNT_KEY: "$(ACCOUNT-KEY)", SECONDARY_ACCOUNT_NAME": "$(ACCOUNT-NAME)", SECONDARY_ACCOUNT_KEY: "$(ACCOUNT-KEY)" } - - - task: PublishTestResults@2 - inputs: - testRunner: JUnit - testResultsFiles: "./queue/test-results.xml" - condition: succeededOrFailed() - - - task: PublishCodeCoverageResults@1 - inputs: - codeCoverageTool: Cobertura - summaryFileLocation: "$(System.DefaultWorkingDirectory)/**/*coverage.xml" - reportDirectory: "$(System.DefaultWorkingDirectory)/**/coverage" - - - job: queuenodejswin - displayName: Queue Windows - pool: - vmImage: "vs2017-win2016" - strategy: - matrix: - node_6_x: - node_version: 6.x - node_8_x: - node_version: 8.x - node_10_x: - node_version: 10.x - steps: - - task: NodeTool@0 - inputs: - versionSpec: "$(node_version)" - displayName: "Install Node.js" - - - script: | - npm install - npm run build - workingDirectory: "./queue" - displayName: "npm install and build" - - - script: | - npm run test:node - workingDirectory: "./queue" - displayName: "npm run test:node" - env: { ACCOUNT_NAME: "$(ACCOUNT-NAME)", ACCOUNT_KEY: "$(ACCOUNT-KEY)", SECONDARY_ACCOUNT_NAME": "$(ACCOUNT-NAME)", SECONDARY_ACCOUNT_KEY: "$(ACCOUNT-KEY)" } - - - task: PublishTestResults@2 - inputs: - testRunner: JUnit - testResultsFiles: "./queue/test-results.xml" - condition: succeededOrFailed() - - - task: PublishCodeCoverageResults@1 - inputs: - codeCoverageTool: Cobertura - summaryFileLocation: "$(System.DefaultWorkingDirectory)/**/*coverage.xml" - reportDirectory: "$(System.DefaultWorkingDirectory)/**/coverage" - - - job: queuenodejsmac - displayName: Queue Mac - pool: - vmImage: "macOS-10.13" - strategy: - matrix: - node_6_x: - node_version: 6.x - node_8_x: - node_version: 8.x - node_10_x: - node_version: 10.x - steps: - - task: NodeTool@0 - inputs: - versionSpec: "$(node_version)" - displayName: "Install Node.js" - - - script: | - npm install - npm run build - workingDirectory: "./queue" - displayName: "npm install and build" - - - script: | - npm run test:node - workingDirectory: "./queue" - displayName: "npm run test:node" - env: { ACCOUNT_NAME: "$(ACCOUNT-NAME)", ACCOUNT_KEY: "$(ACCOUNT-KEY)", SECONDARY_ACCOUNT_NAME": "$(ACCOUNT-NAME)", SECONDARY_ACCOUNT_KEY: "$(ACCOUNT-KEY)" } - - - task: PublishTestResults@2 - inputs: - testRunner: JUnit - testResultsFiles: "./queue/test-results.xml" - condition: succeededOrFailed() - - - task: PublishCodeCoverageResults@1 - inputs: - codeCoverageTool: Cobertura - summaryFileLocation: "$(System.DefaultWorkingDirectory)/**/*coverage.xml" - reportDirectory: "$(System.DefaultWorkingDirectory)/**/coverage" - - - job: queuebrowser - displayName: Queue Browser - pool: - vmImage: "Ubuntu 16.04" - steps: - - task: NodeTool@0 - inputs: - versionSpec: "10.x" - displayName: "Install Node.js" - - - script: | - npm install - npm run build - workingDirectory: "./queue" - displayName: "npm install and build" - - - script: | - npm run test:browser - workingDirectory: "./queue" - displayName: "npm run test:browser" - env: { ACCOUNT_NAME: "$(ACCOUNT-NAME)", ACCOUNT_SAS: "$(ACCOUNT-SAS)" } - - - task: PublishTestResults@2 - inputs: - testRunner: JUnit - testResultsFiles: "./queue/test-results.browser.xml" - condition: succeededOrFailed() - - - task: PublishCodeCoverageResults@1 - inputs: - codeCoverageTool: Cobertura - summaryFileLocation: "$(System.DefaultWorkingDirectory)/**/*coverage.xml" - reportDirectory: "$(System.DefaultWorkingDirectory)/**/coverage-browser" diff --git a/sdk/storage/storage-blob/.npmignore b/sdk/storage/storage-blob/.npmignore deleted file mode 100644 index 8a5a07d9992e..000000000000 --- a/sdk/storage/storage-blob/.npmignore +++ /dev/null @@ -1,40 +0,0 @@ -# browser # -browser/azure-storage-blob.js -browser/azure-storage-blob.js.map - -# dist-test # -dist-test/ - -# Node # -node_modules/ - -# Samples # -samples/ - -# Swagger # -swagger/ - -# git # -.git* - -# Test # -tests/ - -# Others # -.vscode/ -.idea/ -.gitignore -gulpfile.js -.git -.DS_Store -*.zip -temp -gulpfile.js -*.html -coverage/ -.nyc_output/ -test*.xml -*.tgz -coverage-browser -.nycrc -mocha.reporter.config.json \ No newline at end of file diff --git a/sdk/storage/storage-blob/.prettierignore b/sdk/storage/storage-blob/.prettierignore deleted file mode 100644 index 3fd7f651ed5f..000000000000 --- a/sdk/storage/storage-blob/.prettierignore +++ /dev/null @@ -1,2 +0,0 @@ -src/generated/**/*.ts -package-lock.json diff --git a/sdk/storage/storage-blob/tslint.json b/sdk/storage/storage-blob/tslint.json deleted file mode 100644 index ae2eb09109a7..000000000000 --- a/sdk/storage/storage-blob/tslint.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "defaultSeverity": "error", - "extends": ["tslint:recommended"], - "jsRules": {}, - "rules": { - "trailing-comma": false, - "arrow-parens": false - }, - "rulesDirectory": [], - "linterOptions": { - "exclude": ["src/generated/**"] - } -} diff --git a/sdk/storage/storage-file/.npmignore b/sdk/storage/storage-file/.npmignore deleted file mode 100644 index b84ea0bddf17..000000000000 --- a/sdk/storage/storage-file/.npmignore +++ /dev/null @@ -1,35 +0,0 @@ -# browser # -browser/azure-storage-file.js -browser/azure-storage-file.js.map - -# dist-test # -dist-test/ - -# Node # -node_modules/ - -# Swagger # -swagger/ - -# git # -.git* - -# Others # -.vscode/ -.idea/ -.travis.yml -.gitignore -gulpfile.js -.git -.DS_Store -*.zip -temp -gulpfile.js -*.html -coverage/ -.nyc_output/ -test*.xml -*.tgz -coverage-browser -.nycrc -mocha.reporter.config.json \ No newline at end of file diff --git a/sdk/storage/storage-file/.prettierignore b/sdk/storage/storage-file/.prettierignore deleted file mode 100644 index 3fd7f651ed5f..000000000000 --- a/sdk/storage/storage-file/.prettierignore +++ /dev/null @@ -1,2 +0,0 @@ -src/generated/**/*.ts -package-lock.json diff --git a/sdk/storage/storage-file/tslint.json b/sdk/storage/storage-file/tslint.json deleted file mode 100644 index ae2eb09109a7..000000000000 --- a/sdk/storage/storage-file/tslint.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "defaultSeverity": "error", - "extends": ["tslint:recommended"], - "jsRules": {}, - "rules": { - "trailing-comma": false, - "arrow-parens": false - }, - "rulesDirectory": [], - "linterOptions": { - "exclude": ["src/generated/**"] - } -} diff --git a/sdk/storage/storage-queue/.npmignore b/sdk/storage/storage-queue/.npmignore deleted file mode 100644 index ecf17923297a..000000000000 --- a/sdk/storage/storage-queue/.npmignore +++ /dev/null @@ -1,34 +0,0 @@ -# browser # -browser/azure-storage-queue.js -browser/azure-storage-queue.js.map - -# dist-test # -dist-test/ - -# Node # -node_modules/ - -# Swagger # -swagger/ - -# git # -.git* - -# Others # -.vscode/ -.idea/ -.gitignore -gulpfile.js -.git -.DS_Store -*.zip -temp -gulpfile.js -*.html -coverage/ -.nyc_output/ -test*.xml -*.tgz -coverage-browser -.nycrc -mocha.reporter.config.json \ No newline at end of file diff --git a/sdk/storage/storage-queue/.prettierignore b/sdk/storage/storage-queue/.prettierignore deleted file mode 100644 index 3fd7f651ed5f..000000000000 --- a/sdk/storage/storage-queue/.prettierignore +++ /dev/null @@ -1,2 +0,0 @@ -src/generated/**/*.ts -package-lock.json diff --git a/sdk/storage/storage-queue/tslint.json b/sdk/storage/storage-queue/tslint.json deleted file mode 100644 index ae2eb09109a7..000000000000 --- a/sdk/storage/storage-queue/tslint.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "defaultSeverity": "error", - "extends": ["tslint:recommended"], - "jsRules": {}, - "rules": { - "trailing-comma": false, - "arrow-parens": false - }, - "rulesDirectory": [], - "linterOptions": { - "exclude": ["src/generated/**"] - } -} From ee9b4a9d32eb638d84c8dc065f84d2b222ff9a7b Mon Sep 17 00:00:00 2001 From: Mitch Denny Date: Fri, 5 Jul 2019 15:00:19 -0700 Subject: [PATCH 234/289] Add feature branch triggers. (#4116) --- sdk/core/ci.yml | 2 ++ sdk/cosmosdb/ci.yml | 2 ++ sdk/eventhub/ci.yml | 2 ++ sdk/identity/ci.yml | 2 ++ sdk/keyvault/ci.yml | 2 ++ sdk/servicebus/ci.yml | 2 ++ sdk/storage/ci.yml | 2 ++ sdk/template/ci.yml | 2 ++ 8 files changed, 16 insertions(+) diff --git a/sdk/core/ci.yml b/sdk/core/ci.yml index 6376ecbfe8ae..81d8fb75b6e1 100644 --- a/sdk/core/ci.yml +++ b/sdk/core/ci.yml @@ -5,6 +5,7 @@ trigger: branches: include: - master + - feature/* paths: include: - sdk/core/ @@ -13,6 +14,7 @@ pr: branches: include: - master + - feature/* paths: include: - sdk/core/ diff --git a/sdk/cosmosdb/ci.yml b/sdk/cosmosdb/ci.yml index ec63133629b4..64631ddb6fc0 100644 --- a/sdk/cosmosdb/ci.yml +++ b/sdk/cosmosdb/ci.yml @@ -5,6 +5,7 @@ trigger: branches: include: - master + - feature/* paths: include: - sdk/cosmosdb/ @@ -13,6 +14,7 @@ pr: branches: include: - master + - feature/* paths: include: - sdk/cosmosdb/ diff --git a/sdk/eventhub/ci.yml b/sdk/eventhub/ci.yml index 800360e93b4d..5acd653ad533 100644 --- a/sdk/eventhub/ci.yml +++ b/sdk/eventhub/ci.yml @@ -5,6 +5,7 @@ trigger: branches: include: - master + - feature/* paths: include: - sdk/eventhub/ @@ -13,6 +14,7 @@ pr: branches: include: - master + - feature/* paths: include: - sdk/eventhub/ diff --git a/sdk/identity/ci.yml b/sdk/identity/ci.yml index 5cf01afa4447..f28f46cf07bd 100644 --- a/sdk/identity/ci.yml +++ b/sdk/identity/ci.yml @@ -5,6 +5,7 @@ trigger: branches: include: - master + - feature/* paths: include: - sdk/identity/ @@ -13,6 +14,7 @@ pr: branches: include: - master + - feature/* paths: include: - sdk/identity/ diff --git a/sdk/keyvault/ci.yml b/sdk/keyvault/ci.yml index d158e16ab014..8a5e8bdde1f7 100644 --- a/sdk/keyvault/ci.yml +++ b/sdk/keyvault/ci.yml @@ -5,6 +5,7 @@ trigger: branches: include: - master + - feature/* paths: include: - sdk/keyvault/ @@ -13,6 +14,7 @@ pr: branches: include: - master + - feature/* paths: include: - sdk/keyvault/ diff --git a/sdk/servicebus/ci.yml b/sdk/servicebus/ci.yml index 1464357f8e4b..fd1d72f9699d 100644 --- a/sdk/servicebus/ci.yml +++ b/sdk/servicebus/ci.yml @@ -5,6 +5,7 @@ trigger: branches: include: - master + - feature/* paths: include: - sdk/servicebus/ @@ -13,6 +14,7 @@ pr: branches: include: - master + - feature/* paths: include: - sdk/servicebus/ diff --git a/sdk/storage/ci.yml b/sdk/storage/ci.yml index 4d461415c8ae..3f7e829c9b27 100644 --- a/sdk/storage/ci.yml +++ b/sdk/storage/ci.yml @@ -5,6 +5,7 @@ trigger: branches: include: - master + - feature/* paths: include: - sdk/storage/ @@ -13,6 +14,7 @@ pr: branches: include: - master + - feature/* paths: include: - sdk/storage/ diff --git a/sdk/template/ci.yml b/sdk/template/ci.yml index afc431e05de1..be1edadf1a25 100644 --- a/sdk/template/ci.yml +++ b/sdk/template/ci.yml @@ -5,9 +5,11 @@ trigger: branches: include: - master + - feature/* paths: include: - sdk/template/ + - feature/* pr: branches: From 6516e693900162dd9c90221d117ed03702793146 Mon Sep 17 00:00:00 2001 From: ramya0820 <45977823+ramya0820@users.noreply.github.com> Date: Fri, 5 Jul 2019 16:20:17 -0700 Subject: [PATCH 235/289] [core-amqp] Minor edits to docs (#4184) --- sdk/core/core-amqp/src/retry.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sdk/core/core-amqp/src/retry.ts b/sdk/core/core-amqp/src/retry.ts index 58245b1576c1..debb67e7a6b7 100644 --- a/sdk/core/core-amqp/src/retry.ts +++ b/sdk/core/core-amqp/src/retry.ts @@ -61,7 +61,7 @@ export interface RetryConfig { operationType: RetryOperationType; /** * @property {number} [maxRetries] Number of times the operation needs to be retried in case - * of error. Default: 3. + * of retryable error. Default: 3. */ maxRetries?: number; /** @@ -111,8 +111,8 @@ async function checkNetworkConnection(host: string): Promise { } /** - * Additional attempts are made if the previous attempt failed with a `retryable` error. - * The number of additional attempts is governed by the `maxRetries` property provided + * Every operation is attempted at least once. Additional attempts are made if the previous attempt failed + * with a retryable error. The number of additional attempts is governed by the `maxRetries` property provided * on the `RetryConfig` argument. * * The retries when made are done so linearly on the given operation for a specified number of times, From be8fccf9ea3701bf75f3067fe5938ccfbdd73d29 Mon Sep 17 00:00:00 2001 From: David Wilson Date: Mon, 8 Jul 2019 13:27:09 -0700 Subject: [PATCH 236/289] [Identity] Enable @azure/identity to build for the browser (#4165) * Move credential-specific auth code to individual classes * Don't include ClientCertificateCredential in browser build * Set tsconfig target back to ES5 to enable Rollup browser build * Add @azure/identity browser tests * Stub ManagedIdentityCredential and EnvironmentCredential in the browser * Reorder public/private methods to make eslint happy * Use rollup-plugin-terser to handle ES6 classes in minification * Configure Karma for singleRun * Remove unneeded Karma launcher dependencies * Lift helper methods that don't need to be class methods * Minor Rollup config cleanup * Throw errors from browser-unsupported credential types --- sdk/identity/identity/karma.conf.js | 149 ++++++++++ sdk/identity/identity/package.json | 22 +- sdk/identity/identity/rollup.base.config.js | 15 +- .../identity/src/client/identityClient.ts | 270 +----------------- .../clientCertificateCredential.browser.ts | 27 ++ .../clientCertificateCredential.ts | 91 ++++-- .../src/credentials/clientSecretCredential.ts | 46 +-- .../environmentCredential.browser.ts | 19 ++ .../src/credentials/environmentCredential.ts | 14 +- .../managedIdentityCredential.browser.ts | 22 ++ .../credentials/managedIdentityCredential.ts | 186 +++++++++++- .../test/{credentials => }/authTestUtils.ts | 2 +- .../chainedTokenCredential.spec.ts | 2 +- .../clientSecretCredential.spec.ts | 2 +- .../test/{client => }/identityClient.spec.ts | 16 +- .../clientCertificateCredential.spec.ts | 8 +- .../environmentCredential.spec.ts | 2 +- .../managedIdentityCredential.spec.ts | 4 +- 18 files changed, 549 insertions(+), 348 deletions(-) create mode 100644 sdk/identity/identity/karma.conf.js create mode 100644 sdk/identity/identity/src/credentials/clientCertificateCredential.browser.ts create mode 100644 sdk/identity/identity/src/credentials/environmentCredential.browser.ts create mode 100644 sdk/identity/identity/src/credentials/managedIdentityCredential.browser.ts rename sdk/identity/identity/test/{credentials => }/authTestUtils.ts (98%) rename sdk/identity/identity/test/{credentials => }/chainedTokenCredential.spec.ts (98%) rename sdk/identity/identity/test/{credentials => }/clientSecretCredential.spec.ts (92%) rename sdk/identity/identity/test/{client => }/identityClient.spec.ts (66%) rename sdk/identity/identity/test/{credentials => node}/clientCertificateCredential.spec.ts (88%) rename sdk/identity/identity/test/{credentials => node}/environmentCredential.spec.ts (91%) rename sdk/identity/identity/test/{credentials => node}/managedIdentityCredential.spec.ts (98%) diff --git a/sdk/identity/identity/karma.conf.js b/sdk/identity/identity/karma.conf.js new file mode 100644 index 000000000000..36c56a813ada --- /dev/null +++ b/sdk/identity/identity/karma.conf.js @@ -0,0 +1,149 @@ +// https://github.com/karma-runner/karma-chrome-launcher +process.env.CHROME_BIN = require("puppeteer").executablePath(); +require("dotenv").config({ path: "../.env" }); + +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", + "karma-json-to-file-reporter", + "karma-json-preprocessor" + ], + + // list of files / patterns to load in the browser + files: [ + // polyfill service supporting 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", + "test-browser/index.js", + "recordings/browsers/**/*.json" + ], + + // list of files / patterns to exclude + exclude: [], + + // preprocess matching files before serving them to the browser + // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor + preprocessors: { + "**/*.js": ["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"], + "recordings/browsers/**/*.json": ["json"] + }, + + // 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_MODE"], + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ["mocha", "coverage", "remap-coverage", "junit", "json-to-file"], + + 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 + }, + + jsonToFileReporter: { + filter: function(obj) { + if (obj.writeFile) { + const fs = require("fs-extra"); + // Create the directories recursively incase they don't exist + try { + // Stripping away the filename from the file path and retaining the directory structure + fs.ensureDirSync(obj.path.substring(0, obj.path.lastIndexOf("/") + 1)); + } catch (err) { + if (err.code !== "EEXIST") throw err; + } + fs.writeFile(obj.path, JSON.stringify(obj.content, null, " "), (err) => { + if (err) { + throw err; + } + }); + } + return false; + }, + outputPath: "." + }, + + // web server port + port: 9876, + + // enable / disable colors in the output (reporters and logs) + colors: true, + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: false, + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher + // 'ChromeHeadless', 'Chrome', 'Firefox', 'Edge', 'IE' + browsers: ["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, + browserConsoleLogOptions: { + // IMPORTANT: COMMENT the following line if you want to print debug logs in your browsers in record mode!! + terminal: process.env.TEST_MODE !== "record" + }, + + client: { + mocha: { + // change Karma's debug.html to the mocha web reporter + reporter: "html", + timeout: "600000" + } + } + }); +}; diff --git a/sdk/identity/identity/package.json b/sdk/identity/identity/package.json index 6ef820da71ec..49ba3e0a6c9f 100644 --- a/sdk/identity/identity/package.json +++ b/sdk/identity/identity/package.json @@ -8,6 +8,9 @@ "types": "dist-esm/src/index.d.ts", "browser": { "stream": "./node_modules/stream-browserify/index.js", + "./dist-esm/src/credentials/environmentCredential.js": "./dist-esm/src/credentials/environmentCredential.browser.js", + "./dist-esm/src/credentials/managedIdentityCredential.js": "./dist-esm/src/credentials/managedIdentityCredential.browser.js", + "./dist-esm/src/credentials/clientCertificateCredential.js": "./dist-esm/src/credentials/clientCertificateCredential.browser.js", "./dist/index.js": "./browser/index.js" }, "scripts": { @@ -17,8 +20,8 @@ "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": "npm run build:node", + "build:test": "tsc -p . && rollup -c rollup.test.config.js 2>&1", + "build": "tsc -p . && rollup -c 2>&1", "check-format": "prettier --list-different --config ../../.prettierrc.json \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", "clean": "rimraf dist dist-esm test-dist typings *.tgz *.log", "format": "prettier --write --config ../../.prettierrc.json \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"", @@ -32,7 +35,7 @@ "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:browser": "karma start", "unit-test:node": "mocha test-dist/**/*.js --reporter mocha-multi --reporter-options spec=-,mocha-junit-reporter=-", "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, @@ -84,10 +87,21 @@ "cross-env": "^5.2.0", "eslint": "^5.16.0", "inherits": "^2.0.3", + "karma": "^4.0.1", + "karma-chrome-launcher": "^2.2.0", + "karma-coverage": "^1.1.2", + "karma-env-preprocessor": "^0.1.1", + "karma-json-preprocessor": "^0.3.3", + "karma-json-to-file-reporter": "^1.0.1", + "karma-junit-reporter": "^1.2.0", + "karma-mocha": "^1.3.0", + "karma-mocha-reporter": "^2.2.5", + "karma-remap-coverage": "^0.1.5", "mocha": "^5.2.0", "mocha-junit-reporter": "^1.18.0", "mocha-multi": "^1.0.1", "prettier": "^1.16.4", + "puppeteer": "^1.11.0", "rimraf": "^2.6.2", "rollup": "~1.13.1", "rollup-plugin-commonjs": "^10.0.0", @@ -96,7 +110,7 @@ "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-replace": "^2.1.0", "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-uglify": "^6.0.0", + "rollup-plugin-terser": "^4.0.4", "rollup-plugin-visualizer": "^1.0.0", "typescript": "^3.2.2", "util": "^0.11.1" diff --git a/sdk/identity/identity/rollup.base.config.js b/sdk/identity/identity/rollup.base.config.js index 1eb501c178a8..1043dffd82a2 100644 --- a/sdk/identity/identity/rollup.base.config.js +++ b/sdk/identity/identity/rollup.base.config.js @@ -2,7 +2,7 @@ import nodeResolve from "rollup-plugin-node-resolve"; import multiEntry from "rollup-plugin-multi-entry"; import cjs from "rollup-plugin-commonjs"; import replace from "rollup-plugin-replace"; -import { uglify } from "rollup-plugin-uglify"; +import { terser } from "rollup-plugin-terser"; import sourcemaps from "rollup-plugin-sourcemaps"; import viz from "rollup-plugin-visualizer"; @@ -36,6 +36,7 @@ export function nodeConfig(test = false) { if (test) { // entry point is every test file baseConfig.input = "dist-esm/test/**/*.spec.js"; + baseConfig.input = ["dist-esm/test/*.spec.js", "dist-esm/test/node/*.spec.js"]; baseConfig.plugins.unshift(multiEntry({ exports: false })); // different output file @@ -49,7 +50,7 @@ export function nodeConfig(test = false) { // applies to test code, which causes all tests to be removed by tree-shaking. baseConfig.treeshake = false; } else if (production) { - baseConfig.plugins.push(uglify()); + baseConfig.plugins.push(terser()); } return baseConfig; @@ -58,13 +59,11 @@ export function nodeConfig(test = false) { export function browserConfig(test = false, production = false) { const baseConfig = { input: input, - external: ["@azure/ms-rest-js"], output: { file: "browser/identity.js", format: "umd", - name: "ExampleClient", - sourcemap: true, - globals: { "@azure/ms-rest-js": "msRest" } + name: "Azure.Identity", + sourcemap: true }, preserveSymlinks: false, plugins: [ @@ -93,7 +92,7 @@ export function browserConfig(test = false, production = false) { }; if (test) { - baseConfig.input = "dist-esm/test/**/*.spec.js"; + baseConfig.input = "dist-esm/test/*.spec.js"; baseConfig.plugins.unshift(multiEntry({ exports: false })); baseConfig.output.file = "test-browser/index.js"; @@ -103,7 +102,7 @@ export function browserConfig(test = false, production = false) { baseConfig.treeshake = false; } else if (production) { baseConfig.output.file = "browser/identity.min.js"; - baseConfig.plugins.push(uglify()); + baseConfig.plugins.push(terser()); } return baseConfig; diff --git a/sdk/identity/identity/src/client/identityClient.ts b/sdk/identity/identity/src/client/identityClient.ts index 3a7eb1a19a3b..36bc1cfb7db9 100644 --- a/sdk/identity/identity/src/client/identityClient.ts +++ b/sdk/identity/identity/src/client/identityClient.ts @@ -1,42 +1,34 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import qs from "qs"; -import jws from "jws"; -import uuid from "uuid"; import { AccessToken, ServiceClient, ServiceClientOptions, - GetTokenOptions, WebResource, - RequestPrepareOptions, - RestError + RequestPrepareOptions } from "@azure/core-http"; import { AuthenticationError } from "./errors"; -const SelfSignedJwtLifetimeMins = 10; const DefaultAuthorityHost = "https://login.microsoftonline.com"; -const DefaultScopeSuffix = "/.default"; -export const ImdsEndpoint = "http://169.254.169.254/metadata/identity/oauth2/token"; -export const ImdsApiVersion = "2018-02-01"; -export const AppServiceMsiApiVersion = "2017-09-01"; export class IdentityClient extends ServiceClient { + public authorityHost: string; + constructor(options?: IdentityClientOptions) { options = options || IdentityClient.getDefaultOptions(); super(undefined, options); - this.baseUri = options.authorityHost; + this.baseUri = this.authorityHost = options.authorityHost; } - private createWebResource(requestOptions: RequestPrepareOptions): WebResource { + createWebResource(requestOptions: RequestPrepareOptions): WebResource { const webResource = new WebResource(); webResource.prepare(requestOptions); return webResource; } - private async sendTokenRequest( + async sendTokenRequest( webResource: WebResource, expiresOnParser?: (responseBody: any) => number, ): Promise { @@ -56,256 +48,6 @@ export class IdentityClient extends ServiceClient { } } - private mapScopesToResource(scopes: string | string[]): string { - let scope = ""; - if (Array.isArray(scopes)) { - if (scopes.length !== 1) { - throw "To convert to a resource string the specified array must be exactly length 1"; - } - - scope = scopes[0]; - } else if (typeof scopes === "string") { - scope = scopes; - } - - if (!scope.endsWith(DefaultScopeSuffix)) { - return scope; - } - - return scope.substr(0, scope.lastIndexOf(DefaultScopeSuffix)); - } - - private dateInSeconds(date: Date): number { - return Math.floor(date.getTime() / 1000); - } - - private addMinutes(date: Date, minutes: number): Date { - date.setMinutes(date.getMinutes() + minutes); - return date; - } - - private createImdsAuthRequest(resource: string, clientId?: string): RequestPrepareOptions { - const queryParameters: any = { - resource, - "api-version": ImdsApiVersion - }; - - if (clientId) { - queryParameters.client_id = clientId; - } - - return { - url: ImdsEndpoint, - method: "GET", - queryParameters, - headers: { - Accept: "application/json", - Metadata: true - } - }; - } - - private createAppServiceMsiAuthRequest(resource: string, clientId?: string): RequestPrepareOptions { - const queryParameters: any = { - resource, - "api-version": AppServiceMsiApiVersion, - }; - - if (clientId) { - queryParameters.client_id = clientId; - } - - return { - url: process.env.MSI_ENDPOINT, - method: "GET", - queryParameters, - headers: { - Accept: "application/json", - secret: process.env.MSI_SECRET - } - }; - } - - private createCloudShellMsiAuthRequest(resource: string, clientId?: string): RequestPrepareOptions { - const body: any = { - resource - }; - - if (clientId) { - body.client_id = clientId; - } - - return { - url: process.env.MSI_ENDPOINT, - method: "POST", - body: qs.stringify(body), - headers: { - Accept: "application/json", - Metadata: true, - "Content-Type": "application/x-www-form-urlencoded" - } - }; - } - - private async pingImdsEndpoint(resource: string, clientId?: string): Promise { - const request = this.createImdsAuthRequest(resource, clientId); - - // This will always be populated, but let's make TypeScript happy - if (request.headers) { - // Remove the Metadata header to invoke a request error from - // IMDS endpoint - delete request.headers.Metadata; - } - - // Create a request with a 500 msec timeout since we expect that - // not having a "Metadata" header should cause an error to be - // returned quickly from the endpoint, proving its availability. - const webResource = this.createWebResource(request); - webResource.timeout = 500; - - try { - await this.sendRequest(webResource); - } catch (err) { - if (err instanceof RestError && err.code === RestError.REQUEST_SEND_ERROR) { - // Either request failed or IMDS endpoint isn't available - return false; - } - } - - // If we received any response, the endpoint is available - return true; - } - - authenticateClientSecret( - tenantId: string, - clientId: string, - clientSecret: string, - scopes: string | string[], - getTokenOptions?: GetTokenOptions - ): Promise { - const webResource = this.createWebResource({ - url: `${this.baseUri}/${tenantId}/oauth2/v2.0/token`, - method: "POST", - disableJsonStringifyOnBody: true, - deserializationMapper: undefined, - body: qs.stringify({ - response_type: "token", - grant_type: "client_credentials", - client_id: clientId, - client_secret: clientSecret, - scope: typeof scopes === "string" ? scopes : scopes.join(" ") - }), - headers: { - Accept: "application/json", - "Content-Type": "application/x-www-form-urlencoded" - }, - abortSignal: getTokenOptions && getTokenOptions.abortSignal - }); - - return this.sendTokenRequest(webResource); - } - - async authenticateManagedIdentity( - scopes: string | string[], - checkIfImdsEndpointAvailable: boolean, - clientId?: string, - getTokenOptions?: GetTokenOptions - ): Promise { - let authRequestOptions: RequestPrepareOptions; - const resource = this.mapScopesToResource(scopes); - let expiresInParser: ((requestBody: any) => number) | undefined; - - // Detect which type of environment we are running in - if (process.env.MSI_ENDPOINT) { - if (process.env.MSI_SECRET) { - // Running in App Service - authRequestOptions = this.createAppServiceMsiAuthRequest(resource, clientId); - expiresInParser = (requestBody: any) => { - // Parse a date format like "06/20/2019 02:57:58 +00:00" and - // convert it into a JavaScript-formatted date - const m = requestBody.expires_on.match(/(\d\d)\/(\d\d)\/(\d\d\d\d) (\d\d):(\d\d):(\d\d) (\+|-)(\d\d):(\d\d)/) - return Date.parse(`${m[3]}-${m[1]}-${m[2]}T${m[4]}:${m[5]}:${m[6]}${m[7]}${m[8]}:${m[9]}`) - }; - } else { - // Running in Cloud Shell - authRequestOptions = this.createCloudShellMsiAuthRequest(resource, clientId); - } - } else { - // Ping the IMDS endpoint to see if it's available - if (!checkIfImdsEndpointAvailable || await this.pingImdsEndpoint(resource, clientId)) { - // Running in an Azure VM - authRequestOptions = this.createImdsAuthRequest(resource, clientId); - } else { - // Returning null tells the ManagedIdentityCredential that - // no MSI authentication endpoints are available - return null; - } - } - - const webResource = this.createWebResource({ - disableJsonStringifyOnBody: true, - deserializationMapper: undefined, - abortSignal: getTokenOptions && getTokenOptions.abortSignal, - ...authRequestOptions - }); - - return this.sendTokenRequest(webResource, expiresInParser); - } - - authenticateClientCertificate( - tenantId: string, - clientId: string, - certificateString: string, - certificateX5t: string, - scopes: string | string[], - getTokenOptions?: GetTokenOptions - ): Promise { - const tokenId = uuid.v4(); - const audienceUrl = `${this.baseUri}/${tenantId}/oauth2/v2.0/token`; - const header: jws.Header = { - typ: "JWT", - alg: "RS256", - x5t: certificateX5t - }; - - const payload = { - iss: clientId, - sub: clientId, - aud: audienceUrl, - jti: tokenId, - nbf: this.dateInSeconds(new Date()), - exp: this.dateInSeconds(this.addMinutes(new Date(), SelfSignedJwtLifetimeMins)) - }; - - const clientAssertion = jws.sign({ - header, - payload, - secret: certificateString - }); - - const webResource = this.createWebResource({ - url: audienceUrl, - method: "POST", - disableJsonStringifyOnBody: true, - deserializationMapper: undefined, - body: qs.stringify({ - response_type: "token", - grant_type: "client_credentials", - client_id: clientId, - client_assertion_type: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer", - client_assertion: clientAssertion, - scope: typeof scopes === "string" ? scopes : scopes.join(" ") - }), - headers: { - Accept: "application/json", - "Content-Type": "application/x-www-form-urlencoded" - }, - abortSignal: getTokenOptions && getTokenOptions.abortSignal - }); - - return this.sendTokenRequest(webResource); - } - static getDefaultOptions(): IdentityClientOptions { return { authorityHost: DefaultAuthorityHost diff --git a/sdk/identity/identity/src/credentials/clientCertificateCredential.browser.ts b/sdk/identity/identity/src/credentials/clientCertificateCredential.browser.ts new file mode 100644 index 000000000000..6d999c26a737 --- /dev/null +++ b/sdk/identity/identity/src/credentials/clientCertificateCredential.browser.ts @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { TokenCredential, GetTokenOptions, AccessToken } from "@azure/core-http"; +import { IdentityClientOptions } from "../client/identityClient"; + +const BrowserNotSupportedError = new Error("ClientCertificateCredential is not supported in the browser."); + +export class ClientCertificateCredential implements TokenCredential { + constructor( + tenantId: string, + clientId: string, + certificatePath: string, + options?: IdentityClientOptions + ) { + throw BrowserNotSupportedError; + } + + public getToken( + scopes: string | string[], + options?: GetTokenOptions + ): Promise { + throw BrowserNotSupportedError; + } +} diff --git a/sdk/identity/identity/src/credentials/clientCertificateCredential.ts b/sdk/identity/identity/src/credentials/clientCertificateCredential.ts index 3ea6583d04f5..caff191f47cb 100644 --- a/sdk/identity/identity/src/credentials/clientCertificateCredential.ts +++ b/sdk/identity/identity/src/credentials/clientCertificateCredential.ts @@ -1,32 +1,45 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import qs from "qs"; +import jws from "jws"; +import uuid from "uuid"; import { readFileSync } from "fs"; import { createHash } from "crypto"; import { TokenCredential, GetTokenOptions, AccessToken } from "@azure/core-http"; import { IdentityClientOptions, IdentityClient } from "../client/identityClient"; +const SelfSignedJwtLifetimeMins = 10; + +function timestampInSeconds(date: Date): number { + return Math.floor(date.getTime() / 1000); +} + +function addMinutes(date: Date, minutes: number): Date { + date.setMinutes(date.getMinutes() + minutes); + return date; +} + /** * Enables authentication to Azure Active Directory using a PEM-encoded * certificate that is assigned to an App Registration. More information * on how to configure certificate authentication can be found here: - * + * * https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-certificate-credentials#register-your-certificate-with-azure-ad * */ export class ClientCertificateCredential implements TokenCredential { private identityClient: IdentityClient; - private _tenantId: string; - private _clientId: string; - private _certificateString: string; - - public certificateThumbprint: string; - public certificateX5t: string; + private tenantId: string; + private clientId: string; + private certificateString: string; + private certificateThumbprint: string; + private certificateX5t: string; /** * Creates an instance of the ClientCertificateCredential with the details * needed to authenticate against Azure Active Directory with a certificate. - * + * * @param tenantId The Azure Active Directory tenant (directory) ID. * @param clientId The client (application) ID of an App Registration in the tenant. * @param certificatePath The path to a PEM-encoded public/private key certificate on the filesystem. @@ -39,13 +52,13 @@ export class ClientCertificateCredential implements TokenCredential { options?: IdentityClientOptions ) { this.identityClient = new IdentityClient(options); - this._tenantId = tenantId; - this._clientId = clientId; + this.tenantId = tenantId; + this.clientId = clientId; - this._certificateString = readFileSync(certificatePath, "utf8"); + this.certificateString = readFileSync(certificatePath, "utf8"); const certificatePattern = /(-+BEGIN CERTIFICATE-+)(\n\r?|\r\n?)([A-Za-z0-9+/\n\r]+=*)(\n\r?|\r\n?)(-+END CERTIFICATE-+)/; - const matchCert = this._certificateString.match(certificatePattern); + const matchCert = this.certificateString.match(certificatePattern); const publicKey = matchCert ? matchCert[3] : ""; if (!publicKey) { throw new Error( @@ -66,7 +79,7 @@ export class ClientCertificateCredential implements TokenCredential { * successful. If authentication cannot be performed at this time, this method may * return null. If an error occurs during authentication, an {@link AuthenticationError} * containing failure details will be thrown. - * + * * @param scopes The list of scopes for which the token will have access. * @param options The options used to configure any requests this * TokenCredential implementation might make. @@ -75,13 +88,49 @@ export class ClientCertificateCredential implements TokenCredential { scopes: string | string[], options?: GetTokenOptions ): Promise { - return this.identityClient.authenticateClientCertificate( - this._tenantId, - this._clientId, - this._certificateString, - this.certificateX5t, - scopes, - options - ); + const tokenId = uuid.v4(); + const audienceUrl = `${this.identityClient.authorityHost}/${this.tenantId}/oauth2/v2.0/token`; + const header: jws.Header = { + typ: "JWT", + alg: "RS256", + x5t: this.certificateX5t + }; + + const payload = { + iss: this.clientId, + sub: this.clientId, + aud: audienceUrl, + jti: tokenId, + nbf: timestampInSeconds(new Date()), + exp: timestampInSeconds(addMinutes(new Date(), SelfSignedJwtLifetimeMins)) + }; + + const clientAssertion = jws.sign({ + header, + payload, + secret: this.certificateString + }); + + const webResource = this.identityClient.createWebResource({ + url: audienceUrl, + method: "POST", + disableJsonStringifyOnBody: true, + deserializationMapper: undefined, + body: qs.stringify({ + response_type: "token", + grant_type: "client_credentials", + client_id: this.clientId, + client_assertion_type: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer", + client_assertion: clientAssertion, + scope: typeof scopes === "string" ? scopes : scopes.join(" ") + }), + headers: { + Accept: "application/json", + "Content-Type": "application/x-www-form-urlencoded" + }, + abortSignal: options && options.abortSignal + }); + + return this.identityClient.sendTokenRequest(webResource); } } diff --git a/sdk/identity/identity/src/credentials/clientSecretCredential.ts b/sdk/identity/identity/src/credentials/clientSecretCredential.ts index 695fd48729e6..ad78975a2edc 100644 --- a/sdk/identity/identity/src/credentials/clientSecretCredential.ts +++ b/sdk/identity/identity/src/credentials/clientSecretCredential.ts @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +import qs from "qs"; import { TokenCredential, GetTokenOptions, AccessToken } from "@azure/core-http"; import { IdentityClientOptions, IdentityClient } from "../client/identityClient"; @@ -8,21 +9,21 @@ import { IdentityClientOptions, IdentityClient } from "../client/identityClient" * Enables authentication to Azure Active Directory using a client secret * that was generated for an App Registration. More information on how * to configure a client secret can be found here: - * + * * https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-configure-app-access-web-apis#add-credentials-to-your-web-application * */ export class ClientSecretCredential implements TokenCredential { private identityClient: IdentityClient; - private _tenantId: string; - private _clientId: string; - private _clientSecret: string; + private tenantId: string; + private clientId: string; + private clientSecret: string; /** * Creates an instance of the ClientSecretCredential with the details * needed to authenticate against Azure Active Directory with a client * secret. - * + * * @param tenantId The Azure Active Directory tenant (directory) ID. * @param clientId The client (application) ID of an App Registration in the tenant. * @param clientSecret A client secret that was generated for the App Registration. @@ -35,9 +36,9 @@ export class ClientSecretCredential implements TokenCredential { options?: IdentityClientOptions ) { this.identityClient = new IdentityClient(options); - this._tenantId = tenantId; - this._clientId = clientId; - this._clientSecret = clientSecret; + this.tenantId = tenantId; + this.clientId = clientId; + this.clientSecret = clientSecret; } /** @@ -45,7 +46,7 @@ export class ClientSecretCredential implements TokenCredential { * successful. If authentication cannot be performed at this time, this method may * return null. If an error occurs during authentication, an {@link AuthenticationError} * containing failure details will be thrown. - * + * * @param scopes The list of scopes for which the token will have access. * @param options The options used to configure any requests this * TokenCredential implementation might make. @@ -54,12 +55,25 @@ export class ClientSecretCredential implements TokenCredential { scopes: string | string[], options?: GetTokenOptions ): Promise { - return this.identityClient.authenticateClientSecret( - this._tenantId, - this._clientId, - this._clientSecret, - scopes, - options - ); + const webResource = this.identityClient.createWebResource({ + url: `${this.identityClient.authorityHost}/${this.tenantId}/oauth2/v2.0/token`, + method: "POST", + disableJsonStringifyOnBody: true, + deserializationMapper: undefined, + body: qs.stringify({ + response_type: "token", + grant_type: "client_credentials", + client_id: this.clientId, + client_secret: this.clientSecret, + scope: typeof scopes === "string" ? scopes : scopes.join(" ") + }), + headers: { + Accept: "application/json", + "Content-Type": "application/x-www-form-urlencoded" + }, + abortSignal: options && options.abortSignal + }); + + return this.identityClient.sendTokenRequest(webResource); } } diff --git a/sdk/identity/identity/src/credentials/environmentCredential.browser.ts b/sdk/identity/identity/src/credentials/environmentCredential.browser.ts new file mode 100644 index 000000000000..54eb1cc7b578 --- /dev/null +++ b/sdk/identity/identity/src/credentials/environmentCredential.browser.ts @@ -0,0 +1,19 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { AccessToken, TokenCredential, GetTokenOptions } from "@azure/core-http"; +import { IdentityClientOptions } from "../client/identityClient"; + +const BrowserNotSupportedError = new Error("EnvironmentCredential is not supported in the browser."); + +export class EnvironmentCredential implements TokenCredential { + constructor(options?: IdentityClientOptions) { + throw BrowserNotSupportedError; + } + + getToken(scopes: string | string[], options?: GetTokenOptions): Promise { + throw BrowserNotSupportedError; + } +} diff --git a/sdk/identity/identity/src/credentials/environmentCredential.ts b/sdk/identity/identity/src/credentials/environmentCredential.ts index b72976e9068f..e56a0dca2c9a 100644 --- a/sdk/identity/identity/src/credentials/environmentCredential.ts +++ b/sdk/identity/identity/src/credentials/environmentCredential.ts @@ -1,18 +1,18 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { AccessToken, TokenCredential, isNode, GetTokenOptions } from "@azure/core-http"; +import { AccessToken, TokenCredential, GetTokenOptions } from "@azure/core-http"; import { IdentityClientOptions } from "../client/identityClient"; import { ClientSecretCredential } from "./clientSecretCredential"; /** * Enables authentication to Azure Active Directory using client secret * details configured in the following environment variables: - * + * * - AZURE_TENANT_ID: The Azure Active Directory tenant (directory) ID. * - AZURE_CLIENT_ID: The client (application) ID of an App Registration in the tenant. * - AZURE_CLIENT_SECRET: A client secret that was generated for the App Registration. - * + * * This credential ultimately uses a {@link ClientSecretCredential} to * perform the authentication using these details. Please consult the * documentation of that class for more details. @@ -24,14 +24,10 @@ export class EnvironmentCredential implements TokenCredential { * client secret details from environment variables. If the expected * environment variables are not found at this time, the getToken method * will return null when invoked. - * + * * @param options Options for configuring the client which makes the authentication request. */ constructor(options?: IdentityClientOptions) { - if (!isNode) { - throw "EnvironmentCredential is only supported when running in Node.js."; - } - const tenantId = process.env.AZURE_TENANT_ID, clientId = process.env.AZURE_CLIENT_ID, clientSecret = process.env.AZURE_CLIENT_SECRET; @@ -46,7 +42,7 @@ export class EnvironmentCredential implements TokenCredential { * successful. If authentication cannot be performed at this time, this method may * return null. If an error occurs during authentication, an {@link AuthenticationError} * containing failure details will be thrown. - * + * * @param scopes The list of scopes for which the token will have access. * @param options The options used to configure any requests this * TokenCredential implementation might make. diff --git a/sdk/identity/identity/src/credentials/managedIdentityCredential.browser.ts b/sdk/identity/identity/src/credentials/managedIdentityCredential.browser.ts new file mode 100644 index 000000000000..dc44b0554fff --- /dev/null +++ b/sdk/identity/identity/src/credentials/managedIdentityCredential.browser.ts @@ -0,0 +1,22 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +/* eslint-disable @typescript-eslint/no-unused-vars */ + +import { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-http"; +import { IdentityClientOptions } from "../client/identityClient"; + +const BrowserNotSupportedError = new Error("ManagedIdentityCredential is not supported in the browser."); + +export class ManagedIdentityCredential implements TokenCredential { + constructor(clientId?: string, options?: IdentityClientOptions) { + throw BrowserNotSupportedError; + } + + public async getToken( + scopes: string | string[], + options?: GetTokenOptions + ): Promise { + throw BrowserNotSupportedError; + } +} diff --git a/sdk/identity/identity/src/credentials/managedIdentityCredential.ts b/sdk/identity/identity/src/credentials/managedIdentityCredential.ts index 0050c91c7649..64e38dc059fa 100644 --- a/sdk/identity/identity/src/credentials/managedIdentityCredential.ts +++ b/sdk/identity/identity/src/credentials/managedIdentityCredential.ts @@ -1,26 +1,196 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { AccessToken, GetTokenOptions, TokenCredential } from "@azure/core-http"; +import qs from "qs"; +import { + AccessToken, + GetTokenOptions, + RequestPrepareOptions, + RestError, + TokenCredential +} from "@azure/core-http"; import { IdentityClientOptions, IdentityClient } from "../client/identityClient"; +const DefaultScopeSuffix = "/.default"; +export const ImdsEndpoint = "http://169.254.169.254/metadata/identity/oauth2/token"; +export const ImdsApiVersion = "2018-02-01"; +export const AppServiceMsiApiVersion = "2017-09-01"; + /** * Attempts authentication using a managed identity that has been assigned * to the deployment environment. This authentication type works in Azure VMs, * App Service and Azure Functions applications, and inside of Azure Cloud Shell. - * + * * More information about configuring managed identities can be found here: - * + * * https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview */ export class ManagedIdentityCredential implements TokenCredential { private identityClient: IdentityClient; - private _clientId: string | undefined; + private clientId: string | undefined; private isEndpointUnavailable: boolean | null = null; constructor(clientId?: string, options?: IdentityClientOptions) { this.identityClient = new IdentityClient(options); - this._clientId = clientId; + this.clientId = clientId; + } + + private mapScopesToResource(scopes: string | string[]): string { + let scope = ""; + if (Array.isArray(scopes)) { + if (scopes.length !== 1) { + throw "To convert to a resource string the specified array must be exactly length 1"; + } + + scope = scopes[0]; + } else if (typeof scopes === "string") { + scope = scopes; + } + + if (!scope.endsWith(DefaultScopeSuffix)) { + return scope; + } + + return scope.substr(0, scope.lastIndexOf(DefaultScopeSuffix)); + } + + private createImdsAuthRequest(resource: string, clientId?: string): RequestPrepareOptions { + const queryParameters: any = { + resource, + "api-version": ImdsApiVersion + }; + + if (clientId) { + queryParameters.client_id = clientId; + } + + return { + url: ImdsEndpoint, + method: "GET", + queryParameters, + headers: { + Accept: "application/json", + Metadata: true + } + }; + } + + private createAppServiceMsiAuthRequest(resource: string, clientId?: string): RequestPrepareOptions { + const queryParameters: any = { + resource, + "api-version": AppServiceMsiApiVersion, + }; + + if (clientId) { + queryParameters.client_id = clientId; + } + + return { + url: process.env.MSI_ENDPOINT, + method: "GET", + queryParameters, + headers: { + Accept: "application/json", + secret: process.env.MSI_SECRET + } + }; + } + + private createCloudShellMsiAuthRequest(resource: string, clientId?: string): RequestPrepareOptions { + const body: any = { + resource + }; + + if (clientId) { + body.client_id = clientId; + } + + return { + url: process.env.MSI_ENDPOINT, + method: "POST", + body: qs.stringify(body), + headers: { + Accept: "application/json", + Metadata: true, + "Content-Type": "application/x-www-form-urlencoded" + } + }; + } + + private async pingImdsEndpoint(resource: string, clientId?: string): Promise { + const request = this.createImdsAuthRequest(resource, clientId); + + // This will always be populated, but let's make TypeScript happy + if (request.headers) { + // Remove the Metadata header to invoke a request error from + // IMDS endpoint + delete request.headers.Metadata; + } + + // Create a request with a 500 msec timeout since we expect that + // not having a "Metadata" header should cause an error to be + // returned quickly from the endpoint, proving its availability. + const webResource = this.identityClient.createWebResource(request); + webResource.timeout = 500; + + try { + await this.identityClient.sendRequest(webResource); + } catch (err) { + if (err instanceof RestError && err.code === RestError.REQUEST_SEND_ERROR) { + // Either request failed or IMDS endpoint isn't available + return false; + } + } + + // If we received any response, the endpoint is available + return true; + } + + private async authenticateManagedIdentity( + scopes: string | string[], + checkIfImdsEndpointAvailable: boolean, + clientId?: string, + getTokenOptions?: GetTokenOptions + ): Promise { + let authRequestOptions: RequestPrepareOptions; + const resource = this.mapScopesToResource(scopes); + let expiresInParser: ((requestBody: any) => number) | undefined; + + // Detect which type of environment we are running in + if (process.env.MSI_ENDPOINT) { + if (process.env.MSI_SECRET) { + // Running in App Service + authRequestOptions = this.createAppServiceMsiAuthRequest(resource, clientId); + expiresInParser = (requestBody: any) => { + // Parse a date format like "06/20/2019 02:57:58 +00:00" and + // convert it into a JavaScript-formatted date + const m = requestBody.expires_on.match(/(\d\d)\/(\d\d)\/(\d\d\d\d) (\d\d):(\d\d):(\d\d) (\+|-)(\d\d):(\d\d)/) + return Date.parse(`${m[3]}-${m[1]}-${m[2]}T${m[4]}:${m[5]}:${m[6]}${m[7]}${m[8]}:${m[9]}`) + }; + } else { + // Running in Cloud Shell + authRequestOptions = this.createCloudShellMsiAuthRequest(resource, clientId); + } + } else { + // Ping the IMDS endpoint to see if it's available + if (!checkIfImdsEndpointAvailable || await this.pingImdsEndpoint(resource, clientId)) { + // Running in an Azure VM + authRequestOptions = this.createImdsAuthRequest(resource, clientId); + } else { + // Returning null tells the ManagedIdentityCredential that + // no MSI authentication endpoints are available + return null; + } + } + + const webResource = this.identityClient.createWebResource({ + disableJsonStringifyOnBody: true, + deserializationMapper: undefined, + abortSignal: getTokenOptions && getTokenOptions.abortSignal, + ...authRequestOptions + }); + + return this.identityClient.sendTokenRequest(webResource, expiresInParser); } /** @@ -28,7 +198,7 @@ export class ManagedIdentityCredential implements TokenCredential { * successful. If authentication cannot be performed at this time, this method may * return null. If an error occurs during authentication, an {@link AuthenticationError} * containing failure details will be thrown. - * + * * @param scopes The list of scopes for which the token will have access. * @param options The options used to configure any requests this * TokenCredential implementation might make. @@ -44,10 +214,10 @@ export class ManagedIdentityCredential implements TokenCredential { // the endpoint is available and need to check for it. if (this.isEndpointUnavailable !== true) { result = - await this.identityClient.authenticateManagedIdentity( + await this.authenticateManagedIdentity( scopes, this.isEndpointUnavailable === null, - this._clientId, + this.clientId, options); // If authenticateManagedIdentity returns null, it means no MSI diff --git a/sdk/identity/identity/test/credentials/authTestUtils.ts b/sdk/identity/identity/test/authTestUtils.ts similarity index 98% rename from sdk/identity/identity/test/credentials/authTestUtils.ts rename to sdk/identity/identity/test/authTestUtils.ts index f8bccfb309ca..fdb798ab00fc 100644 --- a/sdk/identity/identity/test/credentials/authTestUtils.ts +++ b/sdk/identity/identity/test/authTestUtils.ts @@ -2,7 +2,7 @@ // Licensed under the MIT License. import assert from "assert"; -import { IdentityClientOptions } from "../../src"; +import { IdentityClientOptions } from "../src"; import { HttpHeaders, HttpOperationResponse, WebResource, HttpClient, delay, RestError } from "@azure/core-http"; export interface MockAuthResponse { diff --git a/sdk/identity/identity/test/credentials/chainedTokenCredential.spec.ts b/sdk/identity/identity/test/chainedTokenCredential.spec.ts similarity index 98% rename from sdk/identity/identity/test/credentials/chainedTokenCredential.spec.ts rename to sdk/identity/identity/test/chainedTokenCredential.spec.ts index 0eba79558636..e9818e3174f9 100644 --- a/sdk/identity/identity/test/credentials/chainedTokenCredential.spec.ts +++ b/sdk/identity/identity/test/chainedTokenCredential.spec.ts @@ -8,7 +8,7 @@ import { TokenCredential, AccessToken, AggregateAuthenticationError -} from "../../src"; +} from "../src"; function mockCredential(returnPromise: Promise): TokenCredential { return { diff --git a/sdk/identity/identity/test/credentials/clientSecretCredential.spec.ts b/sdk/identity/identity/test/clientSecretCredential.spec.ts similarity index 92% rename from sdk/identity/identity/test/credentials/clientSecretCredential.spec.ts rename to sdk/identity/identity/test/clientSecretCredential.spec.ts index 0ad4b5a2319c..6a8cd1c8fe50 100644 --- a/sdk/identity/identity/test/credentials/clientSecretCredential.spec.ts +++ b/sdk/identity/identity/test/clientSecretCredential.spec.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { ClientSecretCredential } from "../../src"; +import { ClientSecretCredential } from "../src"; import { MockAuthHttpClient, assertClientCredentials } from "./authTestUtils"; describe("ClientSecretCredential", function () { diff --git a/sdk/identity/identity/test/client/identityClient.spec.ts b/sdk/identity/identity/test/identityClient.spec.ts similarity index 66% rename from sdk/identity/identity/test/client/identityClient.spec.ts rename to sdk/identity/identity/test/identityClient.spec.ts index 7a869e123bf9..3188cff742b5 100644 --- a/sdk/identity/identity/test/client/identityClient.spec.ts +++ b/sdk/identity/identity/test/identityClient.spec.ts @@ -2,10 +2,10 @@ // Licensed under the MIT License. import assert from "assert"; -import { assertRejects } from "../credentials/authTestUtils"; -import { IdentityClient } from "../../src/client/identityClient"; -import { MockAuthHttpClient } from "../credentials/authTestUtils"; -import { AuthenticationError } from "../../src/"; +import { assertRejects } from "./authTestUtils"; +import { MockAuthHttpClient } from "./authTestUtils"; +import { AuthenticationError } from "../src/"; +import { ClientSecretCredential } from "../src"; function isExpectedError(expectedErrorName: string): (error: any) => boolean { return (error: any) => { @@ -24,10 +24,10 @@ describe("IdentityClient", function () { bodyAsText: `{ "error": "test_error", "error_description": "This is a test error" }` } }); - const client = new IdentityClient(mockHttp.identityClientOptions); + const credential = new ClientSecretCredential("tenant", "client", "secret", mockHttp.identityClientOptions); await assertRejects( - client.authenticateClientSecret("tenant", "client", "secret", "https://test/.default"), + credential.getToken("https://test/.default"), error => { assert.strictEqual(error.name, 'AuthenticationError') return true; @@ -43,9 +43,9 @@ describe("IdentityClient", function () { } }); - const client = new IdentityClient(mockHttp.identityClientOptions); + const credential = new ClientSecretCredential("tenant", "client", "secret", mockHttp.identityClientOptions); await assertRejects( - client.authenticateClientSecret("tenant", "client", "secret", "https://test/.default"), + credential.getToken("https://test/.default"), isExpectedError("unknown_error") ); }); diff --git a/sdk/identity/identity/test/credentials/clientCertificateCredential.spec.ts b/sdk/identity/identity/test/node/clientCertificateCredential.spec.ts similarity index 88% rename from sdk/identity/identity/test/credentials/clientCertificateCredential.spec.ts rename to sdk/identity/identity/test/node/clientCertificateCredential.spec.ts index 1010577d00f4..7015b67b6461 100644 --- a/sdk/identity/identity/test/credentials/clientCertificateCredential.spec.ts +++ b/sdk/identity/identity/test/node/clientCertificateCredential.spec.ts @@ -6,7 +6,7 @@ import jws from "jws"; import path from "path"; import assert from "assert"; import { ClientCertificateCredential } from "../../src"; -import { MockAuthHttpClient } from "./authTestUtils"; +import { MockAuthHttpClient } from "../authTestUtils"; describe("ClientCertificateCredential", function () { it("loads a PEM-formatted certificate from a file", () => { @@ -17,11 +17,11 @@ describe("ClientCertificateCredential", function () { ); assert.strictEqual( - credential.certificateThumbprint, + (credential as any).certificateThumbprint, "47080F3BAA6BF8DF068531106FBCF2DC6E5F6919" ); - assert.strictEqual(credential.certificateX5t, "RwgPO6pr+N8GhTEQb7zy3G5faRk="); + assert.strictEqual((credential as any).certificateX5t, "RwgPO6pr+N8GhTEQb7zy3G5faRk="); }); it("throws when given a file that doesn't contain a PEM-formatted certificate", () => { @@ -66,7 +66,7 @@ describe("ClientCertificateCredential", function () { const queryParams = qs.parse(authRequest.body); const jwtToken = jws.decode(queryParams.client_assertion); - assert.strictEqual(jwtToken.header.x5t, credential.certificateX5t); + assert.strictEqual(jwtToken.header.x5t, (credential as any).certificateX5t); assert.strictEqual(jwtToken.payload.iss, clientId); assert.strictEqual(jwtToken.payload.sub, clientId); assert.strictEqual( diff --git a/sdk/identity/identity/test/credentials/environmentCredential.spec.ts b/sdk/identity/identity/test/node/environmentCredential.spec.ts similarity index 91% rename from sdk/identity/identity/test/credentials/environmentCredential.spec.ts rename to sdk/identity/identity/test/node/environmentCredential.spec.ts index 17e30d93166b..f33c5c6705f6 100644 --- a/sdk/identity/identity/test/credentials/environmentCredential.spec.ts +++ b/sdk/identity/identity/test/node/environmentCredential.spec.ts @@ -2,7 +2,7 @@ // Licensed under the MIT License. import { EnvironmentCredential } from "../../src"; -import { MockAuthHttpClient, assertClientCredentials } from "./authTestUtils"; +import { MockAuthHttpClient, assertClientCredentials } from "../authTestUtils"; describe("EnvironmentCredential", function () { it("finds and uses client credential environment variables", async () => { diff --git a/sdk/identity/identity/test/credentials/managedIdentityCredential.spec.ts b/sdk/identity/identity/test/node/managedIdentityCredential.spec.ts similarity index 98% rename from sdk/identity/identity/test/credentials/managedIdentityCredential.spec.ts rename to sdk/identity/identity/test/node/managedIdentityCredential.spec.ts index a97b0184ebfb..a0c6768c6710 100644 --- a/sdk/identity/identity/test/credentials/managedIdentityCredential.spec.ts +++ b/sdk/identity/identity/test/node/managedIdentityCredential.spec.ts @@ -4,8 +4,8 @@ import qs from "qs"; import assert from "assert"; import { ManagedIdentityCredential } from "../../src"; -import { ImdsEndpoint, ImdsApiVersion, AppServiceMsiApiVersion } from "../../src/client/identityClient"; -import { MockAuthHttpClient, MockAuthHttpClientOptions } from "./authTestUtils"; +import { ImdsEndpoint, ImdsApiVersion, AppServiceMsiApiVersion } from "../../src/credentials/managedIdentityCredential"; +import { MockAuthHttpClient, MockAuthHttpClientOptions } from "../authTestUtils"; import { WebResource, AccessToken } from "@azure/core-http"; interface AuthRequestDetails { From f05a31cdc518af7ecb3d6865740702f434548ed3 Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Mon, 8 Jul 2019 14:17:39 -0700 Subject: [PATCH 237/289] Generate @azure/arm-hanaonazure package (#4198) * Generate @azure/arm-hanaonazure package * Bump the version --- sdk/hanaonazure/arm-hanaonazure/package.json | 2 +- .../src/hanaManagementClient.ts | 2 + .../src/hanaManagementClientContext.ts | 2 +- .../src/models/hanaInstancesMappers.ts | 1 + .../arm-hanaonazure/src/models/index.ts | 168 ++++++++ .../arm-hanaonazure/src/models/mappers.ts | 82 ++++ .../arm-hanaonazure/src/models/parameters.ts | 10 + .../src/models/sapMonitorsMappers.ts | 23 ++ .../src/operations/hanaInstances.ts | 110 ++++- .../arm-hanaonazure/src/operations/index.ts | 1 + .../src/operations/sapMonitors.ts | 387 ++++++++++++++++++ 11 files changed, 785 insertions(+), 3 deletions(-) create mode 100644 sdk/hanaonazure/arm-hanaonazure/src/models/sapMonitorsMappers.ts create mode 100644 sdk/hanaonazure/arm-hanaonazure/src/operations/sapMonitors.ts diff --git a/sdk/hanaonazure/arm-hanaonazure/package.json b/sdk/hanaonazure/arm-hanaonazure/package.json index e986bb3a1b13..317ea53f5a65 100644 --- a/sdk/hanaonazure/arm-hanaonazure/package.json +++ b/sdk/hanaonazure/arm-hanaonazure/package.json @@ -2,7 +2,7 @@ "name": "@azure/arm-hanaonazure", "author": "Microsoft Corporation", "description": "HanaManagementClient Library with typescript type definitions for node.js and browser.", - "version": "2.1.0", + "version": "2.2.0", "dependencies": { "@azure/ms-rest-azure-js": "^1.3.2", "@azure/ms-rest-js": "^1.8.1", diff --git a/sdk/hanaonazure/arm-hanaonazure/src/hanaManagementClient.ts b/sdk/hanaonazure/arm-hanaonazure/src/hanaManagementClient.ts index 28c3c6a8d833..29c571d53465 100644 --- a/sdk/hanaonazure/arm-hanaonazure/src/hanaManagementClient.ts +++ b/sdk/hanaonazure/arm-hanaonazure/src/hanaManagementClient.ts @@ -19,6 +19,7 @@ class HanaManagementClient extends HanaManagementClientContext { // Operation groups operations: operations.Operations; hanaInstances: operations.HanaInstances; + sapMonitors: operations.SapMonitors; /** * Initializes a new instance of the HanaManagementClient class. @@ -31,6 +32,7 @@ class HanaManagementClient extends HanaManagementClientContext { super(credentials, subscriptionId, options); this.operations = new operations.Operations(this); this.hanaInstances = new operations.HanaInstances(this); + this.sapMonitors = new operations.SapMonitors(this); } } diff --git a/sdk/hanaonazure/arm-hanaonazure/src/hanaManagementClientContext.ts b/sdk/hanaonazure/arm-hanaonazure/src/hanaManagementClientContext.ts index 88f8094902b8..53ddc364cd6b 100644 --- a/sdk/hanaonazure/arm-hanaonazure/src/hanaManagementClientContext.ts +++ b/sdk/hanaonazure/arm-hanaonazure/src/hanaManagementClientContext.ts @@ -13,7 +13,7 @@ import * as msRest from "@azure/ms-rest-js"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-hanaonazure"; -const packageVersion = "2.1.0"; +const packageVersion = "2.2.0"; export class HanaManagementClientContext extends msRestAzure.AzureServiceClient { credentials: msRest.ServiceClientCredentials; diff --git a/sdk/hanaonazure/arm-hanaonazure/src/models/hanaInstancesMappers.ts b/sdk/hanaonazure/arm-hanaonazure/src/models/hanaInstancesMappers.ts index 92b373154c52..f8776c0508d7 100644 --- a/sdk/hanaonazure/arm-hanaonazure/src/models/hanaInstancesMappers.ts +++ b/sdk/hanaonazure/arm-hanaonazure/src/models/hanaInstancesMappers.ts @@ -19,6 +19,7 @@ export { NetworkProfile, OSProfile, Resource, + SapMonitor, StorageProfile, Tags } from "../models/mappers"; diff --git a/sdk/hanaonazure/arm-hanaonazure/src/models/index.ts b/sdk/hanaonazure/arm-hanaonazure/src/models/index.ts index f62763694a3a..57895bf273d7 100644 --- a/sdk/hanaonazure/arm-hanaonazure/src/models/index.ts +++ b/sdk/hanaonazure/arm-hanaonazure/src/models/index.ts @@ -306,6 +306,42 @@ export interface MonitoringDetails { hanaDbPassword?: string; } +/** + * SAP monitor info on Azure (ARM properties and SAP monitor properties) + */ +export interface SapMonitor extends Resource { + /** + * Specifies the SAP monitor unique ID. + */ + hanaSubnet?: string; + /** + * Hostname of the HANA instance. + */ + hanaHostname?: string; + /** + * Database name of the HANA instance. + */ + hanaDbName?: string; + /** + * Database port of the HANA instance. + */ + hanaDbSqlPort?: number; + /** + * Database username of the HANA instance. + */ + hanaDbUsername?: string; + /** + * Database password of the HANA instance. + */ + hanaDbPassword?: string; + /** + * State of provisioning of the HanaInstance. Possible values include: 'Accepted', 'Creating', + * 'Updating', 'Failed', 'Succeeded', 'Deleting', 'Migrating' + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly provisioningState?: HanaProvisioningStatesEnum; +} + /** * An interface representing HanaManagementClientOptions. */ @@ -333,6 +369,18 @@ export interface HanaInstancesListResult extends Array { nextLink?: string; } +/** + * @interface + * The response from the List SAP monitors operation. + * @extends Array + */ +export interface SapMonitorListResult extends Array { + /** + * The URL to get the next set of SAP monitors. + */ + nextLink?: string; +} + /** * Defines values for HanaHardwareTypeNamesEnum. * Possible values include: 'Cisco_UCS', 'HPE' @@ -547,3 +595,123 @@ export type HanaInstancesListByResourceGroupNextResponse = HanaInstancesListResu parsedBody: HanaInstancesListResult; }; }; + +/** + * Contains response data for the list operation. + */ +export type SapMonitorsListResponse = SapMonitorListResult & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: SapMonitorListResult; + }; +}; + +/** + * Contains response data for the get operation. + */ +export type SapMonitorsGetResponse = SapMonitor & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: SapMonitor; + }; +}; + +/** + * Contains response data for the create operation. + */ +export type SapMonitorsCreateResponse = SapMonitor & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: SapMonitor; + }; +}; + +/** + * Contains response data for the update operation. + */ +export type SapMonitorsUpdateResponse = SapMonitor & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: SapMonitor; + }; +}; + +/** + * Contains response data for the beginCreate operation. + */ +export type SapMonitorsBeginCreateResponse = SapMonitor & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: SapMonitor; + }; +}; + +/** + * Contains response data for the listNext operation. + */ +export type SapMonitorsListNextResponse = SapMonitorListResult & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: SapMonitorListResult; + }; +}; diff --git a/sdk/hanaonazure/arm-hanaonazure/src/models/mappers.ts b/sdk/hanaonazure/arm-hanaonazure/src/models/mappers.ts index d820a06e1431..d60e194bc69a 100644 --- a/sdk/hanaonazure/arm-hanaonazure/src/models/mappers.ts +++ b/sdk/hanaonazure/arm-hanaonazure/src/models/mappers.ts @@ -462,6 +462,60 @@ export const MonitoringDetails: msRest.CompositeMapper = { } }; +export const SapMonitor: msRest.CompositeMapper = { + serializedName: "SapMonitor", + type: { + name: "Composite", + className: "SapMonitor", + modelProperties: { + ...Resource.type.modelProperties, + hanaSubnet: { + serializedName: "properties.hanaSubnet", + type: { + name: "String" + } + }, + hanaHostname: { + serializedName: "properties.hanaHostname", + type: { + name: "String" + } + }, + hanaDbName: { + serializedName: "properties.hanaDbName", + type: { + name: "String" + } + }, + hanaDbSqlPort: { + serializedName: "properties.hanaDbSqlPort", + type: { + name: "Number" + } + }, + hanaDbUsername: { + serializedName: "properties.hanaDbUsername", + type: { + name: "String" + } + }, + hanaDbPassword: { + serializedName: "properties.hanaDbPassword", + type: { + name: "String" + } + }, + provisioningState: { + readOnly: true, + serializedName: "properties.provisioningState", + type: { + name: "String" + } + } + } + } +}; + export const OperationList: msRest.CompositeMapper = { serializedName: "OperationList", type: { @@ -511,3 +565,31 @@ export const HanaInstancesListResult: msRest.CompositeMapper = { } } }; + +export const SapMonitorListResult: msRest.CompositeMapper = { + serializedName: "SapMonitorListResult", + type: { + name: "Composite", + className: "SapMonitorListResult", + modelProperties: { + value: { + serializedName: "", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "SapMonitor" + } + } + } + }, + nextLink: { + serializedName: "nextLink", + type: { + name: "String" + } + } + } + } +}; diff --git a/sdk/hanaonazure/arm-hanaonazure/src/models/parameters.ts b/sdk/hanaonazure/arm-hanaonazure/src/models/parameters.ts index 99b4f44ffa5f..3f362383f381 100644 --- a/sdk/hanaonazure/arm-hanaonazure/src/models/parameters.ts +++ b/sdk/hanaonazure/arm-hanaonazure/src/models/parameters.ts @@ -61,6 +61,16 @@ export const resourceGroupName: msRest.OperationURLParameter = { } } }; +export const sapMonitorName: msRest.OperationURLParameter = { + parameterPath: "sapMonitorName", + mapper: { + required: true, + serializedName: "sapMonitorName", + type: { + name: "String" + } + } +}; export const subscriptionId: msRest.OperationURLParameter = { parameterPath: "subscriptionId", mapper: { diff --git a/sdk/hanaonazure/arm-hanaonazure/src/models/sapMonitorsMappers.ts b/sdk/hanaonazure/arm-hanaonazure/src/models/sapMonitorsMappers.ts new file mode 100644 index 000000000000..9da8ccf84683 --- /dev/null +++ b/sdk/hanaonazure/arm-hanaonazure/src/models/sapMonitorsMappers.ts @@ -0,0 +1,23 @@ +/* + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. + */ + +export { + BaseResource, + Disk, + ErrorResponse, + HanaInstance, + HardwareProfile, + IpAddress, + NetworkProfile, + OSProfile, + Resource, + SapMonitor, + SapMonitorListResult, + StorageProfile, + Tags +} from "../models/mappers"; diff --git a/sdk/hanaonazure/arm-hanaonazure/src/operations/hanaInstances.ts b/sdk/hanaonazure/arm-hanaonazure/src/operations/hanaInstances.ts index 3c2f5d5785d4..8c319781d7b1 100644 --- a/sdk/hanaonazure/arm-hanaonazure/src/operations/hanaInstances.ts +++ b/sdk/hanaonazure/arm-hanaonazure/src/operations/hanaInstances.ts @@ -194,6 +194,30 @@ export class HanaInstances { .then(lroPoller => lroPoller.pollUntilFinished()); } + /** + * The operation to start a SAP HANA instance. + * @param resourceGroupName Name of the resource group. + * @param hanaInstanceName Name of the SAP HANA on Azure instance. + * @param [options] The optional parameters + * @returns Promise + */ + start(resourceGroupName: string, hanaInstanceName: string, options?: msRest.RequestOptionsBase): Promise { + return this.beginStart(resourceGroupName,hanaInstanceName,options) + .then(lroPoller => lroPoller.pollUntilFinished()); + } + + /** + * The operation to shutdown a SAP HANA instance. + * @param resourceGroupName Name of the resource group. + * @param hanaInstanceName Name of the SAP HANA on Azure instance. + * @param [options] The optional parameters + * @returns Promise + */ + shutdown(resourceGroupName: string, hanaInstanceName: string, options?: msRest.RequestOptionsBase): Promise { + return this.beginShutdown(resourceGroupName,hanaInstanceName,options) + .then(lroPoller => lroPoller.pollUntilFinished()); + } + /** * The operation to add a monitor to an SAP HANA instance. * @param resourceGroupName Name of the resource group. @@ -265,6 +289,42 @@ export class HanaInstances { options); } + /** + * The operation to start a SAP HANA instance. + * @param resourceGroupName Name of the resource group. + * @param hanaInstanceName Name of the SAP HANA on Azure instance. + * @param [options] The optional parameters + * @returns Promise + */ + beginStart(resourceGroupName: string, hanaInstanceName: string, options?: msRest.RequestOptionsBase): Promise { + return this.client.sendLRORequest( + { + resourceGroupName, + hanaInstanceName, + options + }, + beginStartOperationSpec, + options); + } + + /** + * The operation to shutdown a SAP HANA instance. + * @param resourceGroupName Name of the resource group. + * @param hanaInstanceName Name of the SAP HANA on Azure instance. + * @param [options] The optional parameters + * @returns Promise + */ + beginShutdown(resourceGroupName: string, hanaInstanceName: string, options?: msRest.RequestOptionsBase): Promise { + return this.client.sendLRORequest( + { + resourceGroupName, + hanaInstanceName, + options + }, + beginShutdownOperationSpec, + options); + } + /** * The operation to add a monitor to an SAP HANA instance. * @param resourceGroupName Name of the resource group. @@ -530,7 +590,55 @@ const beginRestartOperationSpec: msRest.OperationSpec = { 200: {}, 202: {}, default: { - bodyMapper: Mappers.CloudError + bodyMapper: Mappers.ErrorResponse + } + }, + serializer +}; + +const beginStartOperationSpec: msRest.OperationSpec = { + httpMethod: "POST", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HanaOnAzure/hanaInstances/{hanaInstanceName}/start", + urlParameters: [ + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.hanaInstanceName + ], + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: {}, + 202: {}, + default: { + bodyMapper: Mappers.ErrorResponse + } + }, + serializer +}; + +const beginShutdownOperationSpec: msRest.OperationSpec = { + httpMethod: "POST", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HanaOnAzure/hanaInstances/{hanaInstanceName}/shutdown", + urlParameters: [ + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.hanaInstanceName + ], + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: {}, + 202: {}, + default: { + bodyMapper: Mappers.ErrorResponse } }, serializer diff --git a/sdk/hanaonazure/arm-hanaonazure/src/operations/index.ts b/sdk/hanaonazure/arm-hanaonazure/src/operations/index.ts index abcb11a14b13..3d0d939c0761 100644 --- a/sdk/hanaonazure/arm-hanaonazure/src/operations/index.ts +++ b/sdk/hanaonazure/arm-hanaonazure/src/operations/index.ts @@ -10,3 +10,4 @@ export * from "./operations"; export * from "./hanaInstances"; +export * from "./sapMonitors"; diff --git a/sdk/hanaonazure/arm-hanaonazure/src/operations/sapMonitors.ts b/sdk/hanaonazure/arm-hanaonazure/src/operations/sapMonitors.ts new file mode 100644 index 000000000000..7726f577bf80 --- /dev/null +++ b/sdk/hanaonazure/arm-hanaonazure/src/operations/sapMonitors.ts @@ -0,0 +1,387 @@ +/* + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is + * regenerated. + */ + +import * as msRest from "@azure/ms-rest-js"; +import * as msRestAzure from "@azure/ms-rest-azure-js"; +import * as Models from "../models"; +import * as Mappers from "../models/sapMonitorsMappers"; +import * as Parameters from "../models/parameters"; +import { HanaManagementClientContext } from "../hanaManagementClientContext"; + +/** Class representing a SapMonitors. */ +export class SapMonitors { + private readonly client: HanaManagementClientContext; + + /** + * Create a SapMonitors. + * @param {HanaManagementClientContext} client Reference to the service client. + */ + constructor(client: HanaManagementClientContext) { + this.client = client; + } + + /** + * Gets a list of SAP monitors in the specified subscription. The operations returns various + * properties of each SAP monitor. + * @summary Gets a list of SAP monitors in the specified subscription. + * @param [options] The optional parameters + * @returns Promise + */ + list(options?: msRest.RequestOptionsBase): Promise; + /** + * @param callback The callback + */ + list(callback: msRest.ServiceCallback): void; + /** + * @param options The optional parameters + * @param callback The callback + */ + list(options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + list(options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + options + }, + listOperationSpec, + callback) as Promise; + } + + /** + * Gets properties of a SAP monitor for the specified subscription, resource group, and resource + * name. + * @summary Gets properties of a SAP monitor. + * @param resourceGroupName Name of the resource group. + * @param sapMonitorName Name of the SAP monitor resource. + * @param [options] The optional parameters + * @returns Promise + */ + get(resourceGroupName: string, sapMonitorName: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName Name of the resource group. + * @param sapMonitorName Name of the SAP monitor resource. + * @param callback The callback + */ + get(resourceGroupName: string, sapMonitorName: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the resource group. + * @param sapMonitorName Name of the SAP monitor resource. + * @param options The optional parameters + * @param callback The callback + */ + get(resourceGroupName: string, sapMonitorName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + get(resourceGroupName: string, sapMonitorName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + sapMonitorName, + options + }, + getOperationSpec, + callback) as Promise; + } + + /** + * Creates a SAP monitor for the specified subscription, resource group, and resource name. + * @summary Creates a SAP monitor. + * @param resourceGroupName Name of the resource group. + * @param sapMonitorName Name of the SAP monitor resource. + * @param sapMonitorParameter Request body representing a SAP Monitor + * @param [options] The optional parameters + * @returns Promise + */ + create(resourceGroupName: string, sapMonitorName: string, sapMonitorParameter: Models.SapMonitor, options?: msRest.RequestOptionsBase): Promise { + return this.beginCreate(resourceGroupName,sapMonitorName,sapMonitorParameter,options) + .then(lroPoller => lroPoller.pollUntilFinished()) as Promise; + } + + /** + * Deletes a SAP monitor with the specified subscription, resource group, and monitor name. + * @summary Deletes a SAP monitor. + * @param resourceGroupName Name of the resource group. + * @param sapMonitorName Name of the SAP monitor resource. + * @param [options] The optional parameters + * @returns Promise + */ + deleteMethod(resourceGroupName: string, sapMonitorName: string, options?: msRest.RequestOptionsBase): Promise { + return this.beginDeleteMethod(resourceGroupName,sapMonitorName,options) + .then(lroPoller => lroPoller.pollUntilFinished()); + } + + /** + * Patches the Tags field of a SAP monitor for the specified subscription, resource group, and + * monitor name. + * @summary Patches the Tags field of a SAP monitor. + * @param resourceGroupName Name of the resource group. + * @param sapMonitorName Name of the SAP monitor resource. + * @param tagsParameter Request body that only contains the new Tags field + * @param [options] The optional parameters + * @returns Promise + */ + update(resourceGroupName: string, sapMonitorName: string, tagsParameter: Models.Tags, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName Name of the resource group. + * @param sapMonitorName Name of the SAP monitor resource. + * @param tagsParameter Request body that only contains the new Tags field + * @param callback The callback + */ + update(resourceGroupName: string, sapMonitorName: string, tagsParameter: Models.Tags, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the resource group. + * @param sapMonitorName Name of the SAP monitor resource. + * @param tagsParameter Request body that only contains the new Tags field + * @param options The optional parameters + * @param callback The callback + */ + update(resourceGroupName: string, sapMonitorName: string, tagsParameter: Models.Tags, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + update(resourceGroupName: string, sapMonitorName: string, tagsParameter: Models.Tags, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + sapMonitorName, + tagsParameter, + options + }, + updateOperationSpec, + callback) as Promise; + } + + /** + * Creates a SAP monitor for the specified subscription, resource group, and resource name. + * @summary Creates a SAP monitor. + * @param resourceGroupName Name of the resource group. + * @param sapMonitorName Name of the SAP monitor resource. + * @param sapMonitorParameter Request body representing a SAP Monitor + * @param [options] The optional parameters + * @returns Promise + */ + beginCreate(resourceGroupName: string, sapMonitorName: string, sapMonitorParameter: Models.SapMonitor, options?: msRest.RequestOptionsBase): Promise { + return this.client.sendLRORequest( + { + resourceGroupName, + sapMonitorName, + sapMonitorParameter, + options + }, + beginCreateOperationSpec, + options); + } + + /** + * Deletes a SAP monitor with the specified subscription, resource group, and monitor name. + * @summary Deletes a SAP monitor. + * @param resourceGroupName Name of the resource group. + * @param sapMonitorName Name of the SAP monitor resource. + * @param [options] The optional parameters + * @returns Promise + */ + beginDeleteMethod(resourceGroupName: string, sapMonitorName: string, options?: msRest.RequestOptionsBase): Promise { + return this.client.sendLRORequest( + { + resourceGroupName, + sapMonitorName, + options + }, + beginDeleteMethodOperationSpec, + options); + } + + /** + * Gets a list of SAP monitors in the specified subscription. The operations returns various + * properties of each SAP monitor. + * @summary Gets a list of SAP monitors in the specified subscription. + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param [options] The optional parameters + * @returns Promise + */ + listNext(nextPageLink: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param callback The callback + */ + listNext(nextPageLink: string, callback: msRest.ServiceCallback): void; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param options The optional parameters + * @param callback The callback + */ + listNext(nextPageLink: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + listNext(nextPageLink: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + nextPageLink, + options + }, + listNextOperationSpec, + callback) as Promise; + } +} + +// Operation Specifications +const serializer = new msRest.Serializer(Mappers); +const listOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + path: "subscriptions/{subscriptionId}/providers/Microsoft.HanaOnAzure/sapMonitors", + urlParameters: [ + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.SapMonitorListResult + }, + default: { + bodyMapper: Mappers.ErrorResponse + } + }, + serializer +}; + +const getOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HanaOnAzure/sapMonitors/{sapMonitorName}", + urlParameters: [ + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.sapMonitorName + ], + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.SapMonitor + }, + default: { + bodyMapper: Mappers.ErrorResponse + } + }, + serializer +}; + +const updateOperationSpec: msRest.OperationSpec = { + httpMethod: "PATCH", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HanaOnAzure/sapMonitors/{sapMonitorName}", + urlParameters: [ + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.sapMonitorName + ], + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + requestBody: { + parameterPath: "tagsParameter", + mapper: { + ...Mappers.Tags, + required: true + } + }, + responses: { + 200: { + bodyMapper: Mappers.SapMonitor + }, + default: { + bodyMapper: Mappers.ErrorResponse + } + }, + serializer +}; + +const beginCreateOperationSpec: msRest.OperationSpec = { + httpMethod: "PUT", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HanaOnAzure/sapMonitors/{sapMonitorName}", + urlParameters: [ + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.sapMonitorName + ], + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + requestBody: { + parameterPath: "sapMonitorParameter", + mapper: { + ...Mappers.SapMonitor, + required: true + } + }, + responses: { + 200: { + bodyMapper: Mappers.SapMonitor + }, + 201: { + bodyMapper: Mappers.SapMonitor + }, + default: { + bodyMapper: Mappers.ErrorResponse + } + }, + serializer +}; + +const beginDeleteMethodOperationSpec: msRest.OperationSpec = { + httpMethod: "DELETE", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HanaOnAzure/sapMonitors/{sapMonitorName}", + urlParameters: [ + Parameters.subscriptionId, + Parameters.resourceGroupName, + Parameters.sapMonitorName + ], + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: {}, + 202: {}, + 204: {}, + default: { + bodyMapper: Mappers.ErrorResponse + } + }, + serializer +}; + +const listNextOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + baseUrl: "https://management.azure.com", + path: "{nextLink}", + urlParameters: [ + Parameters.nextPageLink + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.SapMonitorListResult + }, + default: { + bodyMapper: Mappers.ErrorResponse + } + }, + serializer +}; From 7901f4c683b1a9d91a535a8da6ecd74ee67075bb Mon Sep 17 00:00:00 2001 From: Kamil Pajdzik <41709775+kpajdzik@users.noreply.github.com> Date: Mon, 8 Jul 2019 14:29:55 -0700 Subject: [PATCH 238/289] Generate @azure/arm-sqlvirtualmachine package (#4197) * Generate @azure/arm-sqlvirtualmachine package * Bump the version --- .../arm-sqlvirtualmachine/package.json | 2 +- .../arm-sqlvirtualmachine/src/models/index.ts | 15 +++++++++++++-- .../arm-sqlvirtualmachine/src/models/mappers.ts | 7 ++++++- .../sqlVirtualMachineManagementClientContext.ts | 2 +- 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/sdk/sqlvirtualmachine/arm-sqlvirtualmachine/package.json b/sdk/sqlvirtualmachine/arm-sqlvirtualmachine/package.json index d5c0a0340cdb..e8df7457a3da 100644 --- a/sdk/sqlvirtualmachine/arm-sqlvirtualmachine/package.json +++ b/sdk/sqlvirtualmachine/arm-sqlvirtualmachine/package.json @@ -2,7 +2,7 @@ "name": "@azure/arm-sqlvirtualmachine", "author": "Microsoft Corporation", "description": "SqlVirtualMachineManagementClient Library with typescript type definitions for node.js and browser.", - "version": "3.0.0", + "version": "3.1.0", "dependencies": { "@azure/ms-rest-azure-js": "^1.3.2", "@azure/ms-rest-js": "^1.8.1", diff --git a/sdk/sqlvirtualmachine/arm-sqlvirtualmachine/src/models/index.ts b/sdk/sqlvirtualmachine/arm-sqlvirtualmachine/src/models/index.ts index f6a67baaaae9..dd3ae6259d22 100644 --- a/sdk/sqlvirtualmachine/arm-sqlvirtualmachine/src/models/index.ts +++ b/sdk/sqlvirtualmachine/arm-sqlvirtualmachine/src/models/index.ts @@ -507,13 +507,16 @@ export interface SqlVirtualMachine extends TrackedResource { readonly provisioningState?: string; /** * SQL image offer. Examples include SQL2016-WS2016, SQL2017-WS2016. - * **NOTE: This property will not be serialized. It can only be populated by the server.** */ - readonly sqlImageOffer?: string; + sqlImageOffer?: string; /** * SQL Server license type. Possible values include: 'PAYG', 'AHUB' */ sqlServerLicenseType?: SqlServerLicenseType; + /** + * SQL Server Management type. Possible values include: 'Full', 'LightWeight', 'NoAgent' + */ + sqlManagement?: SqlManagementMode; /** * SQL Server edition type. Possible values include: 'Developer', 'Express', 'Standard', * 'Enterprise', 'Web' @@ -681,6 +684,14 @@ export type IdentityType = 'SystemAssigned'; */ export type SqlServerLicenseType = 'PAYG' | 'AHUB'; +/** + * Defines values for SqlManagementMode. + * Possible values include: 'Full', 'LightWeight', 'NoAgent' + * @readonly + * @enum {string} + */ +export type SqlManagementMode = 'Full' | 'LightWeight' | 'NoAgent'; + /** * Defines values for SqlImageSku. * Possible values include: 'Developer', 'Express', 'Standard', 'Enterprise', 'Web' diff --git a/sdk/sqlvirtualmachine/arm-sqlvirtualmachine/src/models/mappers.ts b/sdk/sqlvirtualmachine/arm-sqlvirtualmachine/src/models/mappers.ts index 682db523af4b..8660ecae2d8f 100644 --- a/sdk/sqlvirtualmachine/arm-sqlvirtualmachine/src/models/mappers.ts +++ b/sdk/sqlvirtualmachine/arm-sqlvirtualmachine/src/models/mappers.ts @@ -801,7 +801,6 @@ export const SqlVirtualMachine: msRest.CompositeMapper = { } }, sqlImageOffer: { - readOnly: true, serializedName: "properties.sqlImageOffer", type: { name: "String" @@ -813,6 +812,12 @@ export const SqlVirtualMachine: msRest.CompositeMapper = { name: "String" } }, + sqlManagement: { + serializedName: "properties.sqlManagement", + type: { + name: "String" + } + }, sqlImageSku: { serializedName: "properties.sqlImageSku", type: { diff --git a/sdk/sqlvirtualmachine/arm-sqlvirtualmachine/src/sqlVirtualMachineManagementClientContext.ts b/sdk/sqlvirtualmachine/arm-sqlvirtualmachine/src/sqlVirtualMachineManagementClientContext.ts index e8f5eac626a3..0c87045a9436 100644 --- a/sdk/sqlvirtualmachine/arm-sqlvirtualmachine/src/sqlVirtualMachineManagementClientContext.ts +++ b/sdk/sqlvirtualmachine/arm-sqlvirtualmachine/src/sqlVirtualMachineManagementClientContext.ts @@ -13,7 +13,7 @@ import * as msRest from "@azure/ms-rest-js"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-sqlvirtualmachine"; -const packageVersion = "3.0.0"; +const packageVersion = "3.1.0"; export class SqlVirtualMachineManagementClientContext extends msRestAzure.AzureServiceClient { credentials: msRest.ServiceClientCredentials; From 2103d89f4e8c62385802cb921164a9040822a608 Mon Sep 17 00:00:00 2001 From: David Wilson Date: Mon, 8 Jul 2019 15:14:41 -0700 Subject: [PATCH 239/289] [core-http] Use an external token cache in BearerTokenAuthenticationPolicy (#4174) * Use an external token cache in BearerTokenAuthenticationPolicy * Redesign AccessTokenCache, add ExpiringAccessTokenCache class * Add tests for ExpiringAccessTokenCache --- sdk/core/core-http/lib/coreHttp.ts | 1 + .../lib/credentials/accessTokenCache.ts | 61 +++++++++++++++++++ .../bearerTokenAuthenticationPolicy.ts | 24 ++++---- .../test/expiringAccessTokenCacheTests.ts | 39 ++++++++++++ .../bearerTokenAuthenticationPolicyTests.ts | 6 +- 5 files changed, 116 insertions(+), 15 deletions(-) create mode 100644 sdk/core/core-http/lib/credentials/accessTokenCache.ts create mode 100644 sdk/core/core-http/test/expiringAccessTokenCacheTests.ts diff --git a/sdk/core/core-http/lib/coreHttp.ts b/sdk/core/core-http/lib/coreHttp.ts index 04a989000ce1..10161bc8ab2d 100644 --- a/sdk/core/core-http/lib/coreHttp.ts +++ b/sdk/core/core-http/lib/coreHttp.ts @@ -44,6 +44,7 @@ export { URLBuilder, URLQuery } from "./url"; // Credentials export { TokenCredential, GetTokenOptions, AccessToken, isTokenCredential } from "@azure/core-auth"; +export { AccessTokenCache, ExpiringAccessTokenCache } from "./credentials/accessTokenCache"; export { TokenCredentials } from "./credentials/tokenCredentials"; export { BasicAuthenticationCredentials } from "./credentials/basicAuthenticationCredentials"; export { ApiKeyCredentials, ApiKeyCredentialOptions } from "./credentials/apiKeyCredentials"; diff --git a/sdk/core/core-http/lib/credentials/accessTokenCache.ts b/sdk/core/core-http/lib/credentials/accessTokenCache.ts new file mode 100644 index 000000000000..d97b8e6c08e6 --- /dev/null +++ b/sdk/core/core-http/lib/credentials/accessTokenCache.ts @@ -0,0 +1,61 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { AccessToken } from "@azure/core-auth"; + +/** + * Defines the default token refresh buffer duration. + */ +export const TokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes + +/** + * Provides a cache for an AccessToken that was that + * was returned from a TokenCredential. + */ +export interface AccessTokenCache { + /** + * Sets the cached token. + * + * @param The {@link AccessToken} to be cached or null to + * clear the cached token. + */ + setCachedToken(accessToken: AccessToken | undefined): void; + + /** + * Returns the cached {@link AccessToken} or undefined if nothing is cached. + */ + getCachedToken(): AccessToken | undefined; +} + +/** + * Provides an {@link AccessTokenCache} implementation which clears + * the cached {@link AccessToken}'s after the expiresOnTimestamp has + * passed. + */ +export class ExpiringAccessTokenCache implements AccessTokenCache { + private tokenRefreshBufferMs: number; + private cachedToken?: AccessToken = undefined; + + /** + * Constructs an instance of {@link ExpiringAccessTokenCache} with + * an optional expiration buffer time. + */ + constructor(tokenRefreshBufferMs: number = TokenRefreshBufferMs) { + this.tokenRefreshBufferMs = tokenRefreshBufferMs; + } + + setCachedToken(accessToken: AccessToken | undefined): void { + this.cachedToken = accessToken; + } + + getCachedToken(): AccessToken | undefined { + if ( + this.cachedToken && + Date.now() + this.tokenRefreshBufferMs >= this.cachedToken.expiresOnTimestamp + ) { + this.cachedToken = undefined; + } + + return this.cachedToken; + } +} diff --git a/sdk/core/core-http/lib/policies/bearerTokenAuthenticationPolicy.ts b/sdk/core/core-http/lib/policies/bearerTokenAuthenticationPolicy.ts index e474ab967fb9..58784def0674 100644 --- a/sdk/core/core-http/lib/policies/bearerTokenAuthenticationPolicy.ts +++ b/sdk/core/core-http/lib/policies/bearerTokenAuthenticationPolicy.ts @@ -1,14 +1,13 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -import { TokenCredential, AccessToken, GetTokenOptions } from "@azure/core-auth"; +import { TokenCredential, GetTokenOptions } from "@azure/core-auth"; import { BaseRequestPolicy, RequestPolicy, RequestPolicyOptions, RequestPolicyFactory } from "../policies/requestPolicy"; import { Constants } from "../util/constants"; import { HttpOperationResponse } from "../httpOperationResponse"; import { HttpHeaders, } from "../httpHeaders"; import { WebResource } from "../webResource"; - -export const TokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes +import { AccessTokenCache, ExpiringAccessTokenCache } from "../credentials/accessTokenCache"; /** * Creates a new BearerTokenAuthenticationPolicy factory. @@ -17,9 +16,10 @@ export const TokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes * @param scopes The scopes for which the bearer token applies. */ export function bearerTokenAuthenticationPolicy(credential: TokenCredential, scopes: string | string[]): RequestPolicyFactory { + const tokenCache: AccessTokenCache = new ExpiringAccessTokenCache(); return { create: (nextPolicy: RequestPolicy, options: RequestPolicyOptions) => { - return new BearerTokenAuthenticationPolicy(nextPolicy, options, credential, scopes); + return new BearerTokenAuthenticationPolicy(nextPolicy, options, credential, scopes, tokenCache); } }; } @@ -32,8 +32,6 @@ export function bearerTokenAuthenticationPolicy(credential: TokenCredential, sco * */ export class BearerTokenAuthenticationPolicy extends BaseRequestPolicy { - private cachedToken: AccessToken | undefined = undefined; - /** * Creates a new BearerTokenAuthenticationPolicy object. * @@ -41,12 +39,14 @@ export class BearerTokenAuthenticationPolicy extends BaseRequestPolicy { * @param options Options for this RequestPolicy. * @param credential The TokenCredential implementation that can supply the bearer token. * @param scopes The scopes for which the bearer token applies. + * @param tokenCache The cache for the most recent AccessToken returned from the TokenCredential. */ constructor( nextPolicy: RequestPolicy, options: RequestPolicyOptions, private credential: TokenCredential, private scopes: string | string[], + private tokenCache: AccessTokenCache ) { super(nextPolicy, options); } @@ -70,14 +70,12 @@ export class BearerTokenAuthenticationPolicy extends BaseRequestPolicy { } private async getToken(options: GetTokenOptions): Promise { - if ( - this.cachedToken && - Date.now() + TokenRefreshBufferMs < this.cachedToken.expiresOnTimestamp - ) { - return this.cachedToken.token; + let accessToken = this.tokenCache.getCachedToken(); + if (accessToken === undefined) { + accessToken = await this.credential.getToken(this.scopes, options) || undefined; + this.tokenCache.setCachedToken(accessToken); } - this.cachedToken = (await this.credential.getToken(this.scopes, options)) || undefined; - return this.cachedToken ? this.cachedToken.token : undefined; + return accessToken ? accessToken.token : undefined; } } diff --git a/sdk/core/core-http/test/expiringAccessTokenCacheTests.ts b/sdk/core/core-http/test/expiringAccessTokenCacheTests.ts new file mode 100644 index 000000000000..3eafe6e91e03 --- /dev/null +++ b/sdk/core/core-http/test/expiringAccessTokenCacheTests.ts @@ -0,0 +1,39 @@ +import { assert } from "chai"; +import { ExpiringAccessTokenCache } from "../lib/credentials/accessTokenCache"; + +function mockToken(expirationDeltaMs: number) { + return { + token: "token", + expiresOnTimestamp: Date.now() + expirationDeltaMs + }; +} + +describe("ExpiringAccessTokenCache", function () { + it("returns a cached token within the expiration window", function() { + const tokenCache = new ExpiringAccessTokenCache(2000); + const accessToken = mockToken(5000); + tokenCache.setCachedToken(accessToken); + + const cachedToken = tokenCache.getCachedToken(); + assert.isDefined(cachedToken, "A cached token was not returned!"); + }); + + it("returns undefined when refresh buffer is passed", function() { + const tokenCache = new ExpiringAccessTokenCache(5000); + const accessToken = mockToken(-5000); + tokenCache.setCachedToken(accessToken); + + const cachedToken = tokenCache.getCachedToken(); + assert.isUndefined(cachedToken, "A cached token was returned!"); + }); + + it("clears the cached token when undefined is passed to setCachedToken", function() { + const tokenCache = new ExpiringAccessTokenCache(2000); + const accessToken = mockToken(5000); + tokenCache.setCachedToken(accessToken); + tokenCache.setCachedToken(undefined); + + const cachedToken = tokenCache.getCachedToken(); + assert.isUndefined(cachedToken, "A cached token was returned!"); + }); +}); diff --git a/sdk/core/core-http/test/policies/bearerTokenAuthenticationPolicyTests.ts b/sdk/core/core-http/test/policies/bearerTokenAuthenticationPolicyTests.ts index f90dbee44152..cd3a432a11bb 100644 --- a/sdk/core/core-http/test/policies/bearerTokenAuthenticationPolicyTests.ts +++ b/sdk/core/core-http/test/policies/bearerTokenAuthenticationPolicyTests.ts @@ -10,7 +10,8 @@ import { Constants } from "../../lib/util/constants"; import { HttpOperationResponse } from "../../lib/httpOperationResponse"; import { HttpHeaders, } from "../../lib/httpHeaders"; import { WebResource } from "../../lib/webResource"; -import { BearerTokenAuthenticationPolicy, TokenRefreshBufferMs } from "../../lib/policies/bearerTokenAuthenticationPolicy"; +import { BearerTokenAuthenticationPolicy } from "../../lib/policies/bearerTokenAuthenticationPolicy"; +import { ExpiringAccessTokenCache, TokenRefreshBufferMs } from "../../lib/credentials/accessTokenCache"; describe("BearerTokenAuthenticationPolicy", function () { const mockPolicy: RequestPolicy = { @@ -76,7 +77,8 @@ describe("BearerTokenAuthenticationPolicy", function () { mockPolicy, new RequestPolicyOptions(), credential, - scopes); + scopes, + new ExpiringAccessTokenCache()); } }); From 4544bbfedd1510d3de2b76b61049369466b39329 Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Mon, 8 Jul 2019 15:31:40 -0700 Subject: [PATCH 240/289] Update dev dependency "rollup" to latest (#4079) - "rollup" was previously pinned to 1.13.1 due to a regression in 1.14.0 - rollup/rollup#2970 - The regression is fixed in 1.16.3 - https://github.com/rollup/rollup/blob/master/CHANGELOG.md#1163 - Fixes #3484 --- common/config/rush/pnpm-lock.yaml | 365 +++++++++--------- sdk/core/abort-controller/package.json | 2 +- sdk/core/core-amqp/package.json | 2 +- sdk/core/core-auth/package.json | 2 +- sdk/core/core-http/package.json | 4 +- sdk/eventhub/event-hubs/package.json | 2 +- .../event-processor-host/package.json | 2 +- sdk/identity/identity/package.json | 2 +- .../keyvault-certificates/package.json | 2 +- sdk/keyvault/keyvault-keys/package.json | 2 +- sdk/keyvault/keyvault-secrets/package.json | 2 +- sdk/servicebus/service-bus/package.json | 2 +- sdk/storage/storage-blob/package.json | 2 +- sdk/storage/storage-datalake/package.json | 2 +- sdk/storage/storage-file/package.json | 2 +- sdk/storage/storage-queue/package.json | 2 +- sdk/template/template/package.json | 2 +- 17 files changed, 195 insertions(+), 204 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index f4a94519f812..ec4563bf2321 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -94,7 +94,7 @@ dependencies: glob: 7.1.4 gulp: 4.0.2 gulp-zip: 4.2.0 - https-proxy-agent: 2.2.1 + https-proxy-agent: 2.2.2 inherits: 2.0.4 is-buffer: 2.0.3 jssha: 2.3.1 @@ -143,7 +143,7 @@ dependencies: rhea: 1.0.8 rhea-promise: 0.1.15 rimraf: 2.6.3 - rollup: 1.13.1 + rollup: 1.16.6 rollup-plugin-alias: 1.5.2 rollup-plugin-commonjs: 10.0.1 rollup-plugin-inject: 2.2.0 @@ -177,7 +177,7 @@ dependencies: url: 0.11.0 util: 0.11.1 uuid: 3.3.2 - webpack: 4.35.2 + webpack: 4.35.3 webpack-cli: 3.3.5 webpack-dev-middleware: 3.7.0 ws: 6.2.1 @@ -632,10 +632,10 @@ packages: dev: false resolution: integrity: sha512-OthuN+2FuzfZO3yONJ/QVjKmLEuRagS9TV9lEId+WHL9KhftYG+/2z+pxlr0UgVVXSpVD8woie/3fzQn8ft/Ow== - /@types/node/12.0.12: + /@types/node/12.6.0: dev: false resolution: - integrity: sha512-Uy0PN4R5vgBUXFoJrKryf5aTk3kJ8Rv3PdlHjl6UaX+Cqp1QE0yPQ68MPXGrZOfG7gZVNDIJZYyot0B9ubXUrQ== + integrity: sha512-dVeOVH/lhZ2Cki5Emh0aKeXUcWG1+EDTkqyzdgPe0ZjzgvBhzSFlogc6rm8uUd0I+XGK5fcp9DsMv5Wofe0/3w== /@types/node/8.10.50: dev: false resolution: @@ -1006,14 +1006,6 @@ packages: node: '>= 0.6' resolution: integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - /acorn-dynamic-import/4.0.0_acorn@6.2.0: - dependencies: - acorn: 6.2.0 - dev: false - peerDependencies: - acorn: ^6.0.0 - resolution: - integrity: sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== /acorn-jsx/5.0.1_acorn@6.2.0: dependencies: acorn: 6.2.0 @@ -1070,23 +1062,23 @@ packages: node: '>= 4.0.0' resolution: integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== - /ajv-errors/1.0.1_ajv@6.10.0: + /ajv-errors/1.0.1_ajv@6.10.1: dependencies: - ajv: 6.10.0 + ajv: 6.10.1 dev: false peerDependencies: ajv: '>=5.0.0' resolution: integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - /ajv-keywords/3.4.0_ajv@6.10.0: + /ajv-keywords/3.4.1_ajv@6.10.1: dependencies: - ajv: 6.10.0 + ajv: 6.10.1 dev: false peerDependencies: ajv: ^6.9.1 resolution: - integrity: sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw== - /ajv/6.10.0: + integrity: sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== + /ajv/6.10.1: dependencies: fast-deep-equal: 2.0.1 fast-json-stable-stringify: 2.0.0 @@ -1094,7 +1086,7 @@ packages: uri-js: 4.2.2 dev: false resolution: - integrity: sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== + integrity: sha512-w1YQaVGNC6t2UCPjEawK/vo/dG8OOrVtUmhBT1uJJYxbl5kU2Tj3v6LGqBcsysN1yhuCStJCCA3GqdvKY8sqXQ== /amdefine/1.0.1: dev: false engines: @@ -2203,8 +2195,8 @@ packages: integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== /browserslist/3.2.8: dependencies: - caniuse-lite: 1.0.30000980 - electron-to-chromium: 1.3.187 + caniuse-lite: 1.0.30000981 + electron-to-chromium: 1.3.188 dev: false hasBin: true resolution: @@ -2392,10 +2384,10 @@ packages: node: '>=6' resolution: integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - /caniuse-lite/1.0.30000980: + /caniuse-lite/1.0.30000981: dev: false resolution: - integrity: sha512-as0PRtWHaX3gl2gpC7qA7bX88lr+qLacMMXm1QKLLQtBCwT/Ljbgrv5EXKMNBoeEX6yFZ4vIsBb4Nh+PEwW2Rw== + integrity: sha512-JTByHj4DQgL2crHNMK6PibqAMrqqb/Vvh0JrsTJVSWG4VSUrT16EklkuRZofurlMjgA9e+zlCM4Y39F3kootMQ== /caseless/0.12.0: dev: false resolution: @@ -3302,10 +3294,10 @@ packages: dev: false resolution: integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - /electron-to-chromium/1.3.187: + /electron-to-chromium/1.3.188: dev: false resolution: - integrity: sha512-XCEygaK7Fs35/RwS+67YbBWs/ydG+oUFPuy1wv558jC3Opd2DHwRyRqrCmhxpmPmCSVlZujYX4TOmOXuMz2GZA== + integrity: sha512-tEQcughYIMj8WDMc59EGEtNxdGgwal/oLLTDw+NEqJRJwGflQvH3aiyiexrWeZOETP4/ko78PVr6gwNhdozvuQ== /elliptic/6.5.0: dependencies: bn.js: 4.11.8 @@ -3591,7 +3583,7 @@ packages: /eslint/5.16.0: dependencies: '@babel/code-frame': 7.0.0 - ajv: 6.10.0 + ajv: 6.10.1 chalk: 2.4.2 cross-spawn: 6.0.5 debug: 4.1.1 @@ -3860,7 +3852,7 @@ packages: dev: false resolution: integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - /external-editor/3.0.3: + /external-editor/3.1.0: dependencies: chardet: 0.7.0 iconv-lite: 0.4.24 @@ -3869,7 +3861,7 @@ packages: engines: node: '>=4' resolution: - integrity: sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== + integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== /extglob/2.0.4: dependencies: array-unique: 0.3.2 @@ -4691,7 +4683,7 @@ packages: integrity: sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= /har-validator/5.1.3: dependencies: - ajv: 6.10.0 + ajv: 6.10.1 har-schema: 2.0.0 dev: false engines: @@ -4896,7 +4888,7 @@ packages: dev: false resolution: integrity: sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - /https-proxy-agent/2.2.1: + /https-proxy-agent/2.2.2: dependencies: agent-base: 4.3.0 debug: 3.2.6 @@ -4904,7 +4896,7 @@ packages: engines: node: '>= 4.5.0' resolution: - integrity: sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== + integrity: sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg== /iconv-lite/0.2.11: dev: false engines: @@ -5019,7 +5011,7 @@ packages: chalk: 2.4.2 cli-cursor: 2.1.0 cli-width: 2.2.0 - external-editor: 3.0.3 + external-editor: 3.1.0 figures: 2.0.0 lodash: 4.17.11 mute-stream: 0.0.7 @@ -5270,12 +5262,12 @@ packages: dev: false resolution: integrity: sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= - /is-reference/1.1.2: + /is-reference/1.1.3: dependencies: '@types/estree': 0.0.39 dev: false resolution: - integrity: sha512-Kn5g8c7XHKejFOpTf2QN9YjiHHKl5xRj+2uAZf9iM2//nkBNi/NNeB5JMoun28nEaUVHyPUzqzhfRlfAirEjXg== + integrity: sha512-W1iHHv/oyBb2pPxkBxtaewxa1BC58Pn5J0hogyCdefwUIvb6R+TGbAcIa4qPNYLqLhb3EnOgUf2MQkkF76BcKw== /is-regex/1.0.4: dependencies: has: 1.0.3 @@ -5809,11 +5801,11 @@ packages: rollup: '>= 1.0.0' resolution: integrity: sha512-/a7bBtinT4+fdbnatCh5ZWvbqIqPzse7O3tvT4x9tadXsxPqybo1Lilpe7AKEmvhAcUwGRlcLOWeV66lIPFrXQ== - /karma-rollup-preprocessor/7.0.0_rollup@1.13.1: + /karma-rollup-preprocessor/7.0.0_rollup@1.16.6: dependencies: chokidar: 2.1.6 debounce: 1.2.0 - rollup: 1.13.1 + rollup: 1.16.6 dev: false engines: node: '>= 8.0.0' @@ -5853,15 +5845,15 @@ packages: webpack: ^4.0.0 resolution: integrity: sha512-970/okAsdUOmiMOCY8sb17A2I8neS25Ad9uhyK3GHgmRSIFJbDcNEFE8dqqUhNe9OHiCC9k3DMrSmtd/0ymP1A== - /karma-webpack/4.0.2_webpack@4.35.2: + /karma-webpack/4.0.2_webpack@4.35.3: 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.35.2 - webpack-dev-middleware: 3.7.0_webpack@4.35.2 + webpack: 4.35.3 + webpack-dev-middleware: 3.7.0_webpack@4.35.3 dev: false engines: node: '>= 8.9.0' @@ -7695,7 +7687,7 @@ packages: dependencies: debug: 4.1.1 extract-zip: 1.6.7 - https-proxy-agent: 2.2.1 + https-proxy-agent: 2.2.2 mime: 2.4.4 progress: 2.0.3 proxy-from-env: 1.0.0 @@ -8196,7 +8188,7 @@ packages: /rollup-plugin-commonjs/10.0.1: dependencies: estree-walker: 0.6.1 - is-reference: 1.1.2 + is-reference: 1.1.3 magic-string: 0.25.3 resolve: 1.11.1 rollup-pluginutils: 2.8.1 @@ -8205,13 +8197,13 @@ packages: rollup: '>=1.12.0' resolution: integrity: sha512-x0PcCVdEc4J8igv1qe2vttz8JKAKcTs3wfIA3L8xEty3VzxgORLrzZrNWaVMc+pBC4U3aDOb9BnWLAQ8J11vkA== - /rollup-plugin-commonjs/10.0.1_rollup@1.13.1: + /rollup-plugin-commonjs/10.0.1_rollup@1.16.6: dependencies: estree-walker: 0.6.1 - is-reference: 1.1.2 + is-reference: 1.1.3 magic-string: 0.25.3 resolve: 1.11.1 - rollup: 1.13.1 + rollup: 1.16.6 rollup-pluginutils: 2.8.1 dev: false peerDependencies: @@ -8261,13 +8253,13 @@ packages: rollup: '>=1.11.0' resolution: integrity: sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== - /rollup-plugin-node-resolve/5.2.0_rollup@1.13.1: + /rollup-plugin-node-resolve/5.2.0_rollup@1.16.6: dependencies: '@types/resolve': 0.0.8 builtin-modules: 3.1.0 is-module: 1.0.0 resolve: 1.11.1 - rollup: 1.13.1 + rollup: 1.16.6 rollup-pluginutils: 2.8.1 dev: false peerDependencies: @@ -8301,9 +8293,9 @@ packages: rollup: '>=0.31.2' resolution: integrity: sha1-YhJaqUCHqt97g+9N+vYptHMTXoc= - /rollup-plugin-sourcemaps/0.4.2_rollup@1.13.1: + /rollup-plugin-sourcemaps/0.4.2_rollup@1.16.6: dependencies: - rollup: 1.13.1 + rollup: 1.16.6 rollup-pluginutils: 2.8.1 source-map-resolve: 0.5.2 dev: false @@ -8325,11 +8317,11 @@ packages: rollup: '>=0.66.0 <2' resolution: integrity: sha512-wPANT5XKVJJ8RDUN0+wIr7UPd0lIXBo4UdJ59VmlPCtlFsE20AM+14pe+tk7YunCsWEiuzkDBY3QIkSCjtrPXg== - /rollup-plugin-terser/4.0.4_rollup@1.13.1: + /rollup-plugin-terser/4.0.4_rollup@1.16.6: dependencies: '@babel/code-frame': 7.0.0 jest-worker: 24.6.0 - rollup: 1.13.1 + rollup: 1.16.6 serialize-javascript: 1.7.0 terser: 3.17.0 dev: false @@ -8348,11 +8340,11 @@ packages: rollup: '>=0.66.0 <2' resolution: integrity: sha512-qwz2Tryspn5QGtPUowq5oumKSxANKdrnfz7C0jm4lKxvRDsNe/hSGsB9FntUul7UeC4TsZEWKErVgE1qWSO0gw== - /rollup-plugin-uglify/6.0.2_rollup@1.13.1: + /rollup-plugin-uglify/6.0.2_rollup@1.16.6: dependencies: '@babel/code-frame': 7.0.0 jest-worker: 24.6.0 - rollup: 1.13.1 + rollup: 1.16.6 serialize-javascript: 1.7.0 uglify-js: 3.6.0 dev: false @@ -8373,11 +8365,11 @@ packages: rollup: '>=0.60.0' resolution: integrity: sha512-7xkSKp+dyJmSC7jg2LXqViaHuOnF1VvIFCnsZEKjrgT5ZVyiLLSbeszxFcQSfNJILphqgAEmWAUz0Z4xYScrRw== - /rollup-plugin-visualizer/1.1.1_rollup@1.13.1: + /rollup-plugin-visualizer/1.1.1_rollup@1.16.6: dependencies: mkdirp: 0.5.1 opn: 5.5.0 - rollup: 1.13.1 + rollup: 1.16.6 source-map: 0.7.3 typeface-oswald: 0.0.54 dev: false @@ -8393,15 +8385,15 @@ packages: dev: false resolution: integrity: sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg== - /rollup/1.13.1: + /rollup/1.16.6: dependencies: '@types/estree': 0.0.39 - '@types/node': 12.0.12 + '@types/node': 12.6.0 acorn: 6.2.0 dev: false hasBin: true resolution: - integrity: sha512-TWBmVU5WS4wOy5Ij2qxrJYRUn/keECvStcXDpJSwgr95JZ6VFf1PDewiAk4VPf5vxr7drRJlxh9kYpxHveYOOg== + integrity: sha512-oM3iKkzPCq9Da95wCnNfS8YlNZjgCD5c/TceKnJIthI9FOeJqnO3PUr/C5Suv9Kjzh0iphKL02PLeja3A5AMIA== /run-async/2.3.0: dependencies: is-promise: 2.1.0 @@ -8452,9 +8444,9 @@ packages: integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== /schema-utils/1.0.0: dependencies: - ajv: 6.10.0 - ajv-errors: 1.0.1_ajv@6.10.0 - ajv-keywords: 3.4.0_ajv@6.10.0 + ajv: 6.10.1 + ajv-errors: 1.0.1_ajv@6.10.1 + ajv-keywords: 3.4.1_ajv@6.10.1 dev: false engines: node: '>= 4' @@ -8918,7 +8910,7 @@ packages: inherits: 2.0.4 readable-stream: 2.3.6 to-arraybuffer: 1.0.1 - xtend: 4.0.1 + xtend: 4.0.2 dev: false resolution: integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== @@ -9122,7 +9114,7 @@ packages: integrity: sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg= /table/5.4.1: dependencies: - ajv: 6.10.0 + ajv: 6.10.1 lodash: 4.17.11 slice-ansi: 2.1.0 string-width: 3.1.0 @@ -9165,7 +9157,7 @@ packages: schema-utils: 1.0.0 serialize-javascript: 1.7.0 source-map: 0.6.1 - terser: 4.0.2 + terser: 4.1.2 webpack-sources: 1.3.0 worker-farm: 1.7.0 dev: false @@ -9186,7 +9178,7 @@ packages: hasBin: true resolution: integrity: sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ== - /terser/4.0.2: + /terser/4.1.2: dependencies: commander: 2.20.0 source-map: 0.6.1 @@ -9196,7 +9188,7 @@ packages: node: '>=6.0.0' hasBin: true resolution: - integrity: sha512-IWLuJqTvx97KP3uTYkFVn93cXO+EtlzJu8TdJylq+H0VBDlPMIfQA9MBS5Vc5t3xTEUG1q0hIfHMpAP2R+gWTw== + integrity: sha512-jvNoEQSPXJdssFwqPSgWjsOrb+ELoE+ILpHPKXC83tIxOlh2U75F1KuB2luLD/3a6/7K3Vw5pDn+hvu0C4AzSw== /test-exclude/5.2.3: dependencies: glob: 7.1.4 @@ -9219,21 +9211,21 @@ packages: /through2-filter/3.0.0: dependencies: through2: 2.0.5 - xtend: 4.0.1 + xtend: 4.0.2 dev: false resolution: integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== /through2/2.0.1: dependencies: readable-stream: 2.0.6 - xtend: 4.0.1 + xtend: 4.0.2 dev: false resolution: integrity: sha1-OE51MU1J8y3hLuu4E2uOtrXVnak= /through2/2.0.5: dependencies: readable-stream: 2.3.6 - xtend: 4.0.1 + xtend: 4.0.2 dev: false resolution: integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -9969,7 +9961,7 @@ packages: webpack: 4.x.x resolution: integrity: sha512-w0j/s42c5UhchwTmV/45MLQnTVwRoaUTu9fM5LuyOd/8lFoCNCELDogFoecx5NzRUndO0yD/gF2b02XKMnmAWQ== - /webpack-cli/3.3.5_webpack@4.35.2: + /webpack-cli/3.3.5_webpack@4.35.3: dependencies: chalk: 2.4.2 cross-spawn: 6.0.5 @@ -9981,7 +9973,7 @@ packages: loader-utils: 1.2.3 supports-color: 6.1.0 v8-compile-cache: 2.0.3 - webpack: 4.35.2 + webpack: 4.35.3 yargs: 13.2.4 dev: false engines: @@ -10004,12 +9996,12 @@ packages: webpack: ^4.0.0 resolution: integrity: sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA== - /webpack-dev-middleware/3.7.0_webpack@4.35.2: + /webpack-dev-middleware/3.7.0_webpack@4.35.3: dependencies: memory-fs: 0.4.1 mime: 2.4.4 range-parser: 1.2.1 - webpack: 4.35.2 + webpack: 4.35.3 webpack-log: 2.0.0 dev: false engines: @@ -10034,16 +10026,15 @@ packages: dev: false resolution: integrity: sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== - /webpack/4.35.2: + /webpack/4.35.3: dependencies: '@webassemblyjs/ast': 1.8.5 '@webassemblyjs/helper-module-context': 1.8.5 '@webassemblyjs/wasm-edit': 1.8.5 '@webassemblyjs/wasm-parser': 1.8.5 acorn: 6.2.0 - acorn-dynamic-import: 4.0.0_acorn@6.2.0 - ajv: 6.10.0 - ajv-keywords: 3.4.0_ajv@6.10.0 + ajv: 6.10.1 + ajv-keywords: 3.4.1_ajv@6.10.1 chrome-trace-event: 1.0.2 enhanced-resolve: 4.1.0 eslint-scope: 4.0.3 @@ -10065,7 +10056,7 @@ packages: node: '>=6.11.5' hasBin: true resolution: - integrity: sha512-TZAmorNymV4q66gAM/h90cEjG+N3627Q2MnkSgKlX/z3DlNVKUtqy57lz1WmZU2+FUZwzM+qm7cGaO95PyrX5A== + integrity: sha512-xggQPwr9ILlXzz61lHzjvgoqGU08v5+Wnut19Uv3GaTtzN4xBTcwnobodrXE142EL1tOiS5WVEButooGzcQzTA== /which-module/1.0.0: dev: false resolution: @@ -10221,12 +10212,12 @@ packages: node: '>=0.4.0' resolution: integrity: sha512-jg+qkfS4K8E7965sqaUl8mRngXiKb3WZGfONgE18pr03FUQiuSV6G+Ej4tS55B+rIQSFEIw3phdVAQ4pPqNWfQ== - /xtend/4.0.1: + /xtend/4.0.2: dev: false engines: node: '>=0.4' resolution: - integrity: sha1-pcbVMr5lbiPbgg77lDofBJmNY68= + integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== /y18n/3.2.1: dev: false resolution: @@ -10405,19 +10396,19 @@ packages: nyc: 14.1.1 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 + rollup: 1.16.6 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 - rollup-plugin-uglify: 6.0.2_rollup@1.13.1 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 + rollup-plugin-uglify: 6.0.2_rollup@1.16.6 tslib: 1.10.0 typescript: 3.5.2 dev: false name: '@rush-temp/abort-controller' resolution: - integrity: sha512-4x14SAFGZXqlVRY24PbG75WGfWxDdwRiiUxBwniFCaR69Cygcjb1HcxLTF39mXN1HMFGzMaO3+WJ+TnRzVZDZw== + integrity: sha512-H4kLH1HE1vApDNgLVIdIpnL/m2g6dXwkXM7StSRvxn8ZPZaaSYgkmQIz/gz5bzZ8ErvHCQyeZ3QbQdDD/JFEXA== tarball: 'file:projects/abort-controller.tgz' version: 0.0.0 'file:projects/core-amqp.tgz': @@ -10465,17 +10456,17 @@ packages: rhea: 1.0.8 rhea-promise: 0.1.15 rimraf: 2.6.3 - rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 + rollup: 1.16.6 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 rollup-plugin-inject: 2.2.0 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-globals: 1.4.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 - rollup-plugin-uglify: 6.0.2_rollup@1.13.1 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 + rollup-plugin-uglify: 6.0.2_rollup@1.16.6 sinon: 7.3.2 stream-browserify: 2.0.2 ts-node: 7.0.1 @@ -10488,7 +10479,7 @@ packages: dev: false name: '@rush-temp/core-amqp' resolution: - integrity: sha512-/J9I2HAPbgTFDqAupdWFPA7dp/4HkdLJc1EvXFmHOQYx/RaXjqucN0b8zcuGepdmZC1i0qrMgPWjbi7EhWxNJA== + integrity: sha512-KR4acq9bawgOS+Fp103iS+4iuPYeBvcVVnrAGtI8f/khD6kZWJcGaUKmjPLXDUemiGAeasqbhPMBEul24qbaOw== tarball: 'file:projects/core-amqp.tgz' version: 0.0.0 'file:projects/core-asynciterator-polyfill.tgz': @@ -10507,7 +10498,7 @@ packages: dev: false name: '@rush-temp/core-asynciterator-polyfill' resolution: - integrity: sha512-v2OkkGp4BscubKnr7qikdSqLJttDTy5skuwpX+KeQv9H5aMDtfGU4CKUmqdwGsI/+vnXlPU57ZBVJ0BtucQBng== + integrity: sha512-oJErNaXrpCzEEVyYVvv8gcBRnv36c76LBxalfW/l4wlABmUh9u+EuvwI46ig0V3m1bmIluW4S/9O08nO18uyGw== tarball: 'file:projects/core-asynciterator-polyfill.tgz' version: 0.0.0 'file:projects/core-auth.tgz': @@ -10531,22 +10522,22 @@ packages: mocha-multi: 1.1.0_mocha@5.2.0 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 + rollup: 1.16.6 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 - rollup-plugin-uglify: 6.0.2_rollup@1.13.1 - rollup-plugin-visualizer: 1.1.1_rollup@1.13.1 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 + rollup-plugin-uglify: 6.0.2_rollup@1.16.6 + rollup-plugin-visualizer: 1.1.1_rollup@1.16.6 tslib: 1.10.0 typescript: 3.5.2 util: 0.11.1 dev: false name: '@rush-temp/core-auth' resolution: - integrity: sha512-cq3K0U9XrSRmaBbCgOb4s2vfPQGxNuWNzbi8sju2CR2dOxYfDOxoED5CZutfyr9rtPRjSJ0YqvkXcqrCQ8mwEg== + integrity: sha512-5Vdx4uMJ9QNuoqga5WTID821FAQrrrf672QrTK2jkQHwGY8tNZGToD/FTUeAda9TutBbk3pED0mKLOBEcxWtNQ== tarball: 'file:projects/core-auth.tgz' version: 0.0.0 'file:projects/core-http.tgz': @@ -10586,10 +10577,10 @@ packages: karma-chai: 0.1.0_chai@4.2.0+karma@4.1.0 karma-chrome-launcher: 2.2.0 karma-mocha: 1.3.0 - karma-rollup-preprocessor: 7.0.0_rollup@1.13.1 + karma-rollup-preprocessor: 7.0.0_rollup@1.16.6 karma-sourcemap-loader: 0.3.7 karma-typescript-es6-transform: 4.1.1 - karma-webpack: 4.0.2_webpack@4.35.2 + karma-webpack: 4.0.2_webpack@4.35.3 mocha: 5.2.0 mocha-chrome: 1.1.0 mocha-junit-reporter: 1.23.0_mocha@5.2.0 @@ -10600,15 +10591,15 @@ packages: process: 0.11.10 puppeteer: 1.18.1 rimraf: 2.6.3 - rollup: 1.13.1 + rollup: 1.16.6 rollup-plugin-alias: 1.5.2 - rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-resolve: 0.0.1-predev.1 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 - rollup-plugin-visualizer: 1.1.1_rollup@1.13.1 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 + rollup-plugin-visualizer: 1.1.1_rollup@1.16.6 semver: 5.7.0 shx: 0.3.2 sinon: 7.3.2 @@ -10622,16 +10613,16 @@ packages: typescript: 3.5.2 uglify-js: 3.6.0 uuid: 3.3.2 - webpack: 4.35.2 - webpack-cli: 3.3.5_webpack@4.35.2 - webpack-dev-middleware: 3.7.0_webpack@4.35.2 + webpack: 4.35.3 + webpack-cli: 3.3.5_webpack@4.35.3 + webpack-dev-middleware: 3.7.0_webpack@4.35.3 xhr-mock: 2.4.1 xml2js: 0.4.19 yarn: 1.16.0 dev: false name: '@rush-temp/core-http' resolution: - integrity: sha512-LFCnXpufdTqIHE2S6dGpq1G+JZBwDgghmfKILYZw1vUJUqeltdqVbd3P6Qv3GG7pKYYztpidYEYOuQCsVnXrIA== + integrity: sha512-pPwStCCozPS8wMXVKPXmeVhaqItt56X4W19H0nHii3AdUuSQHXyr1ZLHY7jbADmNP8Hfj/nC2/7YGYvBa+XZCw== tarball: 'file:projects/core-http.tgz' version: 0.0.0 'file:projects/core-paging.tgz': @@ -10650,7 +10641,7 @@ packages: dev: false name: '@rush-temp/core-paging' resolution: - integrity: sha512-Cw6EIkpujQw6NoJ997kmGhTHYp+NyN1ANdUWlpisHR8eC8HUWhIenZ66XnwsUopIKDS7K+IFojGMi3nqukbSxg== + integrity: sha512-YuAVCVgDrwxv97SIkTM1n/hwYLjncsTgyooCUYQ4vw3o1WglSnpREVymQFVZ8Fa+S/ael7NdzsGaYp3lyTKXCg== tarball: 'file:projects/core-paging.tgz' version: 0.0.0 'file:projects/cosmos.tgz': @@ -10689,12 +10680,12 @@ packages: tslint-config-prettier: 1.18.0 tunnel: 0.0.6 typescript: 3.5.2 - webpack: 4.35.2 - webpack-cli: 3.3.5_webpack@4.35.2 + webpack: 4.35.3 + webpack-cli: 3.3.5_webpack@4.35.3 dev: false name: '@rush-temp/cosmos' resolution: - integrity: sha512-f7IyBbSYkZZ+guO7QopSGUb/7d5QYQiotA3hWoIvC0iUo4XhGa+DqlnQ/yn5zx+p8ogWU8pvIixA8GQU4nMUfA== + integrity: sha512-rLhtUCCGnwzY3OigHd+TEJ4U0lyBKc2RpjKGMl9koha/aSUchKfm8qHWS+4XO/J2+WldP7yQx6gZY5C+t3cBvQ== tarball: 'file:projects/cosmos.tgz' version: 0.0.0 'file:projects/event-hubs.tgz': @@ -10727,7 +10718,7 @@ packages: eslint-plugin-no-null: 1.0.2_eslint@5.16.0 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 - https-proxy-agent: 2.2.1 + https-proxy-agent: 2.2.2 is-buffer: 2.0.3 jssha: 2.3.1 karma: 4.1.0 @@ -10749,16 +10740,16 @@ packages: puppeteer: 1.18.1 rhea-promise: 0.1.15 rimraf: 2.6.3 - rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 + rollup: 1.16.6 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 rollup-plugin-inject: 2.2.0 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 - rollup-plugin-uglify: 6.0.2_rollup@1.13.1 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 + rollup-plugin-uglify: 6.0.2_rollup@1.16.6 ts-mocha: 6.0.0_mocha@5.2.0 ts-node: 7.0.1 tslib: 1.10.0 @@ -10769,7 +10760,7 @@ packages: dev: false name: '@rush-temp/event-hubs' resolution: - integrity: sha512-Tsf4fSqJrxQXz4G7QIyJd3Y31GwECO9uyLtYpVJSpuoNL8t5KPNi3C2v0Hge0qr1izMDAzegIszn/GUYD0bmfg== + integrity: sha512-nTdXlgOMQXlutmhIerPvTfi/9HzIKM7QlSMKdtdAdMSLx/vjlQijMw3oecOZzRco4LF1F+LtPt30uCN+vltMzw== tarball: 'file:projects/event-hubs.tgz' version: 0.0.0 'file:projects/event-processor-host.tgz': @@ -10809,14 +10800,14 @@ packages: path-browserify: 1.0.0 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 + rollup: 1.16.6 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 - rollup-plugin-uglify: 6.0.2_rollup@1.13.1 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 + rollup-plugin-uglify: 6.0.2_rollup@1.16.6 ts-node: 7.0.1 tslib: 1.10.0 tslint: 5.18.0_typescript@3.5.2 @@ -10825,7 +10816,7 @@ packages: dev: false name: '@rush-temp/event-processor-host' resolution: - integrity: sha512-TX5+iYIxJazD53rfS4N/X8haYQUKKF0x4J4+mNOCAs2PKvzrciVR9HqPWIUtnfWkAT6UuL21emJKpnl6UmHcAQ== + integrity: sha512-kp6aTXTB47j4o/BTtXXcJIQTlcH13upnkZbnNc4vLF34aOYgwJiSNl6UsHmyqe8q8gh4XgM/yNIz4yLYmvDmbw== tarball: 'file:projects/event-processor-host.tgz' version: 0.0.0 'file:projects/identity.tgz': @@ -10849,15 +10840,15 @@ packages: prettier: 1.18.2 qs: 6.7.0 rimraf: 2.6.3 - rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 + rollup: 1.16.6 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 - rollup-plugin-uglify: 6.0.2_rollup@1.13.1 - rollup-plugin-visualizer: 1.1.1_rollup@1.13.1 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 + rollup-plugin-uglify: 6.0.2_rollup@1.16.6 + rollup-plugin-visualizer: 1.1.1_rollup@1.16.6 tslib: 1.10.0 typescript: 3.5.2 util: 0.11.1 @@ -10865,7 +10856,7 @@ packages: dev: false name: '@rush-temp/identity' resolution: - integrity: sha512-67UnNThZEl07ASqL+ITpArWym/Vzry7/bwjGtZ6Z4vaGHTnS4IcGfrNn61USyh2r+fIKMDzipA4Ld+GQBkQo/g== + integrity: sha512-/oYQvkAW5qiuEoMKY8GHGCXWVNCSh/HnxLfJYZmvX7hL5HVc3MtIXT4/pKwFvhPHQ68Dvf+O+OdnNbQp+x78QQ== tarball: 'file:projects/identity.tgz' version: 0.0.0 'file:projects/keyvault-certificates.tgz': @@ -10884,9 +10875,9 @@ packages: eslint-plugin-promise: 4.2.1 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 - rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 + rollup: 1.16.6 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 tslib: 1.10.0 typescript: 3.5.2 uglify-js: 3.6.0 @@ -10894,7 +10885,7 @@ packages: dev: false name: '@rush-temp/keyvault-certificates' resolution: - integrity: sha512-mBYPALUGpeQXoCQrVIRg3/AAh5wfeSIJTfqV00ucy3SEC+acN/7WC9gbu/Qd6fVjSOhEVj48MvI54x1FYkO5Rg== + integrity: sha512-XSBr3/4Hs4sJ5Igf2z4KIDChqnHNtV98ZLn7yfdcCTC0/ZAaem+JpJ5yYWIPUHgDO5ELWpvFqhRy/Teph4EI0A== tarball: 'file:projects/keyvault-certificates.tgz' version: 0.0.0 'file:projects/keyvault-keys.tgz': @@ -10922,9 +10913,9 @@ packages: nock: 10.0.6 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 - rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 + rollup: 1.16.6 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 ts-mocha: 6.0.0_mocha@5.2.0 tslib: 1.10.0 typescript: 3.5.2 @@ -10933,7 +10924,7 @@ packages: dev: false name: '@rush-temp/keyvault-keys' resolution: - integrity: sha512-8bHVuOcxrqCoE0e7oOIUqyVXK+XKNEBJaFR8H+U+N9pid4feets2pT/0IckOc4PkYcrmMxpMpoJJcUxlD3a8og== + integrity: sha512-sP/y1S5uDAidLCQo8eliTGebvydAabqTBfQtkzWIrgn/Af1e+JIVemRz21CvXKlkNVCzQ5tcz14maU8k80PeEQ== tarball: 'file:projects/keyvault-keys.tgz' version: 0.0.0 'file:projects/keyvault-secrets.tgz': @@ -10963,9 +10954,9 @@ packages: nock: 10.0.6 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 - rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 + rollup: 1.16.6 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 ts-mocha: 6.0.0_mocha@5.2.0 tslib: 1.10.0 typescript: 3.5.2 @@ -10974,7 +10965,7 @@ packages: dev: false name: '@rush-temp/keyvault-secrets' resolution: - integrity: sha512-So5rOz0pSn20Wd8SCEEIomykd4viPpwWGFDO4NNT6EZzOfx1YJ+iTFBm1d7U/vY/yWZkeo+vqNOTh/QJ23KuEw== + integrity: sha512-jQOGbJ15CkqP2Ag9qTQl6rsLEY326azdxYGo0LQQxVpL/AYuKYCkl2UbUzhBEqfqvK+TVUPoENxjgvWJXldLHQ== tarball: 'file:projects/keyvault-secrets.tgz' version: 0.0.0 'file:projects/service-bus.tgz': @@ -11009,7 +11000,7 @@ packages: eslint-plugin-no-null: 1.0.2_eslint@5.16.0 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 - https-proxy-agent: 2.2.1 + https-proxy-agent: 2.2.2 is-buffer: 2.0.3 karma: 4.1.0 karma-chrome-launcher: 2.2.0 @@ -11035,16 +11026,16 @@ packages: rhea: 1.0.8 rhea-promise: 0.1.15 rimraf: 2.6.3 - rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 + rollup: 1.16.6 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 rollup-plugin-inject: 2.2.0 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 - rollup-plugin-terser: 4.0.4_rollup@1.13.1 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 + rollup-plugin-terser: 4.0.4_rollup@1.16.6 ts-node: 7.0.1 tslib: 1.10.0 typescript: 3.5.2 @@ -11052,7 +11043,7 @@ packages: dev: false name: '@rush-temp/service-bus' resolution: - integrity: sha512-npz1y2nxkp0Zd+Ib9RfNjUiW2pjnADmtx/GvO0PNnghoWa4v59FgVpurEppOfa3tpRpo9JN9TgQ3i6caKLeqpg== + integrity: sha512-7awJweIHtIypLgLeFRRXZPGOqY3AUVvG6AhHWFQlQGol477edqRY7K+19l7e/9mca6w+LcqIZ9MHzqsC0Z30QQ== tarball: 'file:projects/service-bus.tgz' version: 0.0.0 'file:projects/storage-blob.tgz': @@ -11105,15 +11096,15 @@ packages: puppeteer: 1.18.1 query-string: 6.8.1 rimraf: 2.6.3 - rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 + rollup: 1.16.6 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 - rollup-plugin-uglify: 6.0.2_rollup@1.13.1 - rollup-plugin-visualizer: 1.1.1_rollup@1.13.1 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 + rollup-plugin-uglify: 6.0.2_rollup@1.16.6 + rollup-plugin-visualizer: 1.1.1_rollup@1.16.6 source-map-support: 0.5.12 ts-node: 7.0.1 tslib: 1.10.0 @@ -11122,7 +11113,7 @@ packages: dev: false name: '@rush-temp/storage-blob' resolution: - integrity: sha512-Xge/oNPTvK9QWY2lfIWmEMhLaACee30KwgJLjhwUNBhRBB6S3cg7lJflNO/eVOmhQ42dPq/hJRHJoENk5rjtrA== + integrity: sha512-z7lYdx3/7xAAy29h+FvvXnpsLh5+mxVa6d6O3Z39PQ7aL0LCzOlVTkRudilyEr+Gm6PUGK7tRQ8RD0zcGPVmlQ== tarball: 'file:projects/storage-blob.tgz' version: 0.0.0 'file:projects/storage-datalake.tgz': @@ -11137,8 +11128,8 @@ packages: eslint-plugin-no-null: 1.0.2_eslint@5.16.0 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 - rollup: 1.13.1 - rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 + rollup: 1.16.6 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 ts-node: 7.0.1 tslib: 1.10.0 typescript: 3.5.2 @@ -11147,7 +11138,7 @@ packages: dev: false name: '@rush-temp/storage-datalake' resolution: - integrity: sha512-Kcd+0GTZn50m2RJjMQQCkIkUZkKwiWRkmapTBKGZxyXYe7jevU8L3dT6Wdykbk+jaa3gjhd7mG8OUecgXe0ZlQ== + integrity: sha512-f1i1Q+N0F1TZsHRuyo2lkRIAjJp/OkNm7r6K62zV5zGbRms8+ntEabSQTw0AOlaoUM/E7e4984Ki4qFW/8x1Zw== tarball: 'file:projects/storage-datalake.tgz' version: 0.0.0 'file:projects/storage-file.tgz': @@ -11200,15 +11191,15 @@ packages: puppeteer: 1.18.1 query-string: 6.8.1 rimraf: 2.6.3 - rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 + rollup: 1.16.6 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 - rollup-plugin-uglify: 6.0.2_rollup@1.13.1 - rollup-plugin-visualizer: 1.1.1_rollup@1.13.1 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 + rollup-plugin-uglify: 6.0.2_rollup@1.16.6 + rollup-plugin-visualizer: 1.1.1_rollup@1.16.6 source-map-support: 0.5.12 ts-node: 7.0.1 tslib: 1.10.0 @@ -11217,7 +11208,7 @@ packages: dev: false name: '@rush-temp/storage-file' resolution: - integrity: sha512-b6//yYerjSKpEE0yXOFRoaiRWSyX381zGKpYWu545tsgHDU6+AM8IOOyckI3Y8+u4jlbfVfdF74Nrrfqd19jmA== + integrity: sha512-XUDoUBZkRrn4lMsgKuXdJqz/WNqWvu8WBFgxsjYGcjF4pTph/6f+iff5zwqhM9R2nSlIos2r6ACNGQFDSYaFhw== tarball: 'file:projects/storage-file.tgz' version: 0.0.0 'file:projects/storage-queue.tgz': @@ -11269,15 +11260,15 @@ packages: puppeteer: 1.18.1 query-string: 6.8.1 rimraf: 2.6.3 - rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 + rollup: 1.16.6 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 - rollup-plugin-uglify: 6.0.2_rollup@1.13.1 - rollup-plugin-visualizer: 1.1.1_rollup@1.13.1 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 + rollup-plugin-uglify: 6.0.2_rollup@1.16.6 + rollup-plugin-visualizer: 1.1.1_rollup@1.16.6 source-map-support: 0.5.12 ts-node: 7.0.1 tslib: 1.10.0 @@ -11286,7 +11277,7 @@ packages: dev: false name: '@rush-temp/storage-queue' resolution: - integrity: sha512-oCSqF9VBshZFR+ZCkuoAHtbZwA97RM0cY+5YcqrSENyNcb41l65bzqupHkYZXFIl9st9enGadVtQhNIT6+pe/A== + integrity: sha512-a+Fk38dH4UDI1d4NQLaZynyCyjsKbVDPDxDSTWpfhW5eXVwAOpa1HpBBzSniZmB6PQz0xWQNsVIwAgQW8vMKRQ== tarball: 'file:projects/storage-queue.tgz' version: 0.0.0 'file:projects/template.tgz': @@ -11312,22 +11303,22 @@ packages: mocha-multi: 1.1.0_mocha@5.2.0 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.13.1 - rollup-plugin-commonjs: 10.0.1_rollup@1.13.1 + rollup: 1.16.6 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.13.1 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.13.1 - rollup-plugin-uglify: 6.0.2_rollup@1.13.1 - rollup-plugin-visualizer: 1.1.1_rollup@1.13.1 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 + rollup-plugin-uglify: 6.0.2_rollup@1.16.6 + rollup-plugin-visualizer: 1.1.1_rollup@1.16.6 tslib: 1.10.0 typescript: 3.5.2 util: 0.11.1 dev: false name: '@rush-temp/template' resolution: - integrity: sha512-eqA3sGy4TWvpvejaW9qHXnqOoyIaRCnemNTKf/ZDGknl/nBYj/8byzu8uOE4g0+L7WW4Z56jPdix3NjSSNUavg== + integrity: sha512-tqa7eOYH30fsdwO3RFUaZblA5YncIPhwzXkQOd81K124G2o4ZDQAn/GWw3+NuAonSDC36OYZPq9KItFSCYavqw== tarball: 'file:projects/template.tgz' version: 0.0.0 'file:projects/testhub.tgz': @@ -11352,7 +11343,7 @@ packages: dev: false name: '@rush-temp/testhub' resolution: - integrity: sha512-+7/S5QILzUUjTQx8iAqLnUHRABhgKs/lVmB5/+F0s9n2n+MZZ7hHhzW3B/efbVCXv6xt+7eFwVT4g0mmX5lGyw== + integrity: sha512-c3cFI0Our99carkgcyOFLmX5QRh5fIqyVv9S75VRX7woNtBGXPvWRE8VOxEN9o8N8FjSEQzc6PPEO6YRz7ok8Q== tarball: 'file:projects/testhub.tgz' version: 0.0.0 registry: '' @@ -11501,7 +11492,7 @@ specifiers: rhea: ^1.0.4 rhea-promise: ^0.1.15 rimraf: ^2.6.2 - rollup: ~1.13.1 + rollup: ^1.0.0 rollup-plugin-alias: ^1.4.0 rollup-plugin-commonjs: ^10.0.0 rollup-plugin-inject: ^2.2.0 diff --git a/sdk/core/abort-controller/package.json b/sdk/core/abort-controller/package.json index 92520e2e985e..60b89e50a32c 100644 --- a/sdk/core/abort-controller/package.json +++ b/sdk/core/abort-controller/package.json @@ -101,7 +101,7 @@ "nyc": "^14.0.0", "prettier": "^1.16.4", "rimraf": "^2.6.2", - "rollup": "~1.13.1", + "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-multi-entry": "^2.1.0", "rollup-plugin-node-resolve": "^5.0.2", diff --git a/sdk/core/core-amqp/package.json b/sdk/core/core-amqp/package.json index bb9a577a3409..1c9de82153c6 100644 --- a/sdk/core/core-amqp/package.json +++ b/sdk/core/core-amqp/package.json @@ -106,7 +106,7 @@ "rhea": "^1.0.4", "rhea-promise": "^0.1.15", "rimraf": "^2.6.2", - "rollup": "~1.13.1", + "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-inject": "^2.2.0", "rollup-plugin-json": "^3.1.0", diff --git a/sdk/core/core-auth/package.json b/sdk/core/core-auth/package.json index 34ed1c0b0c49..f97fb4ca6911 100644 --- a/sdk/core/core-auth/package.json +++ b/sdk/core/core-auth/package.json @@ -81,7 +81,7 @@ "mocha-multi": "^1.0.1", "prettier": "^1.16.4", "rimraf": "^2.6.2", - "rollup": "~1.13.1", + "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-json": "^3.1.0", "rollup-plugin-multi-entry": "^2.1.0", diff --git a/sdk/core/core-http/package.json b/sdk/core/core-http/package.json index eba87d0ea37f..48be9df421f6 100644 --- a/sdk/core/core-http/package.json +++ b/sdk/core/core-http/package.json @@ -110,8 +110,8 @@ "all": true }, "dependencies": { - "@types/tunnel": "^0.0.0", "@azure/core-auth": "^1.0.0-preview.1", + "@types/tunnel": "^0.0.0", "axios": "^0.19.0", "form-data": "^2.3.2", "process": "^0.11.10", @@ -167,7 +167,7 @@ "opn-cli": "^4.0.0", "puppeteer": "^1.11.0", "rimraf": "^2.6.2", - "rollup": "~1.13.1", + "rollup": "^1.16.3", "rollup-plugin-alias": "^1.4.0", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-json": "^3.1.0", diff --git a/sdk/eventhub/event-hubs/package.json b/sdk/eventhub/event-hubs/package.json index 22c61e4e1902..829f0510d3a8 100644 --- a/sdk/eventhub/event-hubs/package.json +++ b/sdk/eventhub/event-hubs/package.json @@ -120,7 +120,7 @@ "prettier": "^1.16.4", "puppeteer": "^1.11.0", "rimraf": "^2.6.2", - "rollup": "~1.13.1", + "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-inject": "^2.2.0", "rollup-plugin-json": "^3.1.0", diff --git a/sdk/eventhub/event-processor-host/package.json b/sdk/eventhub/event-processor-host/package.json index 6c7a6da755fe..1fa1cd487cb7 100644 --- a/sdk/eventhub/event-processor-host/package.json +++ b/sdk/eventhub/event-processor-host/package.json @@ -97,7 +97,7 @@ "nyc": "^14.0.0", "prettier": "^1.16.4", "rimraf": "^2.6.2", - "rollup": "~1.13.1", + "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-json": "^3.1.0", "rollup-plugin-multi-entry": "^2.1.0", diff --git a/sdk/identity/identity/package.json b/sdk/identity/identity/package.json index 49ba3e0a6c9f..3e25bced68e2 100644 --- a/sdk/identity/identity/package.json +++ b/sdk/identity/identity/package.json @@ -103,7 +103,7 @@ "prettier": "^1.16.4", "puppeteer": "^1.11.0", "rimraf": "^2.6.2", - "rollup": "~1.13.1", + "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-json": "^3.1.0", "rollup-plugin-multi-entry": "^2.1.0", diff --git a/sdk/keyvault/keyvault-certificates/package.json b/sdk/keyvault/keyvault-certificates/package.json index 9f53d927ea84..617e465ddc79 100644 --- a/sdk/keyvault/keyvault-certificates/package.json +++ b/sdk/keyvault/keyvault-certificates/package.json @@ -84,7 +84,7 @@ "eslint-plugin-promise": "^4.1.1", "prettier": "^1.16.4", "rimraf": "^2.6.2", - "rollup": "~1.13.1", + "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-node-resolve": "^5.0.2", "typescript": "^3.2.2", diff --git a/sdk/keyvault/keyvault-keys/package.json b/sdk/keyvault/keyvault-keys/package.json index f2fce775bf8c..09cd480ec864 100644 --- a/sdk/keyvault/keyvault-keys/package.json +++ b/sdk/keyvault/keyvault-keys/package.json @@ -98,7 +98,7 @@ "nock": "^10.0.6", "prettier": "^1.16.4", "rimraf": "^2.6.2", - "rollup": "~1.13.1", + "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-node-resolve": "^5.0.2", "ts-mocha": "^6.0.0", diff --git a/sdk/keyvault/keyvault-secrets/package.json b/sdk/keyvault/keyvault-secrets/package.json index 6e1cb88c6c51..ee31db02e2ef 100644 --- a/sdk/keyvault/keyvault-secrets/package.json +++ b/sdk/keyvault/keyvault-secrets/package.json @@ -100,7 +100,7 @@ "nock": "^10.0.6", "prettier": "^1.16.4", "rimraf": "^2.6.2", - "rollup": "~1.13.1", + "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-node-resolve": "^5.0.2", "ts-mocha": "^6.0.0", diff --git a/sdk/servicebus/service-bus/package.json b/sdk/servicebus/service-bus/package.json index e68a968dffee..6ca298d75aa8 100644 --- a/sdk/servicebus/service-bus/package.json +++ b/sdk/servicebus/service-bus/package.json @@ -124,7 +124,7 @@ "promise": "^8.0.3", "puppeteer": "^1.11.0", "rimraf": "^2.6.2", - "rollup": "~1.13.1", + "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-inject": "^2.2.0", "rollup-plugin-json": "^3.1.0", diff --git a/sdk/storage/storage-blob/package.json b/sdk/storage/storage-blob/package.json index c85332954a44..65750b3cef62 100644 --- a/sdk/storage/storage-blob/package.json +++ b/sdk/storage/storage-blob/package.json @@ -125,7 +125,7 @@ "puppeteer": "^1.11.0", "query-string": "^6.5.0", "rimraf": "^2.6.2", - "rollup": "~1.13.1", + "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-multi-entry": "^2.1.0", "rollup-plugin-node-resolve": "^5.0.2", diff --git a/sdk/storage/storage-datalake/package.json b/sdk/storage/storage-datalake/package.json index aaae3438242d..4c0c0c805a70 100644 --- a/sdk/storage/storage-datalake/package.json +++ b/sdk/storage/storage-datalake/package.json @@ -70,7 +70,7 @@ "eslint-plugin-no-null": "^1.0.2", "eslint-plugin-no-only-tests": "^2.3.0", "eslint-plugin-promise": "^4.1.1", - "rollup": "~1.13.1", + "rollup": "^1.16.3", "rollup-plugin-node-resolve": "^5.0.2", "ts-node": "^7.0.1", "typescript": "^3.2.2", diff --git a/sdk/storage/storage-file/package.json b/sdk/storage/storage-file/package.json index 79361c1769af..1edfc0889261 100644 --- a/sdk/storage/storage-file/package.json +++ b/sdk/storage/storage-file/package.json @@ -125,7 +125,7 @@ "puppeteer": "^1.11.0", "query-string": "^6.5.0", "rimraf": "^2.6.2", - "rollup": "~1.13.1", + "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-multi-entry": "^2.1.0", "rollup-plugin-node-resolve": "^5.0.2", diff --git a/sdk/storage/storage-queue/package.json b/sdk/storage/storage-queue/package.json index 1c8576a36a9b..2e2872a38422 100644 --- a/sdk/storage/storage-queue/package.json +++ b/sdk/storage/storage-queue/package.json @@ -123,7 +123,7 @@ "puppeteer": "^1.11.0", "query-string": "^6.5.0", "rimraf": "^2.6.2", - "rollup": "~1.13.1", + "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-multi-entry": "^2.1.0", "rollup-plugin-node-resolve": "^5.0.2", diff --git a/sdk/template/template/package.json b/sdk/template/template/package.json index 71118425b808..47ad6f0c26e9 100644 --- a/sdk/template/template/package.json +++ b/sdk/template/template/package.json @@ -83,7 +83,7 @@ "mocha-multi": "^1.0.1", "prettier": "^1.16.4", "rimraf": "^2.6.2", - "rollup": "~1.13.1", + "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-json": "^3.1.0", "rollup-plugin-multi-entry": "^2.1.0", From cae0657fbaa0f885d5ac22a9516bd61757df732a Mon Sep 17 00:00:00 2001 From: Harsha Nalluru Date: Mon, 8 Jul 2019 15:45:43 -0700 Subject: [PATCH 241/289] [Storage] Update storage-js to sdk-for-js (#4204) --- sdk/storage/storage-queue/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sdk/storage/storage-queue/package.json b/sdk/storage/storage-queue/package.json index 2e2872a38422..7e292cd265f0 100644 --- a/sdk/storage/storage-queue/package.json +++ b/sdk/storage/storage-queue/package.json @@ -54,7 +54,7 @@ ], "repository": { "type": "git", - "url": "git+https://github.com/Azure/azure-storage-js.git" + "url": "git+https://github.com/Azure/azure-sdk-for-js.git" }, "keywords": [ "Azure", @@ -68,9 +68,9 @@ "author": "Microsoft Corporation", "license": "MIT", "bugs": { - "url": "https://github.com/Azure/azure-storage-js/issues" + "url": "https://github.com/Azure/azure-sdk-for-js/issues" }, - "homepage": "https://github.com/Azure/azure-storage-js#readme", + "homepage": "https://github.com/Azure/azure-sdk-for-js#readme", "sideEffects": false, "dependencies": { "@azure/ms-rest-js": "^1.2.6", From 2bbc60a6142a4b1a568c7a2dc2932dcc5d9d3012 Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Mon, 8 Jul 2019 17:11:42 -0700 Subject: [PATCH 242/289] Update event-hubs.api.md (#4214) - Source changes in #4158 --- sdk/eventhub/event-hubs/review/event-hubs.api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/eventhub/event-hubs/review/event-hubs.api.md b/sdk/eventhub/event-hubs/review/event-hubs.api.md index efd16983efe6..c98ecce9cd80 100644 --- a/sdk/eventhub/event-hubs/review/event-hubs.api.md +++ b/sdk/eventhub/event-hubs/review/event-hubs.api.md @@ -172,7 +172,7 @@ export class ReceiveHandler { // @public export interface RetryOptions { - retryCount?: number; + maxRetries?: number; retryInterval?: number; } From 5a624f832494d5fef3af7a6875058bb3954792c5 Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Mon, 8 Jul 2019 17:48:50 -0700 Subject: [PATCH 243/289] Update dev dependency "rollup-plugin-node-resolve" to latest (#4215) --- common/config/rush/pnpm-lock.yaml | 264 +++++++++++++----------- sdk/core/core-amqp/package.json | 2 +- sdk/eventhub/event-hubs/package.json | 2 +- sdk/servicebus/service-bus/package.json | 2 +- 4 files changed, 150 insertions(+), 120 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index ec4563bf2321..8785b9f58f68 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -2,11 +2,11 @@ dependencies: '@azure/amqp-common': 1.0.0-preview.6 '@azure/arm-servicebus': 0.1.0 '@azure/event-hubs': 1.0.8 - '@azure/logger-js': 1.1.0 + '@azure/logger-js': 1.2.1 '@azure/ms-rest-azure-js': 1.3.8 '@azure/ms-rest-js': 1.8.13 '@azure/ms-rest-nodeauth': 0.9.3 - '@microsoft/api-extractor': 7.2.2 + '@microsoft/api-extractor': 7.2.3 '@rush-temp/abort-controller': 'file:projects/abort-controller.tgz' '@rush-temp/core-amqp': 'file:projects/core-amqp.tgz' '@rush-temp/core-asynciterator-polyfill': 'file:projects/core-asynciterator-polyfill.tgz' @@ -146,7 +146,7 @@ dependencies: rollup: 1.16.6 rollup-plugin-alias: 1.5.2 rollup-plugin-commonjs: 10.0.1 - rollup-plugin-inject: 2.2.0 + rollup-plugin-inject: 3.0.0 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-globals: 1.4.0 @@ -171,7 +171,7 @@ dependencies: ts-node: 7.0.1 tslib: 1.10.0 tunnel: 0.0.6 - typescript: 3.5.2 + typescript: 3.5.3 uglify: 0.1.5 uglify-js: 3.6.0 url: 0.11.0 @@ -266,12 +266,12 @@ packages: dev: false resolution: integrity: sha512-iYaB08erq2Eg5sUOXD0GXn4OmkqC67xczLfnlaaF0fLtgk999ePTuFqj4LHYT5HHUdDumYZ+U3WjPSvb0ztHJw== - /@azure/logger-js/1.1.0: + /@azure/logger-js/1.2.1: dependencies: tslib: 1.10.0 dev: false resolution: - integrity: sha512-YZlPSCN+UYgInorO6lkdLd2D5aUZMFz81onitt5pC3N9vOgpU56AnaGYmPkbo+CyMgJifu/kxVizmMV2oxfAsQ== + integrity: sha512-cRzA1KmT7HTRqIM5ON3+B0mV+8q59fR605kAtukMv3sPhINfvj5HvlXk8U+SpoVk+tr343QmvHl7eupllMsFeQ== /@azure/ms-rest-azure-env/1.1.2: dev: false resolution: @@ -393,7 +393,7 @@ packages: dev: false resolution: integrity: sha512-LYMnA1cB2W3YuCOAFruNvnQBZ64OzEnsHxzcxclBhTcUGag6NrtGnip90AVTvVzFlXDLoT7trvPEenlWflWZFQ== - /@microsoft/api-extractor/7.2.2: + /@microsoft/api-extractor/7.2.3: dependencies: '@microsoft/api-extractor-model': 7.2.0 '@microsoft/node-core-library': 3.13.0 @@ -407,7 +407,7 @@ packages: dev: false hasBin: true resolution: - integrity: sha512-hSE60reobyp6hpk7MfqCRXUCDeXAYyfbCM1tyZxfT5kSsHuQRQhpFrRh+YvoKIFlo9DDw90GOlcMQBxspp6RAg== + integrity: sha512-9anLuEitjdWfKAPJuTTVjkIGNa8YcIgRJCKiZ0D8KVICxRSusDSMgMw5qqBsQ3vX8JNj5TVR4MELzyY1mg0gZg== /@microsoft/node-core-library/3.13.0: dependencies: '@types/fs-extra': 5.0.4 @@ -632,10 +632,10 @@ packages: dev: false resolution: integrity: sha512-OthuN+2FuzfZO3yONJ/QVjKmLEuRagS9TV9lEId+WHL9KhftYG+/2z+pxlr0UgVVXSpVD8woie/3fzQn8ft/Ow== - /@types/node/12.6.0: + /@types/node/12.6.1: dev: false resolution: - integrity: sha512-dVeOVH/lhZ2Cki5Emh0aKeXUcWG1+EDTkqyzdgPe0ZjzgvBhzSFlogc6rm8uUd0I+XGK5fcp9DsMv5Wofe0/3w== + integrity: sha512-rp7La3m845mSESCgsJePNL/JQyhkOJA6G4vcwvVgkDAwHhGdq5GCumxmPjEk1MZf+8p5ZQAUE7tqgQRQTXN7uQ== /@types/node/8.10.50: dev: false resolution: @@ -767,15 +767,15 @@ packages: typescript: '*' resolution: integrity: sha512-mXv9ccCou89C8/4avKHuPB2WkSZyY/XcTQUXd5LFZAcLw1I3mWYVjUu6eS9Ja0QkP/ClolbcW9tb3Ov/pMdcqw== - /@typescript-eslint/eslint-plugin/1.11.0_afcff25d83eecf077c0a68701b299d14: + /@typescript-eslint/eslint-plugin/1.11.0_8d1711d609953acbf65aedec42f2b5c5: dependencies: - '@typescript-eslint/experimental-utils': 1.11.0_eslint@5.16.0+typescript@3.5.2 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/experimental-utils': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 eslint: 5.16.0 eslint-utils: 1.3.1 functional-red-black-tree: 1.0.1 regexpp: 2.0.1 - tsutils: 3.14.0_typescript@3.5.2 + tsutils: 3.14.0_typescript@3.5.3 dev: false engines: node: ^6.14.0 || ^8.10.0 || >=9.10.0 @@ -797,12 +797,12 @@ packages: typescript: '*' resolution: integrity: sha512-7LbfaqF6B8oa8cp/315zxKk8FFzosRzzhF8Kn/ZRsRsnpm7Qcu25cR/9RnAQo5utZ2KIWVgaALr+ZmcbG47ruw== - /@typescript-eslint/experimental-utils/1.11.0_eslint@5.16.0+typescript@3.5.2: + /@typescript-eslint/experimental-utils/1.11.0_eslint@5.16.0+typescript@3.5.3: dependencies: '@typescript-eslint/typescript-estree': 1.11.0 eslint: 5.16.0 eslint-scope: 4.0.3 - typescript: 3.5.2 + typescript: 3.5.3 dev: false engines: node: ^6.14.0 || ^8.10.0 || >=9.10.0 @@ -825,10 +825,10 @@ packages: typescript: '*' resolution: integrity: sha512-5xBExyXaxVyczrZvbRKEXvaTUFFq7gIM9BynXukXZE0zF3IQP/FxF4mPmmh3gJ9egafZFqByCpPTFm3dk4SY7Q== - /@typescript-eslint/parser/1.11.0_eslint@5.16.0+typescript@3.5.2: + /@typescript-eslint/parser/1.11.0_eslint@5.16.0+typescript@3.5.3: dependencies: '@types/eslint-visitor-keys': 1.0.0 - '@typescript-eslint/experimental-utils': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/experimental-utils': 1.11.0_eslint@5.16.0+typescript@3.5.3 '@typescript-eslint/typescript-estree': 1.11.0 eslint: 5.16.0 eslint-visitor-keys: 1.0.0 @@ -8210,14 +8210,14 @@ packages: rollup: '>=1.12.0' resolution: integrity: sha512-x0PcCVdEc4J8igv1qe2vttz8JKAKcTs3wfIA3L8xEty3VzxgORLrzZrNWaVMc+pBC4U3aDOb9BnWLAQ8J11vkA== - /rollup-plugin-inject/2.2.0: + /rollup-plugin-inject/3.0.0: dependencies: - estree-walker: 0.5.2 + estree-walker: 0.6.1 magic-string: 0.25.3 rollup-pluginutils: 2.8.1 dev: false resolution: - integrity: sha512-Wow9g+qkKbkK96wjLif2HqWOiuR6ZqkZbHSNt5r1bVUDQG96yzmuxlSl1grPzlTG5BbATUE7nA5HhQVfBXEigQ== + integrity: sha512-euo9UmiJDxyGPjlHecpOZjUcBOOzaI5fbnqmFulG0I8k3or4JMi7UHDcRCcjkeDORF966jsA2qYbvXrgrmgCuw== /rollup-plugin-json/3.1.0: dependencies: rollup-pluginutils: 2.8.1 @@ -8388,7 +8388,7 @@ packages: /rollup/1.16.6: dependencies: '@types/estree': 0.0.39 - '@types/node': 12.6.0 + '@types/node': 12.6.1 acorn: 6.2.0 dev: false hasBin: true @@ -9372,14 +9372,14 @@ packages: typescript: '*' resolution: integrity: sha512-XYsjfnRQCBum9AMRZpk2rTYSVpdZBpZK+kDh0TeT3kxmQNBDVIeUjdPjY5RZry4eIAb8XHc4gYSUiUWPYvzSRw== - /ts-loader/5.4.5_typescript@3.5.2: + /ts-loader/5.4.5_typescript@3.5.3: dependencies: chalk: 2.4.2 enhanced-resolve: 4.1.0 loader-utils: 1.2.3 micromatch: 3.1.10 semver: 5.7.0 - typescript: 3.5.2 + typescript: 3.5.3 dev: false engines: node: '>=6.11.5' @@ -9523,6 +9523,17 @@ packages: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev' resolution: integrity: sha512-SmzGbB0l+8I0QwsPgjooFRaRvHLBLNYM8SeQ0k6rtNDru5sCGeLJcZdwilNndN+GysuFjF5EIYgN8GfFG6UeUw== + /tsutils/3.14.0_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' + resolution: + integrity: sha512-SmzGbB0l+8I0QwsPgjooFRaRvHLBLNYM8SeQ0k6rtNDru5sCGeLJcZdwilNndN+GysuFjF5EIYgN8GfFG6UeUw== /tty-browserify/0.0.0: dev: false resolution: @@ -9598,6 +9609,13 @@ packages: hasBin: true resolution: integrity: sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA== + /typescript/3.5.3: + dev: false + engines: + node: '>=4.2.0' + hasBin: true + resolution: + integrity: sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== /uglify-js/2.4.24: dependencies: async: 0.2.10 @@ -10365,11 +10383,11 @@ packages: integrity: sha1-T6akXQDbwV8xikr6HZr8Aljhdsw= 'file:projects/abort-controller.tgz': dependencies: - '@microsoft/api-extractor': 7.2.2 + '@microsoft/api-extractor': 7.2.3 '@types/mocha': 5.2.7 '@types/node': 8.10.50 - '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 cross-env: 5.2.0 delay: 4.3.0 @@ -10404,11 +10422,11 @@ packages: rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 rollup-plugin-uglify: 6.0.2_rollup@1.16.6 tslib: 1.10.0 - typescript: 3.5.2 + typescript: 3.5.3 dev: false name: '@rush-temp/abort-controller' resolution: - integrity: sha512-H4kLH1HE1vApDNgLVIdIpnL/m2g6dXwkXM7StSRvxn8ZPZaaSYgkmQIz/gz5bzZ8ErvHCQyeZ3QbQdDD/JFEXA== + integrity: sha512-QzyWDAVpqT9O978eRMOueC1BnAEvglhzhy7BxxR21arkIKwj8ivcYwLVdQZDkZipTky/O4MZlO3ZnDGi89QlZQ== tarball: 'file:projects/abort-controller.tgz' version: 0.0.0 'file:projects/core-amqp.tgz': @@ -10424,8 +10442,8 @@ packages: '@types/mocha': 5.2.7 '@types/node': 8.10.50 '@types/sinon': 5.0.7 - '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 async-lock: 1.2.0 buffer: 5.2.1 @@ -10458,7 +10476,7 @@ packages: rimraf: 2.6.3 rollup: 1.16.6 rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 - rollup-plugin-inject: 2.2.0 + rollup-plugin-inject: 3.0.0 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-globals: 1.4.0 @@ -10472,21 +10490,21 @@ packages: ts-node: 7.0.1 tslib: 1.10.0 tslint: 5.18.0_typescript@3.5.2 - typescript: 3.5.2 + typescript: 3.5.3 url: 0.11.0 util: 0.11.1 ws: 6.2.1 dev: false name: '@rush-temp/core-amqp' resolution: - integrity: sha512-KR4acq9bawgOS+Fp103iS+4iuPYeBvcVVnrAGtI8f/khD6kZWJcGaUKmjPLXDUemiGAeasqbhPMBEul24qbaOw== + integrity: sha512-4LaegN8wzDPJRB9JxRWEqLnzv1ReHnXi6GE/HGAvDBKKDzJvRuZFVp8WTGzmUX6mVTbcOFMZmEeQ5vI2Y8iMLg== tarball: 'file:projects/core-amqp.tgz' version: 0.0.0 'file:projects/core-asynciterator-polyfill.tgz': dependencies: '@types/node': 8.10.50 - '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 eslint: 5.16.0 eslint-config-prettier: 4.3.0_eslint@5.16.0 eslint-detailed-reporter: 0.8.0_eslint@5.16.0 @@ -10494,7 +10512,7 @@ packages: eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 prettier: 1.18.2 - typescript: 3.5.2 + typescript: 3.5.3 dev: false name: '@rush-temp/core-asynciterator-polyfill' resolution: @@ -10503,11 +10521,11 @@ packages: version: 0.0.0 'file:projects/core-auth.tgz': dependencies: - '@microsoft/api-extractor': 7.2.2 + '@microsoft/api-extractor': 7.2.3 '@types/mocha': 5.2.7 '@types/node': 8.10.50 - '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 cross-env: 5.2.0 eslint: 5.16.0 @@ -10532,17 +10550,17 @@ packages: rollup-plugin-uglify: 6.0.2_rollup@1.16.6 rollup-plugin-visualizer: 1.1.1_rollup@1.16.6 tslib: 1.10.0 - typescript: 3.5.2 + typescript: 3.5.3 util: 0.11.1 dev: false name: '@rush-temp/core-auth' resolution: - integrity: sha512-5Vdx4uMJ9QNuoqga5WTID821FAQrrrf672QrTK2jkQHwGY8tNZGToD/FTUeAda9TutBbk3pED0mKLOBEcxWtNQ== + integrity: sha512-19yRiEMrSjN0Yb7+icSLkizUwN3VX1BNzQKzUla09bHc5Ieovr7vsb1NihpSFT6iGcHztEZjOVlcPEv8PxrmPA== tarball: 'file:projects/core-auth.tgz' version: 0.0.0 'file:projects/core-http.tgz': dependencies: - '@azure/logger-js': 1.1.0 + '@azure/logger-js': 1.2.1 '@types/chai': 4.1.7 '@types/express': 4.17.0 '@types/form-data': 2.2.1 @@ -10558,8 +10576,8 @@ packages: '@types/webpack': 4.4.34 '@types/webpack-dev-middleware': 2.0.3 '@types/xml2js': 0.4.4 - '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 abortcontroller-polyfill: 1.3.0 axios: 0.19.0 axios-mock-adapter: 1.17.0_axios@0.19.0 @@ -10604,13 +10622,13 @@ packages: shx: 0.3.2 sinon: 7.3.2 tough-cookie: 2.5.0 - ts-loader: 5.4.5_typescript@3.5.2 + ts-loader: 5.4.5_typescript@3.5.3 ts-node: 7.0.1 tslib: 1.10.0 tslint: 5.18.0_typescript@3.5.2 tslint-eslint-rules: 5.4.0_tslint@5.18.0+typescript@3.5.2 tunnel: 0.0.6 - typescript: 3.5.2 + typescript: 3.5.3 uglify-js: 3.6.0 uuid: 3.3.2 webpack: 4.35.3 @@ -10622,14 +10640,14 @@ packages: dev: false name: '@rush-temp/core-http' resolution: - integrity: sha512-pPwStCCozPS8wMXVKPXmeVhaqItt56X4W19H0nHii3AdUuSQHXyr1ZLHY7jbADmNP8Hfj/nC2/7YGYvBa+XZCw== + integrity: sha512-fO14XIqz9cAVSOHDFolgoZtb969MWpCB67zw3f5fjHfm2FGk7NNmM0Rb+6n/Yaas+lPGrNVuLjHXa68uwZdB+g== tarball: 'file:projects/core-http.tgz' version: 0.0.0 'file:projects/core-paging.tgz': dependencies: '@types/node': 8.10.50 - '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 eslint: 5.16.0 eslint-config-prettier: 4.3.0_eslint@5.16.0 eslint-detailed-reporter: 0.8.0_eslint@5.16.0 @@ -10637,7 +10655,7 @@ packages: eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 prettier: 1.18.2 - typescript: 3.5.2 + typescript: 3.5.3 dev: false name: '@rush-temp/core-paging' resolution: @@ -10653,8 +10671,8 @@ packages: '@types/sinon': 5.0.7 '@types/tunnel': 0.0.0 '@types/underscore': 1.9.2 - '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 binary-search-bounds: 2.0.3 create-hmac: 1.1.7 eslint: 5.16.0 @@ -10679,7 +10697,7 @@ packages: tslint: 5.18.0_typescript@3.5.2 tslint-config-prettier: 1.18.0 tunnel: 0.0.6 - typescript: 3.5.2 + typescript: 3.5.3 webpack: 4.35.3 webpack-cli: 3.3.5_webpack@4.35.3 dev: false @@ -10690,7 +10708,7 @@ packages: version: 0.0.0 'file:projects/event-hubs.tgz': dependencies: - '@microsoft/api-extractor': 7.2.2 + '@microsoft/api-extractor': 7.2.3 '@types/async-lock': 1.1.1 '@types/chai': 4.1.7 '@types/chai-as-promised': 7.1.0 @@ -10702,8 +10720,8 @@ packages: '@types/node': 8.10.50 '@types/uuid': 3.4.5 '@types/ws': 6.0.1 - '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 async-lock: 1.2.0 chai: 4.2.0 @@ -10742,7 +10760,7 @@ packages: rimraf: 2.6.3 rollup: 1.16.6 rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 - rollup-plugin-inject: 2.2.0 + rollup-plugin-inject: 3.0.0 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 @@ -10754,19 +10772,19 @@ packages: ts-node: 7.0.1 tslib: 1.10.0 tslint: 5.18.0_typescript@3.5.2 - typescript: 3.5.2 + typescript: 3.5.3 uuid: 3.3.2 ws: 6.2.1 dev: false name: '@rush-temp/event-hubs' resolution: - integrity: sha512-nTdXlgOMQXlutmhIerPvTfi/9HzIKM7QlSMKdtdAdMSLx/vjlQijMw3oecOZzRco4LF1F+LtPt30uCN+vltMzw== + integrity: sha512-nBOM1qWC/Vm7xgz56IhfugkZ8E4S8Cuyh3ON/gpHtVVDSMwqXZOrkDV7F4Iq7GeqEV/+mxvezsNEgPCePp8u8w== tarball: 'file:projects/event-hubs.tgz' version: 0.0.0 'file:projects/event-processor-host.tgz': dependencies: '@azure/event-hubs': 1.0.8 - '@microsoft/api-extractor': 7.2.2 + '@microsoft/api-extractor': 7.2.3 '@types/async-lock': 1.1.1 '@types/chai': 4.1.7 '@types/chai-as-promised': 7.1.0 @@ -10776,8 +10794,8 @@ packages: '@types/mocha': 5.2.7 '@types/node': 8.10.50 '@types/uuid': 3.4.5 - '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 async-lock: 1.2.0 azure-storage: 2.10.3 chai: 4.2.0 @@ -10811,12 +10829,12 @@ packages: ts-node: 7.0.1 tslib: 1.10.0 tslint: 5.18.0_typescript@3.5.2 - typescript: 3.5.2 + typescript: 3.5.3 uuid: 3.3.2 dev: false name: '@rush-temp/event-processor-host' resolution: - integrity: sha512-kp6aTXTB47j4o/BTtXXcJIQTlcH13upnkZbnNc4vLF34aOYgwJiSNl6UsHmyqe8q8gh4XgM/yNIz4yLYmvDmbw== + integrity: sha512-e88tWacwe4v6pdOi6MnZi6GZV7V9eD5/e8X/rzZr69AE/85s1IaS1uMl1sFLSskR6OijIDtPs6vZwmknWBrR+Q== tarball: 'file:projects/event-processor-host.tgz' version: 0.0.0 'file:projects/identity.tgz': @@ -10826,18 +10844,29 @@ packages: '@types/node': 8.10.50 '@types/qs': 6.5.3 '@types/uuid': 3.4.5 - '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 cross-env: 5.2.0 eslint: 5.16.0 events: 3.0.0 inherits: 2.0.4 jws: 3.2.2 + karma: 4.1.0 + karma-chrome-launcher: 2.2.0 + karma-coverage: 1.1.2 + karma-env-preprocessor: 0.1.1 + karma-json-preprocessor: 0.3.3_karma@4.1.0 + karma-json-to-file-reporter: 1.0.1 + karma-junit-reporter: 1.2.0_karma@4.1.0 + karma-mocha: 1.3.0 + karma-mocha-reporter: 2.2.5_karma@4.1.0 + karma-remap-coverage: 0.1.5_karma-coverage@1.1.2 mocha: 5.2.0 mocha-junit-reporter: 1.23.0_mocha@5.2.0 mocha-multi: 1.1.0_mocha@5.2.0 prettier: 1.18.2 + puppeteer: 1.18.1 qs: 6.7.0 rimraf: 2.6.3 rollup: 1.16.6 @@ -10847,25 +10876,26 @@ packages: rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-replace: 2.2.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 + rollup-plugin-terser: 4.0.4_rollup@1.16.6 rollup-plugin-uglify: 6.0.2_rollup@1.16.6 rollup-plugin-visualizer: 1.1.1_rollup@1.16.6 tslib: 1.10.0 - typescript: 3.5.2 + typescript: 3.5.3 util: 0.11.1 uuid: 3.3.2 dev: false name: '@rush-temp/identity' resolution: - integrity: sha512-/oYQvkAW5qiuEoMKY8GHGCXWVNCSh/HnxLfJYZmvX7hL5HVc3MtIXT4/pKwFvhPHQ68Dvf+O+OdnNbQp+x78QQ== + integrity: sha512-U7GIIXEO7mjvLk8qfkrIJYlOr0g9Yv4srGXmt/2rt/eNMmGE2qCgX56lL4GXKpZpRZVI55wH98zjK1adCDzEDQ== tarball: 'file:projects/identity.tgz' version: 0.0.0 'file:projects/keyvault-certificates.tgz': dependencies: - '@microsoft/api-extractor': 7.2.2 + '@microsoft/api-extractor': 7.2.3 '@types/chai': 4.1.7 '@types/node': 8.10.50 - '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 chai: 4.2.0 eslint: 5.16.0 eslint-config-prettier: 4.3.0_eslint@5.16.0 @@ -10879,26 +10909,26 @@ packages: rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 tslib: 1.10.0 - typescript: 3.5.2 + typescript: 3.5.3 uglify-js: 3.6.0 url: 0.11.0 dev: false name: '@rush-temp/keyvault-certificates' resolution: - integrity: sha512-XSBr3/4Hs4sJ5Igf2z4KIDChqnHNtV98ZLn7yfdcCTC0/ZAaem+JpJ5yYWIPUHgDO5ELWpvFqhRy/Teph4EI0A== + integrity: sha512-OnKHRTzszS738exvoRLs2jaUoM3n0EW/Vnuwh04GVxor6GUG7K2wo06C+qoq3sqI5VG6CuEwMKfsSTmkLJfaMg== tarball: 'file:projects/keyvault-certificates.tgz' version: 0.0.0 'file:projects/keyvault-keys.tgz': dependencies: - '@microsoft/api-extractor': 7.2.2 + '@microsoft/api-extractor': 7.2.3 '@types/chai': 4.1.7 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 '@types/nock': 10.0.3 '@types/node': 8.10.50 - '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 chai: 4.2.0 cross-env: 5.2.0 dotenv: 7.0.0 @@ -10918,28 +10948,28 @@ packages: rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 ts-mocha: 6.0.0_mocha@5.2.0 tslib: 1.10.0 - typescript: 3.5.2 + typescript: 3.5.3 uglify-js: 3.6.0 url: 0.11.0 dev: false name: '@rush-temp/keyvault-keys' resolution: - integrity: sha512-sP/y1S5uDAidLCQo8eliTGebvydAabqTBfQtkzWIrgn/Af1e+JIVemRz21CvXKlkNVCzQ5tcz14maU8k80PeEQ== + integrity: sha512-K1QS7ykok+p7DjKnd3GUg6k9W9nTXkux6iJOvt6i/UyVBSMIJ9v/szsLAd/6Osofj9ZMUfeCF46PXKccYkszeA== tarball: 'file:projects/keyvault-keys.tgz' version: 0.0.0 'file:projects/keyvault-secrets.tgz': dependencies: '@azure/ms-rest-azure-js': 1.3.8 '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.2.2 + '@microsoft/api-extractor': 7.2.3 '@types/chai': 4.1.7 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 '@types/nock': 10.0.3 '@types/node': 8.10.50 - '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 chai: 4.2.0 cross-env: 5.2.0 dotenv: 7.0.0 @@ -10959,13 +10989,13 @@ packages: rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 ts-mocha: 6.0.0_mocha@5.2.0 tslib: 1.10.0 - typescript: 3.5.2 + typescript: 3.5.3 uglify-js: 3.6.0 url: 0.11.0 dev: false name: '@rush-temp/keyvault-secrets' resolution: - integrity: sha512-jQOGbJ15CkqP2Ag9qTQl6rsLEY326azdxYGo0LQQxVpL/AYuKYCkl2UbUzhBEqfqvK+TVUPoENxjgvWJXldLHQ== + integrity: sha512-OkaQmEoxug4+KDAkDDIVeRR9XtS6dSMHYgJD4mAlOolYt9IcYTKAPr20xbwztnBb+1eS91OmbtQjixPdt0c2bQ== tarball: 'file:projects/keyvault-secrets.tgz' version: 0.0.0 'file:projects/service-bus.tgz': @@ -10973,7 +11003,7 @@ packages: '@azure/amqp-common': 1.0.0-preview.6_rhea-promise@0.1.15 '@azure/arm-servicebus': 0.1.0 '@azure/ms-rest-nodeauth': 0.9.3 - '@microsoft/api-extractor': 7.2.2 + '@microsoft/api-extractor': 7.2.3 '@types/async-lock': 1.1.1 '@types/chai': 4.1.7 '@types/chai-as-promised': 7.1.0 @@ -10984,8 +11014,8 @@ packages: '@types/mocha': 5.2.7 '@types/node': 8.10.50 '@types/ws': 6.0.1 - '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 buffer: 5.2.1 chai: 4.2.0 @@ -11028,7 +11058,7 @@ packages: rimraf: 2.6.3 rollup: 1.16.6 rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 - rollup-plugin-inject: 2.2.0 + rollup-plugin-inject: 3.0.0 rollup-plugin-json: 3.1.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 @@ -11038,26 +11068,26 @@ packages: rollup-plugin-terser: 4.0.4_rollup@1.16.6 ts-node: 7.0.1 tslib: 1.10.0 - typescript: 3.5.2 + typescript: 3.5.3 ws: 6.2.1 dev: false name: '@rush-temp/service-bus' resolution: - integrity: sha512-7awJweIHtIypLgLeFRRXZPGOqY3AUVvG6AhHWFQlQGol477edqRY7K+19l7e/9mca6w+LcqIZ9MHzqsC0Z30QQ== + integrity: sha512-V2UzOz8o+VFyBVE2ySdVnZxkIs2L40wEFV4Hwd5pNJDBkabi8BeazNmRZdSe/d/rQ0IOQHON2fQgqg1LrKqHaQ== tarball: 'file:projects/service-bus.tgz' version: 0.0.0 'file:projects/storage-blob.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.2.2 + '@microsoft/api-extractor': 7.2.3 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 '@types/nise': 1.4.0 '@types/nock': 10.0.3 '@types/node': 8.10.50 - '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 cross-env: 5.2.0 dotenv: 7.0.0 @@ -11108,20 +11138,20 @@ packages: source-map-support: 0.5.12 ts-node: 7.0.1 tslib: 1.10.0 - typescript: 3.5.2 + typescript: 3.5.3 util: 0.11.1 dev: false name: '@rush-temp/storage-blob' resolution: - integrity: sha512-z7lYdx3/7xAAy29h+FvvXnpsLh5+mxVa6d6O3Z39PQ7aL0LCzOlVTkRudilyEr+Gm6PUGK7tRQ8RD0zcGPVmlQ== + integrity: sha512-1p8XPdIYryOGCYaZZG1TBpnEM/2Jej9nWGVBljnm0OLJwJfF3HOJA0hiLMdfZGmYmJTWFPa/75aSCy4clNPwgg== tarball: 'file:projects/storage-blob.tgz' version: 0.0.0 'file:projects/storage-datalake.tgz': dependencies: '@azure/ms-rest-azure-js': 1.3.8 '@azure/ms-rest-js': 1.8.13 - '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 eslint: 5.16.0 eslint-config-prettier: 4.3.0_eslint@5.16.0 eslint-detailed-reporter: 0.8.0_eslint@5.16.0 @@ -11132,27 +11162,27 @@ packages: rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 ts-node: 7.0.1 tslib: 1.10.0 - typescript: 3.5.2 + typescript: 3.5.3 uglify: 0.1.5 uglify-js: 3.6.0 dev: false name: '@rush-temp/storage-datalake' resolution: - integrity: sha512-f1i1Q+N0F1TZsHRuyo2lkRIAjJp/OkNm7r6K62zV5zGbRms8+ntEabSQTw0AOlaoUM/E7e4984Ki4qFW/8x1Zw== + integrity: sha512-swDFFEPAdfjA0hUa40VIrq3w0iIJTuSlLivFQzZtoyLHtOC1r2vduJwxzdBWCSstEw/XqxR4xlgFJgrtGOUH/Q== tarball: 'file:projects/storage-datalake.tgz' version: 0.0.0 'file:projects/storage-file.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.2.2 + '@microsoft/api-extractor': 7.2.3 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 '@types/nise': 1.4.0 '@types/nock': 10.0.3 '@types/node': 8.10.50 - '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 cross-env: 5.2.0 dotenv: 7.0.0 @@ -11203,26 +11233,26 @@ packages: source-map-support: 0.5.12 ts-node: 7.0.1 tslib: 1.10.0 - typescript: 3.5.2 + typescript: 3.5.3 util: 0.11.1 dev: false name: '@rush-temp/storage-file' resolution: - integrity: sha512-XUDoUBZkRrn4lMsgKuXdJqz/WNqWvu8WBFgxsjYGcjF4pTph/6f+iff5zwqhM9R2nSlIos2r6ACNGQFDSYaFhw== + integrity: sha512-gF2J7FhqJAOHonnjK/tcHQR5YWEt0LA7orD4FmdxUEg4bkclC6xYOAeSBc5MRCVv6MLK+ZvjRrNtCNreog1Sqg== tarball: 'file:projects/storage-file.tgz' version: 0.0.0 'file:projects/storage-queue.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.2.2 + '@microsoft/api-extractor': 7.2.3 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 '@types/nise': 1.4.0 '@types/nock': 10.0.3 '@types/node': 8.10.50 - '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 cross-env: 5.2.0 dotenv: 7.0.0 @@ -11272,22 +11302,22 @@ packages: source-map-support: 0.5.12 ts-node: 7.0.1 tslib: 1.10.0 - typescript: 3.5.2 + typescript: 3.5.3 util: 0.11.1 dev: false name: '@rush-temp/storage-queue' resolution: - integrity: sha512-a+Fk38dH4UDI1d4NQLaZynyCyjsKbVDPDxDSTWpfhW5eXVwAOpa1HpBBzSniZmB6PQz0xWQNsVIwAgQW8vMKRQ== + integrity: sha512-Iq4qHCQ8dFi/esPjeOKK1YnTocMkDd9p5u32zIerB5RvL4JAHCgUppS3glua7+6XS/UUvrR8C2S4PKC8ASyeXg== tarball: 'file:projects/storage-queue.tgz' version: 0.0.0 'file:projects/template.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.2.2 + '@microsoft/api-extractor': 7.2.3 '@types/mocha': 5.2.7 '@types/node': 8.10.50 - '@typescript-eslint/eslint-plugin': 1.11.0_afcff25d83eecf077c0a68701b299d14 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.2 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 cross-env: 5.2.0 eslint: 5.16.0 @@ -11313,12 +11343,12 @@ packages: rollup-plugin-uglify: 6.0.2_rollup@1.16.6 rollup-plugin-visualizer: 1.1.1_rollup@1.16.6 tslib: 1.10.0 - typescript: 3.5.2 + typescript: 3.5.3 util: 0.11.1 dev: false name: '@rush-temp/template' resolution: - integrity: sha512-tqa7eOYH30fsdwO3RFUaZblA5YncIPhwzXkQOd81K124G2o4ZDQAn/GWw3+NuAonSDC36OYZPq9KItFSCYavqw== + integrity: sha512-LYFkUwdLyyxpwZmV27HM0mJu4o3+JMLDKVfQ9M+Poq3DPoCMTjEzDsifc2jahO82NJSkbQB4cxvLCcfUC7kMfg== tarball: 'file:projects/template.tgz' version: 0.0.0 'file:projects/testhub.tgz': @@ -11337,7 +11367,7 @@ packages: rhea: 1.0.8 rimraf: 2.6.3 tslib: 1.10.0 - typescript: 3.5.2 + typescript: 3.5.3 uuid: 3.3.2 yargs: 11.1.0 dev: false @@ -11492,10 +11522,10 @@ specifiers: rhea: ^1.0.4 rhea-promise: ^0.1.15 rimraf: ^2.6.2 - rollup: ^1.0.0 + rollup: ^1.16.3 rollup-plugin-alias: ^1.4.0 rollup-plugin-commonjs: ^10.0.0 - rollup-plugin-inject: ^2.2.0 + rollup-plugin-inject: ^3.0.0 rollup-plugin-json: ^3.1.0 rollup-plugin-multi-entry: ^2.1.0 rollup-plugin-node-globals: ^1.4.0 diff --git a/sdk/core/core-amqp/package.json b/sdk/core/core-amqp/package.json index 1c9de82153c6..5e91d3dd4387 100644 --- a/sdk/core/core-amqp/package.json +++ b/sdk/core/core-amqp/package.json @@ -108,7 +108,7 @@ "rimraf": "^2.6.2", "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", - "rollup-plugin-inject": "^2.2.0", + "rollup-plugin-inject": "^3.0.0", "rollup-plugin-json": "^3.1.0", "rollup-plugin-multi-entry": "^2.1.0", "rollup-plugin-node-globals": "^1.4.0", diff --git a/sdk/eventhub/event-hubs/package.json b/sdk/eventhub/event-hubs/package.json index 829f0510d3a8..0c81b0e3d565 100644 --- a/sdk/eventhub/event-hubs/package.json +++ b/sdk/eventhub/event-hubs/package.json @@ -122,7 +122,7 @@ "rimraf": "^2.6.2", "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", - "rollup-plugin-inject": "^2.2.0", + "rollup-plugin-inject": "^3.0.0", "rollup-plugin-json": "^3.1.0", "rollup-plugin-multi-entry": "^2.1.0", "rollup-plugin-node-resolve": "^5.0.2", diff --git a/sdk/servicebus/service-bus/package.json b/sdk/servicebus/service-bus/package.json index 6ca298d75aa8..7ba72910ce65 100644 --- a/sdk/servicebus/service-bus/package.json +++ b/sdk/servicebus/service-bus/package.json @@ -126,7 +126,7 @@ "rimraf": "^2.6.2", "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", - "rollup-plugin-inject": "^2.2.0", + "rollup-plugin-inject": "^3.0.0", "rollup-plugin-json": "^3.1.0", "rollup-plugin-multi-entry": "^2.1.0", "rollup-plugin-node-resolve": "^5.0.2", From 64c5e981ffcb4ce4d54030fcb1cc5f3e48d21573 Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Mon, 8 Jul 2019 18:24:37 -0700 Subject: [PATCH 244/289] Update dev dependency "rollup-plugin-json" to latest (#4216) --- common/config/rush/pnpm-lock.yaml | 77 +++++++++++++------ sdk/core/core-amqp/package.json | 2 +- sdk/core/core-auth/package.json | 2 +- sdk/core/core-http/package.json | 2 +- sdk/eventhub/event-hubs/package.json | 2 +- .../event-processor-host/package.json | 2 +- sdk/identity/identity/package.json | 2 +- sdk/servicebus/service-bus/package.json | 2 +- sdk/template/template/package.json | 2 +- 9 files changed, 62 insertions(+), 31 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 8785b9f58f68..925f549b0c58 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -147,7 +147,7 @@ dependencies: rollup-plugin-alias: 1.5.2 rollup-plugin-commonjs: 10.0.1 rollup-plugin-inject: 3.0.0 - rollup-plugin-json: 3.1.0 + 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 @@ -8218,12 +8218,12 @@ packages: dev: false resolution: integrity: sha512-euo9UmiJDxyGPjlHecpOZjUcBOOzaI5fbnqmFulG0I8k3or4JMi7UHDcRCcjkeDORF966jsA2qYbvXrgrmgCuw== - /rollup-plugin-json/3.1.0: + /rollup-plugin-json/4.0.0: dependencies: rollup-pluginutils: 2.8.1 dev: false resolution: - integrity: sha512-BlYk5VspvGpjz7lAwArVzBXR60JK+4EKtPkCHouAWg39obk9S61hZYJDBfMK+oitPdoe11i69TlxKlMQNFC/Uw== + integrity: sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow== /rollup-plugin-multi-entry/2.1.0: dependencies: matched: 1.0.2 @@ -9484,7 +9484,30 @@ packages: semver: 5.7.0 tslib: 1.10.0 tsutils: 2.29.0_typescript@3.5.2 - typescript: 3.5.2 + dev: false + engines: + node: '>=4.8.0' + hasBin: true + peerDependencies: + typescript: '>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev' + resolution: + integrity: sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w== + /tslint/5.18.0_typescript@3.5.3: + dependencies: + '@babel/code-frame': 7.0.0 + builtin-modules: 1.1.1 + chalk: 2.4.2 + commander: 2.20.0 + diff: 3.5.0 + glob: 7.1.4 + js-yaml: 3.13.1 + minimatch: 3.0.4 + mkdirp: 0.5.1 + resolve: 1.11.1 + semver: 5.7.0 + tslib: 1.10.0 + tsutils: 2.29.0_typescript@3.5.3 + typescript: 3.5.3 dev: false engines: node: '>=4.8.0' @@ -9496,7 +9519,15 @@ packages: /tsutils/2.29.0_typescript@3.5.2: dependencies: tslib: 1.10.0 - typescript: 3.5.2 + dev: false + peerDependencies: + typescript: '>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev' + resolution: + integrity: sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== + /tsutils/2.29.0_typescript@3.5.3: + dependencies: + tslib: 1.10.0 + typescript: 3.5.3 dev: false peerDependencies: typescript: '>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev' @@ -10477,7 +10508,7 @@ packages: rollup: 1.16.6 rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 rollup-plugin-inject: 3.0.0 - rollup-plugin-json: 3.1.0 + 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.16.6 @@ -10497,7 +10528,7 @@ packages: dev: false name: '@rush-temp/core-amqp' resolution: - integrity: sha512-4LaegN8wzDPJRB9JxRWEqLnzv1ReHnXi6GE/HGAvDBKKDzJvRuZFVp8WTGzmUX6mVTbcOFMZmEeQ5vI2Y8iMLg== + integrity: sha512-Jz3QXVrDs186fKzZbn1zBpEPrOrnBzkbg9YdZtgRpVomMCNkzXuAS3xiqWNTUeCtfrJmencleLHXjMOiAqwDZA== tarball: 'file:projects/core-amqp.tgz' version: 0.0.0 'file:projects/core-asynciterator-polyfill.tgz': @@ -10542,7 +10573,7 @@ packages: rimraf: 2.6.3 rollup: 1.16.6 rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 - rollup-plugin-json: 3.1.0 + rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-replace: 2.2.0 @@ -10555,7 +10586,7 @@ packages: dev: false name: '@rush-temp/core-auth' resolution: - integrity: sha512-19yRiEMrSjN0Yb7+icSLkizUwN3VX1BNzQKzUla09bHc5Ieovr7vsb1NihpSFT6iGcHztEZjOVlcPEv8PxrmPA== + integrity: sha512-FUiGNF7cFSquo404X0gFz82eULBFKOTA9x+YODMQBjEMi17kLA2KO+E7njQDVI43x0CXz1ipTlje/zg2uxHJhQ== tarball: 'file:projects/core-auth.tgz' version: 0.0.0 'file:projects/core-http.tgz': @@ -10612,7 +10643,7 @@ packages: rollup: 1.16.6 rollup-plugin-alias: 1.5.2 rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 - rollup-plugin-json: 3.1.0 + rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-resolve: 0.0.1-predev.1 @@ -10640,7 +10671,7 @@ packages: dev: false name: '@rush-temp/core-http' resolution: - integrity: sha512-fO14XIqz9cAVSOHDFolgoZtb969MWpCB67zw3f5fjHfm2FGk7NNmM0Rb+6n/Yaas+lPGrNVuLjHXa68uwZdB+g== + integrity: sha512-V7io00IYzpfe0UkVeC+6jbaX2H40zamEK2AmFB/xEttol1uD5FJ96UwYcvOymeZT8qNsOOuiK8FiD101EPlMVQ== tarball: 'file:projects/core-http.tgz' version: 0.0.0 'file:projects/core-paging.tgz': @@ -10694,7 +10725,7 @@ packages: stream-http: 2.8.3 ts-node: 7.0.1 tslib: 1.10.0 - tslint: 5.18.0_typescript@3.5.2 + tslint: 5.18.0_typescript@3.5.3 tslint-config-prettier: 1.18.0 tunnel: 0.0.6 typescript: 3.5.3 @@ -10761,7 +10792,7 @@ packages: rollup: 1.16.6 rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 rollup-plugin-inject: 3.0.0 - rollup-plugin-json: 3.1.0 + rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-replace: 2.2.0 @@ -10778,7 +10809,7 @@ packages: dev: false name: '@rush-temp/event-hubs' resolution: - integrity: sha512-nBOM1qWC/Vm7xgz56IhfugkZ8E4S8Cuyh3ON/gpHtVVDSMwqXZOrkDV7F4Iq7GeqEV/+mxvezsNEgPCePp8u8w== + integrity: sha512-4SXlBNNpio9rKF27gt7/ROBdlKbdDYx5i0Vx2M9yYumMcG+kkGTBb/k80ef+RKx1FuvRCeEsZbsVlWFMYvDxWA== tarball: 'file:projects/event-hubs.tgz' version: 0.0.0 'file:projects/event-processor-host.tgz': @@ -10820,7 +10851,7 @@ packages: rimraf: 2.6.3 rollup: 1.16.6 rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 - rollup-plugin-json: 3.1.0 + rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-replace: 2.2.0 @@ -10834,7 +10865,7 @@ packages: dev: false name: '@rush-temp/event-processor-host' resolution: - integrity: sha512-e88tWacwe4v6pdOi6MnZi6GZV7V9eD5/e8X/rzZr69AE/85s1IaS1uMl1sFLSskR6OijIDtPs6vZwmknWBrR+Q== + integrity: sha512-kNXtALlFQOATlvSkSIJ2PU54lX/OY/yD33fxY4KXBUcEZ3fJTaH8iXmV0S89Ry/eaOHtHU/Iia1Yfs7u7d4avA== tarball: 'file:projects/event-processor-host.tgz' version: 0.0.0 'file:projects/identity.tgz': @@ -10871,7 +10902,7 @@ packages: rimraf: 2.6.3 rollup: 1.16.6 rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 - rollup-plugin-json: 3.1.0 + rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-replace: 2.2.0 @@ -10886,7 +10917,7 @@ packages: dev: false name: '@rush-temp/identity' resolution: - integrity: sha512-U7GIIXEO7mjvLk8qfkrIJYlOr0g9Yv4srGXmt/2rt/eNMmGE2qCgX56lL4GXKpZpRZVI55wH98zjK1adCDzEDQ== + integrity: sha512-ZPVF+eGmpYAkiT5vIzdpGHCely8t8ZRAKbv66da28B3mO973m2LeLBXWzeA7+Dwq6Bh9lE7VqvWzK3UoxOSMvg== tarball: 'file:projects/identity.tgz' version: 0.0.0 'file:projects/keyvault-certificates.tgz': @@ -11059,7 +11090,7 @@ packages: rollup: 1.16.6 rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 rollup-plugin-inject: 3.0.0 - rollup-plugin-json: 3.1.0 + rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-replace: 2.2.0 @@ -11073,7 +11104,7 @@ packages: dev: false name: '@rush-temp/service-bus' resolution: - integrity: sha512-V2UzOz8o+VFyBVE2ySdVnZxkIs2L40wEFV4Hwd5pNJDBkabi8BeazNmRZdSe/d/rQ0IOQHON2fQgqg1LrKqHaQ== + integrity: sha512-0Qb3GbQwrRp0r/d2dZko7iV4CkIIbje1Ul5Nlo7KO3yTXfyXOg96LxDdion39YHfaSjr2Bq0yGHC5N/Tqq3Hsw== tarball: 'file:projects/service-bus.tgz' version: 0.0.0 'file:projects/storage-blob.tgz': @@ -11335,7 +11366,7 @@ packages: rimraf: 2.6.3 rollup: 1.16.6 rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 - rollup-plugin-json: 3.1.0 + rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-replace: 2.2.0 @@ -11348,7 +11379,7 @@ packages: dev: false name: '@rush-temp/template' resolution: - integrity: sha512-LYFkUwdLyyxpwZmV27HM0mJu4o3+JMLDKVfQ9M+Poq3DPoCMTjEzDsifc2jahO82NJSkbQB4cxvLCcfUC7kMfg== + integrity: sha512-SYoNlr9680ka8MtUybIXp4rlK4tEgg686s/I06AHvO39SN29nKNwXGZE0WtSESQC6Z2+t8CVQN5UjuR1DlJbiQ== tarball: 'file:projects/template.tgz' version: 0.0.0 'file:projects/testhub.tgz': @@ -11526,7 +11557,7 @@ specifiers: rollup-plugin-alias: ^1.4.0 rollup-plugin-commonjs: ^10.0.0 rollup-plugin-inject: ^3.0.0 - rollup-plugin-json: ^3.1.0 + 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.0.2 diff --git a/sdk/core/core-amqp/package.json b/sdk/core/core-amqp/package.json index 5e91d3dd4387..fe79973775e8 100644 --- a/sdk/core/core-amqp/package.json +++ b/sdk/core/core-amqp/package.json @@ -109,7 +109,7 @@ "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-inject": "^3.0.0", - "rollup-plugin-json": "^3.1.0", + "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.0.2", diff --git a/sdk/core/core-auth/package.json b/sdk/core/core-auth/package.json index f97fb4ca6911..82d29872d04f 100644 --- a/sdk/core/core-auth/package.json +++ b/sdk/core/core-auth/package.json @@ -83,7 +83,7 @@ "rimraf": "^2.6.2", "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", - "rollup-plugin-json": "^3.1.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", diff --git a/sdk/core/core-http/package.json b/sdk/core/core-http/package.json index 48be9df421f6..6630d434e4e4 100644 --- a/sdk/core/core-http/package.json +++ b/sdk/core/core-http/package.json @@ -170,7 +170,7 @@ "rollup": "^1.16.3", "rollup-plugin-alias": "^1.4.0", "rollup-plugin-commonjs": "^10.0.0", - "rollup-plugin-json": "^3.1.0", + "rollup-plugin-json": "^4.0.0", "rollup-plugin-multi-entry": "^2.1.0", "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-resolve": "0.0.1-predev.1", diff --git a/sdk/eventhub/event-hubs/package.json b/sdk/eventhub/event-hubs/package.json index 0c81b0e3d565..81717f42caeb 100644 --- a/sdk/eventhub/event-hubs/package.json +++ b/sdk/eventhub/event-hubs/package.json @@ -123,7 +123,7 @@ "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-inject": "^3.0.0", - "rollup-plugin-json": "^3.1.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", diff --git a/sdk/eventhub/event-processor-host/package.json b/sdk/eventhub/event-processor-host/package.json index 1fa1cd487cb7..6c88a271487e 100644 --- a/sdk/eventhub/event-processor-host/package.json +++ b/sdk/eventhub/event-processor-host/package.json @@ -99,7 +99,7 @@ "rimraf": "^2.6.2", "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", - "rollup-plugin-json": "^3.1.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", diff --git a/sdk/identity/identity/package.json b/sdk/identity/identity/package.json index 3e25bced68e2..34a9810ceaed 100644 --- a/sdk/identity/identity/package.json +++ b/sdk/identity/identity/package.json @@ -105,7 +105,7 @@ "rimraf": "^2.6.2", "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", - "rollup-plugin-json": "^3.1.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", diff --git a/sdk/servicebus/service-bus/package.json b/sdk/servicebus/service-bus/package.json index 7ba72910ce65..63bc6d15021e 100644 --- a/sdk/servicebus/service-bus/package.json +++ b/sdk/servicebus/service-bus/package.json @@ -127,7 +127,7 @@ "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", "rollup-plugin-inject": "^3.0.0", - "rollup-plugin-json": "^3.1.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", diff --git a/sdk/template/template/package.json b/sdk/template/template/package.json index 47ad6f0c26e9..3585063116f9 100644 --- a/sdk/template/template/package.json +++ b/sdk/template/template/package.json @@ -85,7 +85,7 @@ "rimraf": "^2.6.2", "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", - "rollup-plugin-json": "^3.1.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", From af04c5e28ae312fab0461ac6a8011050f9358452 Mon Sep 17 00:00:00 2001 From: Jonathan Turner Date: Tue, 9 Jul 2019 13:54:51 +1200 Subject: [PATCH 245/289] Add warning about missing keys api (#3932) --- sdk/keyvault/keyvault-keys/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sdk/keyvault/keyvault-keys/README.md b/sdk/keyvault/keyvault-keys/README.md index e325d272b9e1..22012c9b6eb4 100644 --- a/sdk/keyvault/keyvault-keys/README.md +++ b/sdk/keyvault/keyvault-keys/README.md @@ -21,6 +21,8 @@ Use the client library for Azure KeyVault Keys in your Node.js application to - Get the versions of a key. - As well as obtaining the attributes of a key. +**Please Note:** This is a preview version of the KeyVault Keys library and does not yet have the full capability of the Keys API. Currently missing are methods related to crypto capabilities: encrypt, decrypt, sign, verify, wrap, and unwrap. These are expected to be added in the next release. + [Source code](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/keyvault/keyvault-keys) | [Package (npm)](https://www.npmjs.com/package/@azure/keyvault-keys) | [API Reference Documentation](https://azure.github.io/azure-sdk-for-js/keyvault-keys) | [Product documentation](https://azure.microsoft.com/en-us/services/key-vault/) | [Samples](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/keyvault/keyvault-keys/samples) ## Getting started From d20aa794dd3708c1269afea332c6e76d68623ffd Mon Sep 17 00:00:00 2001 From: ramya0820 <45977823+ramya0820@users.noreply.github.com> Date: Tue, 9 Jul 2019 09:41:52 -0700 Subject: [PATCH 246/289] [Service Bus] Absorb amqp-common fix to not hard-code token audience (#4146) --- sdk/servicebus/service-bus/package.json | 2 +- sdk/servicebus/service-bus/src/serviceBusClient.ts | 3 ++- sdk/servicebus/service-bus/test/serviceBusClient.spec.ts | 5 +---- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/sdk/servicebus/service-bus/package.json b/sdk/servicebus/service-bus/package.json index 63bc6d15021e..fd05bf270e27 100644 --- a/sdk/servicebus/service-bus/package.json +++ b/sdk/servicebus/service-bus/package.json @@ -65,7 +65,7 @@ }, "sideEffects": false, "dependencies": { - "@azure/amqp-common": "^1.0.0-preview.5", + "@azure/amqp-common": "^1.0.0-preview.6", "@azure/ms-rest-nodeauth": "^0.9.2", "@types/is-buffer": "^2.0.0", "@types/long": "^4.0.0", diff --git a/sdk/servicebus/service-bus/src/serviceBusClient.ts b/sdk/servicebus/service-bus/src/serviceBusClient.ts index 3fe0705447b3..126a317a33fd 100644 --- a/sdk/servicebus/service-bus/src/serviceBusClient.ts +++ b/sdk/servicebus/service-bus/src/serviceBusClient.ts @@ -229,7 +229,8 @@ export class ServiceBusClient { * - ApplicationTokenCredentials * - UserTokenCredentials * - DeviceTokenCredentials - * - MSITokenCredentials. + * - MSITokenCredentials + * Token audience (or resource in case of MSI based credentials) to use when creating the credentials is https://servicebus.azure.net/ * @param {ServiceBusClientOptions} options - Options to control ways to interact with the * Service Bus Namespace. * @returns {ServiceBusClient} diff --git a/sdk/servicebus/service-bus/test/serviceBusClient.spec.ts b/sdk/servicebus/service-bus/test/serviceBusClient.spec.ts index e97d8c1650ce..3470bb8f1156 100644 --- a/sdk/servicebus/service-bus/test/serviceBusClient.spec.ts +++ b/sdk/servicebus/service-bus/test/serviceBusClient.spec.ts @@ -87,10 +87,7 @@ describe("Create ServiceBusClient and Queue/Topic/Subscription Clients #RunInBro }); }); -// Following tests have been disabled for browser for until Service Bus is updated to use core-amqp -// See https://github.com/Azure/azure-sdk-for-js/pull/3930 -// Once resolved, the tests need to be enabled by adding #RuninBrowser to the describe message -describe("Errors with non existing Namespace", function(): void { +describe("Errors with non existing Namespace #RunInBrowser", function(): void { let sbClient: ServiceBusClient; let errorWasThrown: boolean; beforeEach(() => { From b87400bc19915dff74680b3a2ba48e18346882e1 Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Tue, 9 Jul 2019 10:31:44 -0700 Subject: [PATCH 247/289] Update dev dependency "rollup-plugin-terser" to latest (#4217) --- common/config/rush/pnpm-lock.yaml | 104 ++++++------------------ sdk/identity/identity/package.json | 2 +- sdk/servicebus/service-bus/package.json | 2 +- 3 files changed, 25 insertions(+), 83 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 925f549b0c58..5333242e87cf 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -155,7 +155,7 @@ dependencies: rollup-plugin-resolve: 0.0.1-predev.1 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2 - rollup-plugin-terser: 4.0.4 + rollup-plugin-terser: 5.1.1 rollup-plugin-uglify: 6.0.2 rollup-plugin-visualizer: 1.1.1 semaphore: 1.0.5 @@ -8306,29 +8306,31 @@ packages: rollup: '>=0.31.2' resolution: integrity: sha1-YhJaqUCHqt97g+9N+vYptHMTXoc= - /rollup-plugin-terser/4.0.4: + /rollup-plugin-terser/5.1.1: dependencies: '@babel/code-frame': 7.0.0 jest-worker: 24.6.0 + rollup-pluginutils: 2.8.1 serialize-javascript: 1.7.0 - terser: 3.17.0 + terser: 4.1.2 dev: false peerDependencies: rollup: '>=0.66.0 <2' resolution: - integrity: sha512-wPANT5XKVJJ8RDUN0+wIr7UPd0lIXBo4UdJ59VmlPCtlFsE20AM+14pe+tk7YunCsWEiuzkDBY3QIkSCjtrPXg== - /rollup-plugin-terser/4.0.4_rollup@1.16.6: + integrity: sha512-McIMCDEY8EU6Y839C09UopeRR56wXHGdvKKjlfiZG/GrP6wvZQ62u2ko/Xh1MNH2M9WDL+obAAHySljIZYCuPQ== + /rollup-plugin-terser/5.1.1_rollup@1.16.6: dependencies: '@babel/code-frame': 7.0.0 jest-worker: 24.6.0 rollup: 1.16.6 + rollup-pluginutils: 2.8.1 serialize-javascript: 1.7.0 - terser: 3.17.0 + terser: 4.1.2 dev: false peerDependencies: rollup: '>=0.66.0 <2' resolution: - integrity: sha512-wPANT5XKVJJ8RDUN0+wIr7UPd0lIXBo4UdJ59VmlPCtlFsE20AM+14pe+tk7YunCsWEiuzkDBY3QIkSCjtrPXg== + integrity: sha512-McIMCDEY8EU6Y839C09UopeRR56wXHGdvKKjlfiZG/GrP6wvZQ62u2ko/Xh1MNH2M9WDL+obAAHySljIZYCuPQ== /rollup-plugin-uglify/6.0.2: dependencies: '@babel/code-frame': 7.0.0 @@ -9167,17 +9169,6 @@ packages: webpack: ^4.0.0 resolution: integrity: sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg== - /terser/3.17.0: - dependencies: - commander: 2.20.0 - source-map: 0.6.1 - source-map-support: 0.5.12 - dev: false - engines: - node: '>=6.0.0' - hasBin: true - resolution: - integrity: sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ== /terser/4.1.2: dependencies: commander: 2.20.0 @@ -9456,42 +9447,19 @@ packages: hasBin: true resolution: integrity: sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg== - /tslint-eslint-rules/5.4.0_tslint@5.18.0+typescript@3.5.2: + /tslint-eslint-rules/5.4.0_tslint@5.18.0+typescript@3.5.3: dependencies: doctrine: 0.7.2 tslib: 1.9.0 - tslint: 5.18.0_typescript@3.5.2 - tsutils: 3.14.0_typescript@3.5.2 - typescript: 3.5.2 + tslint: 5.18.0_typescript@3.5.3 + tsutils: 3.14.0_typescript@3.5.3 + typescript: 3.5.3 dev: false peerDependencies: tslint: ^5.0.0 typescript: ^2.2.0 || ^3.0.0 resolution: integrity: sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w== - /tslint/5.18.0_typescript@3.5.2: - dependencies: - '@babel/code-frame': 7.0.0 - builtin-modules: 1.1.1 - chalk: 2.4.2 - commander: 2.20.0 - diff: 3.5.0 - glob: 7.1.4 - js-yaml: 3.13.1 - minimatch: 3.0.4 - mkdirp: 0.5.1 - resolve: 1.11.1 - semver: 5.7.0 - tslib: 1.10.0 - tsutils: 2.29.0_typescript@3.5.2 - dev: false - engines: - node: '>=4.8.0' - hasBin: true - peerDependencies: - typescript: '>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev' - resolution: - integrity: sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w== /tslint/5.18.0_typescript@3.5.3: dependencies: '@babel/code-frame': 7.0.0 @@ -9516,14 +9484,6 @@ packages: typescript: '>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev' resolution: integrity: sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w== - /tsutils/2.29.0_typescript@3.5.2: - dependencies: - tslib: 1.10.0 - dev: false - peerDependencies: - typescript: '>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev' - resolution: - integrity: sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== /tsutils/2.29.0_typescript@3.5.3: dependencies: tslib: 1.10.0 @@ -9543,17 +9503,6 @@ packages: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev' resolution: integrity: sha512-SmzGbB0l+8I0QwsPgjooFRaRvHLBLNYM8SeQ0k6rtNDru5sCGeLJcZdwilNndN+GysuFjF5EIYgN8GfFG6UeUw== - /tsutils/3.14.0_typescript@3.5.2: - dependencies: - tslib: 1.10.0 - typescript: 3.5.2 - 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' - resolution: - integrity: sha512-SmzGbB0l+8I0QwsPgjooFRaRvHLBLNYM8SeQ0k6rtNDru5sCGeLJcZdwilNndN+GysuFjF5EIYgN8GfFG6UeUw== /tsutils/3.14.0_typescript@3.5.3: dependencies: tslib: 1.10.0 @@ -9633,13 +9582,6 @@ packages: hasBin: true resolution: integrity: sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw== - /typescript/3.5.2: - dev: false - engines: - node: '>=4.2.0' - hasBin: true - resolution: - integrity: sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA== /typescript/3.5.3: dev: false engines: @@ -10520,7 +10462,7 @@ packages: stream-browserify: 2.0.2 ts-node: 7.0.1 tslib: 1.10.0 - tslint: 5.18.0_typescript@3.5.2 + tslint: 5.18.0_typescript@3.5.3 typescript: 3.5.3 url: 0.11.0 util: 0.11.1 @@ -10656,8 +10598,8 @@ packages: ts-loader: 5.4.5_typescript@3.5.3 ts-node: 7.0.1 tslib: 1.10.0 - tslint: 5.18.0_typescript@3.5.2 - tslint-eslint-rules: 5.4.0_tslint@5.18.0+typescript@3.5.2 + tslint: 5.18.0_typescript@3.5.3 + tslint-eslint-rules: 5.4.0_tslint@5.18.0+typescript@3.5.3 tunnel: 0.0.6 typescript: 3.5.3 uglify-js: 3.6.0 @@ -10802,7 +10744,7 @@ packages: ts-mocha: 6.0.0_mocha@5.2.0 ts-node: 7.0.1 tslib: 1.10.0 - tslint: 5.18.0_typescript@3.5.2 + tslint: 5.18.0_typescript@3.5.3 typescript: 3.5.3 uuid: 3.3.2 ws: 6.2.1 @@ -10859,7 +10801,7 @@ packages: rollup-plugin-uglify: 6.0.2_rollup@1.16.6 ts-node: 7.0.1 tslib: 1.10.0 - tslint: 5.18.0_typescript@3.5.2 + tslint: 5.18.0_typescript@3.5.3 typescript: 3.5.3 uuid: 3.3.2 dev: false @@ -10907,7 +10849,7 @@ packages: rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-replace: 2.2.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 - rollup-plugin-terser: 4.0.4_rollup@1.16.6 + rollup-plugin-terser: 5.1.1_rollup@1.16.6 rollup-plugin-uglify: 6.0.2_rollup@1.16.6 rollup-plugin-visualizer: 1.1.1_rollup@1.16.6 tslib: 1.10.0 @@ -10917,7 +10859,7 @@ packages: dev: false name: '@rush-temp/identity' resolution: - integrity: sha512-ZPVF+eGmpYAkiT5vIzdpGHCely8t8ZRAKbv66da28B3mO973m2LeLBXWzeA7+Dwq6Bh9lE7VqvWzK3UoxOSMvg== + integrity: sha512-5VGkBw5Iz7ES6fw8kW7Rgx13oiLvENzb/Oa2rIBNaNgieDKfOrONP4gPnGhkutGZQhdPiAKowiJKJ1roWaxePw== tarball: 'file:projects/identity.tgz' version: 0.0.0 'file:projects/keyvault-certificates.tgz': @@ -11096,7 +11038,7 @@ packages: rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 - rollup-plugin-terser: 4.0.4_rollup@1.16.6 + rollup-plugin-terser: 5.1.1_rollup@1.16.6 ts-node: 7.0.1 tslib: 1.10.0 typescript: 3.5.3 @@ -11104,7 +11046,7 @@ packages: dev: false name: '@rush-temp/service-bus' resolution: - integrity: sha512-0Qb3GbQwrRp0r/d2dZko7iV4CkIIbje1Ul5Nlo7KO3yTXfyXOg96LxDdion39YHfaSjr2Bq0yGHC5N/Tqq3Hsw== + integrity: sha512-fMPHl/88xOtoNGfxGmkJrzfKgcYUkMOGX4Pd3BDopMXG1K4BdBXOsoWj+Tk2V0z/nNxCUiLJ36hhEJbeAXPAcw== tarball: 'file:projects/service-bus.tgz' version: 0.0.0 'file:projects/storage-blob.tgz': @@ -11565,7 +11507,7 @@ specifiers: rollup-plugin-resolve: 0.0.1-predev.1 rollup-plugin-shim: ^1.0.0 rollup-plugin-sourcemaps: ^0.4.2 - rollup-plugin-terser: ^4.0.4 + rollup-plugin-terser: ^5.1.1 rollup-plugin-uglify: ^6.0.0 rollup-plugin-visualizer: ^1.0.0 semaphore: 1.0.5 diff --git a/sdk/identity/identity/package.json b/sdk/identity/identity/package.json index 34a9810ceaed..c78a14e602c9 100644 --- a/sdk/identity/identity/package.json +++ b/sdk/identity/identity/package.json @@ -110,7 +110,7 @@ "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-replace": "^2.1.0", "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-terser": "^4.0.4", + "rollup-plugin-terser": "^5.1.1", "rollup-plugin-visualizer": "^1.0.0", "typescript": "^3.2.2", "util": "^0.11.1" diff --git a/sdk/servicebus/service-bus/package.json b/sdk/servicebus/service-bus/package.json index fd05bf270e27..d41de054814b 100644 --- a/sdk/servicebus/service-bus/package.json +++ b/sdk/servicebus/service-bus/package.json @@ -133,7 +133,7 @@ "rollup-plugin-replace": "^2.1.0", "rollup-plugin-shim": "^1.0.0", "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-terser": "^4.0.4", + "rollup-plugin-terser": "^5.1.1", "ts-node": "^7.0.1", "typescript": "^3.2.2", "ws": "^6.2.1" From 6d845f0e834d2e831a62c46338e7c9d22ed51567 Mon Sep 17 00:00:00 2001 From: KarishmaGhiya Date: Tue, 9 Jul 2019 10:31:59 -0700 Subject: [PATCH 248/289] updated test matrix to include more node versions for eventhubs tests (#4173) --- sdk/eventhub/event-hubs/tests.yml | 45 ++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/sdk/eventhub/event-hubs/tests.yml b/sdk/eventhub/event-hubs/tests.yml index 30100e4a6aa2..70c45d969b0f 100644 --- a/sdk/eventhub/event-hubs/tests.yml +++ b/sdk/eventhub/event-hubs/tests.yml @@ -9,20 +9,53 @@ jobs: Linux_Node10X: OSVmImage: "ubuntu-16.04" TestType: "node" + NodeVersion: "10.x" + EVENTHUB_NAME: "hub_linux_node10" Windows_Node10X: OSVmImage: "vs2017-win2016" TestType: "node" + NodeVersion: "10.x" + EVENTHUB_NAME: "hub_windows_node10" Mac_Node10X: OSVmImage: "macOS-10.13" TestType: "node" + NodeVersion: "10.x" + EVENTHUB_NAME: "hub_mac_node10" + Linux_Node12X: + OSVmImage: "ubuntu-16.04" + TestType: "node" + NodeVersion: "12.x" + EVENTHUB_NAME: "hub_linux_node12" + Windows_Node12X: + OSVmImage: "vs2017-win2016" + TestType: "node" + NodeVersion: "12.x" + EVENTHUB_NAME: "hub_windows_node12" + Mac_Node12X: + OSVmImage: "macOS-10.13" + TestType: "node" + NodeVersion: "12.x" + EVENTHUB_NAME: "hub_mac_node12" + Linux_Node8X: + OSVmImage: "ubuntu-16.04" + TestType: "node" + NodeVersion: "8.x" + EVENTHUB_NAME: "hub_linux_node8" + Windows_Node8X: + OSVmImage: "vs2017-win2016" + TestType: "node" + NodeVersion: "8.x" + EVENTHUB_NAME: "hub_windows_node8" + Mac_Node8X: + OSVmImage: "macOS-10.13" + TestType: "node" + NodeVersion: "8.x" + EVENTHUB_NAME: "hub_mac_node8" + EnvVars: AZURE_CLIENT_ID: $(aad-azure-sdk-test-client-id) AZURE_CLIENT_SECRET: $(aad-azure-sdk-test-client-secret) AZURE_TENANT_ID: $(aad-azure-sdk-test-tenant-id) - ENDPOINT: $(js-event-hubs-test-endpoint) - EVENTHUB_CONNECTION_STRING: $(js-event-hubs-test-connection-string) - EVENTHUB_NAME: $(js-event-hubs-test-name) IOTHUB_CONNECTION_STRING: $(js-event-hubs-test-iothub-connection-string) - - # Event Hubs tests do not support concurrent execution - MaxParallel: 1 + EVENTHUB_CONNECTION_STRING: $(js-event-hubs-test-connection-string) + ENDPOINT: $(js-event-hubs-test-endpoint) From 0a6bcbef16d4a0142096151789b6ff7b355f4260 Mon Sep 17 00:00:00 2001 From: Scott Beddall <45376673+scbedd@users.noreply.github.com> Date: Tue, 9 Jul 2019 11:15:37 -0700 Subject: [PATCH 249/289] account for restructure (#4218) --- packages.md | 138 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 88 insertions(+), 50 deletions(-) diff --git a/packages.md b/packages.md index 65dd084ba301..c86da40e9c8c 100644 --- a/packages.md +++ b/packages.md @@ -1,25 +1,31 @@ -# Package Index - sdk-for-js +# Package Index - azure-sdk-for-js | Package Id | Readme | Changelog | Published Url | |----------------|-----------|---------------------------|---------------------| +| [`@azure/abort-controller`]( sdk/core/abort-controller/package.json )| [Readme](sdk/core/abort-controller/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/abort-controller ) | | [`@azure/applicationinsights-query`]( sdk/applicationinsights/applicationinsights-query/package.json )| [Readme](sdk/applicationinsights/applicationinsights-query/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/applicationinsights-query ) | | [`@azure/arm-advisor`]( sdk/advisor/arm-advisor/package.json )| [Readme](sdk/advisor/arm-advisor/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-advisor ) | | [`@azure/arm-analysisservices`]( sdk/analysisservices/arm-analysisservices/package.json )| [Readme](sdk/analysisservices/arm-analysisservices/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-analysisservices ) | | [`@azure/arm-apimanagement`]( sdk/apimanagement/arm-apimanagement/package.json )| [Readme](sdk/apimanagement/arm-apimanagement/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-apimanagement ) | +| [`@azure/arm-appconfiguration`]( sdk/appconfiguration/arm-appconfiguration/package.json )| [Readme](sdk/appconfiguration/arm-appconfiguration/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-appconfiguration ) | | [`@azure/arm-appinsights`]( sdk/applicationinsights/arm-appinsights/package.json )| [Readme](sdk/applicationinsights/arm-appinsights/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-appinsights ) | | [`@azure/arm-appservice`]( sdk/appservice/arm-appservice/package.json )| [Readme](sdk/appservice/arm-appservice/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-appservice ) | +| [`@azure/arm-appservice-profile-2019-03-01-hybrid`]( sdk/appservice/arm-appservice-profile-2019-03-01-hybrid/package.json )| [Readme](sdk/appservice/arm-appservice-profile-2019-03-01-hybrid/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-appservice-profile-2019-03-01-hybrid ) | | [`@azure/arm-authorization`]( sdk/authorization/arm-authorization/package.json )| [Readme](sdk/authorization/arm-authorization/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-authorization ) | +| [`@azure/arm-authorization-profile-2019-03-01-hybrid`]( sdk/authorization/arm-authorization-profile-2019-03-01-hybrid/package.json )| [Readme](sdk/authorization/arm-authorization-profile-2019-03-01-hybrid/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-authorization-profile-2019-03-01-hybrid ) | | [`@azure/arm-automation`]( sdk/automation/arm-automation/package.json )| [Readme](sdk/automation/arm-automation/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-automation ) | | [`@azure/arm-azurestack`]( sdk/azurestack/arm-azurestack/package.json )| [Readme](sdk/azurestack/arm-azurestack/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-azurestack ) | | [`@azure/arm-batch`]( sdk/batch/arm-batch/package.json )| [Readme](sdk/batch/arm-batch/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-batch ) | | [`@azure/arm-batchai`]( sdk/batchai/arm-batchai/package.json )| [Readme](sdk/batchai/arm-batchai/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-batchai ) | | [`@azure/arm-billing`]( sdk/billing/arm-billing/package.json )| [Readme](sdk/billing/arm-billing/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-billing ) | +| [`@azure/arm-botservice`]( sdk/botservice/arm-botservice/package.json )| [Readme](sdk/botservice/arm-botservice/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-botservice ) | | [`@azure/arm-cdn`]( sdk/cdn/arm-cdn/package.json )| [Readme](sdk/cdn/arm-cdn/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-cdn ) | | [`@azure/arm-cognitiveservices`]( sdk/cognitiveservices/arm-cognitiveservices/package.json )| [Readme](sdk/cognitiveservices/arm-cognitiveservices/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-cognitiveservices ) | | [`@azure/arm-commerce`]( sdk/commerce/arm-commerce/package.json )| [Readme](sdk/commerce/arm-commerce/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-commerce ) | | [`@azure/arm-commitmentplans`]( sdk/machinelearning/arm-commitmentplans/package.json )| [Readme](sdk/machinelearning/arm-commitmentplans/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-commitmentplans ) | | [`@azure/arm-compute`]( sdk/compute/arm-compute/package.json )| [Readme](sdk/compute/arm-compute/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-compute ) | +| [`@azure/arm-compute-profile-2019-03-01-hybrid`]( sdk/compute/arm-compute-profile-2019-03-01-hybrid/package.json )| [Readme](sdk/compute/arm-compute-profile-2019-03-01-hybrid/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-compute-profile-2019-03-01-hybrid ) | | [`@azure/arm-consumption`]( sdk/consumption/arm-consumption/package.json )| [Readme](sdk/consumption/arm-consumption/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-consumption ) | | [`@azure/arm-containerinstance`]( sdk/containerinstance/arm-containerinstance/package.json )| [Readme](sdk/containerinstance/arm-containerinstance/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-containerinstance ) | | [`@azure/arm-containerregistry`]( sdk/containerregistry/arm-containerregistry/package.json )| [Readme](sdk/containerregistry/arm-containerregistry/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-containerregistry ) | @@ -35,6 +41,7 @@ | [`@azure/arm-devspaces`]( sdk/devspaces/arm-devspaces/package.json )| [Readme](sdk/devspaces/arm-devspaces/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-devspaces ) | | [`@azure/arm-devtestlabs`]( sdk/devtestlabs/arm-devtestlabs/package.json )| [Readme](sdk/devtestlabs/arm-devtestlabs/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-devtestlabs ) | | [`@azure/arm-dns`]( sdk/dns/arm-dns/package.json )| [Readme](sdk/dns/arm-dns/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-dns ) | +| [`@azure/arm-dns-profile-2019-03-01-hybrid`]( sdk/dns/arm-dns-profile-2019-03-01-hybrid/package.json )| [Readme](sdk/dns/arm-dns-profile-2019-03-01-hybrid/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-dns-profile-2019-03-01-hybrid ) | | [`@azure/arm-domainservices`]( sdk/domainservices/arm-domainservices/package.json )| [Readme](sdk/domainservices/arm-domainservices/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-domainservices ) | | [`@azure/arm-edgegateway`]( sdk/edgegateway/arm-edgegateway/package.json )| [Readme](sdk/edgegateway/arm-edgegateway/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-edgegateway ) | | [`@azure/arm-eventgrid`]( sdk/eventgrid/arm-eventgrid/package.json )| [Readme](sdk/eventgrid/arm-eventgrid/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-eventgrid ) | @@ -47,10 +54,12 @@ | [`@azure/arm-iothub`]( sdk/iothub/arm-iothub/package.json )| [Readme](sdk/iothub/arm-iothub/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-iothub ) | | [`@azure/arm-iotspaces`]( sdk/iotspaces/arm-iotspaces/package.json )| [Readme](sdk/iotspaces/arm-iotspaces/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-iotspaces ) | | [`@azure/arm-keyvault`]( sdk/keyvault/arm-keyvault/package.json )| [Readme](sdk/keyvault/arm-keyvault/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-keyvault ) | +| [`@azure/arm-keyvault-profile-2019-03-01-hybrid`]( sdk/keyvault/arm-keyvault-profile-2019-03-01-hybrid/package.json )| [Readme](sdk/keyvault/arm-keyvault-profile-2019-03-01-hybrid/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-keyvault-profile-2019-03-01-hybrid ) | | [`@azure/arm-kusto`]( sdk/kusto/arm-kusto/package.json )| [Readme](sdk/kusto/arm-kusto/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-kusto ) | | [`@azure/arm-labservices`]( sdk/labservices/arm-labservices/package.json )| [Readme](sdk/labservices/arm-labservices/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-labservices ) | | [`@azure/arm-links`]( sdk/links/arm-links/package.json )| [Readme](sdk/links/arm-links/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-links ) | | [`@azure/arm-locks`]( sdk/locks/arm-locks/package.json )| [Readme](sdk/locks/arm-locks/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-locks ) | +| [`@azure/arm-locks-profile-hybrid-2019-03-01`]( sdk/locks/arm-locks-profile-hybrid-2019-03-01/package.json )| [Readme](sdk/locks/arm-locks-profile-hybrid-2019-03-01/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-locks-profile-hybrid-2019-03-01 ) | | [`@azure/arm-logic`]( sdk/logic/arm-logic/package.json )| [Readme](sdk/logic/arm-logic/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-logic ) | | [`@azure/arm-machinelearningcompute`]( sdk/machinelearningcompute/arm-machinelearningcompute/package.json )| [Readme](sdk/machinelearningcompute/arm-machinelearningcompute/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-machinelearningcompute ) | | [`@azure/arm-machinelearningexperimentation`]( sdk/machinelearningexperimentation/arm-machinelearningexperimentation/package.json )| [Readme](sdk/machinelearningexperimentation/arm-machinelearningexperimentation/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-machinelearningexperimentation ) | @@ -65,14 +74,17 @@ | [`@azure/arm-migrate`]( sdk/migrate/arm-migrate/package.json )| [Readme](sdk/migrate/arm-migrate/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-migrate ) | | [`@azure/arm-mixedreality`]( sdk/mixedreality/arm-mixedreality/package.json )| [Readme](sdk/mixedreality/arm-mixedreality/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-mixedreality ) | | [`@azure/arm-monitor`]( sdk/monitor/arm-monitor/package.json )| [Readme](sdk/monitor/arm-monitor/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-monitor ) | +| [`@azure/arm-monitor-profile-2019-03-01-hybrid`]( sdk/monitor/arm-monitor-profile-2019-03-01-hybrid/package.json )| [Readme](sdk/monitor/arm-monitor-profile-2019-03-01-hybrid/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-monitor-profile-2019-03-01-hybrid ) | | [`@azure/arm-msi`]( sdk/msi/arm-msi/package.json )| [Readme](sdk/msi/arm-msi/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-msi ) | | [`@azure/arm-mysql`]( sdk/mysql/arm-mysql/package.json )| [Readme](sdk/mysql/arm-mysql/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-mysql ) | | [`@azure/arm-netapp`]( sdk/netapp/arm-netapp/package.json )| [Readme](sdk/netapp/arm-netapp/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-netapp ) | | [`@azure/arm-network`]( sdk/network/arm-network/package.json )| [Readme](sdk/network/arm-network/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-network ) | +| [`@azure/arm-network-profile-2019-03-01-hybrid`]( sdk/network/arm-network-profile-2019-03-01-hybrid/package.json )| [Readme](sdk/network/arm-network-profile-2019-03-01-hybrid/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-network-profile-2019-03-01-hybrid ) | | [`@azure/arm-notificationhubs`]( sdk/notificationhubs/arm-notificationhubs/package.json )| [Readme](sdk/notificationhubs/arm-notificationhubs/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-notificationhubs ) | | [`@azure/arm-operationalinsights`]( sdk/operationalinsights/arm-operationalinsights/package.json )| [Readme](sdk/operationalinsights/arm-operationalinsights/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-operationalinsights ) | | [`@azure/arm-operations`]( sdk/operationsmanagement/arm-operations/package.json )| [Readme](sdk/operationsmanagement/arm-operations/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-operations ) | | [`@azure/arm-policy`]( sdk/policy/arm-policy/package.json )| [Readme](sdk/policy/arm-policy/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-policy ) | +| [`@azure/arm-policy-profile-hybrid-2019-03-01`]( sdk/policy/arm-policy-profile-hybrid-2019-03-01/package.json )| [Readme](sdk/policy/arm-policy-profile-hybrid-2019-03-01/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-policy-profile-hybrid-2019-03-01 ) | | [`@azure/arm-policyinsights`]( sdk/policyinsights/arm-policyinsights/package.json )| [Readme](sdk/policyinsights/arm-policyinsights/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-policyinsights ) | | [`@azure/arm-postgresql`]( sdk/postgresql/arm-postgresql/package.json )| [Readme](sdk/postgresql/arm-postgresql/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-postgresql ) | | [`@azure/arm-powerbidedicated`]( sdk/powerbidedicated/arm-powerbidedicated/package.json )| [Readme](sdk/powerbidedicated/arm-powerbidedicated/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-powerbidedicated ) | @@ -87,57 +99,83 @@ | [`@azure/arm-resourcegraph`]( sdk/resourcegraph/arm-resourcegraph/package.json )| [Readme](sdk/resourcegraph/arm-resourcegraph/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-resourcegraph ) | | [`@azure/arm-resourcehealth`]( sdk/resourcehealth/arm-resourcehealth/package.json )| [Readme](sdk/resourcehealth/arm-resourcehealth/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-resourcehealth ) | | [`@azure/arm-resources`]( sdk/resources/arm-resources/package.json )| [Readme](sdk/resources/arm-resources/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-resources ) | +| [`@azure/arm-resources-profile-hybrid-2019-03-01`]( sdk/resources/arm-resources-profile-hybrid-2019-03-01/package.json )| [Readme](sdk/resources/arm-resources-profile-hybrid-2019-03-01/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-resources-profile-hybrid-2019-03-01 ) | | [`@azure/arm-search`]( sdk/search/arm-search/package.json )| [Readme](sdk/search/arm-search/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-search ) | | [`@azure/arm-security`]( sdk/security/arm-security/package.json )| [Readme](sdk/security/arm-security/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-security ) | | [`@azure/arm-serialconsole`]( sdk/serialconsole/arm-serialconsole/package.json )| [Readme](sdk/serialconsole/arm-serialconsole/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-serialconsole ) | | [`@azure/arm-servicebus`]( sdk/servicebus/arm-servicebus/package.json )| [Readme](sdk/servicebus/arm-servicebus/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-servicebus ) | -| [`@azure/arm-servicefabricmesh`]( sdk/servicefabricmesh/arm-servicefabricmesh/package.json )| [Readme](sdk/servicefabricmesh/arm-servicefabricmesh/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-servicefabricmesh ) | -| [`@azure/arm-servicemap`]( sdk/service-map/arm-servicemap/package.json )| [Readme](sdk/service-map/arm-servicemap/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-servicemap ) | -| [`@azure/arm-signalr`]( sdk/signalr/arm-signalr/package.json )| [Readme](sdk/signalr/arm-signalr/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-signalr ) | -| [`@azure/arm-sql`]( sdk/sql/arm-sql/package.json )| [Readme](sdk/sql/arm-sql/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-sql ) | -| [`@azure/arm-sqlvirtualmachine`]( sdk/sqlvirtualmachine/arm-sqlvirtualmachine/package.json )| [Readme](sdk/sqlvirtualmachine/arm-sqlvirtualmachine/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-sqlvirtualmachine ) | -| [`@azure/arm-storage`]( sdk/storage/arm-storage/package.json )| [Readme](sdk/storage/arm-storage/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-storage ) | -| [`@azure/arm-storageimportexport`]( sdk/storageimportexport/arm-storageimportexport/package.json )| [Readme](sdk/storageimportexport/arm-storageimportexport/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-storageimportexport ) | -| [`@azure/arm-storagesync`]( sdk/storagesync/arm-storagesync/package.json )| [Readme](sdk/storagesync/arm-storagesync/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-storagesync ) | -| [`@azure/arm-storsimple1200series`]( sdk/storsimple1200series/arm-storsimple1200series/package.json )| [Readme](sdk/storsimple1200series/arm-storsimple1200series/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-storsimple1200series ) | -| [`@azure/arm-storsimple8000series`]( sdk/storsimple8000series/arm-storsimple8000series/package.json )| [Readme](sdk/storsimple8000series/arm-storsimple8000series/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-storsimple8000series ) | -| [`@azure/arm-streamanalytics`]( sdk/streamanalytics/arm-streamanalytics/package.json )| [Readme](sdk/streamanalytics/arm-streamanalytics/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-streamanalytics ) | -| [`@azure/arm-subscriptions`]( sdk/subscription/arm-subscriptions/package.json )| [Readme](sdk/subscription/arm-subscriptions/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-subscriptions ) | -| [`@azure/arm-timeseriesinsights`]( sdk/timeseriesinsights/arm-timeseriesinsights/package.json )| [Readme](sdk/timeseriesinsights/arm-timeseriesinsights/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-timeseriesinsights ) | -| [`@azure/arm-trafficmanager`]( sdk/trafficmanager/arm-trafficmanager/package.json )| [Readme](sdk/trafficmanager/arm-trafficmanager/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-trafficmanager ) | -| [`@azure/arm-visualstudio`]( sdk/visualstudio/arm-visualstudio/package.json )| [Readme](sdk/visualstudio/arm-visualstudio/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-visualstudio ) | -| [`@azure/arm-webservices`]( sdk/machinelearning/arm-webservices/package.json )| [Readme](sdk/machinelearning/arm-webservices/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-webservices ) | -| [`@azure/arm-workspaces`]( sdk/machinelearning/arm-workspaces/package.json )| [Readme](sdk/machinelearning/arm-workspaces/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/arm-workspaces ) | -| [`@azure/batch`]( sdk/batch/batch/package.json )| [Readme](sdk/batch/batch/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/batch ) | -| [`@azure/cognitiveservices-anomalydetector`]( sdk/cognitiveservices/cognitiveservices-anomalydetector/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-anomalydetector/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-anomalydetector ) | -| [`@azure/cognitiveservices-autosuggest`]( sdk/cognitiveservices/cognitiveservices-autosuggest/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-autosuggest/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-autosuggest ) | -| [`@azure/cognitiveservices-computervision`]( sdk/cognitiveservices/cognitiveservices-computervision/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-computervision/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-computervision ) | -| [`@azure/cognitiveservices-contentmoderator`]( sdk/cognitiveservices/cognitiveservices-contentmoderator/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-contentmoderator/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-contentmoderator ) | -| [`@azure/cognitiveservices-customimagesearch`]( sdk/cognitiveservices/cognitiveservices-customimagesearch/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-customimagesearch/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-customimagesearch ) | -| [`@azure/cognitiveservices-customsearch`]( sdk/cognitiveservices/cognitiveservices-customsearch/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-customsearch/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-customsearch ) | -| [`@azure/cognitiveservices-customvision-prediction`]( sdk/cognitiveservices/cognitiveservices-customvision-prediction/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-customvision-prediction/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-customvision-prediction ) | -| [`@azure/cognitiveservices-customvision-training`]( sdk/cognitiveservices/cognitiveservices-customvision-training/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-customvision-training/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-customvision-training ) | -| [`@azure/cognitiveservices-entitysearch`]( sdk/cognitiveservices/cognitiveservices-entitysearch/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-entitysearch/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-entitysearch ) | -| [`@azure/cognitiveservices-face`]( sdk/cognitiveservices/cognitiveservices-face/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-face/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-face ) | -| [`@azure/cognitiveservices-imagesearch`]( sdk/cognitiveservices/cognitiveservices-imagesearch/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-imagesearch/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-imagesearch ) | -| [`@azure/cognitiveservices-localsearch`]( sdk/cognitiveservices/cognitiveservices-localsearch/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-localsearch/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-localsearch ) | -| [`@azure/cognitiveservices-luis-authoring`]( sdk/cognitiveservices/cognitiveservices-luis-authoring/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-luis-authoring/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-luis-authoring ) | -| [`@azure/cognitiveservices-luis-runtime`]( sdk/cognitiveservices/cognitiveservices-luis-runtime/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-luis-runtime/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-luis-runtime ) | -| [`@azure/cognitiveservices-newssearch`]( sdk/cognitiveservices/cognitiveservices-newssearch/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-newssearch/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-newssearch ) | -| [`@azure/cognitiveservices-qnamaker`]( sdk/cognitiveservices/cognitiveservices-qnamaker/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-qnamaker/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-qnamaker ) | +| [`@azure/arm-servicefabricmesh`]( sdk/servicefabricmesh/arm-servicefabricmesh/package.json )| [Readme](sdk/servicefabricmesh/arm-servicefabricmesh/README.md) | N/A | N/A | +| [`@azure/arm-servicemap`]( sdk/service-map/arm-servicemap/package.json )| [Readme](sdk/service-map/arm-servicemap/README.md) | N/A | N/A | +| [`@azure/arm-signalr`]( sdk/signalr/arm-signalr/package.json )| [Readme](sdk/signalr/arm-signalr/README.md) | N/A | N/A | +| [`@azure/arm-sql`]( sdk/sql/arm-sql/package.json )| [Readme](sdk/sql/arm-sql/README.md) | N/A | N/A | +| [`@azure/arm-sqlvirtualmachine`]( sdk/sqlvirtualmachine/arm-sqlvirtualmachine/package.json )| [Readme](sdk/sqlvirtualmachine/arm-sqlvirtualmachine/README.md) | N/A | N/A | +| [`@azure/arm-storage`]( sdk/storage/arm-storage/package.json )| [Readme](sdk/storage/arm-storage/README.md) | N/A | N/A | +| [`@azure/arm-storage-profile-2019-03-01-hybrid`]( sdk/storage/arm-storage-profile-2019-03-01-hybrid/package.json )| [Readme](sdk/storage/arm-storage-profile-2019-03-01-hybrid/README.md) | N/A | N/A | +| [`@azure/arm-storageimportexport`]( sdk/storageimportexport/arm-storageimportexport/package.json )| [Readme](sdk/storageimportexport/arm-storageimportexport/README.md) | N/A | N/A | +| [`@azure/arm-storagesync`]( sdk/storagesync/arm-storagesync/package.json )| [Readme](sdk/storagesync/arm-storagesync/README.md) | N/A | N/A | +| [`@azure/arm-storsimple1200series`]( sdk/storsimple1200series/arm-storsimple1200series/package.json )| [Readme](sdk/storsimple1200series/arm-storsimple1200series/README.md) | N/A | N/A | +| [`@azure/arm-storsimple8000series`]( sdk/storsimple8000series/arm-storsimple8000series/package.json )| [Readme](sdk/storsimple8000series/arm-storsimple8000series/README.md) | N/A | N/A | +| [`@azure/arm-streamanalytics`]( sdk/streamanalytics/arm-streamanalytics/package.json )| [Readme](sdk/streamanalytics/arm-streamanalytics/README.md) | N/A | N/A | +| [`@azure/arm-subscriptions`]( sdk/subscription/arm-subscriptions/package.json )| [Readme](sdk/subscription/arm-subscriptions/README.md) | N/A | N/A | +| [`@azure/arm-subscriptions-profile-hybrid-2019-03-01`]( sdk/subscription/arm-subscriptions-profile-hybrid-2019-03-01/package.json )| [Readme](sdk/subscription/arm-subscriptions-profile-hybrid-2019-03-01/README.md) | N/A | N/A | +| [`@azure/arm-timeseriesinsights`]( sdk/timeseriesinsights/arm-timeseriesinsights/package.json )| [Readme](sdk/timeseriesinsights/arm-timeseriesinsights/README.md) | N/A | N/A | +| [`@azure/arm-trafficmanager`]( sdk/trafficmanager/arm-trafficmanager/package.json )| [Readme](sdk/trafficmanager/arm-trafficmanager/README.md) | N/A | N/A | +| [`@azure/arm-visualstudio`]( sdk/visualstudio/arm-visualstudio/package.json )| [Readme](sdk/visualstudio/arm-visualstudio/README.md) | N/A | N/A | +| [`@azure/arm-webservices`]( sdk/machinelearning/arm-webservices/package.json )| [Readme](sdk/machinelearning/arm-webservices/README.md) | N/A | N/A | +| [`@azure/arm-workspaces`]( sdk/machinelearning/arm-workspaces/package.json )| [Readme](sdk/machinelearning/arm-workspaces/README.md) | N/A | N/A | +| [`@azure/batch`]( sdk/batch/batch/package.json )| [Readme](sdk/batch/batch/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-anomalydetector`]( sdk/cognitiveservices/cognitiveservices-anomalydetector/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-anomalydetector/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-autosuggest`]( sdk/cognitiveservices/cognitiveservices-autosuggest/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-autosuggest/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-computervision`]( sdk/cognitiveservices/cognitiveservices-computervision/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-computervision/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-contentmoderator`]( sdk/cognitiveservices/cognitiveservices-contentmoderator/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-contentmoderator/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-customimagesearch`]( sdk/cognitiveservices/cognitiveservices-customimagesearch/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-customimagesearch/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-customsearch`]( sdk/cognitiveservices/cognitiveservices-customsearch/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-customsearch/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-customvision-prediction`]( sdk/cognitiveservices/cognitiveservices-customvision-prediction/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-customvision-prediction/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-customvision-training`]( sdk/cognitiveservices/cognitiveservices-customvision-training/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-customvision-training/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-entitysearch`]( sdk/cognitiveservices/cognitiveservices-entitysearch/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-entitysearch/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-face`]( sdk/cognitiveservices/cognitiveservices-face/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-face/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-formrecognizer`]( sdk/cognitiveservices/cognitiveservices-formrecognizer/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-formrecognizer/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-imagesearch`]( sdk/cognitiveservices/cognitiveservices-imagesearch/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-imagesearch/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-localsearch`]( sdk/cognitiveservices/cognitiveservices-localsearch/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-localsearch/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-luis-authoring`]( sdk/cognitiveservices/cognitiveservices-luis-authoring/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-luis-authoring/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-luis-runtime`]( sdk/cognitiveservices/cognitiveservices-luis-runtime/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-luis-runtime/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-newssearch`]( sdk/cognitiveservices/cognitiveservices-newssearch/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-newssearch/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-personalizer`]( sdk/cognitiveservices/cognitiveservices-personalizer/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-personalizer/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-qnamaker`]( sdk/cognitiveservices/cognitiveservices-qnamaker/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-qnamaker/README.md) | N/A | N/A | | [`@azure/cognitiveservices-spellcheck`]( sdk/cognitiveservices/cognitiveservices-spellcheck/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-spellcheck/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-spellcheck ) | -| [`@azure/cognitiveservices-textanalytics`]( sdk/cognitiveservices/cognitiveservices-textanalytics/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-textanalytics/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-textanalytics ) | -| [`@azure/cognitiveservices-videosearch`]( sdk/cognitiveservices/cognitiveservices-videosearch/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-videosearch/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-videosearch ) | -| [`@azure/cognitiveservices-visualsearch`]( sdk/cognitiveservices/cognitiveservices-visualsearch/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-visualsearch/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-visualsearch ) | -| [`@azure/cognitiveservices-websearch`]( sdk/cognitiveservices/cognitiveservices-websearch/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-websearch/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/cognitiveservices-websearch ) | -| [`@azure/event-hubs`]( sdk/eventhub/event-hubs/package.json )| [Readme](sdk/eventhub/event-hubs/README.md) | [Changelog](sdk/eventhub/event-hubs/changelog.md) | [NPM]( https://www.npmjs.com/package/@azure/event-hubs ) | -| [`@azure/event-processor-host`]( sdk/eventhub/event-processor-host/package.json )| [Readme](sdk/eventhub/event-processor-host/README.md) | [Changelog](sdk/eventhub/event-processor-host/changelog.md) | [NPM]( https://www.npmjs.com/package/@azure/event-processor-host ) | -| [`@azure/eventgrid`]( sdk/eventgrid/eventgrid/package.json )| [Readme](sdk/eventgrid/eventgrid/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/eventgrid ) | -| [`@azure/graph`]( sdk/graphrbac/graph/package.json )| [Readme](sdk/graphrbac/graph/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/graph ) | -| [`@azure/loganalytics`]( sdk/operationalinsights/loganalytics/package.json )| [Readme](sdk/operationalinsights/loganalytics/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/loganalytics ) | -| [`@azure/service-bus`]( sdk/servicebus/service-bus/package.json )| [Readme](sdk/servicebus/service-bus/README.md) | [Changelog](sdk/servicebus/service-bus/changelog.md) | [NPM]( https://www.npmjs.com/package/@azure/service-bus ) | -| [`@azure/servicefabric`]( sdk/servicefabric/servicefabric/package.json )| [Readme](sdk/servicefabric/servicefabric/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/servicefabric ) | -| [`@azure/storage-blob`]( sdk/storage/storage-blob/package.json )| [Readme](sdk/storage/storage-blob/README.md) | [Changelog](sdk/storage/storage-blob/ChangeLog.md) | [NPM]( https://www.npmjs.com/package/@azure/storage-blob ) | -| [`@azure/storage-datalake`]( sdk/storage/storage-datalake/package.json )| [Readme](sdk/storage/storage-datalake/README.md) | N/A | [NPM]( https://www.npmjs.com/package/@azure/storage-datalake ) | -| [`@azure/storage-file`]( sdk/storage/storage-file/package.json )| [Readme](sdk/storage/storage-file/README.md) | [Changelog](sdk/storage/storage-file/ChangeLog.md) | [NPM]( https://www.npmjs.com/package/@azure/storage-file ) | -| [`@azure/storage-queue`]( sdk/storage/storage-queue/package.json )| [Readme](sdk/storage/storage-queue/README.md) | [Changelog](sdk/storage/storage-queue/ChangeLog.md) | [NPM]( https://www.npmjs.com/package/@azure/storage-queue ) | +| [`@azure/cognitiveservices-textanalytics`]( sdk/cognitiveservices/cognitiveservices-textanalytics/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-textanalytics/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-videosearch`]( sdk/cognitiveservices/cognitiveservices-videosearch/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-videosearch/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-visualsearch`]( sdk/cognitiveservices/cognitiveservices-visualsearch/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-visualsearch/README.md) | N/A | N/A | +| [`@azure/cognitiveservices-websearch`]( sdk/cognitiveservices/cognitiveservices-websearch/package.json )| [Readme](sdk/cognitiveservices/cognitiveservices-websearch/README.md) | N/A | N/A | +| [`@azure/core-amqp`]( sdk/core/core-amqp/package.json )| [Readme](sdk/core/core-amqp/README.md) | [Changelog](sdk/core/core-amqp/changelog.md) | N/A | +| [`@azure/core-asynciterator-polyfill`]( sdk/core/core-asynciterator-polyfill/package.json )| [Readme](sdk/core/core-asynciterator-polyfill/README.md) | N/A | N/A | +| [`@azure/core-auth`]( sdk/core/core-auth/package.json )| [Readme](sdk/core/core-auth/README.md) | N/A | N/A | +| [`@azure/core-http`]( sdk/core/core-http/package.json )| [Readme](sdk/core/core-http/README.md) | [Changelog](sdk/core/core-http/Changelog.md) | N/A | +| [`@azure/core-paging`]( sdk/core/core-paging/package.json )| [Readme](sdk/core/core-paging/README.md) | N/A | N/A | +| [`@azure/cosmos`]( sdk/cosmosdb/cosmos/package.json )| [Readme](sdk/cosmosdb/cosmos/README.md) | [Changelog](sdk/cosmosdb/cosmos/changelog.md) | [NPM]( https://www.npmjs.com/package/@azure/cosmos ) | +| [`@azure/event-hubs`]( sdk/eventhub/event-hubs/package.json )| [Readme](sdk/eventhub/event-hubs/README.md) | [Changelog](sdk/eventhub/event-hubs/changelog.md) | N/A | +| [`@azure/event-processor-host`]( sdk/eventhub/event-processor-host/package.json )| [Readme](sdk/eventhub/event-processor-host/README.md) | [Changelog](sdk/eventhub/event-processor-host/changelog.md) | N/A | +| [`@azure/eventgrid`]( sdk/eventgrid/eventgrid/package.json )| [Readme](sdk/eventgrid/eventgrid/README.md) | N/A | N/A | +| [`@azure/graph`]( sdk/graphrbac/graph/package.json )| [Readme](sdk/graphrbac/graph/README.md) | N/A | N/A | +| [`@azure/identity`]( sdk/identity/identity/package.json )| [Readme](sdk/identity/identity/README.md) | N/A | N/A | +| [`@azure/keyvault-certificates`]( sdk/keyvault/keyvault-certificates/package.json )| [Readme](sdk/keyvault/keyvault-certificates/README.md) | N/A | N/A | +| [`@azure/keyvault-keys`]( sdk/keyvault/keyvault-keys/package.json )| [Readme](sdk/keyvault/keyvault-keys/README.md) | [Changelog](sdk/keyvault/keyvault-keys/CHANGELOG.md) | N/A | +| [`@azure/keyvault-secrets`]( sdk/keyvault/keyvault-secrets/package.json )| [Readme](sdk/keyvault/keyvault-secrets/README.md) | [Changelog](sdk/keyvault/keyvault-secrets/CHANGELOG.md) | N/A | +| [`@azure/loganalytics`]( sdk/operationalinsights/loganalytics/package.json )| [Readme](sdk/operationalinsights/loganalytics/README.md) | N/A | N/A | +| [`@azure/service-bus`]( sdk/servicebus/service-bus/package.json )| [Readme](sdk/servicebus/service-bus/README.md) | [Changelog](sdk/servicebus/service-bus/changelog.md) | N/A | +| [`@azure/service-bus-samples`]( sdk/servicebus/service-bus/samples/package.json )| [Readme](sdk/servicebus/service-bus/samples/README.md) | N/A | N/A | +| [`@azure/servicefabric`]( sdk/servicefabric/servicefabric/package.json )| [Readme](sdk/servicefabric/servicefabric/README.md) | N/A | N/A | +| [`@azure/storage-blob`]( sdk/storage/storage-blob/package.json )| [Readme](sdk/storage/storage-blob/README.md) | [Changelog](sdk/storage/storage-blob/ChangeLog.md) | N/A | +| [`@azure/storage-datalake`]( sdk/storage/storage-datalake/package.json )| [Readme](sdk/storage/storage-datalake/README.md) | N/A | N/A | +| [`@azure/storage-file`]( sdk/storage/storage-file/package.json )| [Readme](sdk/storage/storage-file/README.md) | [Changelog](sdk/storage/storage-file/ChangeLog.md) | N/A | +| [`@azure/storage-queue`]( sdk/storage/storage-queue/package.json )| [Readme](sdk/storage/storage-queue/README.md) | [Changelog](sdk/storage/storage-queue/ChangeLog.md) | N/A | +| [`cosmos-change-feed`]( sdk/cosmosdb/cosmos/samples/ChangeFeed/package.json )| [Readme](sdk/cosmosdb/cosmos/samples/ChangeFeed/README.md) | N/A | N/A | +| [`cosmos-container-management`]( sdk/cosmosdb/cosmos/samples/ContainerManagement/package.json )| [Readme](sdk/cosmosdb/cosmos/samples/ContainerManagement/README.md) | N/A | N/A | +| [`cosmos-database-management`]( sdk/cosmosdb/cosmos/samples/DatabaseManagement/package.json )| [Readme](sdk/cosmosdb/cosmos/samples/DatabaseManagement/README.md) | N/A | N/A | +| [`cosmos-item-management`]( sdk/cosmosdb/cosmos/samples/ItemManagement/package.json )| [Readme](sdk/cosmosdb/cosmos/samples/ItemManagement/README.md) | N/A | N/A | +| [`cosmos-serversidescripts-sample`]( sdk/cosmosdb/cosmos/samples/ServerSideScripts/package.json )| [Readme](sdk/cosmosdb/cosmos/samples/ServerSideScripts/README.md) | N/A | N/A | +| [`cosmosdb-index-management`]( sdk/cosmosdb/cosmos/samples/IndexManagement/package.json )| [Readme](sdk/cosmosdb/cosmos/samples/IndexManagement/README.md) | N/A | N/A | +| [`multiregionwrite`]( sdk/cosmosdb/cosmos/samples/MultiRegionWrite/package.json )| [Readme](sdk/cosmosdb/cosmos/samples/MultiRegionWrite/readme.md) | N/A | N/A | +| [`select-packages`]( eng/tools/select-packages/package.json )| N/A | N/A | N/A | +| [`todo`]( sdk/cosmosdb/cosmos/samples/TodoApp/package.json )| [Readme](sdk/cosmosdb/cosmos/samples/TodoApp/readme.md) | N/A | N/A | +| [`user-management`]( sdk/cosmosdb/cosmos/samples/UserManagement/package.json )| [Readme](sdk/cosmosdb/cosmos/samples/UserManagement/README.md) | N/A | N/A | From 5cd9f085e1c33143f7425fb602d24f795252badd Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Tue, 9 Jul 2019 11:35:12 -0700 Subject: [PATCH 250/289] Update dev dependency "rollup-plugin-visualizer" to latest (#4224) --- common/config/rush/pnpm-lock.yaml | 78 +++++++++++++------------- sdk/core/core-auth/package.json | 2 +- sdk/core/core-http/package.json | 2 +- sdk/identity/identity/package.json | 2 +- sdk/storage/storage-blob/package.json | 2 +- sdk/storage/storage-file/package.json | 2 +- sdk/storage/storage-queue/package.json | 2 +- sdk/template/template/package.json | 2 +- 8 files changed, 47 insertions(+), 45 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 5333242e87cf..c3cbbfdc324c 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -157,7 +157,7 @@ dependencies: rollup-plugin-sourcemaps: 0.4.2 rollup-plugin-terser: 5.1.1 rollup-plugin-uglify: 6.0.2 - rollup-plugin-visualizer: 1.1.1 + rollup-plugin-visualizer: 2.4.4 semaphore: 1.0.5 semver: 5.7.0 shx: 0.3.2 @@ -3469,6 +3469,12 @@ packages: dev: false resolution: integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + /escape-goat/2.1.0: + dev: false + engines: + node: '>=8' + resolution: + integrity: sha512-7fMXQmS/6yjYQT/yydWKCAm5ucuU7QtqP6/CE7BIKk6z3xTP4MLqkdUBwaViQVuTAde8yZgZIjSnEAPRl6u53g== /escape-html/1.0.3: dev: false resolution: @@ -7112,14 +7118,6 @@ packages: hasBin: true resolution: integrity: sha512-nVJ9dVb4fEKtmACWxUql+hhQxVWMt7BSRT+6TnB85W3xs5Pgk9sKW3icYeCIwOtOKALBw/6WUCoNmI1+ADfAow== - /opn/5.5.0: - dependencies: - is-wsl: 1.1.0 - dev: false - engines: - node: '>=4' - resolution: - integrity: sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== /optimist/0.6.1: dependencies: minimist: 0.0.10 @@ -7683,6 +7681,14 @@ packages: node: '>=6' resolution: integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + /pupa/2.0.0: + dependencies: + escape-goat: 2.1.0 + dev: false + engines: + node: '>=8' + resolution: + integrity: sha512-xxy6mj9KTirR7fpsdXrIaC4oUb/uvFfchrC4K3RFxYLQ/G05RlhJIKFF2ayCQnNaFI+fOxGWzEVUhYMXHNljeQ== /puppeteer/1.18.1: dependencies: debug: 4.1.1 @@ -8354,33 +8360,33 @@ packages: rollup: '>=0.66.0 <2' resolution: integrity: sha512-qwz2Tryspn5QGtPUowq5oumKSxANKdrnfz7C0jm4lKxvRDsNe/hSGsB9FntUul7UeC4TsZEWKErVgE1qWSO0gw== - /rollup-plugin-visualizer/1.1.1: + /rollup-plugin-visualizer/2.4.4: dependencies: mkdirp: 0.5.1 - opn: 5.5.0 + open: 6.4.0 + pupa: 2.0.0 source-map: 0.7.3 - typeface-oswald: 0.0.54 dev: false engines: node: '>=8.10' peerDependencies: rollup: '>=0.60.0' resolution: - integrity: sha512-7xkSKp+dyJmSC7jg2LXqViaHuOnF1VvIFCnsZEKjrgT5ZVyiLLSbeszxFcQSfNJILphqgAEmWAUz0Z4xYScrRw== - /rollup-plugin-visualizer/1.1.1_rollup@1.16.6: + integrity: sha512-QMDrJfMwl8koU2IH8A/hb7zcE1Q+174uwjd9gtQ+ITbbmoGu9ro1pXoxGnTNXwkaAdlaRVECmfcAOga078Y+Qw== + /rollup-plugin-visualizer/2.4.4_rollup@1.16.6: dependencies: mkdirp: 0.5.1 - opn: 5.5.0 + open: 6.4.0 + pupa: 2.0.0 rollup: 1.16.6 source-map: 0.7.3 - typeface-oswald: 0.0.54 dev: false engines: node: '>=8.10' peerDependencies: rollup: '>=0.60.0' resolution: - integrity: sha512-7xkSKp+dyJmSC7jg2LXqViaHuOnF1VvIFCnsZEKjrgT5ZVyiLLSbeszxFcQSfNJILphqgAEmWAUz0Z4xYScrRw== + integrity: sha512-QMDrJfMwl8koU2IH8A/hb7zcE1Q+174uwjd9gtQ+ITbbmoGu9ro1pXoxGnTNXwkaAdlaRVECmfcAOga078Y+Qw== /rollup-pluginutils/2.8.1: dependencies: estree-walker: 0.6.1 @@ -9571,10 +9577,6 @@ packages: dev: false resolution: integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - /typeface-oswald/0.0.54: - dev: false - resolution: - integrity: sha512-U1WMNp4qfy4/3khIfHMVAIKnNu941MXUfs3+H9R8PFgnoz42Hh9pboSFztWr86zut0eXC8byalmVhfkiKON/8Q== /typescript/3.4.5: dev: false engines: @@ -10521,14 +10523,14 @@ packages: rollup-plugin-replace: 2.2.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 rollup-plugin-uglify: 6.0.2_rollup@1.16.6 - rollup-plugin-visualizer: 1.1.1_rollup@1.16.6 + rollup-plugin-visualizer: 2.4.4_rollup@1.16.6 tslib: 1.10.0 typescript: 3.5.3 util: 0.11.1 dev: false name: '@rush-temp/core-auth' resolution: - integrity: sha512-FUiGNF7cFSquo404X0gFz82eULBFKOTA9x+YODMQBjEMi17kLA2KO+E7njQDVI43x0CXz1ipTlje/zg2uxHJhQ== + integrity: sha512-akV7r5ANBOjNmBbw1NvDSYcbBy/J7I1hJ6QFDYA1wj2z6sU7lb1FJI/lDaobNjy7AvzZ+BsHy9Yj3plqmvlGaA== tarball: 'file:projects/core-auth.tgz' version: 0.0.0 'file:projects/core-http.tgz': @@ -10590,7 +10592,7 @@ packages: rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 rollup-plugin-resolve: 0.0.1-predev.1 rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 - rollup-plugin-visualizer: 1.1.1_rollup@1.16.6 + rollup-plugin-visualizer: 2.4.4_rollup@1.16.6 semver: 5.7.0 shx: 0.3.2 sinon: 7.3.2 @@ -10613,7 +10615,7 @@ packages: dev: false name: '@rush-temp/core-http' resolution: - integrity: sha512-V7io00IYzpfe0UkVeC+6jbaX2H40zamEK2AmFB/xEttol1uD5FJ96UwYcvOymeZT8qNsOOuiK8FiD101EPlMVQ== + integrity: sha512-wm2OlqXnbEFpZKYmqGqKlsgmfdgzTYODsAlnhvfpLXD+uwHFQOHVNc6KUFdY8SAoH3t1kyaZjyxI+nTp0ihMcQ== tarball: 'file:projects/core-http.tgz' version: 0.0.0 'file:projects/core-paging.tgz': @@ -10851,7 +10853,7 @@ packages: rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 rollup-plugin-terser: 5.1.1_rollup@1.16.6 rollup-plugin-uglify: 6.0.2_rollup@1.16.6 - rollup-plugin-visualizer: 1.1.1_rollup@1.16.6 + rollup-plugin-visualizer: 2.4.4_rollup@1.16.6 tslib: 1.10.0 typescript: 3.5.3 util: 0.11.1 @@ -10859,7 +10861,7 @@ packages: dev: false name: '@rush-temp/identity' resolution: - integrity: sha512-5VGkBw5Iz7ES6fw8kW7Rgx13oiLvENzb/Oa2rIBNaNgieDKfOrONP4gPnGhkutGZQhdPiAKowiJKJ1roWaxePw== + integrity: sha512-aTY3uzVLj4sklLp1V6DUub81jrSYfIKZwnVBn/oUi7cKhBnjY7efgGVxxaRfNNi8tg5js+DBRFI6HDKSfOdABA== tarball: 'file:projects/identity.tgz' version: 0.0.0 'file:projects/keyvault-certificates.tgz': @@ -11046,7 +11048,7 @@ packages: dev: false name: '@rush-temp/service-bus' resolution: - integrity: sha512-fMPHl/88xOtoNGfxGmkJrzfKgcYUkMOGX4Pd3BDopMXG1K4BdBXOsoWj+Tk2V0z/nNxCUiLJ36hhEJbeAXPAcw== + integrity: sha512-nN9BMqfkMl0zCjMC3AsdgCSFBF/axAJwWNdiM43XVzpa+924exQPM+dh6ahZ8JUBeBI7M1Y2ygR57+Hms+4D2w== tarball: 'file:projects/service-bus.tgz' version: 0.0.0 'file:projects/storage-blob.tgz': @@ -11107,7 +11109,7 @@ packages: rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 rollup-plugin-uglify: 6.0.2_rollup@1.16.6 - rollup-plugin-visualizer: 1.1.1_rollup@1.16.6 + rollup-plugin-visualizer: 2.4.4_rollup@1.16.6 source-map-support: 0.5.12 ts-node: 7.0.1 tslib: 1.10.0 @@ -11116,7 +11118,7 @@ packages: dev: false name: '@rush-temp/storage-blob' resolution: - integrity: sha512-1p8XPdIYryOGCYaZZG1TBpnEM/2Jej9nWGVBljnm0OLJwJfF3HOJA0hiLMdfZGmYmJTWFPa/75aSCy4clNPwgg== + integrity: sha512-FWF0lybU1bBKGD4N1ttleRCkCMnGE0mgZwApgHWOTubHF/zzmBOY9OgVhgS7Bk6J+8vcaIUp/jfwAKEmJ0OIgA== tarball: 'file:projects/storage-blob.tgz' version: 0.0.0 'file:projects/storage-datalake.tgz': @@ -11202,7 +11204,7 @@ packages: rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 rollup-plugin-uglify: 6.0.2_rollup@1.16.6 - rollup-plugin-visualizer: 1.1.1_rollup@1.16.6 + rollup-plugin-visualizer: 2.4.4_rollup@1.16.6 source-map-support: 0.5.12 ts-node: 7.0.1 tslib: 1.10.0 @@ -11211,7 +11213,7 @@ packages: dev: false name: '@rush-temp/storage-file' resolution: - integrity: sha512-gF2J7FhqJAOHonnjK/tcHQR5YWEt0LA7orD4FmdxUEg4bkclC6xYOAeSBc5MRCVv6MLK+ZvjRrNtCNreog1Sqg== + integrity: sha512-jVoPzB0EQPblf83PxurtdUXk4DBwoih8HRUSsi3FgVyP0ONWbbgW/yaZYEeMSxwXTNmrzNW4paKXLf/FgOdiJA== tarball: 'file:projects/storage-file.tgz' version: 0.0.0 'file:projects/storage-queue.tgz': @@ -11271,7 +11273,7 @@ packages: rollup-plugin-shim: 1.0.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 rollup-plugin-uglify: 6.0.2_rollup@1.16.6 - rollup-plugin-visualizer: 1.1.1_rollup@1.16.6 + rollup-plugin-visualizer: 2.4.4_rollup@1.16.6 source-map-support: 0.5.12 ts-node: 7.0.1 tslib: 1.10.0 @@ -11280,7 +11282,7 @@ packages: dev: false name: '@rush-temp/storage-queue' resolution: - integrity: sha512-Iq4qHCQ8dFi/esPjeOKK1YnTocMkDd9p5u32zIerB5RvL4JAHCgUppS3glua7+6XS/UUvrR8C2S4PKC8ASyeXg== + integrity: sha512-zgZeae63buyC+CgrzepqiRIz3HoDzWLT95FZ36cnoxg70L/MNxZ3lA0Hh4f7LudMDiSaVWw0WiMOci4cnu0ZAg== tarball: 'file:projects/storage-queue.tgz' version: 0.0.0 'file:projects/template.tgz': @@ -11314,14 +11316,14 @@ packages: rollup-plugin-replace: 2.2.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 rollup-plugin-uglify: 6.0.2_rollup@1.16.6 - rollup-plugin-visualizer: 1.1.1_rollup@1.16.6 + rollup-plugin-visualizer: 2.4.4_rollup@1.16.6 tslib: 1.10.0 typescript: 3.5.3 util: 0.11.1 dev: false name: '@rush-temp/template' resolution: - integrity: sha512-SYoNlr9680ka8MtUybIXp4rlK4tEgg686s/I06AHvO39SN29nKNwXGZE0WtSESQC6Z2+t8CVQN5UjuR1DlJbiQ== + integrity: sha512-p4x160RdYLlW5VjMpev7fMKCtQoXJ8VFTzHASa7PWeYp41D7G9L7uWUO6PRYysglX5Vm9WuZZpsDmfg+ccVKmQ== tarball: 'file:projects/template.tgz' version: 0.0.0 'file:projects/testhub.tgz': @@ -11351,7 +11353,7 @@ packages: version: 0.0.0 registry: '' specifiers: - '@azure/amqp-common': ^1.0.0-preview.5 + '@azure/amqp-common': ^1.0.0-preview.6 '@azure/arm-servicebus': ^0.1.0 '@azure/event-hubs': ^1.0.6 '@azure/logger-js': ^1.0.2 @@ -11509,7 +11511,7 @@ specifiers: rollup-plugin-sourcemaps: ^0.4.2 rollup-plugin-terser: ^5.1.1 rollup-plugin-uglify: ^6.0.0 - rollup-plugin-visualizer: ^1.0.0 + rollup-plugin-visualizer: ^2.0.0 semaphore: 1.0.5 semver: ^5.5.0 shx: ^0.3.2 diff --git a/sdk/core/core-auth/package.json b/sdk/core/core-auth/package.json index 82d29872d04f..7d73cd98a7dc 100644 --- a/sdk/core/core-auth/package.json +++ b/sdk/core/core-auth/package.json @@ -89,7 +89,7 @@ "rollup-plugin-replace": "^2.1.0", "rollup-plugin-sourcemaps": "^0.4.2", "rollup-plugin-uglify": "^6.0.0", - "rollup-plugin-visualizer": "^1.0.0", + "rollup-plugin-visualizer": "^2.0.0", "typescript": "^3.2.2", "util": "^0.11.1" } diff --git a/sdk/core/core-http/package.json b/sdk/core/core-http/package.json index 6630d434e4e4..bc00f6e45686 100644 --- a/sdk/core/core-http/package.json +++ b/sdk/core/core-http/package.json @@ -175,7 +175,7 @@ "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-resolve": "0.0.1-predev.1", "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-visualizer": "^1.0.0", + "rollup-plugin-visualizer": "^2.0.0", "semver": "^5.5.0", "shx": "^0.3.2", "sinon": "^7.1.0", diff --git a/sdk/identity/identity/package.json b/sdk/identity/identity/package.json index c78a14e602c9..f3338cb7c94e 100644 --- a/sdk/identity/identity/package.json +++ b/sdk/identity/identity/package.json @@ -111,7 +111,7 @@ "rollup-plugin-replace": "^2.1.0", "rollup-plugin-sourcemaps": "^0.4.2", "rollup-plugin-terser": "^5.1.1", - "rollup-plugin-visualizer": "^1.0.0", + "rollup-plugin-visualizer": "^2.0.0", "typescript": "^3.2.2", "util": "^0.11.1" } diff --git a/sdk/storage/storage-blob/package.json b/sdk/storage/storage-blob/package.json index 65750b3cef62..0b797fd1ed5b 100644 --- a/sdk/storage/storage-blob/package.json +++ b/sdk/storage/storage-blob/package.json @@ -133,7 +133,7 @@ "rollup-plugin-shim": "^1.0.0", "rollup-plugin-sourcemaps": "^0.4.2", "rollup-plugin-uglify": "^6.0.0", - "rollup-plugin-visualizer": "^1.0.0", + "rollup-plugin-visualizer": "^2.0.0", "source-map-support": "^0.5.9", "ts-node": "^7.0.1", "typescript": "^3.2.2", diff --git a/sdk/storage/storage-file/package.json b/sdk/storage/storage-file/package.json index 1edfc0889261..4584a713f657 100644 --- a/sdk/storage/storage-file/package.json +++ b/sdk/storage/storage-file/package.json @@ -133,7 +133,7 @@ "rollup-plugin-shim": "^1.0.0", "rollup-plugin-sourcemaps": "^0.4.2", "rollup-plugin-uglify": "^6.0.0", - "rollup-plugin-visualizer": "^1.0.0", + "rollup-plugin-visualizer": "^2.0.0", "source-map-support": "^0.5.9", "ts-node": "^7.0.1", "typescript": "^3.2.2", diff --git a/sdk/storage/storage-queue/package.json b/sdk/storage/storage-queue/package.json index 7e292cd265f0..16417d4febae 100644 --- a/sdk/storage/storage-queue/package.json +++ b/sdk/storage/storage-queue/package.json @@ -131,7 +131,7 @@ "rollup-plugin-shim": "^1.0.0", "rollup-plugin-sourcemaps": "^0.4.2", "rollup-plugin-uglify": "^6.0.0", - "rollup-plugin-visualizer": "^1.0.0", + "rollup-plugin-visualizer": "^2.0.0", "source-map-support": "^0.5.9", "ts-node": "^7.0.1", "typescript": "^3.2.2", diff --git a/sdk/template/template/package.json b/sdk/template/template/package.json index 3585063116f9..801c690d18be 100644 --- a/sdk/template/template/package.json +++ b/sdk/template/template/package.json @@ -91,7 +91,7 @@ "rollup-plugin-replace": "^2.1.0", "rollup-plugin-sourcemaps": "^0.4.2", "rollup-plugin-uglify": "^6.0.0", - "rollup-plugin-visualizer": "^1.0.0", + "rollup-plugin-visualizer": "^2.0.0", "typescript": "^3.2.2", "util": "^0.11.1" } From 5079782876e8b082f2b7505b10a85c4ee8911dd8 Mon Sep 17 00:00:00 2001 From: KarishmaGhiya Date: Tue, 9 Jul 2019 12:10:49 -0700 Subject: [PATCH 251/289] run service bus live-tests in parallel (#3820) * run service bus live-tests in parallel --- sdk/servicebus/service-bus/tests.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/sdk/servicebus/service-bus/tests.yml b/sdk/servicebus/service-bus/tests.yml index 069dd6bc3c52..d98d3f2c3e7b 100644 --- a/sdk/servicebus/service-bus/tests.yml +++ b/sdk/servicebus/service-bus/tests.yml @@ -20,5 +20,3 @@ jobs: CLEAN_NAMESPACE: "true" RESOURCE_GROUP: $(service-bus-test-resource-group) SERVICEBUS_CONNECTION_STRING: $(service-bus-test-connection-string) - # Service Bus tests do not support concurrent execution - MaxParallel: 1 From b22361dd649bd2fbbadeb30268027cedec9ea633 Mon Sep 17 00:00:00 2001 From: David Wilson Date: Mon, 8 Jul 2019 16:44:21 -0700 Subject: [PATCH 252/289] Rename @azure/ms-rest-azure-js to @azure/core-arm Also update core-http user agent string to contain 'core-http'. --- .docsettings.yml | 1 + common/config/rush/pnpm-lock.yaml | 322 +++++++++++------- rush.json | 4 + .../core-arm/.devops/azure-pipelines-ci.yml | 68 ---- .../core-arm/.devops/azure-pipelines-pr.yml | 67 ---- sdk/core/core-arm/.gitattributes | 37 -- sdk/core/core-arm/.github/CODEOWNERS | 2 - .../.github/ISSUE_TEMPLATE/bug_report.md | 27 -- .../.github/ISSUE_TEMPLATE/feature_request.md | 17 - sdk/core/core-arm/.gitignore | 82 ----- sdk/core/core-arm/.scripts/checkEverything.ts | 3 - .../core-arm/.scripts/checkForOnlyCalls.ts | 3 - .../.scripts/checkPackageJsonVersion.ts | 3 - sdk/core/core-arm/.scripts/latest.ts | 3 - sdk/core/core-arm/.scripts/local.ts | 3 - sdk/core/core-arm/.scripts/publish.js | 19 -- sdk/core/core-arm/Changelog.md | 76 ----- sdk/core/core-arm/LICENSE | 21 -- sdk/core/core-arm/lib/azureServiceClient.ts | 6 +- sdk/core/core-arm/lib/baseResource.ts | 4 +- sdk/core/core-arm/lib/cloudError.ts | 2 +- .../lib/{msRestAzure.ts => coreArm.ts} | 2 +- .../cognitiveServicesCredentials.ts | 2 +- sdk/core/core-arm/lib/lroPollStrategy.ts | 2 +- sdk/core/core-arm/lib/lroPoller.ts | 2 +- sdk/core/core-arm/lib/util/constants.ts | 4 +- sdk/core/core-arm/package.json | 70 ++-- sdk/core/core-arm/rollup.config.js | 14 +- sdk/core/core-arm/samples/node-sample.js | 2 +- sdk/core/core-arm/samples/node-sample.ts | 22 +- .../core-arm/test/azureServiceClientTests.ts | 10 +- sdk/core/core-arm/test/cloudErrorTests.ts | 2 +- .../cognitiveServicesCredentialsTests.ts | 4 +- .../core-arm/test/lroPollStrategyTests.ts | 4 +- .../core-http/lib/policies/userAgentPolicy.ts | 4 +- sdk/core/core-http/lib/util/constants.ts | 4 +- .../test/msRestUserAgentPolicyTests.ts | 4 +- sdk/core/core-http/test/serviceClientTests.ts | 2 +- 38 files changed, 290 insertions(+), 634 deletions(-) delete mode 100644 sdk/core/core-arm/.devops/azure-pipelines-ci.yml delete mode 100644 sdk/core/core-arm/.devops/azure-pipelines-pr.yml delete mode 100644 sdk/core/core-arm/.gitattributes delete mode 100644 sdk/core/core-arm/.github/CODEOWNERS delete mode 100644 sdk/core/core-arm/.github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 sdk/core/core-arm/.github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 sdk/core/core-arm/.scripts/checkEverything.ts delete mode 100644 sdk/core/core-arm/.scripts/checkForOnlyCalls.ts delete mode 100644 sdk/core/core-arm/.scripts/checkPackageJsonVersion.ts delete mode 100644 sdk/core/core-arm/.scripts/latest.ts delete mode 100644 sdk/core/core-arm/.scripts/local.ts delete mode 100644 sdk/core/core-arm/.scripts/publish.js delete mode 100644 sdk/core/core-arm/Changelog.md delete mode 100644 sdk/core/core-arm/LICENSE rename sdk/core/core-arm/lib/{msRestAzure.ts => coreArm.ts} (85%) diff --git a/.docsettings.yml b/.docsettings.yml index ee0833557858..3b8dadc9fc1e 100644 --- a/.docsettings.yml +++ b/.docsettings.yml @@ -63,6 +63,7 @@ known_content_issues: - ["sdk/eventgrid/eventgrid/README.md", "#1583"] - ["sdk/core/abort-controller/README.md", "#1583"] - ["sdk/core/core-auth/README.md", "#1583"] + - ["sdk/core/core-arm/README.md", "#1583"] - ["sdk/cosmosdb/cosmos/README.md", "#1583"] - ["sdk/cosmosdb/cosmos/src/test/readme.md", "#1583"] - ["sdk/cosmosdb/cosmos/samples/readme.md", "#1583"] diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index c3cbbfdc324c..9b0814e13401 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -2,13 +2,14 @@ dependencies: '@azure/amqp-common': 1.0.0-preview.6 '@azure/arm-servicebus': 0.1.0 '@azure/event-hubs': 1.0.8 - '@azure/logger-js': 1.2.1 + '@azure/logger-js': 1.3.2 '@azure/ms-rest-azure-js': 1.3.8 '@azure/ms-rest-js': 1.8.13 '@azure/ms-rest-nodeauth': 0.9.3 '@microsoft/api-extractor': 7.2.3 '@rush-temp/abort-controller': 'file:projects/abort-controller.tgz' '@rush-temp/core-amqp': 'file:projects/core-amqp.tgz' + '@rush-temp/core-arm': 'file:projects/core-arm.tgz' '@rush-temp/core-asynciterator-polyfill': 'file:projects/core-asynciterator-polyfill.tgz' '@rush-temp/core-auth': 'file:projects/core-auth.tgz' '@rush-temp/core-http': 'file:projects/core-http.tgz' @@ -124,7 +125,7 @@ dependencies: mocha-multi: 1.1.0 mocha-multi-reporters: 1.1.7 moment: 2.24.0 - ms-rest: 2.5.1 + ms-rest: 2.5.2 ms-rest-azure: 2.6.0 nise: 1.5.0 nock: 10.0.6 @@ -143,7 +144,7 @@ dependencies: rhea: 1.0.8 rhea-promise: 0.1.15 rimraf: 2.6.3 - rollup: 1.16.6 + rollup: 1.16.7 rollup-plugin-alias: 1.5.2 rollup-plugin-commonjs: 10.0.1 rollup-plugin-inject: 3.0.0 @@ -170,6 +171,7 @@ dependencies: ts-mocha: 6.0.0 ts-node: 7.0.1 tslib: 1.10.0 + tslint: 5.18.0 tunnel: 0.0.6 typescript: 3.5.3 uglify: 0.1.5 @@ -266,12 +268,12 @@ packages: dev: false resolution: integrity: sha512-iYaB08erq2Eg5sUOXD0GXn4OmkqC67xczLfnlaaF0fLtgk999ePTuFqj4LHYT5HHUdDumYZ+U3WjPSvb0ztHJw== - /@azure/logger-js/1.2.1: + /@azure/logger-js/1.3.2: dependencies: tslib: 1.10.0 dev: false resolution: - integrity: sha512-cRzA1KmT7HTRqIM5ON3+B0mV+8q59fR605kAtukMv3sPhINfvj5HvlXk8U+SpoVk+tr343QmvHl7eupllMsFeQ== + integrity: sha512-h58oEROO2tniBTSmFmuHBGvuiFuYsHQBWTVdpT2AiOED4F2Kgf7rs0MPYPXiBcDvihC70M7QPRhIQ3JK1H/ygw== /@azure/ms-rest-azure-env/1.1.2: dev: false resolution: @@ -5807,11 +5809,11 @@ packages: rollup: '>= 1.0.0' resolution: integrity: sha512-/a7bBtinT4+fdbnatCh5ZWvbqIqPzse7O3tvT4x9tadXsxPqybo1Lilpe7AKEmvhAcUwGRlcLOWeV66lIPFrXQ== - /karma-rollup-preprocessor/7.0.0_rollup@1.16.6: + /karma-rollup-preprocessor/7.0.0_rollup@1.16.7: dependencies: chokidar: 2.1.6 debounce: 1.2.0 - rollup: 1.16.6 + rollup: 1.16.7 dev: false engines: node: '>= 8.0.0' @@ -6705,13 +6707,13 @@ packages: adal-node: 0.1.28 async: 2.6.0 moment: 2.24.0 - ms-rest: 2.5.1 + ms-rest: 2.5.2 request: 2.88.0 uuid: 3.3.2 dev: false resolution: integrity: sha512-J6386a9krZ4VtU7CRt+Ypgo9RGf8+d3gjMBkH7zbkM4zzkhbbMOYiPRaZ+bHZcfihkKLlktTgA6rjshTjF329A== - /ms-rest/2.5.1: + /ms-rest/2.5.2: dependencies: duplexer: 0.1.1 is-buffer: 1.1.6 @@ -6723,7 +6725,7 @@ packages: uuid: 3.3.2 dev: false resolution: - integrity: sha512-bRRHn/asERilNDXrm4/paFRAljnIh+L6Qo6zQkBUZRXaDiHYDRq4AFCNX4Bau0db+eXlcnjnHyu3A9EjQc4s6Q== + integrity: sha512-ZyaAu0IX/TwgjwLbWHRmnzhsoE4IimGVhVW96gI5pHtSjqpnt6woPK/SzMjJTGeF4k1m1p5A5N/vKshyVUGC2Q== /ms/2.0.0: dev: false resolution: @@ -8203,13 +8205,13 @@ packages: rollup: '>=1.12.0' resolution: integrity: sha512-x0PcCVdEc4J8igv1qe2vttz8JKAKcTs3wfIA3L8xEty3VzxgORLrzZrNWaVMc+pBC4U3aDOb9BnWLAQ8J11vkA== - /rollup-plugin-commonjs/10.0.1_rollup@1.16.6: + /rollup-plugin-commonjs/10.0.1_rollup@1.16.7: dependencies: estree-walker: 0.6.1 is-reference: 1.1.3 magic-string: 0.25.3 resolve: 1.11.1 - rollup: 1.16.6 + rollup: 1.16.7 rollup-pluginutils: 2.8.1 dev: false peerDependencies: @@ -8259,13 +8261,13 @@ packages: rollup: '>=1.11.0' resolution: integrity: sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== - /rollup-plugin-node-resolve/5.2.0_rollup@1.16.6: + /rollup-plugin-node-resolve/5.2.0_rollup@1.16.7: dependencies: '@types/resolve': 0.0.8 builtin-modules: 3.1.0 is-module: 1.0.0 resolve: 1.11.1 - rollup: 1.16.6 + rollup: 1.16.7 rollup-pluginutils: 2.8.1 dev: false peerDependencies: @@ -8299,9 +8301,9 @@ packages: rollup: '>=0.31.2' resolution: integrity: sha1-YhJaqUCHqt97g+9N+vYptHMTXoc= - /rollup-plugin-sourcemaps/0.4.2_rollup@1.16.6: + /rollup-plugin-sourcemaps/0.4.2_rollup@1.16.7: dependencies: - rollup: 1.16.6 + rollup: 1.16.7 rollup-pluginutils: 2.8.1 source-map-resolve: 0.5.2 dev: false @@ -8324,11 +8326,11 @@ packages: rollup: '>=0.66.0 <2' resolution: integrity: sha512-McIMCDEY8EU6Y839C09UopeRR56wXHGdvKKjlfiZG/GrP6wvZQ62u2ko/Xh1MNH2M9WDL+obAAHySljIZYCuPQ== - /rollup-plugin-terser/5.1.1_rollup@1.16.6: + /rollup-plugin-terser/5.1.1_rollup@1.16.7: dependencies: '@babel/code-frame': 7.0.0 jest-worker: 24.6.0 - rollup: 1.16.6 + rollup: 1.16.7 rollup-pluginutils: 2.8.1 serialize-javascript: 1.7.0 terser: 4.1.2 @@ -8352,7 +8354,18 @@ packages: dependencies: '@babel/code-frame': 7.0.0 jest-worker: 24.6.0 - rollup: 1.16.6 + serialize-javascript: 1.7.0 + uglify-js: 3.6.0 + dev: false + peerDependencies: + rollup: '>=0.66.0 <2' + resolution: + integrity: sha512-qwz2Tryspn5QGtPUowq5oumKSxANKdrnfz7C0jm4lKxvRDsNe/hSGsB9FntUul7UeC4TsZEWKErVgE1qWSO0gw== + /rollup-plugin-uglify/6.0.2_rollup@1.16.7: + dependencies: + '@babel/code-frame': 7.0.0 + jest-worker: 24.6.0 + rollup: 1.16.7 serialize-javascript: 1.7.0 uglify-js: 3.6.0 dev: false @@ -8373,12 +8386,12 @@ packages: rollup: '>=0.60.0' resolution: integrity: sha512-QMDrJfMwl8koU2IH8A/hb7zcE1Q+174uwjd9gtQ+ITbbmoGu9ro1pXoxGnTNXwkaAdlaRVECmfcAOga078Y+Qw== - /rollup-plugin-visualizer/2.4.4_rollup@1.16.6: + /rollup-plugin-visualizer/2.4.4_rollup@1.16.7: dependencies: mkdirp: 0.5.1 open: 6.4.0 pupa: 2.0.0 - rollup: 1.16.6 + rollup: 1.16.7 source-map: 0.7.3 dev: false engines: @@ -8393,7 +8406,7 @@ packages: dev: false resolution: integrity: sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg== - /rollup/1.16.6: + /rollup/1.16.7: dependencies: '@types/estree': 0.0.39 '@types/node': 12.6.1 @@ -8401,7 +8414,7 @@ packages: dev: false hasBin: true resolution: - integrity: sha512-oM3iKkzPCq9Da95wCnNfS8YlNZjgCD5c/TceKnJIthI9FOeJqnO3PUr/C5Suv9Kjzh0iphKL02PLeja3A5AMIA== + integrity: sha512-P3GVcbVSLLjHWFLKGerYRe3Q/yggRXmTZFx/4WZf4wzGwO6hAg5jyMAFMQKc0dts8rFID4BQngfoz6yQbI7iMQ== /run-async/2.3.0: dependencies: is-promise: 2.1.0 @@ -9466,6 +9479,29 @@ packages: typescript: ^2.2.0 || ^3.0.0 resolution: integrity: sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w== + /tslint/5.18.0: + dependencies: + '@babel/code-frame': 7.0.0 + builtin-modules: 1.1.1 + chalk: 2.4.2 + commander: 2.20.0 + diff: 3.5.0 + glob: 7.1.4 + js-yaml: 3.13.1 + minimatch: 3.0.4 + mkdirp: 0.5.1 + resolve: 1.11.1 + semver: 5.7.0 + tslib: 1.10.0 + tsutils: 2.29.0 + dev: false + engines: + node: '>=4.8.0' + hasBin: true + peerDependencies: + typescript: '>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev' + resolution: + integrity: sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w== /tslint/5.18.0_typescript@3.5.3: dependencies: '@babel/code-frame': 7.0.0 @@ -9490,6 +9526,14 @@ packages: typescript: '>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev' resolution: integrity: sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w== + /tsutils/2.29.0: + dependencies: + tslib: 1.10.0 + dev: false + peerDependencies: + typescript: '>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev' + resolution: + integrity: sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== /tsutils/2.29.0_typescript@3.5.3: dependencies: tslib: 1.10.0 @@ -10389,19 +10433,19 @@ packages: nyc: 14.1.1 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.16.6 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 + rollup: 1.16.7 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 - rollup-plugin-uglify: 6.0.2_rollup@1.16.6 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 + rollup-plugin-uglify: 6.0.2_rollup@1.16.7 tslib: 1.10.0 typescript: 3.5.3 dev: false name: '@rush-temp/abort-controller' resolution: - integrity: sha512-QzyWDAVpqT9O978eRMOueC1BnAEvglhzhy7BxxR21arkIKwj8ivcYwLVdQZDkZipTky/O4MZlO3ZnDGi89QlZQ== + integrity: sha512-oVKp02VH/JP8Y4NaQdjItw8GhuqXz/0in8cfI26oDGZwNo1DHwfSQ6RbXxg8h4gG4PfMho1Hc/8DYlIzP7lM7Q== tarball: 'file:projects/abort-controller.tgz' version: 0.0.0 'file:projects/core-amqp.tgz': @@ -10449,17 +10493,17 @@ packages: rhea: 1.0.8 rhea-promise: 0.1.15 rimraf: 2.6.3 - rollup: 1.16.6 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 + rollup: 1.16.7 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 rollup-plugin-inject: 3.0.0 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.16.6 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 - rollup-plugin-uglify: 6.0.2_rollup@1.16.6 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 + rollup-plugin-uglify: 6.0.2_rollup@1.16.7 sinon: 7.3.2 stream-browserify: 2.0.2 ts-node: 7.0.1 @@ -10472,9 +10516,39 @@ packages: dev: false name: '@rush-temp/core-amqp' resolution: - integrity: sha512-Jz3QXVrDs186fKzZbn1zBpEPrOrnBzkbg9YdZtgRpVomMCNkzXuAS3xiqWNTUeCtfrJmencleLHXjMOiAqwDZA== + integrity: sha512-W+Qj9gyCLdDWCuEYO4O7bZ8Y+Qaw5YERiqEEOI++tOiLAfwgyf6bmE9d9Tt2JwsEmGLtn+/wEK3KH/B0MxZBlA== tarball: 'file:projects/core-amqp.tgz' version: 0.0.0 + 'file:projects/core-arm.tgz': + dependencies: + '@types/chai': 4.1.7 + '@types/mocha': 5.2.7 + '@types/node': 8.10.50 + chai: 4.2.0 + mocha: 5.2.0 + mocha-junit-reporter: 1.23.0_mocha@5.2.0 + mocha-multi-reporters: 1.1.7 + npm-run-all: 4.1.5 + nyc: 14.1.1 + opn-cli: 4.1.0 + rollup: 1.16.7 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 + rollup-plugin-visualizer: 2.4.4_rollup@1.16.7 + shx: 0.3.2 + ts-loader: 5.4.5_typescript@3.5.3 + ts-node: 7.0.1 + tslib: 1.10.0 + tslint: 5.18.0_typescript@3.5.3 + typescript: 3.5.3 + uglify-js: 3.6.0 + yarn: 1.16.0 + dev: false + name: '@rush-temp/core-arm' + resolution: + integrity: sha512-GhCAImOI/Lte/VNwsRcuzHqEX1pO3V4L2DbfKh+PXvbN6N7/HfGgG6kTPqX709hU1ZNcKlSt6BOzGXBYCztTBA== + tarball: 'file:projects/core-arm.tgz' + version: 0.0.0 'file:projects/core-asynciterator-polyfill.tgz': dependencies: '@types/node': 8.10.50 @@ -10491,7 +10565,7 @@ packages: dev: false name: '@rush-temp/core-asynciterator-polyfill' resolution: - integrity: sha512-oJErNaXrpCzEEVyYVvv8gcBRnv36c76LBxalfW/l4wlABmUh9u+EuvwI46ig0V3m1bmIluW4S/9O08nO18uyGw== + integrity: sha512-77lBXqEBN4nl+SLXGqkc369tAmmBFDGjNJeAJCf0L30gf5MuSb7Akz0PvAzNSvSvmuD4GxcimlVwxxBgV0TGYw== tarball: 'file:projects/core-asynciterator-polyfill.tgz' version: 0.0.0 'file:projects/core-auth.tgz': @@ -10515,27 +10589,27 @@ packages: mocha-multi: 1.1.0_mocha@5.2.0 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.16.6 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 + rollup: 1.16.7 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 - rollup-plugin-uglify: 6.0.2_rollup@1.16.6 - rollup-plugin-visualizer: 2.4.4_rollup@1.16.6 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 + rollup-plugin-uglify: 6.0.2_rollup@1.16.7 + rollup-plugin-visualizer: 2.4.4_rollup@1.16.7 tslib: 1.10.0 typescript: 3.5.3 util: 0.11.1 dev: false name: '@rush-temp/core-auth' resolution: - integrity: sha512-akV7r5ANBOjNmBbw1NvDSYcbBy/J7I1hJ6QFDYA1wj2z6sU7lb1FJI/lDaobNjy7AvzZ+BsHy9Yj3plqmvlGaA== + integrity: sha512-FGWqbHKqHhzgaNGz0COkQyKsgNg8ghhVcG8HOn9+8Yik4IqvN5n9earXgOjDwxpL9iMTMGEkhEIWTHBcReLChQ== tarball: 'file:projects/core-auth.tgz' version: 0.0.0 'file:projects/core-http.tgz': dependencies: - '@azure/logger-js': 1.2.1 + '@azure/logger-js': 1.3.2 '@types/chai': 4.1.7 '@types/express': 4.17.0 '@types/form-data': 2.2.1 @@ -10570,7 +10644,7 @@ packages: karma-chai: 0.1.0_chai@4.2.0+karma@4.1.0 karma-chrome-launcher: 2.2.0 karma-mocha: 1.3.0 - karma-rollup-preprocessor: 7.0.0_rollup@1.16.6 + karma-rollup-preprocessor: 7.0.0_rollup@1.16.7 karma-sourcemap-loader: 0.3.7 karma-typescript-es6-transform: 4.1.1 karma-webpack: 4.0.2_webpack@4.35.3 @@ -10584,15 +10658,15 @@ packages: process: 0.11.10 puppeteer: 1.18.1 rimraf: 2.6.3 - rollup: 1.16.6 + rollup: 1.16.7 rollup-plugin-alias: 1.5.2 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 rollup-plugin-resolve: 0.0.1-predev.1 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 - rollup-plugin-visualizer: 2.4.4_rollup@1.16.6 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 + rollup-plugin-visualizer: 2.4.4_rollup@1.16.7 semver: 5.7.0 shx: 0.3.2 sinon: 7.3.2 @@ -10615,7 +10689,7 @@ packages: dev: false name: '@rush-temp/core-http' resolution: - integrity: sha512-wm2OlqXnbEFpZKYmqGqKlsgmfdgzTYODsAlnhvfpLXD+uwHFQOHVNc6KUFdY8SAoH3t1kyaZjyxI+nTp0ihMcQ== + integrity: sha512-YqdtKlHlLXIa+vz/aEqBxYYBaGfMM8FrsSsOryLap52mc+1JHfaKjq74MJyL3/m1i2mSzyfMQiL3NYx7grvyUQ== tarball: 'file:projects/core-http.tgz' version: 0.0.0 'file:projects/core-paging.tgz': @@ -10634,7 +10708,7 @@ packages: dev: false name: '@rush-temp/core-paging' resolution: - integrity: sha512-YuAVCVgDrwxv97SIkTM1n/hwYLjncsTgyooCUYQ4vw3o1WglSnpREVymQFVZ8Fa+S/ael7NdzsGaYp3lyTKXCg== + integrity: sha512-3cvTSZGmlAxyyfCsE4f3ag8t7H9eGHcJ4rpXjVcTmwzvajiutRU6ddOHLrRq0QpiPbuspuvGxRIMG+DHZlCVFQ== tarball: 'file:projects/core-paging.tgz' version: 0.0.0 'file:projects/cosmos.tgz': @@ -10678,7 +10752,7 @@ packages: dev: false name: '@rush-temp/cosmos' resolution: - integrity: sha512-rLhtUCCGnwzY3OigHd+TEJ4U0lyBKc2RpjKGMl9koha/aSUchKfm8qHWS+4XO/J2+WldP7yQx6gZY5C+t3cBvQ== + integrity: sha512-5oqGeaFo8iGly53D7KKcG7hbMnG9tXZ+JwIkTh4Bofmq7fxOH8w2WosjDoNBaIwiFaMRpL3QkU1FoeuNcbDcog== tarball: 'file:projects/cosmos.tgz' version: 0.0.0 'file:projects/event-hubs.tgz': @@ -10733,16 +10807,16 @@ packages: puppeteer: 1.18.1 rhea-promise: 0.1.15 rimraf: 2.6.3 - rollup: 1.16.6 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 + rollup: 1.16.7 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 rollup-plugin-inject: 3.0.0 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 - rollup-plugin-uglify: 6.0.2_rollup@1.16.6 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 + rollup-plugin-uglify: 6.0.2_rollup@1.16.7 ts-mocha: 6.0.0_mocha@5.2.0 ts-node: 7.0.1 tslib: 1.10.0 @@ -10753,7 +10827,7 @@ packages: dev: false name: '@rush-temp/event-hubs' resolution: - integrity: sha512-4SXlBNNpio9rKF27gt7/ROBdlKbdDYx5i0Vx2M9yYumMcG+kkGTBb/k80ef+RKx1FuvRCeEsZbsVlWFMYvDxWA== + integrity: sha512-xWOJsXZrjXGEf07fmGBi8bMgu1YU+bqCz5BIuaMJewDNel7o7v6roFEjiVSN4xhw2hZOStAmgTdJL8L/YrnYfg== tarball: 'file:projects/event-hubs.tgz' version: 0.0.0 'file:projects/event-processor-host.tgz': @@ -10793,14 +10867,14 @@ packages: path-browserify: 1.0.0 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.16.6 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 + rollup: 1.16.7 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 - rollup-plugin-uglify: 6.0.2_rollup@1.16.6 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 + rollup-plugin-uglify: 6.0.2_rollup@1.16.7 ts-node: 7.0.1 tslib: 1.10.0 tslint: 5.18.0_typescript@3.5.3 @@ -10809,7 +10883,7 @@ packages: dev: false name: '@rush-temp/event-processor-host' resolution: - integrity: sha512-kNXtALlFQOATlvSkSIJ2PU54lX/OY/yD33fxY4KXBUcEZ3fJTaH8iXmV0S89Ry/eaOHtHU/Iia1Yfs7u7d4avA== + integrity: sha512-F+6+Rd6EVef42aHAZrpgxfe0N/8nZYwRfg+5aI3zfwLIXSOcDss4cN78xSEqC3FuaHPCqzIHfYZ+/s+A5+J56g== tarball: 'file:projects/event-processor-host.tgz' version: 0.0.0 'file:projects/identity.tgz': @@ -10844,16 +10918,16 @@ packages: puppeteer: 1.18.1 qs: 6.7.0 rimraf: 2.6.3 - rollup: 1.16.6 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 + rollup: 1.16.7 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 - rollup-plugin-terser: 5.1.1_rollup@1.16.6 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 + rollup-plugin-terser: 5.1.1_rollup@1.16.7 rollup-plugin-uglify: 6.0.2_rollup@1.16.6 - rollup-plugin-visualizer: 2.4.4_rollup@1.16.6 + rollup-plugin-visualizer: 2.4.4_rollup@1.16.7 tslib: 1.10.0 typescript: 3.5.3 util: 0.11.1 @@ -10861,7 +10935,7 @@ packages: dev: false name: '@rush-temp/identity' resolution: - integrity: sha512-aTY3uzVLj4sklLp1V6DUub81jrSYfIKZwnVBn/oUi7cKhBnjY7efgGVxxaRfNNi8tg5js+DBRFI6HDKSfOdABA== + integrity: sha512-MCmeKLHYYs2JMvZywTo7VB3KaV7zyKJH2ReSPsm5xoNQhi5UCR2bEIzv4K9HmT1v6+cKk/yiLeo0ZAHyy+bOPQ== tarball: 'file:projects/identity.tgz' version: 0.0.0 'file:projects/keyvault-certificates.tgz': @@ -10880,9 +10954,9 @@ packages: eslint-plugin-promise: 4.2.1 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.16.6 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 + rollup: 1.16.7 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 tslib: 1.10.0 typescript: 3.5.3 uglify-js: 3.6.0 @@ -10890,7 +10964,7 @@ packages: dev: false name: '@rush-temp/keyvault-certificates' resolution: - integrity: sha512-OnKHRTzszS738exvoRLs2jaUoM3n0EW/Vnuwh04GVxor6GUG7K2wo06C+qoq3sqI5VG6CuEwMKfsSTmkLJfaMg== + integrity: sha512-4GOpK9CK1IM8iU9q84vFCZ3P/cAq496/hpFCdn+NVO9Idg+xYlkLTF9Bj3mckUvRcPgaH8Nj0kKW7SZdJEjlyg== tarball: 'file:projects/keyvault-certificates.tgz' version: 0.0.0 'file:projects/keyvault-keys.tgz': @@ -10918,9 +10992,9 @@ packages: nock: 10.0.6 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.16.6 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 + rollup: 1.16.7 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 ts-mocha: 6.0.0_mocha@5.2.0 tslib: 1.10.0 typescript: 3.5.3 @@ -10929,7 +11003,7 @@ packages: dev: false name: '@rush-temp/keyvault-keys' resolution: - integrity: sha512-K1QS7ykok+p7DjKnd3GUg6k9W9nTXkux6iJOvt6i/UyVBSMIJ9v/szsLAd/6Osofj9ZMUfeCF46PXKccYkszeA== + integrity: sha512-+bFMhZdTn24Y9m29HrHSqCnp+Q7OgDkeluJPQdbBQ7ezxtZ+rL3+tC1ud5babxX9JtVYWULJaE5KKa69OBgdoA== tarball: 'file:projects/keyvault-keys.tgz' version: 0.0.0 'file:projects/keyvault-secrets.tgz': @@ -10959,9 +11033,9 @@ packages: nock: 10.0.6 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.16.6 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 + rollup: 1.16.7 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 ts-mocha: 6.0.0_mocha@5.2.0 tslib: 1.10.0 typescript: 3.5.3 @@ -10970,7 +11044,7 @@ packages: dev: false name: '@rush-temp/keyvault-secrets' resolution: - integrity: sha512-OkaQmEoxug4+KDAkDDIVeRR9XtS6dSMHYgJD4mAlOolYt9IcYTKAPr20xbwztnBb+1eS91OmbtQjixPdt0c2bQ== + integrity: sha512-/+m9y2iWbNdL0zI+6FLFG7GeBOU+Ejy9h0mNzjTgXIny4W7cSP4qd4woTqtVVLoPB4b1SnyfI5cdY2bPGeMT9Q== tarball: 'file:projects/keyvault-secrets.tgz' version: 0.0.0 'file:projects/service-bus.tgz': @@ -11031,16 +11105,16 @@ packages: rhea: 1.0.8 rhea-promise: 0.1.15 rimraf: 2.6.3 - rollup: 1.16.6 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 + rollup: 1.16.7 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 rollup-plugin-inject: 3.0.0 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 - rollup-plugin-terser: 5.1.1_rollup@1.16.6 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 + rollup-plugin-terser: 5.1.1_rollup@1.16.7 ts-node: 7.0.1 tslib: 1.10.0 typescript: 3.5.3 @@ -11048,7 +11122,7 @@ packages: dev: false name: '@rush-temp/service-bus' resolution: - integrity: sha512-nN9BMqfkMl0zCjMC3AsdgCSFBF/axAJwWNdiM43XVzpa+924exQPM+dh6ahZ8JUBeBI7M1Y2ygR57+Hms+4D2w== + integrity: sha512-vHOoRDnsyscJXfBZXzORHKkKYbyiIcij0x3gnlAlzxS9SZ7FbIicnp6g8OPSGhDlMUHi6NExzA/uhxhRgGcYhw== tarball: 'file:projects/service-bus.tgz' version: 0.0.0 'file:projects/storage-blob.tgz': @@ -11101,15 +11175,15 @@ packages: puppeteer: 1.18.1 query-string: 6.8.1 rimraf: 2.6.3 - rollup: 1.16.6 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 + rollup: 1.16.7 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 - rollup-plugin-uglify: 6.0.2_rollup@1.16.6 - rollup-plugin-visualizer: 2.4.4_rollup@1.16.6 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 + rollup-plugin-uglify: 6.0.2_rollup@1.16.7 + rollup-plugin-visualizer: 2.4.4_rollup@1.16.7 source-map-support: 0.5.12 ts-node: 7.0.1 tslib: 1.10.0 @@ -11118,7 +11192,7 @@ packages: dev: false name: '@rush-temp/storage-blob' resolution: - integrity: sha512-FWF0lybU1bBKGD4N1ttleRCkCMnGE0mgZwApgHWOTubHF/zzmBOY9OgVhgS7Bk6J+8vcaIUp/jfwAKEmJ0OIgA== + integrity: sha512-t21ClgXAdq9oGy0Gij6PnsGZnMrHOJnYFUba4vBQkp+USM7yNfZsSFjcYUC5Dm9XWkeNqYJCbMcUmvMYee2QaA== tarball: 'file:projects/storage-blob.tgz' version: 0.0.0 'file:projects/storage-datalake.tgz': @@ -11133,8 +11207,8 @@ packages: eslint-plugin-no-null: 1.0.2_eslint@5.16.0 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 - rollup: 1.16.6 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 + rollup: 1.16.7 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 ts-node: 7.0.1 tslib: 1.10.0 typescript: 3.5.3 @@ -11143,7 +11217,7 @@ packages: dev: false name: '@rush-temp/storage-datalake' resolution: - integrity: sha512-swDFFEPAdfjA0hUa40VIrq3w0iIJTuSlLivFQzZtoyLHtOC1r2vduJwxzdBWCSstEw/XqxR4xlgFJgrtGOUH/Q== + integrity: sha512-KSloI/r30nGVQIHiMSXpFQFmTVzCvy2UV055ihBkRKB5VV60PsyFkPJmb8nSrhR7yri+/dxZp8nhU5eW6N2xLw== tarball: 'file:projects/storage-datalake.tgz' version: 0.0.0 'file:projects/storage-file.tgz': @@ -11196,15 +11270,15 @@ packages: puppeteer: 1.18.1 query-string: 6.8.1 rimraf: 2.6.3 - rollup: 1.16.6 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 + rollup: 1.16.7 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 - rollup-plugin-uglify: 6.0.2_rollup@1.16.6 - rollup-plugin-visualizer: 2.4.4_rollup@1.16.6 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 + rollup-plugin-uglify: 6.0.2_rollup@1.16.7 + rollup-plugin-visualizer: 2.4.4_rollup@1.16.7 source-map-support: 0.5.12 ts-node: 7.0.1 tslib: 1.10.0 @@ -11213,7 +11287,7 @@ packages: dev: false name: '@rush-temp/storage-file' resolution: - integrity: sha512-jVoPzB0EQPblf83PxurtdUXk4DBwoih8HRUSsi3FgVyP0ONWbbgW/yaZYEeMSxwXTNmrzNW4paKXLf/FgOdiJA== + integrity: sha512-xN4kyD0qOC6TECWuCBn31uD/2vlkgrJBpcspDD0ww+rhyd694uPNjrq9vMBTjTSryAYuU5vP+TlkkAB6aCu+uw== tarball: 'file:projects/storage-file.tgz' version: 0.0.0 'file:projects/storage-queue.tgz': @@ -11265,15 +11339,15 @@ packages: puppeteer: 1.18.1 query-string: 6.8.1 rimraf: 2.6.3 - rollup: 1.16.6 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 + rollup: 1.16.7 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 - rollup-plugin-uglify: 6.0.2_rollup@1.16.6 - rollup-plugin-visualizer: 2.4.4_rollup@1.16.6 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 + rollup-plugin-uglify: 6.0.2_rollup@1.16.7 + rollup-plugin-visualizer: 2.4.4_rollup@1.16.7 source-map-support: 0.5.12 ts-node: 7.0.1 tslib: 1.10.0 @@ -11282,7 +11356,7 @@ packages: dev: false name: '@rush-temp/storage-queue' resolution: - integrity: sha512-zgZeae63buyC+CgrzepqiRIz3HoDzWLT95FZ36cnoxg70L/MNxZ3lA0Hh4f7LudMDiSaVWw0WiMOci4cnu0ZAg== + integrity: sha512-ggwXtHtC2gES9W+4Bq0hvUOebNPQM3JN7/tQwjNS+kWFnDS4DvSPjITc8AxlQ3pwLUq+wuyoKAqmJUh4NGpvdQ== tarball: 'file:projects/storage-queue.tgz' version: 0.0.0 'file:projects/template.tgz': @@ -11308,22 +11382,22 @@ packages: mocha-multi: 1.1.0_mocha@5.2.0 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.16.6 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.6 + rollup: 1.16.7 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.6 + rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.6 - rollup-plugin-uglify: 6.0.2_rollup@1.16.6 - rollup-plugin-visualizer: 2.4.4_rollup@1.16.6 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 + rollup-plugin-uglify: 6.0.2_rollup@1.16.7 + rollup-plugin-visualizer: 2.4.4_rollup@1.16.7 tslib: 1.10.0 typescript: 3.5.3 util: 0.11.1 dev: false name: '@rush-temp/template' resolution: - integrity: sha512-p4x160RdYLlW5VjMpev7fMKCtQoXJ8VFTzHASa7PWeYp41D7G9L7uWUO6PRYysglX5Vm9WuZZpsDmfg+ccVKmQ== + integrity: sha512-Z7O5iolqvVcQbl7bmqC9Bk49v+41A2AkPGacMs2JdsuCq8YKfasWMn3iZMDIPiypdvz4PgwgogF+H/HsfU3vsA== tarball: 'file:projects/template.tgz' version: 0.0.0 'file:projects/testhub.tgz': @@ -11337,7 +11411,7 @@ packages: debug: 3.2.6 is-buffer: 2.0.3 jssha: 2.3.1 - ms-rest: 2.5.1 + ms-rest: 2.5.2 ms-rest-azure: 2.6.0 rhea: 1.0.8 rimraf: 2.6.3 @@ -11348,7 +11422,7 @@ packages: dev: false name: '@rush-temp/testhub' resolution: - integrity: sha512-c3cFI0Our99carkgcyOFLmX5QRh5fIqyVv9S75VRX7woNtBGXPvWRE8VOxEN9o8N8FjSEQzc6PPEO6YRz7ok8Q== + integrity: sha512-IIhgwGeM3S6e3snigbvVfVsSh+X7T8iOKRToJ9fkFRjpviiH3jpdpOm186AyYHuEfZzR/dQlxmdQxEoZUVH3qA== tarball: 'file:projects/testhub.tgz' version: 0.0.0 registry: '' @@ -11363,6 +11437,7 @@ specifiers: '@microsoft/api-extractor': ^7.1.5 '@rush-temp/abort-controller': 'file:./projects/abort-controller.tgz' '@rush-temp/core-amqp': 'file:./projects/core-amqp.tgz' + '@rush-temp/core-arm': 'file:./projects/core-arm.tgz' '@rush-temp/core-asynciterator-polyfill': 'file:./projects/core-asynciterator-polyfill.tgz' '@rush-temp/core-auth': 'file:./projects/core-auth.tgz' '@rush-temp/core-http': 'file:./projects/core-http.tgz' @@ -11524,6 +11599,7 @@ specifiers: ts-mocha: ^6.0.0 ts-node: ^7.0.1 tslib: ^1.9.3 + tslint: ^5.7.0 tunnel: 0.0.6 typescript: ^3.2.2 uglify: ^0.1.5 diff --git a/rush.json b/rush.json index 8e182494756b..096168391fa2 100644 --- a/rush.json +++ b/rush.json @@ -318,6 +318,10 @@ "packageName": "@azure/abort-controller", "projectFolder": "sdk/core/abort-controller" }, + { + "packageName": "@azure/core-arm", + "projectFolder": "sdk/core/core-arm" + }, { "packageName": "@azure/core-auth", "projectFolder": "sdk/core/core-auth" diff --git a/sdk/core/core-arm/.devops/azure-pipelines-ci.yml b/sdk/core/core-arm/.devops/azure-pipelines-ci.yml deleted file mode 100644 index 606f6d45510e..000000000000 --- a/sdk/core/core-arm/.devops/azure-pipelines-ci.yml +++ /dev/null @@ -1,68 +0,0 @@ -trigger: -- master - -pr: none - -jobs: -- job: npm_install - pool: - vmImage: 'Ubuntu 16.04' - steps: - - task: Npm@1 - displayName: 'npm install' - inputs: - command: custom - verbose: false - customCommand: install -- job: Test - pool: - vmImage: 'Ubuntu 16.04' - strategy: - matrix: - Node6: - node.version: 6.x - Node8: - node.version: 8.x - Node10: - node.version: 10.x - Node11: - node.version: 11.x - steps: - - task: NodeTool@0 - displayName: 'Install Node' - inputs: - versionSpec: $(node.version) - - script: npm install - - task: Npm@1 - displayName: 'npm test' - inputs: - command: custom - verbose: false - customCommand: test - - task: PublishTestResults@2 - inputs: - testResultsFiles: '$(System.DefaultWorkingDirectory)/test-results.xml' - testRunTitle: 'Test results for JavaScript' - - task: PublishCodeCoverageResults@1 - inputs: - codeCoverageTool: Cobertura - summaryFileLocation: '$(System.DefaultWorkingDirectory)/coverage/cobertura-coverage.xml' - reportDirectory: '$(System.DefaultWorkingDirectory)/coverage/' -- job: Pack - pool: - vmImage: 'Ubuntu 16.04' - steps: - - task: Npm@1 - displayName: 'npm pack' - inputs: - command: custom - verbose: false - customCommand: pack - - task: CopyFiles@2 - displayName: 'Copy Files to: drop' - inputs: - Contents: '*.tgz' - TargetFolder: drop - - task: PublishBuildArtifacts@1 - inputs: - pathtoPublish: $(Build.SourcesDirectory)/drop diff --git a/sdk/core/core-arm/.devops/azure-pipelines-pr.yml b/sdk/core/core-arm/.devops/azure-pipelines-pr.yml deleted file mode 100644 index 0b2ee222c8c4..000000000000 --- a/sdk/core/core-arm/.devops/azure-pipelines-pr.yml +++ /dev/null @@ -1,67 +0,0 @@ -jobs: -- job: Check_Everything - pool: - vmImage: 'Ubuntu 16.04' - steps: - - task: Npm@1 - displayName: 'npm install' - inputs: - command: custom - verbose: false - customCommand: install - - task: Npm@1 - displayName: 'npm run check:everything -- --azure-devops' - inputs: - command: custom - verbose: false - customCommand: run check:everything -- --azure-devops -- job: Test - pool: - vmImage: 'Ubuntu 16.04' - strategy: - matrix: - Node6: - node.version: 6.x - Node8: - node.version: 8.x - Node10: - node.version: 10.x - Node11: - node.version: 11.x - steps: - - task: NodeTool@0 - displayName: 'Install Node' - inputs: - versionSpec: $(node.version) - - script: npm install - - task: Npm@1 - displayName: 'npm test' - inputs: - command: custom - verbose: false - customCommand: test - - task: PublishTestResults@2 - inputs: - testResultsFiles: '$(System.DefaultWorkingDirectory)/test-results.xml' - testRunTitle: 'Test results for JavaScript' - - task: PublishCodeCoverageResults@1 - inputs: - codeCoverageTool: Cobertura - summaryFileLocation: '$(System.DefaultWorkingDirectory)/coverage/cobertura-coverage.xml' - reportDirectory: '$(System.DefaultWorkingDirectory)/coverage/' -- job: Build - pool: - vmImage: 'Ubuntu 16.04' - steps: - - task: Npm@1 - displayName: 'npm install' - inputs: - command: custom - verbose: false - customCommand: install - - task: Npm@1 - displayName: 'npm run build' - inputs: - command: custom - verbose: true - customCommand: run build diff --git a/sdk/core/core-arm/.gitattributes b/sdk/core/core-arm/.gitattributes deleted file mode 100644 index 2e9b3037cd30..000000000000 --- a/sdk/core/core-arm/.gitattributes +++ /dev/null @@ -1,37 +0,0 @@ -*.bmp binary -*.dll binary -*.gif binary -*.jpg binary -*.png binary -*.snk binary -*.exe binary -*.wmv binary -*.mp4 binary -*.ismv binary -*.isma binary - -*.ascx text -*.cmd text -*.config text -*.cs text diff=csharp -*.csproj text merge=union -*.edmx text - -*.htm text -*.html text - -*.json text eol=lf -*.ts text eol=lf -*.js text eol=lf - -*.msbuild text -*.nuspec text - -*.resx text -*.ruleset text -*.StyleCop text -*.targets text -*.txt text -*.xml text - -*.sln text eol=crlf merge=union \ No newline at end of file diff --git a/sdk/core/core-arm/.github/CODEOWNERS b/sdk/core/core-arm/.github/CODEOWNERS deleted file mode 100644 index 4860da6cb307..000000000000 --- a/sdk/core/core-arm/.github/CODEOWNERS +++ /dev/null @@ -1,2 +0,0 @@ -# Default owners -* @amarzavery @daschult @kpajdzik @sergey-shandar diff --git a/sdk/core/core-arm/.github/ISSUE_TEMPLATE/bug_report.md b/sdk/core/core-arm/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 23512e00e4c9..000000000000 --- a/sdk/core/core-arm/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve - ---- - -**Package Version**: _______ -- [ ] **nodejs** - - **nodejs version**: ______ - - **os name/version**: _____ -- [ ] **browser** - - **name/version**: ____ -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Additional context** -Add any other context about the problem here. diff --git a/sdk/core/core-arm/.github/ISSUE_TEMPLATE/feature_request.md b/sdk/core/core-arm/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 066b2d920a28..000000000000 --- a/sdk/core/core-arm/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/sdk/core/core-arm/.gitignore b/sdk/core/core-arm/.gitignore index 7118966a4592..b57ace249a0e 100644 --- a/sdk/core/core-arm/.gitignore +++ b/sdk/core/core-arm/.gitignore @@ -1,86 +1,4 @@ -#### linux gitignore - -*~ - -# KDE directory preferences -.directory - -# Linux trash folder which might appear on any partition or disk -.Trash-* - -/obj/* /node_modules -.ntvs_analysis.dat -.ntvs_analysis.* -npm-debug.log -tmp/* -packages/* -*.njsperf -.vs/ -bin/* -/.vscode/* -ValidationTool.njsproj -ValidationTool.sln -.vscode/launch.json - -#### win gitignore - -# Windows image file caches -Thumbs.db -ehthumbs.db - -# Folder config file -Desktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Windows Installer files -*.cab -*.msi -*.msm -*.msp - -# Windows shortcuts -*.lnk - - -#### osx gitignore - -.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - -node_modules -*.tgz - -#### JetBrains -.idea - -# ignore code gen virtual env folder -SdkCodeGen output/* package-lock.json diff --git a/sdk/core/core-arm/.scripts/checkEverything.ts b/sdk/core/core-arm/.scripts/checkEverything.ts deleted file mode 100644 index 4d91adb32de3..000000000000 --- a/sdk/core/core-arm/.scripts/checkEverything.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { checkEverything } from "@ts-common/azure-js-dev-tools"; - -checkEverything(); \ No newline at end of file diff --git a/sdk/core/core-arm/.scripts/checkForOnlyCalls.ts b/sdk/core/core-arm/.scripts/checkForOnlyCalls.ts deleted file mode 100644 index c57486085000..000000000000 --- a/sdk/core/core-arm/.scripts/checkForOnlyCalls.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { checkForOnlyCalls } from "@ts-common/azure-js-dev-tools"; - -checkForOnlyCalls(); \ No newline at end of file diff --git a/sdk/core/core-arm/.scripts/checkPackageJsonVersion.ts b/sdk/core/core-arm/.scripts/checkPackageJsonVersion.ts deleted file mode 100644 index 845b8a052937..000000000000 --- a/sdk/core/core-arm/.scripts/checkPackageJsonVersion.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { checkPackageJsonVersion } from "@ts-common/azure-js-dev-tools"; - -checkPackageJsonVersion(); \ No newline at end of file diff --git a/sdk/core/core-arm/.scripts/latest.ts b/sdk/core/core-arm/.scripts/latest.ts deleted file mode 100644 index bc71731346c1..000000000000 --- a/sdk/core/core-arm/.scripts/latest.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { changeClonedDependenciesTo } from "@ts-common/azure-js-dev-tools"; - -changeClonedDependenciesTo(__dirname, "latest"); \ No newline at end of file diff --git a/sdk/core/core-arm/.scripts/local.ts b/sdk/core/core-arm/.scripts/local.ts deleted file mode 100644 index e3d8f5d46123..000000000000 --- a/sdk/core/core-arm/.scripts/local.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { changeClonedDependenciesTo } from "@ts-common/azure-js-dev-tools"; - -changeClonedDependenciesTo(__dirname, "local"); \ No newline at end of file diff --git a/sdk/core/core-arm/.scripts/publish.js b/sdk/core/core-arm/.scripts/publish.js deleted file mode 100644 index 963816dca6bf..000000000000 --- a/sdk/core/core-arm/.scripts/publish.js +++ /dev/null @@ -1,19 +0,0 @@ -const semver = require("semver"); -const util = require("util"); -const cp= require("child_process"); -const exec=util.promisify(cp.exec); - -async function main() { - const package_json = require("../package.json"); - const baseVersion = (package_json.version).trim() - const v = (await exec("git rev-list --parents HEAD --count --full-history")).stdout.trim(); - - const version = `${semver.major(baseVersion)}.${semver.minor(baseVersion)}.${v}` - - console.log(`Using version ${version}`); - process.argv.push(`publish`,`--access`,`public`,`--tag`,`preview`,`--new-version`,`${version}`, `--no-git-tag-version`); - // now, on with the publish... - require( "yarn/lib/cli.js" ); -} - -main(); \ No newline at end of file diff --git a/sdk/core/core-arm/Changelog.md b/sdk/core/core-arm/Changelog.md deleted file mode 100644 index bb117fd1547c..000000000000 --- a/sdk/core/core-arm/Changelog.md +++ /dev/null @@ -1,76 +0,0 @@ -# Changelog -## 1.3.7 - 2019-06-04 -- Updated `@azure/ms-rest-js` to `^1.8.10` - -## 1.3.6 - 2019-06-03 -- Fixed a bug where we were throwing an Error if the final GET on the resource while polling a long running DELETE operation would return a 404. [#azure-sdk-for-js/issues/2842](https://github.com/Azure/azure-sdk-for-js/issues/2842) -- Fixed vulnerabilities by updating package version of `nyc`. - -## 1.3.5 - 2019-05-17 -- Added missing exports to the package. - -## 1.3.4 - 2019-05-13 -- Updated version of the package to fix auto publishing script in CI. - -## 1.3.3 - 2019-04-05 -- Updated dependency `@azure/ms-rest-js`. - -## 1.3.2 - 2019-01-28 -- Fixed User-Agent tests - -## 1.3.1 - 2019-01-07 -- Fixed LRO RestErrors parsing -- Added JSON parsing error handling - -## 1.3.0 - 2019-01-07 -- Removed final GET on POST 202 long running operations - -## 1.2.4 - 2018-12-20 -- Updated checks in CI - -## 1.2.3 - 2018-12-20 -- Added checks to run before publishing - -## 1.2.2 - 2018-12-19 -- More test updates. - -## 1.2.1 - 2018-12-17 -- Enable test coverage in CI. - -## 1.2.0 - 2018-12-04 -- Update dependency `@azure/ms-rest-js`. - -## 1.1.2 - 2018-11-28 -- Fixed event-stream vulnerability - -## 1.1.1 - 2018-11-13 - -- Improve debugging by adding rollup-plugin-sourcemaps - -## 1.1.0 - 2018/11/09 - -- Renamed NPM package to @azure/ms-rest-azure-js and updated renamed dependencies - -## 1.0.0 - 2018/10/04 - -- Moved to rollup for bundling -- Moved browser bundle from ./msRestAzureBundle.js to ./dist/msRestAzure.js (same bundle for nodejs and browser) - -## 0.2.8 - 2017/04/02 - -- Updated ms-rest-js to 0.2.8 -- Added CognitiveServicesCredentials - -## 0.2.1 - 2017/10/25 - -- Updating the minimum version of dependency "ms-rest-js": "^0.2.3". This brings in the change (removal of "bodyAsStream" property) done to HttpOperationResponse class - -## 0.2.0 - 2017/10/11 - -- Updating the minimum version of dependency "ms-rest-js": "^0.2.1". This also gets a strict dependency to "moment" version 2.18.1 as 2.19.0 has bugs. - -## 0.1.0 - 2017/09/16 - -- Initial version of the isomorphic azure runtime along with type definitions that works in the browser as well as the node.js environment - - Supports polling for long running operations - - Provides definition of CloudError \ No newline at end of file diff --git a/sdk/core/core-arm/LICENSE b/sdk/core/core-arm/LICENSE deleted file mode 100644 index c91f149f838d..000000000000 --- a/sdk/core/core-arm/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 MIT - -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/core/core-arm/lib/azureServiceClient.ts b/sdk/core/core-arm/lib/azureServiceClient.ts index d63927ed2cbe..0fec71bb43f4 100644 --- a/sdk/core/core-arm/lib/azureServiceClient.ts +++ b/sdk/core/core-arm/lib/azureServiceClient.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { HttpOperationResponse, OperationArguments, OperationSpec, RequestOptionsBase, RequestPrepareOptions, ServiceClient, ServiceClientCredentials, ServiceClientOptions, WebResource, getDefaultUserAgentValue as getDefaultUserAgentValueFromMsRest } from "@azure/ms-rest-js"; +import { HttpOperationResponse, OperationArguments, OperationSpec, RequestOptionsBase, RequestPrepareOptions, ServiceClient, ServiceClientCredentials, ServiceClientOptions, WebResource, getDefaultUserAgentValue as getDefaultUserAgentValueFromMsRest } from "@azure/core-http"; import { createLROPollerFromInitialResponse, createLROPollerFromPollState, LROPoller } from "./lroPoller"; import { LROPollState } from "./lroPollStrategy"; import * as Constants from "./util/constants"; @@ -107,7 +107,7 @@ export class AzureServiceClient extends ServiceClient { export function getDefaultUserAgentValue(): string { const defaultUserAgent = getDefaultUserAgentValueFromMsRest(); - return `ms-rest-azure-js/${Constants.msRestAzureVersion} ${defaultUserAgent}`; + return `core-arm/${Constants.coreArmVersion} ${defaultUserAgent}`; } export function updateOptionsWithDefaultValues(options?: AzureServiceClientOptions): AzureServiceClientOptions { @@ -124,4 +124,4 @@ export function updateOptionsWithDefaultValues(options?: AzureServiceClientOptio } return options; -} \ No newline at end of file +} diff --git a/sdk/core/core-arm/lib/baseResource.ts b/sdk/core/core-arm/lib/baseResource.ts index 86ba57396dd7..f393a523760e 100644 --- a/sdk/core/core-arm/lib/baseResource.ts +++ b/sdk/core/core-arm/lib/baseResource.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { CompositeMapper } from "@azure/ms-rest-js"; +import { CompositeMapper } from "@azure/core-http"; /** * @class @@ -17,4 +17,4 @@ export const BaseResourceMapper: CompositeMapper = { modelProperties: { } } -}; \ No newline at end of file +}; diff --git a/sdk/core/core-arm/lib/cloudError.ts b/sdk/core/core-arm/lib/cloudError.ts index c36897fb9422..2ea4bacbab87 100644 --- a/sdk/core/core-arm/lib/cloudError.ts +++ b/sdk/core/core-arm/lib/cloudError.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { CompositeMapper } from "@azure/ms-rest-js"; +import { CompositeMapper } from "@azure/core-http"; /** * @class diff --git a/sdk/core/core-arm/lib/msRestAzure.ts b/sdk/core/core-arm/lib/coreArm.ts similarity index 85% rename from sdk/core/core-arm/lib/msRestAzure.ts rename to sdk/core/core-arm/lib/coreArm.ts index 3a2da8f03c8a..18a9bbafc10c 100644 --- a/sdk/core/core-arm/lib/msRestAzure.ts +++ b/sdk/core/core-arm/lib/coreArm.ts @@ -6,4 +6,4 @@ export { BaseResource, BaseResourceMapper } from "./baseResource"; export { CloudError, CloudErrorMapper } from "./cloudError"; export { CognitiveServicesCredentials } from "./credentials/cognitiveServicesCredentials"; export { createLROPollerFromInitialResponse, createLROPollerFromPollState, LROPoller } from "./lroPoller"; -export { DEFAULT_LANGUAGE, LongRunningOperationStates, msRestAzureVersion } from "./util/constants"; +export { DEFAULT_LANGUAGE, LongRunningOperationStates, coreArmVersion } from "./util/constants"; diff --git a/sdk/core/core-arm/lib/credentials/cognitiveServicesCredentials.ts b/sdk/core/core-arm/lib/credentials/cognitiveServicesCredentials.ts index a904e1a1133f..c01e390a0011 100644 --- a/sdk/core/core-arm/lib/credentials/cognitiveServicesCredentials.ts +++ b/sdk/core/core-arm/lib/credentials/cognitiveServicesCredentials.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { ApiKeyCredentials } from "@azure/ms-rest-js"; +import { ApiKeyCredentials } from "@azure/core-http"; /** * Creates a new CognitiveServicesCredentials object. diff --git a/sdk/core/core-arm/lib/lroPollStrategy.ts b/sdk/core/core-arm/lib/lroPollStrategy.ts index 80e0818fb3b1..90e5edcc61db 100644 --- a/sdk/core/core-arm/lib/lroPollStrategy.ts +++ b/sdk/core/core-arm/lib/lroPollStrategy.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { delay, HttpMethods, HttpOperationResponse, RequestOptionsBase, RestError, stripRequest, WebResource, OperationResponse, OperationSpec } from "@azure/ms-rest-js"; +import { delay, HttpMethods, HttpOperationResponse, RequestOptionsBase, RestError, stripRequest, WebResource, OperationResponse, OperationSpec } from "@azure/core-http"; import { AzureServiceClient } from "./azureServiceClient"; import { LongRunningOperationStates } from "./util/constants"; diff --git a/sdk/core/core-arm/lib/lroPoller.ts b/sdk/core/core-arm/lib/lroPoller.ts index 84bf2983b2ce..a1e98958125a 100644 --- a/sdk/core/core-arm/lib/lroPoller.ts +++ b/sdk/core/core-arm/lib/lroPoller.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { HttpOperationResponse, RequestOptionsBase, RestResponse, flattenResponse } from "@azure/ms-rest-js"; +import { HttpOperationResponse, RequestOptionsBase, RestResponse, flattenResponse } from "@azure/core-http"; import { AzureServiceClient } from "./azureServiceClient"; import { createLROPollStrategyFromInitialResponse, createLROPollStrategyFromPollState, LROPollState, LROPollStrategy } from "./lroPollStrategy"; import { LongRunningOperationStates } from "./util/constants"; diff --git a/sdk/core/core-arm/lib/util/constants.ts b/sdk/core/core-arm/lib/util/constants.ts index 28f069e0ee8c..688c62a8047a 100644 --- a/sdk/core/core-arm/lib/util/constants.ts +++ b/sdk/core/core-arm/lib/util/constants.ts @@ -23,8 +23,8 @@ export type LongRunningOperationStates = export const DEFAULT_LANGUAGE = "en-us"; /** - * The ms-rest-azure version. + * The core-arm version. * @const * @type {string} */ -export const msRestAzureVersion = "1.3.7"; +export const coreArmVersion = "1.0.0-preview.1"; diff --git a/sdk/core/core-arm/package.json b/sdk/core/core-arm/package.json index 9b4cdb7dc62d..8c5c228a66b4 100644 --- a/sdk/core/core-arm/package.json +++ b/sdk/core/core-arm/package.json @@ -1,11 +1,11 @@ { - "name": "@azure/ms-rest-azure-js", + "name": "@azure/core-arm", "author": { "name": "Microsoft Corporation", "email": "azsdkteam@microsoft.com", - "url": "https://github.com/Azure/ms-rest-azure-js" + "url": "https://github.com/Azure/azure-sdk-for-js" }, - "version": "1.3.8", + "version": "1.0.0-preview.1", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ "isomorphic", @@ -25,9 +25,9 @@ "autorest", "clientruntime" ], - "main": "./dist/msRestAzure.js", - "module": "./es/lib/msRestAzure.js", - "types": "./es/lib/msRestAzure.d.ts", + "main": "./dist/coreArm.js", + "module": "./es/lib/coreArm.js", + "types": "./es/lib/coreArm.d.ts", "files": [ "dist/**/*.js", "dist/**/*.js.map", @@ -41,40 +41,40 @@ ], "license": "MIT", "dependencies": { - "@azure/ms-rest-js": "^1.8.10", + "@azure/core-http": "^1.0.0-preview.1", "tslib": "^1.9.3" }, "devDependencies": { - "@ts-common/azure-js-dev-tools": "^0.6.0", - "@types/chai": "^4.1.4", - "@types/mocha": "^5.2.1", - "@types/node": "^10.9.4", - "chai": "^4.1.2", + "@types/chai": "^4.1.6", + "@types/mocha": "^5.2.5", + "@types/node": "^8.0.0", + "chai": "^4.2.0", "mocha": "^5.2.0", "mocha-junit-reporter": "^1.18.0", "mocha-multi-reporters": "^1.1.7", "npm-run-all": "^4.1.5", - "nyc": "^14.1.1", + "nyc": "^14.0.0", "opn-cli": "^4.0.0", - "rollup": "^0.67.3", - "rollup-plugin-node-resolve": "^3.4.0", + "rimraf": "^2.6.2", + "rollup": "^1.16.3", + "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-visualizer": "^0.9.2", + "rollup-plugin-visualizer": "^2.0.0", "shx": "^0.3.2", "ts-loader": "^5.3.1", "ts-node": "^7.0.1", "tslint": "^5.7.0", - "typescript": "^3.1.1", + "typescript": "^3.2.2", "uglify-js": "^3.4.9", "yarn": "^1.6.0" }, - "homepage": "https://github.com/Azure/ms-rest-azure-js", + "homepage": "https://github.com/Azure/ms-rest-azure-js/tree/master/sdk/core/core-arm", "repository": { "type": "git", - "url": "git@github.com:Azure/ms-rest-azure-js.git" + "url": "git@github.com:Azure/azure-sdk-for-js.git" }, "bugs": { - "url": "http://github.com/Azure/ms-rest-azure-js/issues" + "url": "http://github.com/Azure/azure-sdk-for-js/issues" }, "nyc": { "extension": [ @@ -93,22 +93,28 @@ "all": true }, "scripts": { + "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit", "build": "run-p build:lib", "build:lib": "run-s build:tsc build:rollup build:minify", "build:tsc": "tsc -p tsconfig.es.json", - "build:rollup": "rollup -c rollup.config.js", - "build:minify": "uglifyjs -c -m --comments --source-map \"content='./dist/msRestAzure.js.map'\" -o ./dist/msRestAzure.min.js ./dist/msRestAzure.js", - "test": "run-p test:tslint test:unit", - "test:unit": "nyc mocha", - "test:tslint": "tslint -p . -c tslint.json --exclude test/**/*.ts", + "build:rollup": "rollup -c rollup.config.js 2>&1", + "build:minify": "uglifyjs -c -m --comments --source-map \"content='./dist/coreArm.js.map'\" -o ./dist/coreArm.min.js ./dist/coreArm.js", + "build:test": "npm run build", + "clean": "rimraf ./es ./dist", + "integration-test:browser": "echo skipped", + "integration-test:node": "echo skipped", + "integration-test": "npm run integration-test:node && npm run integration-test:browser", + "lint:fix": "tslint -p . --fix -c tslint.json --exclude test/**/*.ts", + "lint": "tslint -p . -c tslint.json --exclude test/**/*.ts", + "test:browser": "npm run build && npm run unit-test:browser && npm run integration-test:browser", + "test:node": "npm run build && npm run unit-test:node && npm run integration-test:node", + "test": "npm run build && npm run unit-test && npm run integration-test", + "unit-test": "npm run unit-test:node && npm run unit-test:browser", + "unit-test:browser": "echo skipped", + "unit-test:node": "nyc mocha", "test:coverage": "npm run test && opn coverage/index.html", - "prepack": "npm install && npm run build", - "publish-preview": "npm test && shx rm -rf dist/test && node ./.scripts/publish", - "local": "ts-node ./.scripts/local.ts", - "latest": "ts-node ./.scripts/latest.ts", - "check:packagejsonversion": "ts-node ./.scripts/checkPackageJsonVersion.ts", - "check:foronlycalls": "ts-node ./.scripts/checkForOnlyCalls.ts", - "check:everything": "ts-node ./.scripts/checkEverything.ts" + "pack": "npm pack 2>&1", + "prebuild": "npm run clean" }, "sideEffects": false } diff --git a/sdk/core/core-arm/rollup.config.js b/sdk/core/core-arm/rollup.config.js index b320a8aaa4f7..66d43af3d5ec 100644 --- a/sdk/core/core-arm/rollup.config.js +++ b/sdk/core/core-arm/rollup.config.js @@ -2,7 +2,7 @@ import nodeResolve from "rollup-plugin-node-resolve"; import visualizer from "rollup-plugin-visualizer"; import sourcemaps from "rollup-plugin-sourcemaps"; -const banner = `/** @license ms-rest-azure-js +const banner = `/** @license @azure/core-arm * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. */`; @@ -11,20 +11,20 @@ const banner = `/** @license ms-rest-azure-js * @type {import('rollup').RollupFileOptions} */ const config = { - input: './es/lib/msRestAzure.js', - external: ["@azure/ms-rest-js"], + input: './es/lib/coreArm.js', + external: ["@azure/core-http"], output: { - file: "./dist/msRestAzure.js", + file: "./dist/coreArm.js", format: "umd", - name: "msRestAzure", + name: "Azure.Core.ARM", sourcemap: true, globals: { - "@azure/ms-rest-js": "msRest" + "@azure/core-http": "Azure.Core.HTTP" }, banner }, plugins: [ - nodeResolve({ module: true }), + nodeResolve({ mainFields: ['module'] }), sourcemaps(), visualizer({ filename: "dist/node-stats.html", sourcemap: true }) ] diff --git a/sdk/core/core-arm/samples/node-sample.js b/sdk/core/core-arm/samples/node-sample.js index 55f1a7be48bb..58a6d62ef37e 100644 --- a/sdk/core/core-arm/samples/node-sample.js +++ b/sdk/core/core-arm/samples/node-sample.js @@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", { value: true }); -const msRest = require("ms-rest-js"); +const msRest = require("core-http"); const msRestAzure = require("../dist/lib/msRestAzure"); const clientOptions = { filters: [new msRest.LogFilter()] diff --git a/sdk/core/core-arm/samples/node-sample.ts b/sdk/core/core-arm/samples/node-sample.ts index 1fe9bdd50937..b4be78a66ce8 100644 --- a/sdk/core/core-arm/samples/node-sample.ts +++ b/sdk/core/core-arm/samples/node-sample.ts @@ -1,9 +1,9 @@ "use strict"; -import * as msRest from "@azure/ms-rest-js"; -import * as msRestAzure from "../lib/msRestAzure"; -const clientOptions: msRestAzure.AzureServiceClientOptions = { - filters: [new msRest.LogFilter()] +import * as coreHttp from "@azure/core-http"; +import * as coreArm from "../lib/coreArm"; +const clientOptions: coreArm.AzureServiceClientOptions = { + filters: [new coreHttp.LogFilter()] }; const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"] || "00977cdb-163f-435f-9c32-39ec8ae61f4d"; @@ -20,9 +20,9 @@ const apiVersion = "2017-06-01"; // 1.5 in the curl tab you will see the actual curl request that has the bearer token in it // 1.6 copy paste that token here. That token is valid for 1 hour const token = "token"; -const creds = new msRest.TokenCredentials(token); -const client = new msRestAzure.AzureServiceClient(creds, clientOptions); -const req: msRest.RequestPrepareOptions = { +const creds = new coreHttp.TokenCredentials(token); +const client = new coreArm.AzureServiceClient(creds, clientOptions); +const req: coreHttp.RequestPrepareOptions = { url: `https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.Storage/storageAccounts/${accountName}?api-version=${apiVersion}`, method: "PUT", body: { @@ -38,8 +38,8 @@ const req: msRest.RequestPrepareOptions = { } }; -async function execute(req: msRest.RequestPrepareOptions): Promise { - let res: msRest.HttpOperationResponse; +async function execute(req: coreHttp.RequestPrepareOptions): Promise { + let res: coreHttp.HttpOperationResponse; try { res = await client.sendLongRunningRequest(req); console.dir(res); @@ -50,7 +50,7 @@ async function execute(req: msRest.RequestPrepareOptions): Promise { +// client.sendLongRunningRequest(req).then((res: coreHttp.HttpOperationResponse) => { // console.log(res.body as string); // }).catch((err) => { // console.dir(err); @@ -61,4 +61,4 @@ for (var i = 1; i <= 20; i++) { console.log("Hello World " + i); setTimeout(function (x) { return function () { console.log(x); }; }(i), 1000 * i); // 1 2 3 4 5 -} \ No newline at end of file +} diff --git a/sdk/core/core-arm/test/azureServiceClientTests.ts b/sdk/core/core-arm/test/azureServiceClientTests.ts index cbe2762031f3..cb4dc07a99b1 100644 --- a/sdk/core/core-arm/test/azureServiceClientTests.ts +++ b/sdk/core/core-arm/test/azureServiceClientTests.ts @@ -2,7 +2,7 @@ // Licensed under the MIT License. See License.txt in the project root for license information. import assert from "assert"; -import { HttpHeaders, HttpOperationResponse, RequestOptionsBase, RestError, TokenCredentials, WebResource, OperationArguments, OperationSpec, Serializer } from "@azure/ms-rest-js"; +import { HttpHeaders, HttpOperationResponse, RequestOptionsBase, RestError, TokenCredentials, WebResource, OperationArguments, OperationSpec, Serializer } from "@azure/core-http"; import { AzureServiceClient, AzureServiceClientOptions, updateOptionsWithDefaultValues } from "../lib/azureServiceClient"; import * as msAssert from "./msAssert"; import { LROPoller } from "../lib/lroPoller"; @@ -2523,7 +2523,7 @@ describe("AzureServiceClient", () => { delete expected.userAgent; assert.deepEqual(actual, expected); - assert(actualUserAgent!.match(/ms-rest-azure-js\/[\d\.]+ ms-rest-js\/[\d\w\.-]+ .+/)); + assert(actualUserAgent!.match(/core-arm\/[\d\w\.-]+ core-http\/[\d\w\.-]+ .+/)); } it("with undefined", () => { @@ -2559,7 +2559,7 @@ describe("AzureServiceClient", () => { assert.equal(telemetry, "custom-ua"); }); - it ("adds user agent header that looks similar to \"ms-rest-azure-js/0.1.0 ms-rest-js/0.1.0 Node/v10.11.0 OS/(x64-Windows_NT-10.0.18267)\"", async () => { + it ("adds user agent header that looks similar to \"core-arm/0.1.0 core-http/0.1.0 Node/v10.11.0 OS/(x64-Windows_NT-10.0.18267)\"", async () => { const client = new AzureServiceClient(new TokenCredentials("my-fake-token")); const request = new WebResource("https://microsoft.com"); await client.sendRequest(request); @@ -2567,8 +2567,8 @@ describe("AzureServiceClient", () => { const telemetry = request.headers.get("user-agent")!; const parts = telemetry.split(" "); - assert(parts[0].includes("ms-rest-azure-js/")); - assert(parts[1].includes("ms-rest-js/")); + assert(parts[0].includes("core-arm/")); + assert(parts[1].includes("core-http/")); assert(parts[2].includes("Node/")); assert(parts[3].includes("OS/")); }); diff --git a/sdk/core/core-arm/test/cloudErrorTests.ts b/sdk/core/core-arm/test/cloudErrorTests.ts index 1bf6f580603a..0d39c52cf92c 100644 --- a/sdk/core/core-arm/test/cloudErrorTests.ts +++ b/sdk/core/core-arm/test/cloudErrorTests.ts @@ -1,4 +1,4 @@ -import { Serializer } from "@azure/ms-rest-js"; +import { Serializer } from "@azure/core-http"; import { CloudErrorMapper, CloudError } from "../lib/cloudError"; import { expect } from "chai"; diff --git a/sdk/core/core-arm/test/credentials/cognitiveServicesCredentialsTests.ts b/sdk/core/core-arm/test/credentials/cognitiveServicesCredentialsTests.ts index 24b1f02ec396..1c4c868a8abc 100644 --- a/sdk/core/core-arm/test/credentials/cognitiveServicesCredentialsTests.ts +++ b/sdk/core/core-arm/test/credentials/cognitiveServicesCredentialsTests.ts @@ -2,7 +2,7 @@ // Licensed under the MIT License. See License.txt in the project root for license information. import assert from "assert"; -import { WebResource } from "@azure/ms-rest-js"; +import { WebResource } from "@azure/core-http"; import { CognitiveServicesCredentials } from "../../lib/credentials/cognitiveServicesCredentials"; import * as msAssert from "../msAssert"; @@ -40,4 +40,4 @@ describe("CognitiveServicesCredentials", () => { }); }); }); -}); \ No newline at end of file +}); diff --git a/sdk/core/core-arm/test/lroPollStrategyTests.ts b/sdk/core/core-arm/test/lroPollStrategyTests.ts index 6d3ada376942..331037e57ee6 100644 --- a/sdk/core/core-arm/test/lroPollStrategyTests.ts +++ b/sdk/core/core-arm/test/lroPollStrategyTests.ts @@ -2,7 +2,7 @@ // Licensed under the MIT License. See License.txt in the project root for license information. import assert from "assert"; -import { HttpHeaders, HttpOperationResponse, TokenCredentials, WebResource } from "@azure/ms-rest-js"; +import { HttpHeaders, HttpOperationResponse, TokenCredentials, WebResource } from "@azure/core-http"; import { AzureServiceClient } from "../lib/azureServiceClient"; import { getDelayInSeconds, isFinished } from "../lib/lroPollStrategy"; @@ -113,4 +113,4 @@ describe("LROPollStrategy", function () { assert(isFinished("Canceled")); }); }); -}); \ No newline at end of file +}); diff --git a/sdk/core/core-http/lib/policies/userAgentPolicy.ts b/sdk/core/core-http/lib/policies/userAgentPolicy.ts index 3b23e66ce693..c1be3524a980 100644 --- a/sdk/core/core-http/lib/policies/userAgentPolicy.ts +++ b/sdk/core/core-http/lib/policies/userAgentPolicy.ts @@ -12,8 +12,8 @@ export type TelemetryInfo = { key?: string; value?: string }; function getRuntimeInfo(): TelemetryInfo[] { const msRestRuntime = { - key: "ms-rest-js", - value: Constants.msRestVersion + key: "core-http", + value: Constants.coreHttpVersion }; return [msRestRuntime]; diff --git a/sdk/core/core-http/lib/util/constants.ts b/sdk/core/core-http/lib/util/constants.ts index db2927cf26ba..8a141223fa55 100644 --- a/sdk/core/core-http/lib/util/constants.ts +++ b/sdk/core/core-http/lib/util/constants.ts @@ -3,11 +3,11 @@ export const Constants = { /** - * The ms-rest version + * The core-http version * @const * @type {string} */ - msRestVersion: "1.8.10", + coreHttpVersion: "1.0.0-preview.1", /** * Specifies HTTP. diff --git a/sdk/core/core-http/test/msRestUserAgentPolicyTests.ts b/sdk/core/core-http/test/msRestUserAgentPolicyTests.ts index 094991780839..b2be92135809 100644 --- a/sdk/core/core-http/test/msRestUserAgentPolicyTests.ts +++ b/sdk/core/core-http/test/msRestUserAgentPolicyTests.ts @@ -78,7 +78,7 @@ describe("MsRestUserAgentPolicy", () => { it("should contain runtime information", async () => { const userAgent = await getUserAgent(); - userAgent.should.match(/ms-rest-js\/[\d\.]+ .+/); + userAgent.should.match(/core-http\/[\d\w\.-]+ .+/); }); it("should have operating system information at the third place", async () => { @@ -149,7 +149,7 @@ describe("MsRestUserAgentPolicy", () => { it("should contain runtime information", async () => { const userAgent = await getUserAgent(); - userAgent.should.match(/ms-rest-js\/[\d\.]+ .+/); + userAgent.should.match(/core-http\/[\d\w\.-]+ .+/); }); it("should have operating system information at the second place", async () => { diff --git a/sdk/core/core-http/test/serviceClientTests.ts b/sdk/core/core-http/test/serviceClientTests.ts index 926f4cef5959..81df46fe2ad4 100644 --- a/sdk/core/core-http/test/serviceClientTests.ts +++ b/sdk/core/core-http/test/serviceClientTests.ts @@ -332,7 +332,7 @@ describe("ServiceClient", function () { assert.strictEqual(response._response.status, 200); const userAgentHeaderValue: string | undefined = response._response.request.headers.get(isNode ? "user-agent" : "x-ms-command-name"); assert(userAgentHeaderValue); - assert(userAgentHeaderValue!.startsWith("ms-rest-js/")); + assert(userAgentHeaderValue!.startsWith("core-http/")); assert(userAgentHeaderValue!.endsWith("/blah blah")); }); From 642d11d4fc3296e63ab7a72f64b131669093c960 Mon Sep 17 00:00:00 2001 From: Brian Terlson Date: Tue, 9 Jul 2019 14:15:18 -0700 Subject: [PATCH 253/289] Update readme.md with global template (#4211) --- README.md | 79 +++++++++++++++++++++---------------------------------- 1 file changed, 30 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index 82ea125bf28a..f1957e855832 100644 --- a/README.md +++ b/README.md @@ -1,70 +1,51 @@ -# Azure SDK for Javascript +# Azure SDK for JavaScript + | Component | Build Status | | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Management Libraries | [![Build Status](https://dev.azure.com/azure-sdk/public/_apis/build/status/138?branchName=master)](https://dev.azure.com/azure-sdk/public/_build/latest?definitionId=138&branchName=master) | | Client Libraries | [![Build Status](https://dev.azure.com/azure-sdk/public/_apis/build/status/45?branchName=master)](https://dev.azure.com/azure-sdk/public/_build/latest?definitionId=45&branchName=master) | -This project provides an isomorphic Javascript package with TypeScript definitions that makes it easy to consume and manage -Microsoft Azure Services. -It supports SDKs for: - -- ARM services (control plane) (packages with the naming convention of `@azure/arm-`) -- data plane of some Azure services (packages with the naming convention of `@azure/`). - -## Documentation - -Documentation of the supported SDKs can be found here: - -- https://docs.microsoft.com/en-us/javascript/azure - This website primarily provides SDK documentation for - - - ARM based services (`@azure/arm-`) - - data plane SDKs like `@azure/batch`, `@azure/graph`, etc. +This repository contains official JavaScript libraries and TypeScript definitions for Azure services. For documentation go to [Azure SDK for JavaScript documentation](https://aka.ms/js-docs). -## Authentication +You can find a complete list of these libraries in [packages.md](https://github.com/Azure/azure-sdk-for-js/blob/master/packages.md). -- For Node.js-based authentication, look at [@azure/ms-rest-nodeauth](https://npmjs.com/package/@azure/ms-rest-nodeauth). -- For browser-based authentication, look at [@azure/ms-rest-browserauth](https://npmjs.com/package/@azure/ms-rest-browserauth). - - The browser authentication storage is a little more complicated, so we encourage you to [read about how it works](https://github.com/Azure/ms-rest-browserauth/blob/master/README.md) before putting it in your application. +## Getting started -## Need Help? +For your convenience, each service has a separate set of libraries that you can choose to use instead of one, large Azure package. To get started with a specific library, see the **README.md** file located in the library's project folder. You can find service libraries in the `/sdk` directory. -- [Read the docs](https://docs.microsoft.com/en-us/javascript/azure/?view=azure-node-latest) -- [Open an issue in GitHub](https://github.com/Azure/azure-sdk-for-js/issues) -- [Microsoft Azure Forums on MSDN and Stack Overflow](http://go.microsoft.com/fwlink/?LinkId=234489) +Each service might have a number of libraries available from each of the following categories: +* [Client - July 2019 Preview](#Client-July-2019-Preview) +* [Client - Stable](#Client-Stable) +* [Management](#Management) -## License -This project is licensed under MIT. +### Client: July 2019 Preview +New wave of packages that we are currently releasing in **Preview** and are released under the `npm` release named `next`. These libraries allow you to use and consume existing resources and interact with them. These libraries share a number of core functionalities such as retries, logging, transport protocols, authentication protocols, etc. Learn more about these libraries by reading [the guidelines](https://azuresdkspecs.z5.web.core.windows.net/TypeScriptSpec.html) that they follow. -- "MIT" license is usually used for the client libraries generated using [Autorest.TypeScript](https://github.com/azure/autorest.typescript) that are targeting ARM (V2 version of Azure REST API). The license can be found in "LICENSE.MIT.txt" file in this repository. +The libraries released in July preview: +- [@azure/storage-blob@next](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/storage/storage-blob) +- [@azure/storage-queue@next](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/storage/storage-queue) +- [@azure/storage-file@next](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/storage/storage-file) +- [@azure/kevault-keys@next](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/keyvault/keyvault-keys) +- [@azure/kevault-secrets@next](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/keyvault/keyvault-secrets) +- [@azure/event-hubs@next](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/eventhub/event-hubs) -## Contribute +>NOTE: If you need to ensure your code is ready for production use one of the stable libraries. -You found something you'd like to change? Great! Please submit a pull request and we'll do our best to work with you to get your code included into the project. -1. Commit your changes (`git commit -am 'Add some feature'`) -2. Push to the branch (`git push origin my-new-feature`) -3. Create new Pull Request +### Client: Stable +Last stable versions of packages that have been provided for usage with Azure and are production-ready. These libraries provide you with similar functionalities to the Preview ones as they allow you to use and consume existing resources and interact with them, for example: upload a blob. -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +### Management +Libraries which enable you to provision specific resources. They are responsible for directly mirroring and consuming Azure service's REST endpoints. You can recognize these libraries by `mgmt` or `arm` in their package names. -For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. +## Need help? +* For detailed documentation visit our [Azure SDK for JavaScript documentation](https://aka.ms/js-docs) +* File an issue via [Github Issues](https://github.com/Azure/azure-sdk-for-js/issues) +* Check [previous questions](https://stackoverflow.com/questions/tagged/azure-sdk-js) or ask new ones on StackOverflow using `azure-sdk-js` tag. -If you would like to become an active contributor to this project please follow the instructions provided in [Microsoft Azure Projects Contribution Guidelines](http://azure.github.io/guidelines/). - -If you encounter any bugs with the library please file an issue in the [Issues](https://github.com/Azure/azure-sdk-for-js/issues) section of the project. - -For additional information about contributing to this project, as well as a getting started guide for contributors, see the [contributing guidelines](CONTRIBUTING.md). +## Contributing +For details on contributing to this repository, see the [contributing guide](https://github.com/Azure/azure-sdk-for-js/blob/master/CONTRIBUTING.md). ![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2FREADME.png) - -## Client Library Tested Operating Systems and Node Versions - -Currently, the tests for client libraries in this repository are running against: - -| | Linux (Ubuntu 16.04) | MacOS 10.13 | Windows Server 2016 | -| ----------- | -------------------- | ----------- | ------------------- | -| **Node 8** | x | x | x | -| **Node 10** | x | x | x | -| **Node 12** | x | x | x | From 97ae334b6fe1a13332ef2ffabef15574825d5b5f Mon Sep 17 00:00:00 2001 From: ramya0820 <45977823+ramya0820@users.noreply.github.com> Date: Tue, 9 Jul 2019 15:55:01 -0700 Subject: [PATCH 254/289] [Service Bus] Version update 1.0.3 (#4234) --- sdk/servicebus/service-bus/changelog.md | 4 ++++ sdk/servicebus/service-bus/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/sdk/servicebus/service-bus/changelog.md b/sdk/servicebus/service-bus/changelog.md index 4dd91567ec0e..f545ed0deebd 100644 --- a/sdk/servicebus/service-bus/changelog.md +++ b/sdk/servicebus/service-bus/changelog.md @@ -1,3 +1,7 @@ +# 2019-07-09 1.0.3 + +- Update `amqp-common` dependency version to 1.0.0-preview.6. This includes fix for the [bug 3971](https://github.com/Azure/azure-sdk-for-js/issues/3971) where the token audience in the credential created during [MSI based login](https://www.npmjs.com/package/@azure/ms-rest-nodeauth/v/2.0.2#msi-managed-service-identity-based-login-from-a-virtual-machine-created-in-azure) was being ignored. [PR 4146](https://github.com/Azure/azure-sdk-for-js/pull/4146) + # 2019-05-21 1.0.2 - Added missing package.json file to the npm package to fix issues bundling with webpack and other bundlers. diff --git a/sdk/servicebus/service-bus/package.json b/sdk/servicebus/service-bus/package.json index d41de054814b..af6b06ac6be5 100644 --- a/sdk/servicebus/service-bus/package.json +++ b/sdk/servicebus/service-bus/package.json @@ -2,7 +2,7 @@ "name": "@azure/service-bus", "sdk-type": "client", "author": "Microsoft Corporation", - "version": "1.0.2", + "version": "1.0.3", "license": "MIT", "description": "Azure Service Bus SDK for Node.js", "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/servicebus/service-bus", From 261ef2ecb1451d526dc531dce65760c8d66aac04 Mon Sep 17 00:00:00 2001 From: David Wilson Date: Tue, 9 Jul 2019 17:33:04 -0700 Subject: [PATCH 255/289] Add TokenCredential type to AzureServiceClient constructor (#4235) --- sdk/core/core-arm/lib/azureServiceClient.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sdk/core/core-arm/lib/azureServiceClient.ts b/sdk/core/core-arm/lib/azureServiceClient.ts index 0fec71bb43f4..77c80cea3dbc 100644 --- a/sdk/core/core-arm/lib/azureServiceClient.ts +++ b/sdk/core/core-arm/lib/azureServiceClient.ts @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -import { HttpOperationResponse, OperationArguments, OperationSpec, RequestOptionsBase, RequestPrepareOptions, ServiceClient, ServiceClientCredentials, ServiceClientOptions, WebResource, getDefaultUserAgentValue as getDefaultUserAgentValueFromMsRest } from "@azure/core-http"; +import { HttpOperationResponse, OperationArguments, OperationSpec, RequestOptionsBase, RequestPrepareOptions, ServiceClient, ServiceClientCredentials, ServiceClientOptions, TokenCredential, WebResource, getDefaultUserAgentValue as getDefaultUserAgentValueFromMsRest } from "@azure/core-http"; import { createLROPollerFromInitialResponse, createLROPollerFromPollState, LROPoller } from "./lroPoller"; import { LROPollState } from "./lroPollStrategy"; import * as Constants from "./util/constants"; @@ -27,8 +27,8 @@ export interface AzureServiceClientOptions extends ServiceClientOptions { * Initializes a new instance of the AzureServiceClient class. * @constructor * - * @param {msRest.ServiceClientCredentilas} credentials - ApplicationTokenCredentials or - * UserTokenCredentials object used for authentication. + * @param {ServiceClientCredentials | TokenCredential} credentials - ApplicationTokenCredentials, + * UserTokenCredentials, or TokenCredential object used for authentication. * @param {AzureServiceClientOptions} options - The parameter options used by AzureServiceClient */ export class AzureServiceClient extends ServiceClient { @@ -38,7 +38,7 @@ export class AzureServiceClient extends ServiceClient { */ public longRunningOperationRetryTimeout?: number; - constructor(credentials: ServiceClientCredentials, options?: AzureServiceClientOptions) { + constructor(credentials: ServiceClientCredentials | TokenCredential, options?: AzureServiceClientOptions) { super(credentials, options = updateOptionsWithDefaultValues(options)); // For convenience, if the credentials have an associated AzureEnvironment, @@ -72,9 +72,9 @@ export class AzureServiceClient extends ServiceClient { /** * Provides a mechanism to make a request that will poll and provide the final result. - * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object + * @param {RequestPrepareOptions | WebResource} request - The request object * @param {AzureRequestOptionsBase} [options] Additional options to be sent while making the request - * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody. + * @returns {Promise} The HttpOperationResponse containing the final polling request, response and the responseBody. */ sendLongRunningRequest(request: RequestPrepareOptions | WebResource, options?: RequestOptionsBase): Promise { return this.beginLongRunningRequest(request, options) @@ -86,7 +86,7 @@ export class AzureServiceClient extends ServiceClient { * Send the initial request of a LRO (long running operation) and get back an * HttpLongRunningOperationResponse that provides methods for polling the LRO and checking if the * LRO is finished. - * @param {msRest.RequestPrepareOptions|msRest.WebResource} request - The request object + * @param {RequestPrepareOptions | WebResource} request - The request object * @param {AzureRequestOptionsBase} [options] Additional options to be sent while making the request * @returns {Promise} The HttpLongRunningOperationResponse * that provides methods for interacting with the LRO. From 30c3daa1a5f3c80c5de052fbb53e9e52f3a68119 Mon Sep 17 00:00:00 2001 From: ramya0820 <45977823+ramya0820@users.noreply.github.com> Date: Tue, 9 Jul 2019 18:33:56 -0700 Subject: [PATCH 256/289] [Service Bus] Improve message logging (#4236) --- .../service-bus/test/sessionsTests.spec.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sdk/servicebus/service-bus/test/sessionsTests.spec.ts b/sdk/servicebus/service-bus/test/sessionsTests.spec.ts index b1046f6381ce..9c82ccd41bef 100644 --- a/sdk/servicebus/service-bus/test/sessionsTests.spec.ts +++ b/sdk/servicebus/service-bus/test/sessionsTests.spec.ts @@ -87,12 +87,12 @@ describe("SessionReceiver with invalid sessionId", function(): void { sessionId: "non" + TestMessage.sessionId }); let msgs = await receiver.receiveMessages(1, 10); - should.equal(msgs.length, 0, "Unexpected number of messages"); + should.equal(msgs.length, 0, "Unexpected number of messages received"); await receiver.close(); receiver = receiverClient.createReceiver(ReceiveMode.peekLock, { sessionId: undefined }); msgs = await receiver.receiveMessages(1); - should.equal(msgs.length, 1, "Unexpected number of messages"); + should.equal(msgs.length, 1, "Unexpected number of messages received"); should.equal(Array.isArray(msgs), true, "`ReceivedMessages` is not an array"); should.equal(msgs[0].body, testMessage.body, "MessageBody is different than expected"); should.equal(msgs[0].messageId, testMessage.messageId, "MessageId is different than expected"); @@ -433,7 +433,7 @@ describe("Session State", function(): void { }); let msgs = await receiver.receiveMessages(2); should.equal(Array.isArray(msgs), true, "`ReceivedMessages` is not an array"); - should.equal(msgs.length, 1, "Unexpected number of messages"); + should.equal(msgs.length, 1, "Unexpected number of messages received"); should.equal(msgs[0].body, testMessage.body, "MessageBody is different than expected"); should.equal(msgs[0].messageId, testMessage.messageId, "MessageId is different than expected"); should.equal(msgs[0].sessionId, testMessage.sessionId, "SessionId is different than expected"); @@ -451,7 +451,7 @@ describe("Session State", function(): void { ); msgs = await receiver.receiveMessages(2); should.equal(Array.isArray(msgs), true, "`ReceivedMessages` is not an array"); - should.equal(msgs.length, 1, "Unexpected number of messages"); + should.equal(msgs.length, 1, "Unexpected number of messages received"); should.equal(msgs[0].body, testMessage.body, "MessageBody is different than expected"); should.equal(msgs[0].messageId, testMessage.messageId, "MessageId is different than expected"); should.equal(msgs[0].sessionId, testMessage.sessionId, "SessionId is different than expected"); @@ -516,7 +516,7 @@ describe("Peek session", function(): void { // At this point AMQP receiver link has not been established. // peek() will not establish the link if sessionId was provided const peekedMsgs = await receiver.peek(1); - should.equal(peekedMsgs.length, 1, "Unexpected number of messages"); + should.equal(peekedMsgs.length, 1, "Unexpected number of messages peeked"); should.equal(peekedMsgs[0].body, testMessage.body, "MessageBody is different than expected"); should.equal( peekedMsgs[0].messageId, @@ -530,7 +530,7 @@ describe("Peek session", function(): void { ); const msgs = await receiver.receiveMessages(1); - should.equal(msgs.length, 1, "Unexpected number of messages"); + should.equal(msgs.length, 1, "Unexpected number of messages received"); should.equal(msgs[0].body, testMessage.body, "MessageBody is different than expected"); should.equal(msgs[0].messageId, testMessage.messageId, "MessageId is different than expected"); should.equal(msgs[0].sessionId, testMessage.sessionId, "SessionId is different than expected"); From 9471b5c2a00f66514b00aa6e6e560e1b750a2411 Mon Sep 17 00:00:00 2001 From: Brandon Siegel Date: Wed, 10 Jul 2019 11:33:30 -0700 Subject: [PATCH 257/289] Tag scheduled builds --- .azure-pipelines/client.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.azure-pipelines/client.yml b/.azure-pipelines/client.yml index ebd33aafe4b9..58c399f5cf2d 100644 --- a/.azure-pipelines/client.yml +++ b/.azure-pipelines/client.yml @@ -18,6 +18,11 @@ jobs: vmImage: 'ubuntu-16.04' steps: + - script: | + echo "##vso[build.addbuildtag]Scheduled" + displayName: 'Tag scheduled builds' + condition: and(eq(variables['Build.SourceBranchName'],'master'),eq(variables['Build.Reason'],'Schedule')) + - task: NodeTool@0 inputs: versionSpec: '$(NodeVersion)' From 97299d9ec2d1b10398e57475d7b035b5b417f1eb Mon Sep 17 00:00:00 2001 From: KarishmaGhiya Date: Wed, 10 Jul 2019 14:15:22 -0700 Subject: [PATCH 258/289] remove storage-datalake from rush.json (#4238) * remove storage-datalake from rush.json, commit pnpm-lock file --- common/config/rush/pnpm-lock.yaml | 594 ++++-------------------------- rush.json | 4 - 2 files changed, 76 insertions(+), 522 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 9b0814e13401..a3378d356c5e 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -6,7 +6,7 @@ dependencies: '@azure/ms-rest-azure-js': 1.3.8 '@azure/ms-rest-js': 1.8.13 '@azure/ms-rest-nodeauth': 0.9.3 - '@microsoft/api-extractor': 7.2.3 + '@microsoft/api-extractor': 7.3.0 '@rush-temp/abort-controller': 'file:projects/abort-controller.tgz' '@rush-temp/core-amqp': 'file:projects/core-amqp.tgz' '@rush-temp/core-arm': 'file:projects/core-arm.tgz' @@ -23,7 +23,6 @@ dependencies: '@rush-temp/keyvault-secrets': 'file:projects/keyvault-secrets.tgz' '@rush-temp/service-bus': 'file:projects/service-bus.tgz' '@rush-temp/storage-blob': 'file:projects/storage-blob.tgz' - '@rush-temp/storage-datalake': 'file:projects/storage-datalake.tgz' '@rush-temp/storage-file': 'file:projects/storage-file.tgz' '@rush-temp/storage-queue': 'file:projects/storage-queue.tgz' '@rush-temp/template': 'file:projects/template.tgz' @@ -174,7 +173,6 @@ dependencies: tslint: 5.18.0 tunnel: 0.0.6 typescript: 3.5.3 - uglify: 0.1.5 uglify-js: 3.6.0 url: 0.11.0 util: 0.11.1 @@ -316,7 +314,7 @@ packages: dependencies: '@babel/types': 7.5.0 jsesc: 2.5.2 - lodash: 4.17.11 + lodash: 4.17.14 source-map: 0.5.7 trim-right: 1.0.1 dev: false @@ -375,14 +373,14 @@ packages: '@babel/types': 7.5.0 debug: 4.1.1 globals: 11.12.0 - lodash: 4.17.11 + lodash: 4.17.14 dev: false resolution: integrity: sha512-SnA9aLbyOCcnnbQEGwdfBggnc142h/rbqqsXcaATj2hZcegCl903pUD/lfpsNBlBSuWow/YDfRyJuWi2EPR5cg== /@babel/types/7.5.0: dependencies: esutils: 2.0.2 - lodash: 4.17.11 + lodash: 4.17.14 to-fast-properties: 2.0.0 dev: false resolution: @@ -395,21 +393,21 @@ packages: dev: false resolution: integrity: sha512-LYMnA1cB2W3YuCOAFruNvnQBZ64OzEnsHxzcxclBhTcUGag6NrtGnip90AVTvVzFlXDLoT7trvPEenlWflWZFQ== - /@microsoft/api-extractor/7.2.3: + /@microsoft/api-extractor/7.3.0: dependencies: '@microsoft/api-extractor-model': 7.2.0 '@microsoft/node-core-library': 3.13.0 '@microsoft/ts-command-line': 4.2.6 '@microsoft/tsdoc': 0.12.9 colors: 1.2.5 - lodash: 4.17.11 + lodash: 4.17.14 resolve: 1.8.1 source-map: 0.6.1 typescript: 3.4.5 dev: false hasBin: true resolution: - integrity: sha512-9anLuEitjdWfKAPJuTTVjkIGNa8YcIgRJCKiZ0D8KVICxRSusDSMgMw5qqBsQ3vX8JNj5TVR4MELzyY1mg0gZg== + integrity: sha512-ac4mNPQhha00vVWpjrLoU3lA5HASE4CpvUAbKUXMPHsHu1JIr1E3lZrf47YRtkIJHkoRD180lOSDd8FQIFIuYw== /@microsoft/node-core-library/3.13.0: dependencies: '@types/fs-extra': 5.0.4 @@ -453,7 +451,7 @@ packages: dependencies: '@sinonjs/commons': 1.4.0 array-from: 2.1.1 - lodash: 4.17.11 + lodash: 4.17.14 dev: false resolution: integrity: sha512-ILO/rR8LfAb60Y1Yfp9vxfYAASK43NFC2mLzpvLUbCQY/Qu8YwReboseu8aheCEkyElZF2L2T9mHcR2bgdvZyA== @@ -634,10 +632,10 @@ packages: dev: false resolution: integrity: sha512-OthuN+2FuzfZO3yONJ/QVjKmLEuRagS9TV9lEId+WHL9KhftYG+/2z+pxlr0UgVVXSpVD8woie/3fzQn8ft/Ow== - /@types/node/12.6.1: + /@types/node/12.6.2: dev: false resolution: - integrity: sha512-rp7La3m845mSESCgsJePNL/JQyhkOJA6G4vcwvVgkDAwHhGdq5GCumxmPjEk1MZf+8p5ZQAUE7tqgQRQTXN7uQ== + integrity: sha512-gojym4tX0FWeV2gsW4Xmzo5wxGjXGm550oVUII7f7G5o4BV6c7DBdiG1RRQd+y1bvqRyYtPfMK85UM95vsapqQ== /@types/node/8.10.50: dev: false resolution: @@ -1208,13 +1206,6 @@ packages: dev: false resolution: integrity: sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= - /argparse/0.1.16: - dependencies: - underscore: 1.7.0 - underscore.string: 2.4.0 - dev: false - resolution: - integrity: sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw= /argparse/1.0.10: dependencies: sprintf-js: 1.0.3 @@ -1441,27 +1432,19 @@ packages: node: '>= 0.10' resolution: integrity: sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs= - /async/0.1.22: - dev: false - resolution: - integrity: sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE= - /async/0.2.10: - dev: false - resolution: - integrity: sha1-trvgsGdLnXGXCMo43owjfLUmw9E= /async/1.5.2: dev: false resolution: integrity: sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= /async/2.6.0: dependencies: - lodash: 4.17.11 + lodash: 4.17.14 dev: false resolution: integrity: sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw== /async/2.6.2: dependencies: - lodash: 4.17.11 + lodash: 4.17.14 dev: false resolution: integrity: sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== @@ -1553,7 +1536,7 @@ packages: convert-source-map: 1.6.0 debug: 2.6.9 json5: 0.5.1 - lodash: 4.17.11 + lodash: 4.17.14 minimatch: 3.0.4 path-is-absolute: 1.0.1 private: 0.1.8 @@ -1569,7 +1552,7 @@ packages: babel-types: 6.26.0 detect-indent: 4.0.0 jsesc: 1.3.0 - lodash: 4.17.11 + lodash: 4.17.14 source-map: 0.5.7 trim-right: 1.0.1 dev: false @@ -1597,7 +1580,7 @@ packages: babel-helper-function-name: 6.24.1 babel-runtime: 6.26.0 babel-types: 6.26.0 - lodash: 4.17.11 + lodash: 4.17.14 dev: false resolution: integrity: sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= @@ -1644,7 +1627,7 @@ packages: dependencies: babel-runtime: 6.26.0 babel-types: 6.26.0 - lodash: 4.17.11 + lodash: 4.17.14 dev: false resolution: integrity: sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= @@ -1726,7 +1709,7 @@ packages: babel-template: 6.26.0 babel-traverse: 6.26.0 babel-types: 6.26.0 - lodash: 4.17.11 + lodash: 4.17.14 dev: false resolution: integrity: sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= @@ -1946,7 +1929,7 @@ packages: babel-runtime: 6.26.0 core-js: 2.6.9 home-or-tmp: 2.0.0 - lodash: 4.17.11 + lodash: 4.17.14 mkdirp: 0.5.1 source-map-support: 0.4.18 dev: false @@ -1965,7 +1948,7 @@ packages: babel-traverse: 6.26.0 babel-types: 6.26.0 babylon: 6.18.0 - lodash: 4.17.11 + lodash: 4.17.14 dev: false resolution: integrity: sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= @@ -1979,7 +1962,7 @@ packages: debug: 2.6.9 globals: 9.18.0 invariant: 2.2.4 - lodash: 4.17.11 + lodash: 4.17.14 dev: false resolution: integrity: sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= @@ -1987,7 +1970,7 @@ packages: dependencies: babel-runtime: 6.26.0 esutils: 2.0.2 - lodash: 4.17.11 + lodash: 4.17.14 to-fast-properties: 1.0.3 dev: false resolution: @@ -2197,7 +2180,7 @@ packages: integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== /browserslist/3.2.8: dependencies: - caniuse-lite: 1.0.30000981 + caniuse-lite: 1.0.30000983 electron-to-chromium: 1.3.188 dev: false hasBin: true @@ -2356,12 +2339,6 @@ packages: node: '>=4' resolution: integrity: sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= - /camelcase/1.2.1: - dev: false - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= /camelcase/2.1.1: dev: false engines: @@ -2386,10 +2363,10 @@ packages: node: '>=6' resolution: integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - /caniuse-lite/1.0.30000981: + /caniuse-lite/1.0.30000983: dev: false resolution: - integrity: sha512-JTByHj4DQgL2crHNMK6PibqAMrqqb/Vvh0JrsTJVSWG4VSUrT16EklkuRZofurlMjgA9e+zlCM4Y39F3kootMQ== + integrity: sha512-/llD1bZ6qwNkt41AsvjsmwNOoA4ZB+8iqmf5LVyeSXuBODT/hAMFNVOh84NdUzoiYiSKqo5vQ3ZzeYHSi/olDQ== /caseless/0.12.0: dev: false resolution: @@ -2552,15 +2529,6 @@ packages: node: '>=0.10.0' resolution: integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - /clean-css/1.0.12: - dependencies: - commander: 1.3.2 - dev: false - engines: - node: '>=0.6.0' - hasBin: true - resolution: - integrity: sha1-5uDZd4YEZjY9kRChdCPSfNaHQwA= /cli-cursor/2.1.0: dependencies: restore-cursor: 2.0.0 @@ -2637,14 +2605,6 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - /coffee-script/1.3.3: - deprecated: CoffeeScript on NPM has moved to "coffeescript" (no hyphen) - dev: false - engines: - node: '>=0.4.0' - hasBin: true - resolution: - integrity: sha1-FQ1rTLUiiUNp7+1qIQHCC8f0pPQ= /collection-map/1.0.0: dependencies: arr-map: 2.0.2 @@ -2679,12 +2639,6 @@ packages: hasBin: true resolution: integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - /colors/0.6.2: - dev: false - engines: - node: '>=0.1.90' - resolution: - integrity: sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w= /colors/1.2.5: dev: false engines: @@ -2705,14 +2659,6 @@ packages: node: '>= 0.8' resolution: integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - /commander/1.3.2: - dependencies: - keypress: 0.1.0 - dev: false - engines: - node: '>= 0.6.x' - resolution: - integrity: sha1-io8w7GcKb91kr1LxkUuQfXnq1bU= /commander/2.11.0: dev: false resolution: @@ -3008,10 +2954,6 @@ packages: hasBin: true resolution: integrity: sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk= - /dateformat/1.0.2-1.2.3: - dev: false - resolution: - integrity: sha1-sCIMAt6YYXQztyhRz0fePfLNvuk= /death/1.1.0: dev: false resolution: @@ -3522,7 +3464,7 @@ packages: integrity: sha512-sZwhSTHVVz78+kYD3t5pCWSYEdVSBR0PXnwjDRsUs8ytIrK8PLXw+6FKp8r3Z7rx4ZszdetWlXYKOHoUrrwPlA== /eslint-detailed-reporter/0.8.0: dependencies: - lodash: 4.17.11 + lodash: 4.17.14 dev: false peerDependencies: eslint: 3.0.0 - 5.9999.9999 @@ -3531,7 +3473,7 @@ packages: /eslint-detailed-reporter/0.8.0_eslint@5.16.0: dependencies: eslint: 5.16.0 - lodash: 4.17.11 + lodash: 4.17.14 dev: false peerDependencies: eslint: 3.0.0 - 5.9999.9999 @@ -3613,7 +3555,7 @@ packages: js-yaml: 3.13.1 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.3.0 - lodash: 4.17.11 + lodash: 4.17.14 minimatch: 3.0.4 mkdirp: 0.5.1 natural-compare: 1.4.0 @@ -3642,13 +3584,6 @@ packages: node: '>=6.0.0' resolution: integrity: sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== - /esprima/1.0.4: - dev: false - engines: - node: '>=0.4.0' - hasBin: true - resolution: - integrity: sha1-n1V+CPw7TSbs6d00+Pv0drYlha0= /esprima/2.7.3: dev: false engines: @@ -3717,10 +3652,6 @@ packages: node: '>= 0.6' resolution: integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - /eventemitter2/0.4.14: - dev: false - resolution: - integrity: sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas= /eventemitter3/3.1.2: dev: false resolution: @@ -3766,12 +3697,6 @@ packages: node: '>=6' resolution: integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - /exit/0.1.2: - dev: false - engines: - node: '>= 0.8.0' - resolution: - integrity: sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= /expand-brackets/2.1.4: dependencies: debug: 2.6.9 @@ -4022,15 +3947,6 @@ packages: node: '>=6' resolution: integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - /findup-sync/0.1.3: - dependencies: - glob: 3.2.11 - lodash: 2.4.2 - dev: false - engines: - node: '>= 0.6.0' - resolution: - integrity: sha1-fz56l7gjksZTvwZYm9hRkOk8NoM= /findup-sync/2.0.0: dependencies: detect-file: 1.0.0 @@ -4296,12 +4212,6 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - /getobject/0.1.0: - dev: false - engines: - node: '>= 0.8.0' - resolution: - integrity: sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw= /getpass/0.1.7: dependencies: assert-plus: 1.0.0 @@ -4345,21 +4255,6 @@ packages: node: '>= 0.10' resolution: integrity: sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg== - /glob/3.1.21: - dependencies: - graceful-fs: 1.2.3 - inherits: 1.0.2 - minimatch: 0.2.14 - dev: false - resolution: - integrity: sha1-0p4KBV3qUTj00H7UDomC6DwgZs0= - /glob/3.2.11: - dependencies: - inherits: 2.0.4 - minimatch: 0.3.0 - dev: false - resolution: - integrity: sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0= /glob/5.0.15: dependencies: inflight: 1.0.6 @@ -4459,13 +4354,6 @@ packages: node: '>= 0.10' resolution: integrity: sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== - /graceful-fs/1.2.3: - deprecated: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js - dev: false - engines: - node: '>=0.4.0' - resolution: - integrity: sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q= /graceful-fs/4.2.0: dev: false resolution: @@ -4476,142 +4364,6 @@ packages: node: '>=4.x' resolution: integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== - /grunt-contrib-clean/0.5.0_grunt@0.4.5: - dependencies: - grunt: 0.4.5 - rimraf: 2.2.8 - dev: false - engines: - node: '>= 0.8.0' - peerDependencies: - grunt: ~0.4.0 - resolution: - integrity: sha1-9T397ghJsce0Dp67umn0jExgecU= - /grunt-contrib-concat/0.3.0_grunt@0.4.5: - dependencies: - grunt: 0.4.5 - dev: false - engines: - node: '>= 0.8.0' - peerDependencies: - grunt: ~0.4.0 - resolution: - integrity: sha1-SPoNQzbSm2U62CJaa9b4VrRIPjI= - /grunt-contrib-copy/0.5.0_grunt@0.4.5: - dependencies: - grunt: 0.4.5 - dev: false - engines: - node: '>= 0.8.0' - peerDependencies: - grunt: ~0.4.0 - resolution: - integrity: sha1-QQB1rEWlhWuhkbHMclclRQ1KAhU= - /grunt-contrib-cssmin/0.6.1_grunt@0.4.5: - dependencies: - clean-css: 1.0.12 - grunt: 0.4.5 - grunt-lib-contrib: 0.6.1 - dev: false - engines: - node: '>= 0.8.0' - peerDependencies: - grunt: ~0.4.0 - resolution: - integrity: sha1-U05jK/4ZUhshw2RncVe4sR4XPvw= - /grunt-contrib-uglify/0.2.4_grunt@0.4.5: - dependencies: - grunt: 0.4.5 - grunt-lib-contrib: 0.6.1 - uglify-js: 2.4.24 - dev: false - engines: - node: '>= 0.8.0' - peerDependencies: - grunt: ~0.4.0 - resolution: - integrity: sha1-URE/KKckMlIeNeY/fxiiUf2i/Uk= - /grunt-css-url-replace/0.2.7_grunt@0.4.5: - dependencies: - grunt: 0.4.5 - dev: false - engines: - node: '>= 0.8.0' - peerDependencies: - grunt: '>=0.4.0' - resolution: - integrity: sha1-lcZb/x78FTvxfHlf0+EiLH+kp0U= - /grunt-legacy-log-utils/0.1.1: - dependencies: - colors: 0.6.2 - lodash: 2.4.2 - underscore.string: 2.3.3 - dev: false - engines: - node: '>= 0.8.0' - resolution: - integrity: sha1-wHBrndkGThFvNvI/5OawSGcsD34= - /grunt-legacy-log/0.1.3: - dependencies: - colors: 0.6.2 - grunt-legacy-log-utils: 0.1.1 - hooker: 0.2.3 - lodash: 2.4.2 - underscore.string: 2.3.3 - dev: false - engines: - node: '>= 0.8.0' - resolution: - integrity: sha1-7ClCboAwIa9ZAp+H0vnNczWgVTE= - /grunt-legacy-util/0.2.0: - dependencies: - async: 0.1.22 - exit: 0.1.2 - getobject: 0.1.0 - hooker: 0.2.3 - lodash: 0.9.2 - underscore.string: 2.2.1 - which: 1.0.9 - dev: false - engines: - node: '>= 0.8.0' - resolution: - integrity: sha1-kzJIhNv343qf98Am3/RR2UqeVUs= - /grunt-lib-contrib/0.6.1: - dependencies: - zlib-browserify: 0.0.1 - dev: false - engines: - node: '>= 0.8.0' - resolution: - integrity: sha1-P1att9oG6BR5XuJBWw6+X7iQPrs= - /grunt/0.4.5: - dependencies: - async: 0.1.22 - coffee-script: 1.3.3 - colors: 0.6.2 - dateformat: 1.0.2-1.2.3 - eventemitter2: 0.4.14 - exit: 0.1.2 - findup-sync: 0.1.3 - getobject: 0.1.0 - glob: 3.1.21 - grunt-legacy-log: 0.1.3 - grunt-legacy-util: 0.2.0 - hooker: 0.2.3 - iconv-lite: 0.2.11 - js-yaml: 2.0.5 - lodash: 0.9.2 - minimatch: 0.2.14 - nopt: 1.0.10 - rimraf: 2.2.8 - underscore.string: 2.2.1 - which: 1.0.9 - dev: false - engines: - node: '>= 0.8.0' - resolution: - integrity: sha1-VpN81RlDJK3/bSB2MYMqnWuk5/A= /gulp-cli/2.2.0: dependencies: ansi-colors: 1.1.0 @@ -4839,10 +4591,6 @@ packages: node: '>=0.10.0' resolution: integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - /hooker/0.2.3: - dev: false - resolution: - integrity: sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk= /hosted-git-info/2.7.1: dev: false resolution: @@ -4905,12 +4653,6 @@ packages: node: '>= 4.5.0' resolution: integrity: sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg== - /iconv-lite/0.2.11: - dev: false - engines: - node: '>=0.4.0' - resolution: - integrity: sha1-HOYKOleGSiktEyH/RgnKS7llrcg= /iconv-lite/0.4.24: dependencies: safer-buffer: 2.1.2 @@ -4993,10 +4735,6 @@ packages: dev: false resolution: integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - /inherits/1.0.2: - dev: false - resolution: - integrity: sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js= /inherits/2.0.1: dev: false resolution: @@ -5021,7 +4759,7 @@ packages: cli-width: 2.2.0 external-editor: 3.1.0 figures: 2.0.0 - lodash: 4.17.11 + lodash: 4.17.14 mute-stream: 0.0.7 run-async: 2.3.0 rxjs: 6.5.2 @@ -5491,16 +5229,6 @@ packages: dev: false resolution: integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - /js-yaml/2.0.5: - dependencies: - argparse: 0.1.16 - esprima: 1.0.4 - dev: false - engines: - node: '>= 0.6.0' - hasBin: true - resolution: - integrity: sha1-olrmUJmZ6X3yeMZxnaEb0Gh3Q6g= /js-yaml/3.13.1: dependencies: argparse: 1.0.10 @@ -5659,7 +5387,7 @@ packages: dependencies: dateformat: 1.0.12 istanbul: 0.4.5 - lodash: 4.17.11 + lodash: 4.17.14 minimatch: 3.0.4 source-map: 0.5.7 dev: false @@ -5696,7 +5424,7 @@ packages: integrity: sha512-LbZ5/XlIXLeQ3cqnCbYLn+rOVhuMIK9aZwlP6eOLGzWdo1UVp7t6CN3DP4SafiRLjexKwHeKHDm0c38Mtd3VxA== /karma-ie-launcher/1.0.0: dependencies: - lodash: 4.17.11 + lodash: 4.17.14 dev: false peerDependencies: karma: '>=0.9' @@ -5705,7 +5433,7 @@ packages: /karma-ie-launcher/1.0.0_karma@4.1.0: dependencies: karma: 4.1.0 - lodash: 4.17.11 + lodash: 4.17.14 dev: false peerDependencies: karma: '>=0.9' @@ -5833,7 +5561,7 @@ packages: acorn-walk: 6.2.0 babel-core: 6.26.3 babel-preset-env: 1.7.0 - log4js: 4.4.0 + log4js: 4.5.0 magic-string: 0.25.3 dev: false resolution: @@ -5885,8 +5613,8 @@ packages: graceful-fs: 4.2.0 http-proxy: 1.17.0 isbinaryfile: 3.0.3 - lodash: 4.17.11 - log4js: 4.4.0 + lodash: 4.17.14 + log4js: 4.5.0 mime: 2.4.4 minimatch: 3.0.4 optimist: 0.6.1 @@ -5904,10 +5632,6 @@ packages: hasBin: true resolution: integrity: sha512-xckiDqyNi512U4dXGOOSyLKPwek6X/vUizSy2f3geYevbLj+UIdvNwbn7IwfUIL2g1GXEPWt/87qFD1fBbl/Uw== - /keypress/0.1.0: - dev: false - resolution: - integrity: sha1-SjGI1CkbZrT2XtuZ+AaqmuKTWSo= /kind-of/1.1.0: dev: false engines: @@ -6091,24 +5815,10 @@ packages: dev: false resolution: integrity: sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= - /lodash/0.9.2: - dev: false - engines: - '0': node - '1': rhino - resolution: - integrity: sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw= - /lodash/2.4.2: - dev: false - engines: - '0': node - '1': rhino - resolution: - integrity: sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4= - /lodash/4.17.11: + /lodash/4.17.14: dev: false resolution: - integrity: sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + integrity: sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== /log-symbols/2.2.0: dependencies: chalk: 2.4.2 @@ -6129,7 +5839,7 @@ packages: node: '>=6.0' resolution: integrity: sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ== - /log4js/4.4.0: + /log4js/4.5.0: dependencies: date-format: 2.0.0 debug: 4.1.1 @@ -6140,7 +5850,7 @@ packages: engines: node: '>=6.0' resolution: - integrity: sha512-xwRvmxFsq8Hb7YeS+XKfvCrsH114bXex6mIwJ2+KmYVi23pB3+hlzyGq1JPycSFTJWNLhD/7PCtM0RfPy6/2yg== + integrity: sha512-mYtGcbmu//OprhT7prJM2erY9nPXM2TMLM/mBLPo4FojntEZz/V34d06SVBXeQ6EsryMkLJhHuXCWCQNoPW8hQ== /loglevel/1.6.3: dev: false engines: @@ -6171,10 +5881,6 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= - /lru-cache/2.7.3: - dev: false - resolution: - integrity: sha1-bUUk6LlV+V1PW1iFHOId1y+06VI= /lru-cache/4.1.5: dependencies: pseudomap: 1.0.2 @@ -6508,22 +6214,6 @@ packages: dev: false resolution: integrity: sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - /minimatch/0.2.14: - dependencies: - lru-cache: 2.7.3 - sigmund: 1.0.1 - deprecated: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue - dev: false - resolution: - integrity: sha1-x054BXT2PG+aCQ6Q775u9TpqdWo= - /minimatch/0.3.0: - dependencies: - lru-cache: 2.7.3 - sigmund: 1.0.1 - deprecated: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue - dev: false - resolution: - integrity: sha1-J12O2qxPG7MyZHIInnlJyDlGmd0= /minimatch/3.0.4: dependencies: brace-expansion: 1.1.11 @@ -6635,7 +6325,7 @@ packages: /mocha-multi-reporters/1.1.7: dependencies: debug: 3.2.6 - lodash: 4.17.11 + lodash: 4.17.14 dev: false resolution: integrity: sha1-zH8/TTL0eFIJQdhSq7ZNmYhYfYI= @@ -6838,7 +6528,7 @@ packages: debug: 4.1.1 deep-equal: 1.0.1 json-stringify-safe: 5.0.1 - lodash: 4.17.11 + lodash: 4.17.14 mkdirp: 0.5.1 propagate: 1.0.0 qs: 6.7.0 @@ -6876,13 +6566,6 @@ packages: dev: false resolution: integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - /nopt/1.0.10: - dependencies: - abbrev: 1.1.1 - dev: false - hasBin: true - resolution: - integrity: sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= /nopt/3.0.6: dependencies: abbrev: 1.1.1 @@ -8168,11 +7851,6 @@ packages: dev: false resolution: integrity: sha512-TNv6rD/74h2QiXrUpFHw6fzGNuOpVOcjPRGtlKC5eIy5NLfvb2RiZGZs7lpg4al22p5pAAQjLZuPTDipReUzPA== - /rimraf/2.2.8: - dev: false - hasBin: true - resolution: - integrity: sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI= /rimraf/2.6.3: dependencies: glob: 7.1.4 @@ -8409,7 +8087,7 @@ packages: /rollup/1.16.7: dependencies: '@types/estree': 0.0.39 - '@types/node': 12.6.1 + '@types/node': 12.6.2 acorn: 6.2.0 dev: false hasBin: true @@ -8621,10 +8299,6 @@ packages: hasBin: true resolution: integrity: sha512-aS0mWtW3T2sHAenrSrip2XGv39O9dXIFUqxAEWHEOS1ePtGIBavdPJY1kE2IHl14V/4iCbUiNDPGdyYTtmhSoA== - /sigmund/1.0.1: - dev: false - resolution: - integrity: sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= /signal-exit/3.0.2: dev: false resolution: @@ -8769,14 +8443,6 @@ packages: dev: false resolution: integrity: sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - /source-map/0.1.34: - dependencies: - amdefine: 1.0.1 - dev: false - engines: - node: '>=0.8.0' - resolution: - integrity: sha1-p8/omux7FoLDsZjQrPtH19CQVms= /source-map/0.2.0: dependencies: amdefine: 1.0.1 @@ -8956,7 +8622,7 @@ packages: date-format: 2.0.0 debug: 3.2.6 fs-extra: 7.0.1 - lodash: 4.17.11 + lodash: 4.17.14 dev: false engines: node: '>=6.0' @@ -9136,7 +8802,7 @@ packages: /table/5.4.1: dependencies: ajv: 6.10.1 - lodash: 4.17.11 + lodash: 4.17.14 slice-ansi: 2.1.0 string-width: 3.1.0 dev: false @@ -9635,18 +9301,6 @@ packages: hasBin: true resolution: integrity: sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== - /uglify-js/2.4.24: - dependencies: - async: 0.2.10 - source-map: 0.1.34 - uglify-to-browserify: 1.0.2 - yargs: 3.5.4 - dev: false - engines: - node: '>=0.4.0' - hasBin: true - resolution: - integrity: sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4= /uglify-js/3.6.0: dependencies: commander: 2.20.0 @@ -9657,26 +9311,6 @@ packages: hasBin: true resolution: integrity: sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg== - /uglify-to-browserify/1.0.2: - dev: false - resolution: - integrity: sha1-bgkk1r2mta/jSeOabWMoUKD4grc= - /uglify/0.1.5: - dependencies: - commander: 2.20.0 - grunt: 0.4.5 - grunt-contrib-clean: 0.5.0_grunt@0.4.5 - grunt-contrib-concat: 0.3.0_grunt@0.4.5 - grunt-contrib-copy: 0.5.0_grunt@0.4.5 - grunt-contrib-cssmin: 0.6.1_grunt@0.4.5 - grunt-contrib-uglify: 0.2.4_grunt@0.4.5 - grunt-css-url-replace: 0.2.7_grunt@0.4.5 - underscore: 1.4.4 - underscore.string: 2.3.3 - dev: false - hasBin: true - resolution: - integrity: sha1-iI1X770b+n+tieEdBpl16WgtVNI= /ultron/1.1.1: dev: false resolution: @@ -9687,26 +9321,6 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-5z3T17DXxe2G+6xrCufYxqadUPo= - /underscore.string/2.2.1: - dev: false - resolution: - integrity: sha1-18D6KvXVoaZ/QlPa7pgTLnM/Dxk= - /underscore.string/2.3.3: - dev: false - resolution: - integrity: sha1-ccCL9rQosRM/N+ePo6Icgvcymw0= - /underscore.string/2.4.0: - dev: false - resolution: - integrity: sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs= - /underscore/1.4.4: - dev: false - resolution: - integrity: sha1-YaajIBBiKvoHljvzJSA88SI51gQ= - /underscore/1.7.0: - dev: false - resolution: - integrity: sha1-a7rwh3UA02vjTsqlhODbn+8DUgk= /underscore/1.8.3: dev: false resolution: @@ -10102,11 +9716,6 @@ packages: dev: false resolution: integrity: sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - /which/1.0.9: - dev: false - hasBin: true - resolution: - integrity: sha1-RgwdoPgQED0DIam2M6+eV15kSG8= /which/1.3.1: dependencies: isexe: 2.0.0 @@ -10114,18 +9723,6 @@ packages: hasBin: true resolution: integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - /window-size/0.1.0: - dev: false - engines: - node: '>= 0.8.0' - resolution: - integrity: sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= - /wordwrap/0.0.2: - dev: false - engines: - node: '>=0.4.0' - resolution: - integrity: sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= /wordwrap/0.0.3: dev: false engines: @@ -10329,15 +9926,6 @@ packages: dev: false resolution: integrity: sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== - /yargs/3.5.4: - dependencies: - camelcase: 1.2.1 - decamelize: 1.2.0 - window-size: 0.1.0 - wordwrap: 0.0.2 - dev: false - resolution: - integrity: sha1-2K/49mXpTDS9JZvevRv68N3TU2E= /yargs/7.1.0: dependencies: camelcase: 3.0.0 @@ -10396,13 +9984,9 @@ packages: commander: 2.20.0 resolution: integrity: sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw== - /zlib-browserify/0.0.1: - dev: false - resolution: - integrity: sha1-T6akXQDbwV8xikr6HZr8Aljhdsw= 'file:projects/abort-controller.tgz': dependencies: - '@microsoft/api-extractor': 7.2.3 + '@microsoft/api-extractor': 7.3.0 '@types/mocha': 5.2.7 '@types/node': 8.10.50 '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 @@ -10445,7 +10029,7 @@ packages: dev: false name: '@rush-temp/abort-controller' resolution: - integrity: sha512-oVKp02VH/JP8Y4NaQdjItw8GhuqXz/0in8cfI26oDGZwNo1DHwfSQ6RbXxg8h4gG4PfMho1Hc/8DYlIzP7lM7Q== + integrity: sha512-QzyWDAVpqT9O978eRMOueC1BnAEvglhzhy7BxxR21arkIKwj8ivcYwLVdQZDkZipTky/O4MZlO3ZnDGi89QlZQ== tarball: 'file:projects/abort-controller.tgz' version: 0.0.0 'file:projects/core-amqp.tgz': @@ -10516,7 +10100,7 @@ packages: dev: false name: '@rush-temp/core-amqp' resolution: - integrity: sha512-W+Qj9gyCLdDWCuEYO4O7bZ8Y+Qaw5YERiqEEOI++tOiLAfwgyf6bmE9d9Tt2JwsEmGLtn+/wEK3KH/B0MxZBlA== + integrity: sha512-Jz3QXVrDs186fKzZbn1zBpEPrOrnBzkbg9YdZtgRpVomMCNkzXuAS3xiqWNTUeCtfrJmencleLHXjMOiAqwDZA== tarball: 'file:projects/core-amqp.tgz' version: 0.0.0 'file:projects/core-arm.tgz': @@ -10531,6 +10115,7 @@ packages: npm-run-all: 4.1.5 nyc: 14.1.1 opn-cli: 4.1.0 + rimraf: 2.6.3 rollup: 1.16.7 rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 @@ -10546,7 +10131,7 @@ packages: dev: false name: '@rush-temp/core-arm' resolution: - integrity: sha512-GhCAImOI/Lte/VNwsRcuzHqEX1pO3V4L2DbfKh+PXvbN6N7/HfGgG6kTPqX709hU1ZNcKlSt6BOzGXBYCztTBA== + integrity: sha512-iqatN3+7EsYjlQfHNRWpD+h77oFaHTVpkODkMxwHHCzK6H2vO/XA3/1tFyDceW5mDXb9cn+AE1PJMAzS2rYPWg== tarball: 'file:projects/core-arm.tgz' version: 0.0.0 'file:projects/core-asynciterator-polyfill.tgz': @@ -10565,12 +10150,12 @@ packages: dev: false name: '@rush-temp/core-asynciterator-polyfill' resolution: - integrity: sha512-77lBXqEBN4nl+SLXGqkc369tAmmBFDGjNJeAJCf0L30gf5MuSb7Akz0PvAzNSvSvmuD4GxcimlVwxxBgV0TGYw== + integrity: sha512-oJErNaXrpCzEEVyYVvv8gcBRnv36c76LBxalfW/l4wlABmUh9u+EuvwI46ig0V3m1bmIluW4S/9O08nO18uyGw== tarball: 'file:projects/core-asynciterator-polyfill.tgz' version: 0.0.0 'file:projects/core-auth.tgz': dependencies: - '@microsoft/api-extractor': 7.2.3 + '@microsoft/api-extractor': 7.3.0 '@types/mocha': 5.2.7 '@types/node': 8.10.50 '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 @@ -10604,7 +10189,7 @@ packages: dev: false name: '@rush-temp/core-auth' resolution: - integrity: sha512-FGWqbHKqHhzgaNGz0COkQyKsgNg8ghhVcG8HOn9+8Yik4IqvN5n9earXgOjDwxpL9iMTMGEkhEIWTHBcReLChQ== + integrity: sha512-akV7r5ANBOjNmBbw1NvDSYcbBy/J7I1hJ6QFDYA1wj2z6sU7lb1FJI/lDaobNjy7AvzZ+BsHy9Yj3plqmvlGaA== tarball: 'file:projects/core-auth.tgz' version: 0.0.0 'file:projects/core-http.tgz': @@ -10689,7 +10274,7 @@ packages: dev: false name: '@rush-temp/core-http' resolution: - integrity: sha512-YqdtKlHlLXIa+vz/aEqBxYYBaGfMM8FrsSsOryLap52mc+1JHfaKjq74MJyL3/m1i2mSzyfMQiL3NYx7grvyUQ== + integrity: sha512-wm2OlqXnbEFpZKYmqGqKlsgmfdgzTYODsAlnhvfpLXD+uwHFQOHVNc6KUFdY8SAoH3t1kyaZjyxI+nTp0ihMcQ== tarball: 'file:projects/core-http.tgz' version: 0.0.0 'file:projects/core-paging.tgz': @@ -10708,7 +10293,7 @@ packages: dev: false name: '@rush-temp/core-paging' resolution: - integrity: sha512-3cvTSZGmlAxyyfCsE4f3ag8t7H9eGHcJ4rpXjVcTmwzvajiutRU6ddOHLrRq0QpiPbuspuvGxRIMG+DHZlCVFQ== + integrity: sha512-YuAVCVgDrwxv97SIkTM1n/hwYLjncsTgyooCUYQ4vw3o1WglSnpREVymQFVZ8Fa+S/ael7NdzsGaYp3lyTKXCg== tarball: 'file:projects/core-paging.tgz' version: 0.0.0 'file:projects/cosmos.tgz': @@ -10752,12 +10337,12 @@ packages: dev: false name: '@rush-temp/cosmos' resolution: - integrity: sha512-5oqGeaFo8iGly53D7KKcG7hbMnG9tXZ+JwIkTh4Bofmq7fxOH8w2WosjDoNBaIwiFaMRpL3QkU1FoeuNcbDcog== + integrity: sha512-rLhtUCCGnwzY3OigHd+TEJ4U0lyBKc2RpjKGMl9koha/aSUchKfm8qHWS+4XO/J2+WldP7yQx6gZY5C+t3cBvQ== tarball: 'file:projects/cosmos.tgz' version: 0.0.0 'file:projects/event-hubs.tgz': dependencies: - '@microsoft/api-extractor': 7.2.3 + '@microsoft/api-extractor': 7.3.0 '@types/async-lock': 1.1.1 '@types/chai': 4.1.7 '@types/chai-as-promised': 7.1.0 @@ -10827,13 +10412,13 @@ packages: dev: false name: '@rush-temp/event-hubs' resolution: - integrity: sha512-xWOJsXZrjXGEf07fmGBi8bMgu1YU+bqCz5BIuaMJewDNel7o7v6roFEjiVSN4xhw2hZOStAmgTdJL8L/YrnYfg== + integrity: sha512-4SXlBNNpio9rKF27gt7/ROBdlKbdDYx5i0Vx2M9yYumMcG+kkGTBb/k80ef+RKx1FuvRCeEsZbsVlWFMYvDxWA== tarball: 'file:projects/event-hubs.tgz' version: 0.0.0 'file:projects/event-processor-host.tgz': dependencies: '@azure/event-hubs': 1.0.8 - '@microsoft/api-extractor': 7.2.3 + '@microsoft/api-extractor': 7.3.0 '@types/async-lock': 1.1.1 '@types/chai': 4.1.7 '@types/chai-as-promised': 7.1.0 @@ -10883,7 +10468,7 @@ packages: dev: false name: '@rush-temp/event-processor-host' resolution: - integrity: sha512-F+6+Rd6EVef42aHAZrpgxfe0N/8nZYwRfg+5aI3zfwLIXSOcDss4cN78xSEqC3FuaHPCqzIHfYZ+/s+A5+J56g== + integrity: sha512-kNXtALlFQOATlvSkSIJ2PU54lX/OY/yD33fxY4KXBUcEZ3fJTaH8iXmV0S89Ry/eaOHtHU/Iia1Yfs7u7d4avA== tarball: 'file:projects/event-processor-host.tgz' version: 0.0.0 'file:projects/identity.tgz': @@ -10935,12 +10520,12 @@ packages: dev: false name: '@rush-temp/identity' resolution: - integrity: sha512-MCmeKLHYYs2JMvZywTo7VB3KaV7zyKJH2ReSPsm5xoNQhi5UCR2bEIzv4K9HmT1v6+cKk/yiLeo0ZAHyy+bOPQ== + integrity: sha512-aTY3uzVLj4sklLp1V6DUub81jrSYfIKZwnVBn/oUi7cKhBnjY7efgGVxxaRfNNi8tg5js+DBRFI6HDKSfOdABA== tarball: 'file:projects/identity.tgz' version: 0.0.0 'file:projects/keyvault-certificates.tgz': dependencies: - '@microsoft/api-extractor': 7.2.3 + '@microsoft/api-extractor': 7.3.0 '@types/chai': 4.1.7 '@types/node': 8.10.50 '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 @@ -10964,12 +10549,12 @@ packages: dev: false name: '@rush-temp/keyvault-certificates' resolution: - integrity: sha512-4GOpK9CK1IM8iU9q84vFCZ3P/cAq496/hpFCdn+NVO9Idg+xYlkLTF9Bj3mckUvRcPgaH8Nj0kKW7SZdJEjlyg== + integrity: sha512-OnKHRTzszS738exvoRLs2jaUoM3n0EW/Vnuwh04GVxor6GUG7K2wo06C+qoq3sqI5VG6CuEwMKfsSTmkLJfaMg== tarball: 'file:projects/keyvault-certificates.tgz' version: 0.0.0 'file:projects/keyvault-keys.tgz': dependencies: - '@microsoft/api-extractor': 7.2.3 + '@microsoft/api-extractor': 7.3.0 '@types/chai': 4.1.7 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 @@ -11003,14 +10588,14 @@ packages: dev: false name: '@rush-temp/keyvault-keys' resolution: - integrity: sha512-+bFMhZdTn24Y9m29HrHSqCnp+Q7OgDkeluJPQdbBQ7ezxtZ+rL3+tC1ud5babxX9JtVYWULJaE5KKa69OBgdoA== + integrity: sha512-K1QS7ykok+p7DjKnd3GUg6k9W9nTXkux6iJOvt6i/UyVBSMIJ9v/szsLAd/6Osofj9ZMUfeCF46PXKccYkszeA== tarball: 'file:projects/keyvault-keys.tgz' version: 0.0.0 'file:projects/keyvault-secrets.tgz': dependencies: '@azure/ms-rest-azure-js': 1.3.8 '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.2.3 + '@microsoft/api-extractor': 7.3.0 '@types/chai': 4.1.7 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 @@ -11044,7 +10629,7 @@ packages: dev: false name: '@rush-temp/keyvault-secrets' resolution: - integrity: sha512-/+m9y2iWbNdL0zI+6FLFG7GeBOU+Ejy9h0mNzjTgXIny4W7cSP4qd4woTqtVVLoPB4b1SnyfI5cdY2bPGeMT9Q== + integrity: sha512-OkaQmEoxug4+KDAkDDIVeRR9XtS6dSMHYgJD4mAlOolYt9IcYTKAPr20xbwztnBb+1eS91OmbtQjixPdt0c2bQ== tarball: 'file:projects/keyvault-secrets.tgz' version: 0.0.0 'file:projects/service-bus.tgz': @@ -11052,7 +10637,7 @@ packages: '@azure/amqp-common': 1.0.0-preview.6_rhea-promise@0.1.15 '@azure/arm-servicebus': 0.1.0 '@azure/ms-rest-nodeauth': 0.9.3 - '@microsoft/api-extractor': 7.2.3 + '@microsoft/api-extractor': 7.3.0 '@types/async-lock': 1.1.1 '@types/chai': 4.1.7 '@types/chai-as-promised': 7.1.0 @@ -11122,13 +10707,13 @@ packages: dev: false name: '@rush-temp/service-bus' resolution: - integrity: sha512-vHOoRDnsyscJXfBZXzORHKkKYbyiIcij0x3gnlAlzxS9SZ7FbIicnp6g8OPSGhDlMUHi6NExzA/uhxhRgGcYhw== + integrity: sha512-nN9BMqfkMl0zCjMC3AsdgCSFBF/axAJwWNdiM43XVzpa+924exQPM+dh6ahZ8JUBeBI7M1Y2ygR57+Hms+4D2w== tarball: 'file:projects/service-bus.tgz' version: 0.0.0 'file:projects/storage-blob.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.2.3 + '@microsoft/api-extractor': 7.3.0 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 @@ -11192,38 +10777,13 @@ packages: dev: false name: '@rush-temp/storage-blob' resolution: - integrity: sha512-t21ClgXAdq9oGy0Gij6PnsGZnMrHOJnYFUba4vBQkp+USM7yNfZsSFjcYUC5Dm9XWkeNqYJCbMcUmvMYee2QaA== + integrity: sha512-FWF0lybU1bBKGD4N1ttleRCkCMnGE0mgZwApgHWOTubHF/zzmBOY9OgVhgS7Bk6J+8vcaIUp/jfwAKEmJ0OIgA== tarball: 'file:projects/storage-blob.tgz' version: 0.0.0 - 'file:projects/storage-datalake.tgz': - dependencies: - '@azure/ms-rest-azure-js': 1.3.8 - '@azure/ms-rest-js': 1.8.13 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 - eslint: 5.16.0 - eslint-config-prettier: 4.3.0_eslint@5.16.0 - eslint-detailed-reporter: 0.8.0_eslint@5.16.0 - eslint-plugin-no-null: 1.0.2_eslint@5.16.0 - eslint-plugin-no-only-tests: 2.3.1 - eslint-plugin-promise: 4.2.1 - rollup: 1.16.7 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 - ts-node: 7.0.1 - tslib: 1.10.0 - typescript: 3.5.3 - uglify: 0.1.5 - uglify-js: 3.6.0 - dev: false - name: '@rush-temp/storage-datalake' - resolution: - integrity: sha512-KSloI/r30nGVQIHiMSXpFQFmTVzCvy2UV055ihBkRKB5VV60PsyFkPJmb8nSrhR7yri+/dxZp8nhU5eW6N2xLw== - tarball: 'file:projects/storage-datalake.tgz' - version: 0.0.0 'file:projects/storage-file.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.2.3 + '@microsoft/api-extractor': 7.3.0 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 @@ -11287,13 +10847,13 @@ packages: dev: false name: '@rush-temp/storage-file' resolution: - integrity: sha512-xN4kyD0qOC6TECWuCBn31uD/2vlkgrJBpcspDD0ww+rhyd694uPNjrq9vMBTjTSryAYuU5vP+TlkkAB6aCu+uw== + integrity: sha512-jVoPzB0EQPblf83PxurtdUXk4DBwoih8HRUSsi3FgVyP0ONWbbgW/yaZYEeMSxwXTNmrzNW4paKXLf/FgOdiJA== tarball: 'file:projects/storage-file.tgz' version: 0.0.0 'file:projects/storage-queue.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.2.3 + '@microsoft/api-extractor': 7.3.0 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 @@ -11356,13 +10916,13 @@ packages: dev: false name: '@rush-temp/storage-queue' resolution: - integrity: sha512-ggwXtHtC2gES9W+4Bq0hvUOebNPQM3JN7/tQwjNS+kWFnDS4DvSPjITc8AxlQ3pwLUq+wuyoKAqmJUh4NGpvdQ== + integrity: sha512-zgZeae63buyC+CgrzepqiRIz3HoDzWLT95FZ36cnoxg70L/MNxZ3lA0Hh4f7LudMDiSaVWw0WiMOci4cnu0ZAg== tarball: 'file:projects/storage-queue.tgz' version: 0.0.0 'file:projects/template.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.2.3 + '@microsoft/api-extractor': 7.3.0 '@types/mocha': 5.2.7 '@types/node': 8.10.50 '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 @@ -11397,7 +10957,7 @@ packages: dev: false name: '@rush-temp/template' resolution: - integrity: sha512-Z7O5iolqvVcQbl7bmqC9Bk49v+41A2AkPGacMs2JdsuCq8YKfasWMn3iZMDIPiypdvz4PgwgogF+H/HsfU3vsA== + integrity: sha512-p4x160RdYLlW5VjMpev7fMKCtQoXJ8VFTzHASa7PWeYp41D7G9L7uWUO6PRYysglX5Vm9WuZZpsDmfg+ccVKmQ== tarball: 'file:projects/template.tgz' version: 0.0.0 'file:projects/testhub.tgz': @@ -11422,7 +10982,7 @@ packages: dev: false name: '@rush-temp/testhub' resolution: - integrity: sha512-IIhgwGeM3S6e3snigbvVfVsSh+X7T8iOKRToJ9fkFRjpviiH3jpdpOm186AyYHuEfZzR/dQlxmdQxEoZUVH3qA== + integrity: sha512-c3cFI0Our99carkgcyOFLmX5QRh5fIqyVv9S75VRX7woNtBGXPvWRE8VOxEN9o8N8FjSEQzc6PPEO6YRz7ok8Q== tarball: 'file:projects/testhub.tgz' version: 0.0.0 registry: '' @@ -11451,7 +11011,6 @@ specifiers: '@rush-temp/keyvault-secrets': 'file:./projects/keyvault-secrets.tgz' '@rush-temp/service-bus': 'file:./projects/service-bus.tgz' '@rush-temp/storage-blob': 'file:./projects/storage-blob.tgz' - '@rush-temp/storage-datalake': 'file:./projects/storage-datalake.tgz' '@rush-temp/storage-file': 'file:./projects/storage-file.tgz' '@rush-temp/storage-queue': 'file:./projects/storage-queue.tgz' '@rush-temp/template': 'file:./projects/template.tgz' @@ -11602,7 +11161,6 @@ specifiers: tslint: ^5.7.0 tunnel: 0.0.6 typescript: ^3.2.2 - uglify: ^0.1.5 uglify-js: ^3.4.9 url: ^0.11.0 util: ^0.11.1 diff --git a/rush.json b/rush.json index 096168391fa2..d606823eb675 100644 --- a/rush.json +++ b/rush.json @@ -374,10 +374,6 @@ "packageName": "@azure/storage-blob", "projectFolder": "sdk/storage/storage-blob" }, - { - "packageName": "@azure/storage-datalake", - "projectFolder": "sdk/storage/storage-datalake" - }, { "packageName": "@azure/storage-file", "projectFolder": "sdk/storage/storage-file" From a6d125a1d181ea5b542a23096109b12ff9400465 Mon Sep 17 00:00:00 2001 From: Harsha Nalluru Date: Wed, 10 Jul 2019 17:01:44 -0700 Subject: [PATCH 259/289] [Core Auth] (minor) typo (#4254) --- sdk/core/core-auth/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/core/core-auth/README.md b/sdk/core/core-auth/README.md index 52f96fd524eb..6efd349ecf02 100644 --- a/sdk/core/core-auth/README.md +++ b/sdk/core/core-auth/README.md @@ -1,4 +1,4 @@ -## Azure Core Authentiation +## Azure Core Authentication This library provides core interfaces and helper methods for authenticating with Azure Active Directory. As a "core" library, it shouldn't need to be added as a dependency to any user code, only other Azure SDK libraries. From 7930bf8c94c699eac886767527db0de6c8986676 Mon Sep 17 00:00:00 2001 From: chradek <51000525+chradek@users.noreply.github.com> Date: Wed, 10 Jul 2019 18:20:51 -0700 Subject: [PATCH 260/289] [Event Hubs] format source files with prettier (#4253) --- sdk/eventhub/event-hubs/rollup.base.config.js | 14 +- .../event-hubs/src/batchingReceiver.ts | 29 +++- .../event-hubs/src/connectionContext.ts | 7 +- sdk/eventhub/event-hubs/src/eventData.ts | 3 +- sdk/eventhub/event-hubs/src/eventHubClient.ts | 25 +++- .../event-hubs/src/eventHubReceiver.ts | 39 ++++- sdk/eventhub/event-hubs/src/eventHubSender.ts | 81 +++++++++-- sdk/eventhub/event-hubs/src/eventPosition.ts | 4 +- .../event-hubs/src/iothub/iothubClient.ts | 20 ++- sdk/eventhub/event-hubs/src/linkEntity.ts | 11 +- .../event-hubs/src/managementClient.ts | 51 +++++-- sdk/eventhub/event-hubs/src/receiver.ts | 16 +- sdk/eventhub/event-hubs/src/sender.ts | 4 +- .../event-hubs/src/streamingReceiver.ts | 13 +- sdk/eventhub/event-hubs/test/client.spec.ts | 132 +++++++++++++---- .../event-hubs/test/eventPosition.spec.ts | 4 +- .../event-hubs/test/eventdata.spec.ts | 4 +- .../event-hubs/test/hubruntime.spec.ts | 8 +- sdk/eventhub/event-hubs/test/iothub.spec.ts | 6 +- sdk/eventhub/event-hubs/test/misc.spec.ts | 28 +++- .../event-hubs/test/packageInfo.spec.ts | 6 +- sdk/eventhub/event-hubs/test/receiver.spec.ts | 137 +++++++++++++----- sdk/eventhub/event-hubs/test/sender.spec.ts | 44 ++++-- .../event-hubs/test/utils/testUtils.ts | 3 +- 24 files changed, 532 insertions(+), 157 deletions(-) diff --git a/sdk/eventhub/event-hubs/rollup.base.config.js b/sdk/eventhub/event-hubs/rollup.base.config.js index 8b481bbbff3b..a4f5c3f4427d 100644 --- a/sdk/eventhub/event-hubs/rollup.base.config.js +++ b/sdk/eventhub/event-hubs/rollup.base.config.js @@ -52,9 +52,17 @@ export function nodeConfig(test = false) { 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 => { + 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) diff --git a/sdk/eventhub/event-hubs/src/batchingReceiver.ts b/sdk/eventhub/event-hubs/src/batchingReceiver.ts index 31f2dc3899a7..abc67153cad4 100644 --- a/sdk/eventhub/event-hubs/src/batchingReceiver.ts +++ b/sdk/eventhub/event-hubs/src/batchingReceiver.ts @@ -1,7 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -import { ReceiverEvents, EventContext, OnAmqpEvent, SessionEvents, Receiver as RheaReceiver } from "rhea-promise"; +import { + ReceiverEvents, + EventContext, + OnAmqpEvent, + SessionEvents, + Receiver as RheaReceiver +} from "rhea-promise"; import { translate, Func, @@ -185,7 +191,12 @@ export class BatchingReceiver extends EventHubReceiver { let error = new MessagingError("An error occuured while receiving messages."); if (receiverError) { error = translate(receiverError); - log.error("[%s] Receiver '%s' received an error:\n%O", this._context.connectionId, this.name, error); + log.error( + "[%s] Receiver '%s' received an error:\n%O", + this._context.connectionId, + this.name, + error + ); } reject(error); }; @@ -311,7 +322,11 @@ export class BatchingReceiver extends EventHubReceiver { }; if (!this.isOpen()) { - log.batching("[%s] Receiver '%s', setting the prefetch count to 0.", this._context.connectionId, this.name); + log.batching( + "[%s] Receiver '%s', setting the prefetch count to 0.", + this._context.connectionId, + this.name + ); this.prefetchCount = 0; const rcvrOptions = this._createReceiverOptions({ onMessage: onReceiveMessage, @@ -384,7 +399,13 @@ export class BatchingReceiver extends EventHubReceiver { eventPosition: EventPosition, options?: EventHubConsumerOptions ): BatchingReceiver { - const bReceiver = new BatchingReceiver(context, consumerGroup, partitionId, eventPosition, options); + const bReceiver = new BatchingReceiver( + context, + consumerGroup, + partitionId, + eventPosition, + options + ); context.receivers[bReceiver.name] = bReceiver; return bReceiver; } diff --git a/sdk/eventhub/event-hubs/src/connectionContext.ts b/sdk/eventhub/event-hubs/src/connectionContext.ts index 49c591a9ef81..c49b3e778aaa 100644 --- a/sdk/eventhub/event-hubs/src/connectionContext.ts +++ b/sdk/eventhub/event-hubs/src/connectionContext.ts @@ -130,7 +130,8 @@ export namespace ConnectionContext { }; const disconnected: OnAmqpEvent = async (context: EventContext) => { - const connectionError = context.connection && context.connection.error ? context.connection.error : undefined; + const connectionError = + context.connection && context.connection.error ? context.connection.error : undefined; if (connectionError) { log.error( "[%s] Error (context.connection.error) occurred on the amqp connection: %O", @@ -185,7 +186,7 @@ export namespace ConnectionContext { sender.name, sender.address ); - sender.onDetached(connectionError || contextError).catch(err => { + sender.onDetached(connectionError || contextError).catch((err) => { log.error( "[%s] An error occurred while reconnecting the sender '%s' with adress '%s' %O.", connectionContext.connection.id, @@ -214,7 +215,7 @@ export namespace ConnectionContext { receiver.name, receiver.address ); - receiver.onDetached(connectionError || contextError).catch(err => { + receiver.onDetached(connectionError || contextError).catch((err) => { log.error( "[%s] An error occurred while reconnecting the receiver '%s' with adress '%s' %O.", connectionContext.connection.id, diff --git a/sdk/eventhub/event-hubs/src/eventData.ts b/sdk/eventhub/event-hubs/src/eventData.ts index e17df51e17bd..8d54b41a9408 100644 --- a/sdk/eventhub/event-hubs/src/eventData.ts +++ b/sdk/eventhub/event-hubs/src/eventData.ts @@ -139,7 +139,8 @@ export function fromAmqpMessage(msg: Message): EventDataInternal { data.lastEnqueuedOffset = msg.delivery_annotations.last_enqueued_offset; data.lastSequenceNumber = msg.delivery_annotations.last_enqueued_sequence_number; data.lastEnqueuedTime = new Date(msg.delivery_annotations.last_enqueued_time_utc as number); - data.retrievalTime = new Date(msg.delivery_annotations.runtime_info_retrieval_time_utc as number); + data.retrievalTime = new Date(msg.delivery_annotations + .runtime_info_retrieval_time_utc as number); } return data; diff --git a/sdk/eventhub/event-hubs/src/eventHubClient.ts b/sdk/eventhub/event-hubs/src/eventHubClient.ts index bfb4d7fe9d6e..6218d4fd287a 100644 --- a/sdk/eventhub/event-hubs/src/eventHubClient.ts +++ b/sdk/eventhub/event-hubs/src/eventHubClient.ts @@ -209,7 +209,12 @@ export class EventHubClient { * @param credential - SharedKeyCredential object or your credential that implements the TokenCredential interface. * @param options - A set of options to apply when configuring the client. */ - constructor(host: string, eventHubPath: string, credential: TokenCredential, options?: EventHubClientOptions); + constructor( + host: string, + eventHubPath: string, + credential: TokenCredential, + options?: EventHubClientOptions + ); constructor( hostOrConnectionString: string, eventHubPathOrOptions?: string | EventHubClientOptions, @@ -279,7 +284,9 @@ export class EventHubClient { } } catch (err) { err = err instanceof Error ? err : JSON.stringify(err); - log.error(`An error occurred while closing the connection "${this._context.connectionId}":\n${err}`); + log.error( + `An error occurred while closing the connection "${this._context.connectionId}":\n${err}` + ); throw err; } } @@ -386,7 +393,10 @@ export class EventHubClient { * @throws {Error} Thrown if the underlying connection has been closed, create a new EventHubClient. * @throws {AbortError} Thrown if the operation is cancelled via the abortSignal. */ - async getPartitionProperties(partitionId: string, abortSignal?: AbortSignalLike): Promise { + async getPartitionProperties( + partitionId: string, + abortSignal?: AbortSignalLike + ): Promise { throwErrorIfConnectionClosed(this._context); throwTypeErrorIfParameterMissing(this._context.connectionId, "partitionId", partitionId); partitionId = String(partitionId); @@ -412,10 +422,15 @@ export class EventHubClient { iothubConnectionString: string, options?: EventHubClientOptions ): Promise { - if (!iothubConnectionString || (iothubConnectionString && typeof iothubConnectionString !== "string")) { + if ( + !iothubConnectionString || + (iothubConnectionString && typeof iothubConnectionString !== "string") + ) { throw new Error("'connectionString' is a required parameter and must be of type: 'string'."); } - const connectionString = await new IotHubClient(iothubConnectionString).getEventHubConnectionString(); + const connectionString = await new IotHubClient( + iothubConnectionString + ).getEventHubConnectionString(); return new EventHubClient(connectionString, options); } diff --git a/sdk/eventhub/event-hubs/src/eventHubReceiver.ts b/sdk/eventhub/event-hubs/src/eventHubReceiver.ts index 303fae020760..b9715614e9cf 100644 --- a/sdk/eventhub/event-hubs/src/eventHubReceiver.ts +++ b/sdk/eventhub/event-hubs/src/eventHubReceiver.ts @@ -11,7 +11,14 @@ import { types, AmqpError } from "rhea-promise"; -import { translate, Constants, MessagingError, retry, RetryOperationType, RetryConfig } from "@azure/core-amqp"; +import { + translate, + Constants, + MessagingError, + retry, + RetryOperationType, + RetryConfig +} from "@azure/core-amqp"; import { ReceivedEventData, EventDataInternal, fromAmqpMessage } from "./eventData"; import { EventHubConsumerOptions } from "./eventHubClient"; import { ConnectionContext } from "./connectionContext"; @@ -250,7 +257,12 @@ export class EventHubReceiver extends LinkEntity { const receiverError = context.receiver && context.receiver.error; if (receiverError) { const ehError = translate(receiverError); - log.error("[%s] An error occurred for Receiver '%s': %O.", this._context.connectionId, this.name, ehError); + log.error( + "[%s] An error occurred for Receiver '%s': %O.", + this._context.connectionId, + this.name, + ehError + ); if (!ehError.retryable) { if (receiver && !receiver.isItselfClosed()) { log.error( @@ -268,7 +280,8 @@ export class EventHubReceiver extends LinkEntity { } } else { log.error( - "[%s] Since received error is retryable, we will NOT notify the user's " + "error handler.", + "[%s] Since received error is retryable, we will NOT notify the user's " + + "error handler.", this._context.connectionId ); } @@ -302,7 +315,8 @@ export class EventHubReceiver extends LinkEntity { const receiver = this._receiver || context.receiver!; if (receiverError) { log.error( - "[%s] 'receiver_close' event occurred for receiver '%s' with address '%s'. " + "The associated error is: %O", + "[%s] 'receiver_close' event occurred for receiver '%s' with address '%s'. " + + "The associated error is: %O", this._context.connectionId, this.name, this.address, @@ -350,7 +364,8 @@ export class EventHubReceiver extends LinkEntity { const sessionError = context.session && context.session.error; if (sessionError) { log.error( - "[%s] 'session_close' event occurred for receiver '%s' with address '%s'. " + "The associated error is: %O", + "[%s] 'session_close' event occurred for receiver '%s' with address '%s'. " + + "The associated error is: %O", this._context.connectionId, this.name, this.address, @@ -489,7 +504,8 @@ export class EventHubReceiver extends LinkEntity { } } catch (err) { log.error( - "[%s] An error occurred while processing onDetached() of Receiver '%s' with address " + "'%s': %O", + "[%s] An error occurred while processing onDetached() of Receiver '%s' with address " + + "'%s': %O", this._context.connectionId, this.name, this.address, @@ -534,7 +550,11 @@ export class EventHubReceiver extends LinkEntity { protected _deleteFromCache(): void { this._receiver = undefined; delete this._context.receivers[this.name]; - log.error("[%s] Deleted the receiver '%s' from the client cache.", this._context.connectionId, this.name); + log.error( + "[%s] Deleted the receiver '%s' from the client cache.", + this._context.connectionId, + this.name + ); } /** @@ -578,7 +598,10 @@ export class EventHubReceiver extends LinkEntity { this.name, this.address ); - log.receiver("Promise to create the receiver resolved. Created receiver with name: ", this.name); + log.receiver( + "Promise to create the receiver resolved. Created receiver with name: ", + this.name + ); log.receiver( "[%s] Receiver '%s' created with receiver options: %O", this._context.connectionId, diff --git a/sdk/eventhub/event-hubs/src/eventHubSender.ts b/sdk/eventhub/event-hubs/src/eventHubSender.ts index 3fdfb925bee6..4b78bb798cd1 100644 --- a/sdk/eventhub/event-hubs/src/eventHubSender.ts +++ b/sdk/eventhub/event-hubs/src/eventHubSender.ts @@ -101,7 +101,12 @@ export class EventHubSender extends LinkEntity { const senderError = context.sender && context.sender.error; if (senderError) { const err = translate(senderError); - log.error("[%s] An error occurred for sender '%s': %O.", this._context.connectionId, this.name, err); + log.error( + "[%s] An error occurred for sender '%s': %O.", + this._context.connectionId, + this.name, + err + ); } }; @@ -123,7 +128,8 @@ export class EventHubSender extends LinkEntity { const senderError = context.sender && context.sender.error; if (senderError) { log.error( - "[%s] 'sender_close' event occurred for sender '%s' with address '%s'. " + "The associated error is: %O", + "[%s] 'sender_close' event occurred for sender '%s' with address '%s'. " + + "The associated error is: %O", this._context.connectionId, this.name, this.address, @@ -168,7 +174,8 @@ export class EventHubSender extends LinkEntity { const sessionError = context.session && context.session.error; if (sessionError) { log.error( - "[%s] 'session_close' event occurred for sender '%s' with address '%s'. " + "The associated error is: %O", + "[%s] 'session_close' event occurred for sender '%s' with address '%s'. " + + "The associated error is: %O", this._context.connectionId, this.name, this.address, @@ -289,7 +296,8 @@ export class EventHubSender extends LinkEntity { } } catch (err) { log.error( - "[%s] An error occurred while processing onDetached() of Sender '%s' with address " + "'%s': %O", + "[%s] An error occurred while processing onDetached() of Sender '%s' with address " + + "'%s': %O", this._context.connectionId, this.name, this.address, @@ -345,7 +353,11 @@ export class EventHubSender extends LinkEntity { async send(events: EventData[], options?: SendOptions & EventHubProducerOptions): Promise { try { // throw an error if partition key and partition id are both defined - if (options && typeof options.partitionKey === "string" && typeof options.partitionId === "string") { + if ( + options && + typeof options.partitionKey === "string" && + typeof options.partitionId === "string" + ) { const error = new Error( "Partition key is not supported when using producers that were created using a partition id." ); @@ -358,14 +370,19 @@ export class EventHubSender extends LinkEntity { } if (!this.isOpen()) { log.sender( - "Acquiring lock %s for initializing the session, sender and " + "possibly the connection.", + "Acquiring lock %s for initializing the session, sender and " + + "possibly the connection.", this.senderLock ); await defaultLock.acquire(this.senderLock, () => { return this._init(); }); } - log.sender("[%s] Sender '%s', trying to send EventData[].", this._context.connectionId, this.name); + log.sender( + "[%s] Sender '%s', trying to send EventData[].", + this._context.connectionId, + this.name + ); const partitionKey = (options && options.partitionKey) || undefined; const messages: AmqpMessage[] = []; // Convert EventData to AmqpMessage. @@ -515,19 +532,31 @@ export class EventHubSender extends LinkEntity { // we send a message, we need to remove listener for both the events. // This will ensure duplicate listeners are not added for the same event. removeListeners(); - log.sender("[%s] Sender '%s', got event accepted.", this._context.connectionId, this.name); + log.sender( + "[%s] Sender '%s', got event accepted.", + this._context.connectionId, + this.name + ); resolve(); }; onRejected = (context: EventContext) => { removeListeners(); - log.error("[%s] Sender '%s', got event rejected.", this._context.connectionId, this.name); + log.error( + "[%s] Sender '%s', got event rejected.", + this._context.connectionId, + this.name + ); const err = translate(context!.delivery!.remote_state!.error); log.error(err); reject(err); }; onReleased = (context: EventContext) => { removeListeners(); - log.error("[%s] Sender '%s', got event released.", this._context.connectionId, this.name); + log.error( + "[%s] Sender '%s', got event released.", + this._context.connectionId, + this.name + ); let err: Error; if (context!.delivery!.remote_state!.error) { err = translate(context!.delivery!.remote_state!.error); @@ -542,7 +571,11 @@ export class EventHubSender extends LinkEntity { }; onModified = (context: EventContext) => { removeListeners(); - log.error("[%s] Sender '%s', got event modified.", this._context.connectionId, this.name); + log.error( + "[%s] Sender '%s', got event modified.", + this._context.connectionId, + this.name + ); let err: Error; if (context!.delivery!.remote_state!.error) { err = translate(context!.delivery!.remote_state!.error); @@ -577,7 +610,10 @@ export class EventHubSender extends LinkEntity { this._sender!.on(SenderEvents.rejected, onRejected); this._sender!.on(SenderEvents.modified, onModified); this._sender!.on(SenderEvents.released, onReleased); - waitTimer = setTimeout(actionAfterTimeout, Constants.defaultOperationTimeoutInSeconds * 1000); + waitTimer = setTimeout( + actionAfterTimeout, + Constants.defaultOperationTimeoutInSeconds * 1000 + ); const delivery = this._sender!.send(message, tag, 0x80013700); log.sender( "[%s] Sender '%s', sent message with delivery id: %d and tag: %s", @@ -603,7 +639,9 @@ export class EventHubSender extends LinkEntity { const jitterInSeconds = randomNumberFromInterval(1, 4); const maxRetries = options.retryOptions && options.retryOptions.maxRetries; const delayInSeconds = - options.retryOptions && options.retryOptions.retryInterval && options.retryOptions.retryInterval >= 0 + options.retryOptions && + options.retryOptions.retryInterval && + options.retryOptions.retryInterval >= 0 ? options.retryOptions.retryInterval / 1000 : Constants.defaultDelayBetweenOperationRetriesInSeconds; const config: RetryConfig = { @@ -656,14 +694,20 @@ export class EventHubSender extends LinkEntity { this._context.connectionId, this.name ); - log.error("[%s] Sender '%s' created with sender options: %O", this._context.connectionId, this.name, options); + log.error( + "[%s] Sender '%s' created with sender options: %O", + this._context.connectionId, + this.name, + options + ); // It is possible for someone to close the sender and then start it again. // Thus make sure that the sender is present in the client cache. if (!this._context.senders[this.name]) this._context.senders[this.name] = this; await this._ensureTokenRenewal(); } else { log.error( - "[%s] The sender '%s' with address '%s' is open -> %s and is connecting " + "-> %s. Hence not reconnecting.", + "[%s] The sender '%s' with address '%s' is open -> %s and is connecting " + + "-> %s. Hence not reconnecting.", this._context.connectionId, this.name, this.address, @@ -674,7 +718,12 @@ export class EventHubSender extends LinkEntity { } catch (err) { this.isConnecting = false; err = translate(err); - log.error("[%s] An error occurred while creating the sender %s", this._context.connectionId, this.name, err); + log.error( + "[%s] An error occurred while creating the sender %s", + this._context.connectionId, + this.name, + err + ); throw err; } } diff --git a/sdk/eventhub/event-hubs/src/eventPosition.ts b/sdk/eventhub/event-hubs/src/eventPosition.ts index e403fb8e34ed..a4fb30773fa0 100644 --- a/sdk/eventhub/event-hubs/src/eventPosition.ts +++ b/sdk/eventhub/event-hubs/src/eventPosition.ts @@ -188,7 +188,9 @@ export function getEventPositionFilter(eventPosition: EventPosition): string { : `${Constants.sequenceNumberAnnotation} > '${eventPosition.sequenceNumber}'`; } else if (eventPosition.enqueuedTime != undefined) { const time = - eventPosition.enqueuedTime instanceof Date ? eventPosition.enqueuedTime.getTime() : eventPosition.enqueuedTime; + eventPosition.enqueuedTime instanceof Date + ? eventPosition.enqueuedTime.getTime() + : eventPosition.enqueuedTime; result = `${Constants.enqueuedTimeAnnotation} > '${time}'`; } diff --git a/sdk/eventhub/event-hubs/src/iothub/iothubClient.ts b/sdk/eventhub/event-hubs/src/iothub/iothubClient.ts index 43bc9b3e08f8..2cd4ffb15568 100644 --- a/sdk/eventhub/event-hubs/src/iothub/iothubClient.ts +++ b/sdk/eventhub/event-hubs/src/iothub/iothubClient.ts @@ -48,11 +48,16 @@ export class IotHubClient { const config = IotHubConnectionConfig.convertToEventHubConnectionConfig(iothubconfig); let result: string = ""; if (!options) options = {}; - const tokenProvider = new IotSharedKeyCredential(config.sharedAccessKeyName, config.sharedAccessKey); + const tokenProvider = new IotSharedKeyCredential( + config.sharedAccessKeyName, + config.sharedAccessKey + ); options.managementSessionAddress = `/messages/events/$management`; const context = ConnectionContext.create(config, tokenProvider, options); try { - log.iotClient("Getting the hub runtime info from the iothub connection string to get the redirect error."); + log.iotClient( + "Getting the hub runtime info from the iothub connection string to get the redirect error." + ); await context.managementSession!.getHubRuntimeInformation(); } catch (err) { const error = translate(err); @@ -88,7 +93,10 @@ export class IotHubClient { await context.managementSession!.close(); log.iotClient("IotHub management client closed."); await context.connection.close(); - log.iotClient("Closed the amqp connection '%s' on the iothub client.", context.connectionId); + log.iotClient( + "Closed the amqp connection '%s' on the iothub client.", + context.connectionId + ); } } catch (err) { const msg = `An error occurred while closing the connection "${context.connectionId}": ${err.stack}`; @@ -113,7 +121,9 @@ export class IotHubClient { if (parsedResult == undefined || (parsedResult && parsedResult[1] == undefined)) { const msg = `Cannot parse the EventHub name from the given address: ${address} in the error: ` + - `${error.stack}\n${JSON.stringify(error.info)}.\nThe parsed result is: ${JSON.stringify(parsedResult)}.`; + `${error.stack}\n${JSON.stringify(error.info)}.\nThe parsed result is: ${JSON.stringify( + parsedResult + )}.`; throw new Error(msg); } @@ -130,7 +140,7 @@ export class IotHubClient { parts.set("SharedAccessKey", config.sharedAccessKey); parts.set("EntityPath", config.entityPath); return Array.from(parts) - .map(part => `${part[0]}=${part[1]}`) + .map((part) => `${part[0]}=${part[1]}`) .join(";"); } } diff --git a/sdk/eventhub/event-hubs/src/linkEntity.ts b/sdk/eventhub/event-hubs/src/linkEntity.ts index 591ee0844639..f97ad8f6debf 100644 --- a/sdk/eventhub/event-hubs/src/linkEntity.ts +++ b/sdk/eventhub/event-hubs/src/linkEntity.ts @@ -2,7 +2,13 @@ // Licensed under the MIT License. import uuid from "uuid/v4"; -import { defaultLock, SharedKeyCredential, AccessToken, Constants, TokenType } from "@azure/core-amqp"; +import { + defaultLock, + SharedKeyCredential, + AccessToken, + Constants, + TokenType +} from "@azure/core-amqp"; import { ConnectionContext } from "./connectionContext"; import { Sender, Receiver } from "rhea-promise"; import * as log from "./log"; @@ -124,7 +130,8 @@ export class LinkEntity { // race condition does not happen while creating a shared resource (in this case the // cbs session, since we want to have exactly 1 cbs session per connection). log.link( - "[%s] Acquiring cbs lock: '%s' for creating the cbs session while creating the %s: " + "'%s' with address: '%s'.", + "[%s] Acquiring cbs lock: '%s' for creating the cbs session while creating the %s: " + + "'%s' with address: '%s'.", this._context.connectionId, this._context.cbsSession.cbsLock, this._type, diff --git a/sdk/eventhub/event-hubs/src/managementClient.ts b/sdk/eventhub/event-hubs/src/managementClient.ts index 528182be79f3..e0bbc4ea9758 100644 --- a/sdk/eventhub/event-hubs/src/managementClient.ts +++ b/sdk/eventhub/event-hubs/src/managementClient.ts @@ -2,8 +2,21 @@ // Licensed under the MIT License. import uuid from "uuid/v4"; -import { RequestResponseLink, defaultLock, translate, Constants, SendRequestOptions } from "@azure/core-amqp"; -import { Message, EventContext, SenderEvents, ReceiverEvents, SenderOptions, ReceiverOptions } from "rhea-promise"; +import { + RequestResponseLink, + defaultLock, + translate, + Constants, + SendRequestOptions +} from "@azure/core-amqp"; +import { + Message, + EventContext, + SenderEvents, + ReceiverEvents, + SenderOptions, + ReceiverOptions +} from "rhea-promise"; import { ConnectionContext } from "./connectionContext"; import { LinkEntity } from "./linkEntity"; import * as log from "./log"; @@ -103,7 +116,8 @@ export class ManagementClient extends LinkEntity { constructor(context: ConnectionContext, options?: ManagementClientOptions) { super(context, { address: options && options.address ? options.address : Constants.management, - audience: options && options.audience ? options.audience : context.config.getManagementAudience() + audience: + options && options.audience ? options.audience : context.config.getManagementAudience() }); this._context = context; this.entityPath = context.config.entityPath as string; @@ -232,7 +246,8 @@ export class ManagementClient extends LinkEntity { const id = context.connection.options.id; const ehError = translate(context.session!.error!); log.error( - "[%s] An error occurred on the session for request/response links for " + "$management: %O", + "[%s] An error occurred on the session for request/response links for " + + "$management: %O", id, ehError ); @@ -246,7 +261,11 @@ export class ManagementClient extends LinkEntity { sropt, rxopt ); - this._mgmtReqResLink = await RequestResponseLink.create(this._context.connection, sropt, rxopt); + this._mgmtReqResLink = await RequestResponseLink.create( + this._context.connection, + sropt, + rxopt + ); this._mgmtReqResLink.sender.on(SenderEvents.senderError, (context: EventContext) => { const id = context.connection.options.id; const ehError = translate(context.sender!.error!); @@ -267,7 +286,11 @@ export class ManagementClient extends LinkEntity { } } catch (err) { err = translate(err); - log.error("[%s] An error occured while establishing the $management links: %O", this._context.connectionId, err); + log.error( + "[%s] An error occured while establishing the $management links: %O", + this._context.connectionId, + err + ); throw err; } } @@ -280,10 +303,18 @@ export class ManagementClient extends LinkEntity { */ private async _makeManagementRequest( request: Message, - options?: { retryOptions?: RetryOptions; timeout?: number; abortSignal?: AbortSignalLike; requestName?: string } + options?: { + retryOptions?: RetryOptions; + timeout?: number; + abortSignal?: AbortSignalLike; + requestName?: string; + } ): Promise { try { - log.mgmt("[%s] Acquiring lock to get the management req res link.", this._context.connectionId); + log.mgmt( + "[%s] Acquiring lock to get the management req res link.", + this._context.connectionId + ); await defaultLock.acquire(this.managementLock, () => { return this._init(); }); @@ -297,7 +328,9 @@ export class ManagementClient extends LinkEntity { abortSignal: options.abortSignal, requestName: options.requestName, delayInSeconds: - options.retryOptions && options.retryOptions.retryInterval && options.retryOptions.retryInterval >= 0 + options.retryOptions && + options.retryOptions.retryInterval && + options.retryOptions.retryInterval >= 0 ? options.retryOptions.retryInterval / 1000 : undefined }; diff --git a/sdk/eventhub/event-hubs/src/receiver.ts b/sdk/eventhub/event-hubs/src/receiver.ts index c14c95995f47..726437a282db 100644 --- a/sdk/eventhub/event-hubs/src/receiver.ts +++ b/sdk/eventhub/event-hubs/src/receiver.ts @@ -113,7 +113,11 @@ export class EventHubConsumer { if (this._streamingReceiver && this._streamingReceiver.isOpen()) { return true; } - if (this._batchingReceiver && this._batchingReceiver.isOpen() && this._batchingReceiver.isReceivingMessages) { + if ( + this._batchingReceiver && + this._batchingReceiver.isOpen() && + this._batchingReceiver.isReceivingMessages + ) { return true; } return false; @@ -187,7 +191,9 @@ export class EventHubConsumer { * * @param [options] A set of options to apply to an event iterator. */ - async *getEventIterator(options?: EventIteratorOptions): AsyncIterableIterator { + async *getEventIterator( + options?: EventIteratorOptions + ): AsyncIterableIterator { if (!options) { options = {}; } @@ -195,7 +201,11 @@ export class EventHubConsumer { const maxMessageCount = 1; const maxWaitTimeInSeconds = Constants.defaultOperationTimeoutInSeconds; while (true) { - const currentBatch = await this.receiveBatch(maxMessageCount, maxWaitTimeInSeconds, options.abortSignal); + const currentBatch = await this.receiveBatch( + maxMessageCount, + maxWaitTimeInSeconds, + options.abortSignal + ); if (!currentBatch || !currentBatch.length) { continue; } diff --git a/sdk/eventhub/event-hubs/src/sender.ts b/sdk/eventhub/event-hubs/src/sender.ts index 506c10d76e7d..897632a9f9d9 100644 --- a/sdk/eventhub/event-hubs/src/sender.ts +++ b/sdk/eventhub/event-hubs/src/sender.ts @@ -52,7 +52,9 @@ export class EventHubProducer { this._context = context; this._senderOptions = options || {}; const partitionId = - this._senderOptions.partitionId != undefined ? String(this._senderOptions.partitionId) : undefined; + this._senderOptions.partitionId != undefined + ? String(this._senderOptions.partitionId) + : undefined; this._eventHubSender = EventHubSender.create(this._context, partitionId); } diff --git a/sdk/eventhub/event-hubs/src/streamingReceiver.ts b/sdk/eventhub/event-hubs/src/streamingReceiver.ts index 8887a2cdd716..47064843cd71 100644 --- a/sdk/eventhub/event-hubs/src/streamingReceiver.ts +++ b/sdk/eventhub/event-hubs/src/streamingReceiver.ts @@ -136,7 +136,7 @@ export class StreamingReceiver extends EventHubReceiver { return this._onAbort(); } }) - .catch(err => { + .catch((err) => { this._onError!(err); }); } else { @@ -154,7 +154,8 @@ export class StreamingReceiver extends EventHubReceiver { this._receiver!.setCreditWindow(Constants.defaultPrefetchCount); this._receiver!.addCredit(Constants.defaultPrefetchCount); log.streaming( - "[%s] Receiver '%s', set the prefetch count to 1000 and " + "providing a credit of the same amount.", + "[%s] Receiver '%s', set the prefetch count to 1000 and " + + "providing a credit of the same amount.", this._context.connectionId, this.name ); @@ -179,7 +180,13 @@ export class StreamingReceiver extends EventHubReceiver { eventPosition: EventPosition, options?: EventHubConsumerOptions ): StreamingReceiver { - const sReceiver = new StreamingReceiver(context, consumerGroup, partitionId, eventPosition, options); + const sReceiver = new StreamingReceiver( + context, + consumerGroup, + partitionId, + eventPosition, + options + ); context.receivers[sReceiver.name] = sReceiver; return sReceiver; } diff --git a/sdk/eventhub/event-hubs/test/client.spec.ts b/sdk/eventhub/event-hubs/test/client.spec.ts index ccb2a92112fa..6c6f0c47e2c0 100644 --- a/sdk/eventhub/event-hubs/test/client.spec.ts +++ b/sdk/eventhub/event-hubs/test/client.spec.ts @@ -10,7 +10,13 @@ import chaiString from "chai-string"; chai.use(chaiString); import debugModule from "debug"; const debug = debugModule("azure:event-hubs:client-spec"); -import { EventHubClient, EventPosition, TokenCredential, EventHubProducer, EventHubConsumer } from "../src"; +import { + EventHubClient, + EventPosition, + TokenCredential, + EventHubProducer, + EventHubConsumer +} from "../src"; import { packageJsonInfo } from "../src/util/constants"; import { EnvVarKeys, getEnvVars } from "./utils/testUtils"; import { EnvironmentCredential } from "@azure/identity"; @@ -38,7 +44,10 @@ describe("Create EventHubClient #RunnableInBrowser", function(): void { }); it("creates an EventHubClient from a connection string and an Event Hub path", function(): void { - const client = new EventHubClient("Endpoint=sb://a;SharedAccessKeyName=b;SharedAccessKey=c", "my-event-hub-path"); + const client = new EventHubClient( + "Endpoint=sb://a;SharedAccessKeyName=b;SharedAccessKey=c", + "my-event-hub-path" + ); client.should.be.an.instanceof(EventHubClient); should.equal(client.eventHubName, "my-event-hub-path"); }); @@ -57,7 +66,9 @@ describe("Create EventHubClient #RunnableInBrowser", function(): void { should.equal(client.eventHubName, "my-event-hub-path"); }); - it("creates an EventHubClient from an Azure.Identity credential", async function(): Promise { + it("creates an EventHubClient from an Azure.Identity credential", async function(): Promise< + void + > { should.exist( env[EnvVarKeys.AZURE_CLIENT_ID], "define AZURE_CLIENT_ID in your environment before running integration tests." @@ -70,7 +81,10 @@ describe("Create EventHubClient #RunnableInBrowser", function(): void { env[EnvVarKeys.AZURE_CLIENT_SECRET], "define AZURE_CLIENT_SECRET in your environment before running integration tests." ); - should.exist(env[EnvVarKeys.ENDPOINT], "define ENDPOINT in your environment before running integration tests."); + should.exist( + env[EnvVarKeys.ENDPOINT], + "define ENDPOINT in your environment before running integration tests." + ); const credential = new EnvironmentCredential(); const client = new EventHubClient(env.ENDPOINT, env.EVENTHUB_NAME, credential); @@ -86,14 +100,18 @@ describe("ServiceCommunicationError for non existent namespace", function(): voi let client: EventHubClient; beforeEach(() => { - client = new EventHubClient("Endpoint=sb://a;SharedAccessKeyName=b;SharedAccessKey=c;EntityPath=d"); + client = new EventHubClient( + "Endpoint=sb://a;SharedAccessKeyName=b;SharedAccessKey=c;EntityPath=d" + ); }); afterEach(() => { return client.close(); }); - it("should throw ServiceCommunicationError while getting hub runtime info", async function(): Promise { + it("should throw ServiceCommunicationError while getting hub runtime info", async function(): Promise< + void + > { try { await client.getProperties(); throw new Error("Test failure"); @@ -103,7 +121,9 @@ describe("ServiceCommunicationError for non existent namespace", function(): voi } }); - it("should throw ServiceCommunicationError while getting partition runtime info", async function(): Promise { + it("should throw ServiceCommunicationError while getting partition runtime info", async function(): Promise< + void + > { try { await client.getPartitionProperties("0"); throw new Error("Test failure"); @@ -113,7 +133,9 @@ describe("ServiceCommunicationError for non existent namespace", function(): voi } }); - it("should throw ServiceCommunicationError while creating a sender", async function(): Promise { + it("should throw ServiceCommunicationError while creating a sender", async function(): Promise< + void + > { try { const sender = client.createProducer({ partitionId: "0" }); await sender.send([{ body: "Hello World" }]); @@ -124,9 +146,15 @@ describe("ServiceCommunicationError for non existent namespace", function(): voi } }); - it("should throw ServiceCommunicationError while creating a receiver", async function(): Promise { + it("should throw ServiceCommunicationError while creating a receiver", async function(): Promise< + void + > { try { - const receiver = client.createConsumer(EventHubClient.defaultConsumerGroupName, "0", EventPosition.earliest()); + const receiver = client.createConsumer( + EventHubClient.defaultConsumerGroupName, + "0", + EventPosition.earliest() + ); await receiver.receiveBatch(10, 5); throw new Error("Test failure"); } catch (err) { @@ -151,7 +179,9 @@ describe("MessagingEntityNotFoundError for non existent eventhub", function(): v return client.close(); }); - it("should throw MessagingEntityNotFoundError while getting hub runtime info", async function(): Promise { + it("should throw MessagingEntityNotFoundError while getting hub runtime info", async function(): Promise< + void + > { try { await client.getProperties(); throw new Error("Test failure"); @@ -161,7 +191,9 @@ describe("MessagingEntityNotFoundError for non existent eventhub", function(): v } }); - it("should throw MessagingEntityNotFoundError while getting partition runtime info", async function(): Promise { + it("should throw MessagingEntityNotFoundError while getting partition runtime info", async function(): Promise< + void + > { try { await client.getPartitionProperties("0"); throw new Error("Test failure"); @@ -171,7 +203,9 @@ describe("MessagingEntityNotFoundError for non existent eventhub", function(): v } }); - it("should throw MessagingEntityNotFoundError while creating a sender", async function(): Promise { + it("should throw MessagingEntityNotFoundError while creating a sender", async function(): Promise< + void + > { try { const sender = client.createProducer({ partitionId: "0" }); await sender.send([{ body: "Hello World" }]); @@ -182,9 +216,15 @@ describe("MessagingEntityNotFoundError for non existent eventhub", function(): v } }); - it("should throw MessagingEntityNotFoundError while creating a receiver", async function(): Promise { + it("should throw MessagingEntityNotFoundError while creating a receiver", async function(): Promise< + void + > { try { - const receiver = client.createConsumer(EventHubClient.defaultConsumerGroupName, "0", EventPosition.earliest()); + const receiver = client.createConsumer( + EventHubClient.defaultConsumerGroupName, + "0", + EventPosition.earliest() + ); await receiver.receiveBatch(10, 5); throw new Error("Test failure"); } catch (err) { @@ -213,7 +253,10 @@ describe("User Agent on EventHubClient on #RunnableInBrowser", function(): void }); it("should correctly populate the default user agent", function(done: Mocha.Done): void { - client = new EventHubClient(env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], env[EnvVarKeys.EVENTHUB_NAME]); + client = new EventHubClient( + env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], + env[EnvVarKeys.EVENTHUB_NAME] + ); const packageVersion = packageJsonInfo.version; const properties = client["_context"].connection.options.properties; properties!["user-agent"].should.startWith(`azsdk-js-azureeventhubs/${packageVersion}`); @@ -227,9 +270,13 @@ describe("User Agent on EventHubClient on #RunnableInBrowser", function(): void it("should correctly populate the custom user agent", function(done: Mocha.Done): void { const customua = "/js-event-processor-host=0.2.0"; - client = new EventHubClient(env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], env[EnvVarKeys.EVENTHUB_NAME], { - userAgent: customua - }); + client = new EventHubClient( + env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], + env[EnvVarKeys.EVENTHUB_NAME], + { + userAgent: customua + } + ); const packageVersion = packageJsonInfo.version; const properties = client["_context"].connection.options.properties; properties!["user-agent"].should.startWith(`azsdk-js-azureeventhubs/${packageVersion}`); @@ -260,7 +307,10 @@ describe("Errors after close()", function(): void { env[EnvVarKeys.EVENTHUB_NAME], "define EVENTHUB_NAME in your environment before running integration tests." ); - client = new EventHubClient(env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], env[EnvVarKeys.EVENTHUB_NAME]); + client = new EventHubClient( + env[EnvVarKeys.EVENTHUB_CONNECTION_STRING], + env[EnvVarKeys.EVENTHUB_NAME] + ); const timeNow = Date.now(); @@ -301,7 +351,7 @@ describe("Errors after close()", function(): void { const testMessage = { body: "test" }; let errorSend: string = ""; - await sender.send(testMessage).catch(err => { + await sender.send(testMessage).catch((err) => { errorSend = err.message; }); should.equal(errorSend, expectedErrorMsg, "Expected error not thrown for send()"); @@ -314,18 +364,26 @@ describe("Errors after close()", function(): void { should.equal(receiver.isClosed, true, "Receiver is not marked as closed."); let errorReceiveBatch: string = ""; - await receiver.receiveBatch(1, 1).catch(err => { + await receiver.receiveBatch(1, 1).catch((err) => { errorReceiveBatch = err.message; }); - should.equal(errorReceiveBatch, expectedErrorMsg, "Expected error not thrown for receiveMessages()"); + should.equal( + errorReceiveBatch, + expectedErrorMsg, + "Expected error not thrown for receiveMessages()" + ); let errorReceiveStream: string = ""; try { - receiver.receive(() => Promise.resolve(), e => console.log(e)); + receiver.receive(() => Promise.resolve(), (e) => console.log(e)); } catch (err) { errorReceiveStream = err.message; } - should.equal(errorReceiveStream, expectedErrorMsg, "Expected error not thrown for registerMessageHandler()"); + should.equal( + errorReceiveStream, + expectedErrorMsg, + "Expected error not thrown for registerMessageHandler()" + ); } it("errors after close() on client", async function(): Promise { @@ -345,11 +403,19 @@ describe("Errors after close()", function(): void { let errorNewReceiver: string = ""; try { - receiver = client.createConsumer(EventHubClient.defaultConsumerGroupName, "0", EventPosition.earliest()); + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroupName, + "0", + EventPosition.earliest() + ); } catch (err) { errorNewReceiver = err.message; } - should.equal(errorNewReceiver, expectedErrorMsg, "Expected error not thrown for createReceiver()"); + should.equal( + errorNewReceiver, + expectedErrorMsg, + "Expected error not thrown for createReceiver()" + ); let errorGetPartitionIds: string = ""; try { @@ -357,7 +423,11 @@ describe("Errors after close()", function(): void { } catch (err) { errorGetPartitionIds = err.message; } - should.equal(errorGetPartitionIds, expectedErrorMsg, "Expected error not thrown for getPartitionIds()"); + should.equal( + errorGetPartitionIds, + expectedErrorMsg, + "Expected error not thrown for getPartitionIds()" + ); let errorGetPartitionProperties: string = ""; try { @@ -377,7 +447,11 @@ describe("Errors after close()", function(): void { } catch (err) { errorGetProperties = err.message; } - should.equal(errorGetProperties, expectedErrorMsg, "Expected error not thrown for getProperties()"); + should.equal( + errorGetProperties, + expectedErrorMsg, + "Expected error not thrown for getProperties()" + ); }); it("errors after close() on sender", async function(): Promise { diff --git a/sdk/eventhub/event-hubs/test/eventPosition.spec.ts b/sdk/eventhub/event-hubs/test/eventPosition.spec.ts index d6230750a744..1ef793289ce6 100644 --- a/sdk/eventhub/event-hubs/test/eventPosition.spec.ts +++ b/sdk/eventhub/event-hubs/test/eventPosition.spec.ts @@ -79,7 +79,9 @@ describe("EventPosition #RunnableInBrowser", function(): void { try { EventPosition.fromOffset(""); } catch (err) { - err.message.should.match(/'offset' is a required parameter and must be a non-empty string.*/gi); + err.message.should.match( + /'offset' is a required parameter and must be a non-empty string.*/gi + ); } done(); }); diff --git a/sdk/eventhub/event-hubs/test/eventdata.spec.ts b/sdk/eventhub/event-hubs/test/eventdata.spec.ts index 26a24914dcff..154a10ba3b61 100644 --- a/sdk/eventhub/event-hubs/test/eventdata.spec.ts +++ b/sdk/eventhub/event-hubs/test/eventdata.spec.ts @@ -47,7 +47,9 @@ describe("EventData #RunnableInBrowser", function(): void { describe("properties", function(): void { it("enqueuedTimeUtc gets the enqueued time from system properties", function(): void { const testEventData = fromAmqpMessage(testMessage); - testEventData.enqueuedTimeUtc!.getTime().should.equal(testAnnotations["x-opt-enqueued-time"]); + testEventData + .enqueuedTimeUtc!.getTime() + .should.equal(testAnnotations["x-opt-enqueued-time"]); }); it("offset gets the offset from system properties", function(): void { diff --git a/sdk/eventhub/event-hubs/test/hubruntime.spec.ts b/sdk/eventhub/event-hubs/test/hubruntime.spec.ts index e927ca812b66..b69aace16f2a 100644 --- a/sdk/eventhub/event-hubs/test/hubruntime.spec.ts +++ b/sdk/eventhub/event-hubs/test/hubruntime.spec.ts @@ -101,7 +101,9 @@ describe("RuntimeInformation #RunnableInBrowser", function(): void { } }); - it("gets the partition runtime information with partitionId as a string", async function(): Promise { + it("gets the partition runtime information with partitionId as a string", async function(): Promise< + void + > { client = new EventHubClient(service.connectionString, service.path); const partitionRuntimeInfo = await client.getPartitionProperties("0"); debug(partitionRuntimeInfo); @@ -112,7 +114,9 @@ describe("RuntimeInformation #RunnableInBrowser", function(): void { should.exist(partitionRuntimeInfo.lastEnqueuedOffset); }); - it("gets the partition runtime information with partitionId as a number", async function(): Promise { + it("gets the partition runtime information with partitionId as a number", async function(): Promise< + void + > { client = new EventHubClient(service.connectionString, service.path); const partitionRuntimeInfo = await client.getPartitionProperties(0 as any); debug(partitionRuntimeInfo); diff --git a/sdk/eventhub/event-hubs/test/iothub.spec.ts b/sdk/eventhub/event-hubs/test/iothub.spec.ts index 79561c1ee381..3813823b4971 100644 --- a/sdk/eventhub/event-hubs/test/iothub.spec.ts +++ b/sdk/eventhub/event-hubs/test/iothub.spec.ts @@ -42,7 +42,11 @@ describe("EventHub Client with iothub connection string ", function(): void { it("should be able to receive messages from the event hub", async function(): Promise { client = await EventHubClient.createFromIotHubConnectionString(service.connectionString!); - const receiver = client.createConsumer(EventHubClient.defaultConsumerGroupName, "0", EventPosition.earliest()); + const receiver = client.createConsumer( + EventHubClient.defaultConsumerGroupName, + "0", + EventPosition.earliest() + ); const datas = await receiver.receiveBatch(15, 10); debug(">>>> Received events from partition %s, %O", "0", datas); }); diff --git a/sdk/eventhub/event-hubs/test/misc.spec.ts b/sdk/eventhub/event-hubs/test/misc.spec.ts index 895dc5f5f354..0ddabd7e0423 100644 --- a/sdk/eventhub/event-hubs/test/misc.spec.ts +++ b/sdk/eventhub/event-hubs/test/misc.spec.ts @@ -38,7 +38,9 @@ describe("Misc tests #RunnableInBrowser", function(): void { await client.close(); }); - it("should be able to send and receive a large message correctly", async function(): Promise { + it("should be able to send and receive a large message correctly", async function(): Promise< + void + > { const bodysize = 220 * 1024; const partitionId = hubInfo.partitionIds[0]; const msgString = "A".repeat(220 * 1024); @@ -68,7 +70,9 @@ describe("Misc tests #RunnableInBrowser", function(): void { should.not.exist((data[0].properties || {}).message_id); }); - it("should be able to send and receive a JSON object as a message correctly", async function(): Promise { + it("should be able to send and receive a JSON object as a message correctly", async function(): Promise< + void + > { const partitionId = hubInfo.partitionIds[0]; const msgBody = { id: "123-456-789", @@ -105,7 +109,9 @@ describe("Misc tests #RunnableInBrowser", function(): void { should.not.exist((data[0].properties || {}).message_id); }); - it("should be able to send and receive an array as a message correctly", async function(): Promise { + it("should be able to send and receive an array as a message correctly", async function(): Promise< + void + > { const partitionId = hubInfo.partitionIds[0]; const msgBody = [ { @@ -166,7 +172,9 @@ describe("Misc tests #RunnableInBrowser", function(): void { should.not.exist((data[0].properties || {}).message_id); }); - it("should be able to send and receive batched messages correctly ", async function(): Promise { + it("should be able to send and receive batched messages correctly ", async function(): Promise< + void + > { try { const partitionId = hubInfo.partitionIds[0]; const offset = (await client.getPartitionProperties(partitionId)).lastEnqueuedOffset; @@ -201,7 +209,9 @@ describe("Misc tests #RunnableInBrowser", function(): void { } }); - it("should be able to send and receive batched messages as JSON objects correctly ", async function(): Promise { + it("should be able to send and receive batched messages as JSON objects correctly ", async function(): Promise< + void + > { try { const partitionId = hubInfo.partitionIds[0]; const offset = (await client.getPartitionProperties(partitionId)).lastEnqueuedOffset; @@ -254,7 +264,9 @@ describe("Misc tests #RunnableInBrowser", function(): void { } }); - it("should consistently send messages with partitionkey to a partitionId", async function(): Promise { + it("should consistently send messages with partitionkey to a partitionId", async function(): Promise< + void + > { const msgToSendCount = 50; const partitionOffsets: any = {}; debug("Discovering end of stream on each partition."); @@ -271,7 +283,9 @@ describe("Misc tests #RunnableInBrowser", function(): void { for (let i = 0; i < msgToSendCount; i++) { const partitionKey = getRandomInt(10); const sender = client.createProducer(); - await sender.send([{ body: "Hello EventHub " + i }], { partitionKey: partitionKey.toString() }); + await sender.send([{ body: "Hello EventHub " + i }], { + partitionKey: partitionKey.toString() + }); } debug("Starting to receive all messages from each partition."); const partitionMap: any = {}; diff --git a/sdk/eventhub/event-hubs/test/packageInfo.spec.ts b/sdk/eventhub/event-hubs/test/packageInfo.spec.ts index c42bc831c256..93c8c485e211 100644 --- a/sdk/eventhub/event-hubs/test/packageInfo.spec.ts +++ b/sdk/eventhub/event-hubs/test/packageInfo.spec.ts @@ -18,7 +18,11 @@ describe("Ensure package name and version are consistent in SDK and package.json const name = packageJsonContents.name; const version = packageJsonContents.version; - should.equal(packageJsonInfo.name, name, `${name} from package.json is not same as 'name' used in constants.ts`); + should.equal( + packageJsonInfo.name, + name, + `${name} from package.json is not same as 'name' used in constants.ts` + ); should.equal( packageJsonInfo.version, version, diff --git a/sdk/eventhub/event-hubs/test/receiver.spec.ts b/sdk/eventhub/event-hubs/test/receiver.spec.ts index 910974bbf7bc..5321f5301c2f 100644 --- a/sdk/eventhub/event-hubs/test/receiver.spec.ts +++ b/sdk/eventhub/event-hubs/test/receiver.spec.ts @@ -99,7 +99,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { // await receiver.close(); // }); - it("'from last enqueued sequence number' should receive messages correctly", async function(): Promise { + it("'from last enqueued sequence number' should receive messages correctly", async function(): Promise< + void + > { const partitionId = partitionIds[0]; const partitionInfo = await client.getPartitionProperties(partitionId); debug("Creating a receiver with last enqueued sequence number"); @@ -109,7 +111,10 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { EventPosition.fromSequenceNumber(partitionInfo.lastEnqueuedSequenceNumber) ); const data = await receiver.receiveBatch(10, 10); - data.length.should.equal(0, "Unexpected message received when using EventPosition.fromSequenceNumber()"); + data.length.should.equal( + 0, + "Unexpected message received when using EventPosition.fromSequenceNumber()" + ); const events: EventData[] = []; for (let i = 0; i < 10; i++) { const ed: EventData = { @@ -125,7 +130,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { await receiver.close(); }); - it("'after a particular offset' should receive messages correctly", async function(): Promise { + it("'after a particular offset' should receive messages correctly", async function(): Promise< + void + > { const partitionId = partitionIds[0]; const pInfo = await client.getPartitionProperties(partitionId); debug(`Creating new receiver with last enqueued offset: "${pInfo.lastEnqueuedOffset}".`); @@ -139,7 +146,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } }; await client.createProducer({ partitionId: partitionId }).send([ed]); - debug("Sent the new message after creating the receiver. We should only receive this message."); + debug( + "Sent the new message after creating the receiver. We should only receive this message." + ); receiver = client.createConsumer( EventHubClient.defaultConsumerGroupName, partitionId, @@ -192,7 +201,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { data2.length.should.equal(0, "Unexpected message received"); }); - it("'from a particular enqueued time' should receive messages correctly", async function(): Promise { + it("'from a particular enqueued time' should receive messages correctly", async function(): Promise< + void + > { const partitionId = partitionIds[0]; const pInfo = await client.getPartitionProperties(partitionId); debug(`Creating new receiver with last enqueued time: "${pInfo.lastEnqueuedTimeUtc}".`); @@ -207,7 +218,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } }; await client.createProducer({ partitionId: partitionId }).send([ed]); - debug("Sent the new message after creating the receiver. We should only receive this message."); + debug( + "Sent the new message after creating the receiver. We should only receive this message." + ); receiver = client.createConsumer( EventHubClient.defaultConsumerGroupName, @@ -220,7 +233,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { data[0].properties!.stamp.should.equal(uid); }); - it("'after the particular sequence number' should receive messages correctly", async function(): Promise { + it("'after the particular sequence number' should receive messages correctly", async function(): Promise< + void + > { const partitionId = partitionIds[0]; const pInfo = await client.getPartitionProperties(partitionId); // send a new message. We should only receive this new message. @@ -235,7 +250,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { debug( "Sent the new message after getting the partition runtime information. We should only receive this message." ); - debug(`Creating new receiver with last enqueued sequence number: "${pInfo.lastEnqueuedSequenceNumber}".`); + debug( + `Creating new receiver with last enqueued sequence number: "${pInfo.lastEnqueuedSequenceNumber}".` + ); breceiver = BatchingReceiver.create( (client as any)._context, EventHubClient.defaultConsumerGroupName, @@ -274,7 +291,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { }; await client.createProducer({ partitionId: partitionId }).send([ed2]); debug(`Sent message 2 with stamp: ${uid}.`); - debug(`Creating new receiver with last sequence number: "${pInfo.lastEnqueuedSequenceNumber}".`); + debug( + `Creating new receiver with last sequence number: "${pInfo.lastEnqueuedSequenceNumber}".` + ); breceiver = BatchingReceiver.create( (client as any)._context, EventHubClient.defaultConsumerGroupName, @@ -314,7 +333,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { let shouldStop = false; const events: ReceivedEventData[] = []; - const handler = receiver!.receive(event => { + const handler = receiver!.receive((event) => { if (!shouldStop) { events.push(event); shouldStop = true; @@ -354,7 +373,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { const abortSignal = AbortController.timeout(0); const handler = receiver!.receive( - event => { + (event) => { if (!shouldStop) { events.push(event); shouldStop = true; @@ -375,7 +394,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } }); - it("should support being cancelled from an already aborted AbortSignal", async function(): Promise { + it("should support being cancelled from an already aborted AbortSignal", async function(): Promise< + void + > { const partitionId = partitionIds[0]; const time = Date.now(); // send a message that can be received @@ -402,7 +423,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { abortController.abort(); const handler = receiver!.receive( - event => { + (event) => { if (!shouldStop) { events.push(event); shouldStop = true; @@ -450,7 +471,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { abortController.abort(); const handler = receiver!.receive( - event => { + (event) => { if (!shouldStop) { events.push(event); shouldStop = true; @@ -473,7 +494,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { await new Promise((resolve, reject) => { let shouldStop = false; - const handler = receiver!.receive(event => { + const handler = receiver!.receive((event) => { if (!shouldStop) { events.push(event); shouldStop = true; @@ -493,7 +514,11 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { describe("in batch mode #RunnableInBrowser", function(): void { it("should receive messages correctly", async function(): Promise { const partitionId = partitionIds[0]; - receiver = client.createConsumer(EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.earliest()); + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroupName, + partitionId, + EventPosition.earliest() + ); const data = await receiver.receiveBatch(5, 10); debug("received messages: ", data); data.length.should.equal(5, "Failed to receive five expected messages"); @@ -527,7 +552,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } }); - it("should support being cancelled from an already aborted AbortSignal", async function(): Promise { + it("should support being cancelled from an already aborted AbortSignal", async function(): Promise< + void + > { const partitionId = partitionIds[0]; const time = Date.now(); // send a message that can be received @@ -556,7 +583,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } }); - it("should support cancellation when a connection already exists", async function(): Promise { + it("should support cancellation when a connection already exists", async function(): Promise< + void + > { const partitionId = partitionIds[0]; const time = Date.now(); // send a message that can be received @@ -661,7 +690,11 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { it("should properly drain if broken out of", async function(): Promise { const partitionId = partitionIds[0]; - receiver = client.createConsumer(EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.latest()); + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroupName, + partitionId, + EventPosition.latest() + ); const eventIterator = receiver.getEventIterator(); const eventPromise = eventIterator.next(); @@ -682,7 +715,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { try { await sender.send( - expectedBodies.map(body => { + expectedBodies.map((body) => { return { body }; }) ); @@ -708,7 +741,11 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { it("should not return undefined if no messages are found", async function(): Promise { const partitionId = partitionIds[0]; - receiver = client.createConsumer(EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.latest()); + receiver = client.createConsumer( + EventHubClient.defaultConsumerGroupName, + partitionId, + EventPosition.latest() + ); const eventIterator = receiver.getEventIterator({ // behind the scenes, eventIterator will wait up to 60 seconds before returning. // set timeout to 70 seconds to give the iterator a chance to yield a value. @@ -761,7 +798,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } }); - it("should support being cancelled from an already aborted AbortSignal", async function(): Promise { + it("should support being cancelled from an already aborted AbortSignal", async function(): Promise< + void + > { const partitionId = partitionIds[0]; const time = Date.now(); // send a message that can be received @@ -793,7 +832,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } }); - it("should support creating a new iterator after a cancellation", async function(): Promise { + it("should support creating a new iterator after a cancellation", async function(): Promise< + void + > { const partitionId = partitionIds[0]; const time = Date.now(); // send a message that can be received @@ -873,14 +914,14 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } // switch to batcher - (await receiver.receiveBatch(5)).forEach(event => { + (await receiver.receiveBatch(5)).forEach((event) => { data.push(event); }); // switch to handler let handlerReceivedCount = 0; const handler = receiver.receive( - async event => { + async (event) => { data.push(event); if (++handlerReceivedCount >= 5) { @@ -894,11 +935,14 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } } - data.length.should.equal(messageCount, `Failed to receive ${messageCount} expected messages`); + data.length.should.equal( + messageCount, + `Failed to receive ${messageCount} expected messages` + ); try { data - .map(event => event.sequenceNumber) + .map((event) => event.sequenceNumber) .reduce((prev, current) => { // each sequenceNumber should only be incremented by 1 current.should.equal(prev + 1, `Invalid sequence of events`); @@ -911,7 +955,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } } }, - err => { + (err) => { throw err; } ); @@ -1001,7 +1045,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { let ownerLevelRcvr2: ReceiveHandler; const onError = (error: MessagingError | Error) => { debug(">>>> ownerLevel Receiver 1", error); - throw new Error("An Error should not have happened for ownerLevel receiver with ownerLevel value 2."); + throw new Error( + "An Error should not have happened for ownerLevel receiver with ownerLevel value 2." + ); }; const onMsg = (data: ReceivedEventData) => { debug(">>>> ownerLevel Receiver 1", data); @@ -1030,7 +1076,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { debug("Successfully closed the ownerLevel receivers 1 and 2."); done(); }) - .catch(err => { + .catch((err) => { debug("error occurred while closing the receivers... ", err); done(); }); @@ -1069,7 +1115,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { debug("Successfully closed the ownerLevel receivers 1 and 2."); done(); }) - .catch(err => { + .catch((err) => { debug("error occurred while closing the receivers... ", err); done(); }); @@ -1090,7 +1136,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { setTimeout(() => { const onError2 = (error: MessagingError | Error) => { debug(">>>> ownerLevel Receiver 2", error); - throw new Error("An Error should not have happened for ownerLevel receiver with ownerLevel value 2."); + throw new Error( + "An Error should not have happened for ownerLevel receiver with ownerLevel value 2." + ); }; const onMsg2 = (data: ReceivedEventData) => { debug(">>>> ownerLevel Receiver 2", data); @@ -1114,7 +1162,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { let nonownerLevelRcvr: ReceiveHandler; const onerr1 = (error: MessagingError | Error) => { debug(">>>> ownerLevel Receiver ", error); - throw new Error("An Error should not have happened for ownerLevel receiver with ownerLevel value 1."); + throw new Error( + "An Error should not have happened for ownerLevel receiver with ownerLevel value 1." + ); }; const onmsg1 = (data: ReceivedEventData) => { debug(">>>> ownerLevel Receiver ", data); @@ -1142,7 +1192,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { debug("Successfully closed the nonownerLevel and ownerLevel receivers"); done(); }) - .catch(err => { + .catch((err) => { debug("error occurred while closing the receivers... ", err); done(); }); @@ -1178,7 +1228,7 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { debug("Successfully closed the nonownerLevel and ownerLevel receivers"); done(); }) - .catch(err => { + .catch((err) => { debug("error occurred while closing the receivers... ", err); done(); }); @@ -1186,7 +1236,11 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { const onmsg3 = (data: ReceivedEventData) => { debug(">>>> non ownerLevel Receiver", data); }; - receiver1 = client.createConsumer(EventHubClient.defaultConsumerGroupName, partitionId, EventPosition.latest()); + receiver1 = client.createConsumer( + EventHubClient.defaultConsumerGroupName, + partitionId, + EventPosition.latest() + ); nonownerLevelRcvr = receiver1.receive(onmsg3, onerr3); debug("Created non ownerLevel receiver %s", nonownerLevelRcvr); setTimeout(() => { @@ -1247,7 +1301,9 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { } catch (err) { debug("Receiver received an error", err); should.exist(err); - err.message.should.match(/.*Invalid EventHub address. It must be either of the following.*/gi); + err.message.should.match( + /.*Invalid EventHub address. It must be either of the following.*/gi + ); } }); @@ -1316,8 +1372,11 @@ describe("EventHub Receiver #RunnableInBrowser", function(): void { debug("Successfully closed all the receivers.."); done(); }) - .catch(err => { - debug("An error occurred while closing the receiver in the 'QuotaExceededError' test.", err); + .catch((err) => { + debug( + "An error occurred while closing the receiver in the 'QuotaExceededError' test.", + err + ); done(); }); }; diff --git a/sdk/eventhub/event-hubs/test/sender.spec.ts b/sdk/eventhub/event-hubs/test/sender.spec.ts index 07df9beb1e8d..be938fc705ad 100644 --- a/sdk/eventhub/event-hubs/test/sender.spec.ts +++ b/sdk/eventhub/event-hubs/test/sender.spec.ts @@ -45,7 +45,9 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { await client.createProducer().send(data, { partitionKey: "1" }); }); - it("with partition key as a number should be sent successfully.", async function(): Promise { + it("with partition key as a number should be sent successfully.", async function(): Promise< + void + > { const data: EventData = { body: "Hello World 1" }; await client.createProducer().send(data, { partitionKey: 1 as any }); }); @@ -71,7 +73,9 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { } }); - it("should support being cancelled from an already aborted AbortSignal", async function(): Promise { + it("should support being cancelled from an already aborted AbortSignal", async function(): Promise< + void + > { const abortController = new AbortController(); abortController.abort(); @@ -85,7 +89,9 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { } }); - it("should throw when partitionId and partitionKey are provided", async function(): Promise { + it("should throw when partitionId and partitionKey are provided", async function(): Promise< + void + > { try { const data: EventData = { body: "Sender paritition id and partition key" }; await client.createProducer({ partitionId: "0" }).send(data, { partitionKey: "1" }); @@ -153,7 +159,9 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { } }); - it("should support being cancelled from an already aborted AbortSignal", async function(): Promise { + it("should support being cancelled from an already aborted AbortSignal", async function(): Promise< + void + > { const abortController = new AbortController(); abortController.abort(); @@ -171,7 +179,9 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { } }); - it("should throw when partitionId and partitionKey are provided", async function(): Promise { + it("should throw when partitionId and partitionKey are provided", async function(): Promise< + void + > { try { const data: EventData[] = [ { @@ -221,17 +231,23 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { } await Promise.all(promises); }); - it("should be sent successfully in parallel by multiple senders", async function(): Promise { + it("should be sent successfully in parallel by multiple senders", async function(): Promise< + void + > { const senderCount = 3; try { const promises = []; for (let i = 0; i < senderCount; i++) { if (i === 0) { debug(">>>>> Sending a message to partition %d", i); - promises.push(client.createProducer({ partitionId: "0" }).send([{ body: `Hello World ${i}` }])); + promises.push( + client.createProducer({ partitionId: "0" }).send([{ body: `Hello World ${i}` }]) + ); } else if (i === 1) { debug(">>>>> Sending a message to partition %d", i); - promises.push(client.createProducer({ partitionId: "1" }).send([{ body: `Hello World ${i}` }])); + promises.push( + client.createProducer({ partitionId: "1" }).send([{ body: `Hello World ${i}` }]) + ); } else { debug(">>>>> Sending a message to the hub when i == %d", i); promises.push(client.createProducer().send([{ body: `Hello World ${i}` }])); @@ -292,7 +308,9 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { it(`"${id}" should throw an error`, async function(): Promise { try { debug("Created sender and will be sending a message to partition id ...", id); - await client.createProducer({ partitionId: id as any }).send([{ body: "Hello world!" }]); + await client + .createProducer({ partitionId: id as any }) + .send([{ body: "Hello world!" }]); debug("sent the message."); throw new Error("Test failure"); } catch (err) { @@ -310,13 +328,17 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { it(`"${id}" should throw an invalid EventHub address error`, async function(): Promise { try { debug("Created sender and will be sending a message to partition id ...", id); - await client.createProducer({ partitionId: id as any }).send([{ body: "Hello world!" }]); + await client + .createProducer({ partitionId: id as any }) + .send([{ body: "Hello world!" }]); debug("sent the message."); throw new Error("Test failure"); } catch (err) { debug(`>>>> Received invalid EventHub address error for partition id "${id}" - `, err); should.exist(err); - err.message.should.match(/.*Invalid EventHub address. It must be either of the following.*/gi); + err.message.should.match( + /.*Invalid EventHub address. It must be either of the following.*/gi + ); } }); }); diff --git a/sdk/eventhub/event-hubs/test/utils/testUtils.ts b/sdk/eventhub/event-hubs/test/utils/testUtils.ts index 8c65b34a2260..466ff904515a 100644 --- a/sdk/eventhub/event-hubs/test/utils/testUtils.ts +++ b/sdk/eventhub/event-hubs/test/utils/testUtils.ts @@ -4,7 +4,8 @@ import * as dotenv from "dotenv"; dotenv.config(); -export const isNode = !!process && !!process.version && !!process.versions && !!process.versions.node; +export const isNode = + !!process && !!process.version && !!process.versions && !!process.versions.node; export enum EnvVarKeys { EVENTHUB_CONNECTION_STRING = "EVENTHUB_CONNECTION_STRING", From 6d4c34ae5f7a642e05241f66d0bcb323de90f5c7 Mon Sep 17 00:00:00 2001 From: Harsha Nalluru Date: Wed, 10 Jul 2019 20:23:01 -0700 Subject: [PATCH 261/289] [Storage] Rollback query-string version from V6 to V5 in the storage (#4257) --- common/config/rush/pnpm-lock.yaml | 57 ++++++++++++++------------ sdk/storage/storage-blob/package.json | 3 +- sdk/storage/storage-file/package.json | 3 +- sdk/storage/storage-queue/package.json | 3 +- 4 files changed, 36 insertions(+), 30 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index a3378d356c5e..70624d4b41fc 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -48,6 +48,7 @@ dependencies: '@types/node': 8.10.50 '@types/priorityqueuejs': 1.0.1 '@types/qs': 6.5.3 + '@types/query-string': 6.2.0 '@types/semaphore': 1.1.0 '@types/semver': 5.5.0 '@types/sinon': 5.0.7 @@ -124,7 +125,7 @@ dependencies: mocha-multi: 1.1.0 mocha-multi-reporters: 1.1.7 moment: 2.24.0 - ms-rest: 2.5.2 + ms-rest: 2.5.3 ms-rest-azure: 2.6.0 nise: 1.5.0 nock: 10.0.6 @@ -138,7 +139,7 @@ dependencies: promise: 8.0.3 puppeteer: 1.18.1 qs: 6.7.0 - query-string: 6.8.1 + query-string: 5.1.1 requirejs: 2.3.6 rhea: 1.0.8 rhea-promise: 0.1.15 @@ -652,6 +653,10 @@ packages: dev: false resolution: integrity: sha512-Jugo5V/1bS0fRhy2z8+cUAHEyWOATaz4rbyLVvcFs7+dXp5HfwpEwzF1Q11bB10ApUqHf+yTauxI0UXQDwGrbA== + /@types/query-string/6.2.0: + dev: false + resolution: + integrity: sha512-dnYqKg7eZ+t7ZhCuBtwLxjqON8yXr27hiu3zXfPqxfJSbWUZNwwISE0BJUxghlcKsk4lZSp7bdFSJBJVNWBfmA== /@types/range-parser/1.2.3: dev: false resolution: @@ -6397,13 +6402,13 @@ packages: adal-node: 0.1.28 async: 2.6.0 moment: 2.24.0 - ms-rest: 2.5.2 + ms-rest: 2.5.3 request: 2.88.0 uuid: 3.3.2 dev: false resolution: integrity: sha512-J6386a9krZ4VtU7CRt+Ypgo9RGf8+d3gjMBkH7zbkM4zzkhbbMOYiPRaZ+bHZcfihkKLlktTgA6rjshTjF329A== - /ms-rest/2.5.2: + /ms-rest/2.5.3: dependencies: duplexer: 0.1.1 is-buffer: 1.1.6 @@ -6415,7 +6420,7 @@ packages: uuid: 3.3.2 dev: false resolution: - integrity: sha512-ZyaAu0IX/TwgjwLbWHRmnzhsoE4IimGVhVW96gI5pHtSjqpnt6woPK/SzMjJTGeF4k1m1p5A5N/vKshyVUGC2Q== + integrity: sha512-p0CnzrTzEkS8UTEwgCqT2O5YVK9E8KGBBlJVm3hFtMZvf0dmncKYXWFPyUa4PAsfBL7h4jfu39tOIFTu6exntg== /ms/2.0.0: dev: false resolution: @@ -7408,16 +7413,16 @@ packages: node: '>=0.6' resolution: integrity: sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - /query-string/6.8.1: + /query-string/5.1.1: dependencies: decode-uri-component: 0.2.0 - split-on-first: 1.1.0 - strict-uri-encode: 2.0.0 + object-assign: 4.1.1 + strict-uri-encode: 1.1.0 dev: false engines: - node: '>=6' + node: '>=0.10.0' resolution: - integrity: sha512-g6y0Lbq10a5pPQpjlFuojfMfV1Pd2Jw9h75ypiYPPia3Gcq2rgkKiIwbkS6JxH7c5f5u/B/sB+d13PU+g1eu4Q== + integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== /querystring-es3/0.2.1: dev: false engines: @@ -8513,12 +8518,6 @@ packages: dev: false resolution: integrity: sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== - /split-on-first/1.1.0: - dev: false - engines: - node: '>=6' - resolution: - integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== /split-string/3.1.0: dependencies: extend-shallow: 3.0.2 @@ -8628,12 +8627,12 @@ packages: node: '>=6.0' resolution: integrity: sha512-iGVaMcyF5PcUY0cPbW3xFQUXnr9O4RZXNBBjhuLZgrjLO4XCLLGfx4T2sGqygSeylUjwgWRsnNbT9aV0Zb8AYw== - /strict-uri-encode/2.0.0: + /strict-uri-encode/1.1.0: dev: false engines: - node: '>=4' + node: '>=0.10.0' resolution: - integrity: sha1-ucczDHBChi9rFC3CdLvMWGbONUY= + integrity: sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= /string-width/1.0.2: dependencies: code-point-at: 1.1.0 @@ -10720,6 +10719,7 @@ packages: '@types/nise': 1.4.0 '@types/nock': 10.0.3 '@types/node': 8.10.50 + '@types/query-string': 6.2.0 '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 @@ -10758,7 +10758,7 @@ packages: nyc: 14.1.1 prettier: 1.18.2 puppeteer: 1.18.1 - query-string: 6.8.1 + query-string: 5.1.1 rimraf: 2.6.3 rollup: 1.16.7 rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 @@ -10777,7 +10777,7 @@ packages: dev: false name: '@rush-temp/storage-blob' resolution: - integrity: sha512-FWF0lybU1bBKGD4N1ttleRCkCMnGE0mgZwApgHWOTubHF/zzmBOY9OgVhgS7Bk6J+8vcaIUp/jfwAKEmJ0OIgA== + integrity: sha512-GN9dJLmBjN9/yKq4HFq2nJ9sTh+F7bFEhsbZXOreWSYotiyVBo9HbqxjCj9GHlWcyYcQ3JtXt2CEggqmZgV/JA== tarball: 'file:projects/storage-blob.tgz' version: 0.0.0 'file:projects/storage-file.tgz': @@ -10790,6 +10790,7 @@ packages: '@types/nise': 1.4.0 '@types/nock': 10.0.3 '@types/node': 8.10.50 + '@types/query-string': 6.2.0 '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 @@ -10828,7 +10829,7 @@ packages: nyc: 14.1.1 prettier: 1.18.2 puppeteer: 1.18.1 - query-string: 6.8.1 + query-string: 5.1.1 rimraf: 2.6.3 rollup: 1.16.7 rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 @@ -10847,7 +10848,7 @@ packages: dev: false name: '@rush-temp/storage-file' resolution: - integrity: sha512-jVoPzB0EQPblf83PxurtdUXk4DBwoih8HRUSsi3FgVyP0ONWbbgW/yaZYEeMSxwXTNmrzNW4paKXLf/FgOdiJA== + integrity: sha512-IRqfOeXpG7XSL5GrT4zL3mvy2ZzCeCICSmo3Tj6V6h9eEHHnWwqcfd7FZR1sYVvAn+nN4NhFph3ptdrSW1hSmg== tarball: 'file:projects/storage-file.tgz' version: 0.0.0 'file:projects/storage-queue.tgz': @@ -10860,6 +10861,7 @@ packages: '@types/nise': 1.4.0 '@types/nock': 10.0.3 '@types/node': 8.10.50 + '@types/query-string': 6.2.0 '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 @@ -10897,7 +10899,7 @@ packages: nyc: 14.1.1 prettier: 1.18.2 puppeteer: 1.18.1 - query-string: 6.8.1 + query-string: 5.1.1 rimraf: 2.6.3 rollup: 1.16.7 rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 @@ -10916,7 +10918,7 @@ packages: dev: false name: '@rush-temp/storage-queue' resolution: - integrity: sha512-zgZeae63buyC+CgrzepqiRIz3HoDzWLT95FZ36cnoxg70L/MNxZ3lA0Hh4f7LudMDiSaVWw0WiMOci4cnu0ZAg== + integrity: sha512-mWuY5OZImZ9GGy7h2otuIgonajJJHiVfWXPqWB5mD/YArcWtFLqw8ozB3ZaRZrE7FQ6C9xR3jpeHwO3jA9jhlw== tarball: 'file:projects/storage-queue.tgz' version: 0.0.0 'file:projects/template.tgz': @@ -10971,7 +10973,7 @@ packages: debug: 3.2.6 is-buffer: 2.0.3 jssha: 2.3.1 - ms-rest: 2.5.2 + ms-rest: 2.5.3 ms-rest-azure: 2.6.0 rhea: 1.0.8 rimraf: 2.6.3 @@ -11036,6 +11038,7 @@ specifiers: '@types/node': ^8.0.0 '@types/priorityqueuejs': ^1.0.1 '@types/qs': ~6.5.3 + '@types/query-string': 6.2.0 '@types/semaphore': ^1.1.0 '@types/semver': ^5.5.0 '@types/sinon': ^5.0.5 @@ -11126,7 +11129,7 @@ specifiers: promise: ^8.0.3 puppeteer: ^1.11.0 qs: 6.7.0 - query-string: ^6.5.0 + query-string: ^5.0.0 requirejs: ^2.3.5 rhea: ^1.0.4 rhea-promise: ^0.1.15 diff --git a/sdk/storage/storage-blob/package.json b/sdk/storage/storage-blob/package.json index 0b797fd1ed5b..c44a09792b0f 100644 --- a/sdk/storage/storage-blob/package.json +++ b/sdk/storage/storage-blob/package.json @@ -86,6 +86,7 @@ "@types/nise": "^1.4.0", "@types/nock": "^10.0.1", "@types/node": "^8.0.0", + "@types/query-string": "6.2.0", "@typescript-eslint/eslint-plugin": "^1.11.0", "@typescript-eslint/parser": "^1.11.0", "assert": "^1.4.1", @@ -123,7 +124,7 @@ "nyc": "^14.0.0", "prettier": "^1.16.4", "puppeteer": "^1.11.0", - "query-string": "^6.5.0", + "query-string": "^5.0.0", "rimraf": "^2.6.2", "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", diff --git a/sdk/storage/storage-file/package.json b/sdk/storage/storage-file/package.json index 4584a713f657..d330f5eede30 100644 --- a/sdk/storage/storage-file/package.json +++ b/sdk/storage/storage-file/package.json @@ -86,6 +86,7 @@ "@types/nise": "^1.4.0", "@types/nock": "^10.0.1", "@types/node": "^8.0.0", + "@types/query-string": "6.2.0", "@typescript-eslint/eslint-plugin": "^1.11.0", "@typescript-eslint/parser": "^1.11.0", "assert": "^1.4.1", @@ -123,7 +124,7 @@ "nyc": "^14.0.0", "prettier": "^1.16.4", "puppeteer": "^1.11.0", - "query-string": "^6.5.0", + "query-string": "^5.0.0", "rimraf": "^2.6.2", "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", diff --git a/sdk/storage/storage-queue/package.json b/sdk/storage/storage-queue/package.json index 16417d4febae..d17b30139914 100644 --- a/sdk/storage/storage-queue/package.json +++ b/sdk/storage/storage-queue/package.json @@ -84,6 +84,7 @@ "@types/nise": "^1.4.0", "@types/nock": "^10.0.1", "@types/node": "^8.0.0", + "@types/query-string": "6.2.0", "@typescript-eslint/eslint-plugin": "^1.11.0", "@typescript-eslint/parser": "^1.11.0", "assert": "^1.4.1", @@ -121,7 +122,7 @@ "nyc": "^14.0.0", "prettier": "^1.16.4", "puppeteer": "^1.11.0", - "query-string": "^6.5.0", + "query-string": "^5.0.0", "rimraf": "^2.6.2", "rollup": "^1.16.3", "rollup-plugin-commonjs": "^10.0.0", From 59eec86f2b6223dd5954de20c2cd8383c08f538b Mon Sep 17 00:00:00 2001 From: Daniel Jurek Date: Thu, 11 Jul 2019 08:54:53 -0700 Subject: [PATCH 262/289] add CODEOWNERS (#4259) --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 000000000000..ec0dab9ffce3 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +# See for instructions on this file https://help.github.com/articles/about-codeowners/ From 489fd5649c207a6eda98b854e5cf6417fe314455 Mon Sep 17 00:00:00 2001 From: ramya0820 <45977823+ramya0820@users.noreply.github.com> Date: Thu, 11 Jul 2019 11:55:02 -0700 Subject: [PATCH 263/289] [core-amqp] Implement exponential retry mechanism (#4175) --- sdk/core/core-amqp/src/index.ts | 2 +- sdk/core/core-amqp/src/retry.ts | 69 ++- sdk/core/core-amqp/src/util/constants.ts | 5 +- sdk/core/core-amqp/test/retry.spec.ts | 680 ++++++++++++----------- 4 files changed, 422 insertions(+), 334 deletions(-) diff --git a/sdk/core/core-amqp/src/index.ts b/sdk/core/core-amqp/src/index.ts index 970f9dae200b..11a730922e77 100644 --- a/sdk/core/core-amqp/src/index.ts +++ b/sdk/core/core-amqp/src/index.ts @@ -4,7 +4,7 @@ /// export { RequestResponseLink, SendRequestOptions } from "./requestResponseLink"; -export { retry, RetryConfig, RetryOperationType } from "./retry"; +export { retry, RetryConfig, RetryOperationType, RetryPolicy } from "./retry"; export { DataTransformer, DefaultDataTransformer } from "./dataTransformer"; export { TokenType } from "./auth/token"; export { AccessToken, TokenCredential, isTokenCredential } from "@azure/core-auth"; diff --git a/sdk/core/core-amqp/src/retry.ts b/sdk/core/core-amqp/src/retry.ts index debb67e7a6b7..adec1cb2bd34 100644 --- a/sdk/core/core-amqp/src/retry.ts +++ b/sdk/core/core-amqp/src/retry.ts @@ -4,7 +4,12 @@ import { translate, MessagingError } from "./errors"; import { delay, isNode } from "./util/utils"; import * as log from "./log"; -import { defaultMaxRetries, defaultDelayBetweenRetriesInSeconds } from "./util/constants"; +import { + defaultMaxRetries, + defaultDelayBetweenOperationRetriesInSeconds, + defaultMaxDelayForExponentialRetryInMs, + defaultMinDelayForExponentialRetryInMs +} from "./util/constants"; import { resolve } from "dns"; /** @@ -25,6 +30,15 @@ function isDelivery(obj: any): boolean { return result; } +/** + * Describes the RetryPolicy type + * @enum RetryPolicy + */ +export enum RetryPolicy { + ExponentialRetryPolicy, + LinearRetryPolicy +} + /** * Describes the retry operation type. * @enum RetryOperationType @@ -66,7 +80,9 @@ export interface RetryConfig { maxRetries?: number; /** * @property {number} [delayInSeconds] Amount of time to wait in seconds before making the - * next attempt. Default: 15. + * next attempt. Default: 30. + * When `retryPolicy` option is set to `ExponentialRetryPolicy`, \ + * this is used to compute the exponentially increasing delays between retries. */ delayInSeconds?: number; /** @@ -74,6 +90,20 @@ export interface RetryConfig { * Used to check network connectivity. */ connectionHost?: string; + /** + * @property {RetryPolicy} [retryPolicy] Denotes which retry policy to apply. Default is `LinearRetryPolicy` + */ + retryPolicy?: RetryPolicy; + /** + * @property {number} [maxExponentialRetryDelayInMs] Denotes the maximum delay between retries + * that the retry attempts will be capped at. Applicable only when performing exponential retry. + */ + maxExponentialRetryDelayInMs?: number; + /** + * @property {number} [minExponentialRetryDelayInMs] Denotes the minimum delay between retries + * to use. Applicable only when performing exponential retry. + */ + minExponentialRetryDelayInMs?: number; } /** @@ -115,10 +145,13 @@ async function checkNetworkConnection(host: string): Promise { * with a retryable error. The number of additional attempts is governed by the `maxRetries` property provided * on the `RetryConfig` argument. * - * The retries when made are done so linearly on the given operation for a specified number of times, - * with a specified delay in between each retry. + * If `retryPolicy` option is set to `LinearRetryPolicy`, then the retries when made are done so linearly on the + * given operation for a specified number of times, with a specified delay in between each retry. + * + * If `retryPolicy` option is set to `ExponentialRetryPolicy`, then the delay between retries is adjusted to increase + * exponentially with each attempt using back-off factor of power 2. * - * @param {RetryConfig} config Parameters to configure retry operation. + * @param {RetryConfig} config Parameters to configure retry operation * * @return {Promise} Promise. */ @@ -128,7 +161,13 @@ export async function retry(config: RetryConfig): Promise { config.maxRetries = defaultMaxRetries; } if (config.delayInSeconds == undefined || config.delayInSeconds < 0) { - config.delayInSeconds = defaultDelayBetweenRetriesInSeconds; + config.delayInSeconds = defaultDelayBetweenOperationRetriesInSeconds; + } + if (config.maxExponentialRetryDelayInMs == undefined || config.maxExponentialRetryDelayInMs < 0) { + config.maxExponentialRetryDelayInMs = defaultMaxDelayForExponentialRetryInMs; + } + if (config.minExponentialRetryDelayInMs == undefined || config.minExponentialRetryDelayInMs < 0) { + config.minExponentialRetryDelayInMs = defaultMinDelayForExponentialRetryInMs; } let lastError: MessagingError | undefined; let result: any; @@ -174,14 +213,28 @@ export async function retry(config: RetryConfig): Promise { i, err ); + let targetDelayInMs = config.delayInSeconds; + if (config.retryPolicy === RetryPolicy.ExponentialRetryPolicy) { + let incrementDelta = Math.pow(2, i) - 1; + const boundedRandDelta = + config.delayInSeconds * 0.8 + + Math.floor(Math.random() * (config.delayInSeconds * 1.2 - config.delayInSeconds * 0.8)); + incrementDelta *= boundedRandDelta; + + targetDelayInMs = Math.min( + config.minExponentialRetryDelayInMs + incrementDelta, + config.maxExponentialRetryDelayInMs + ); + } + if (lastError && lastError.retryable) { log.error( "[%s] Sleeping for %d seconds for '%s'.", config.connectionId, - config.delayInSeconds, + targetDelayInMs / 1000, config.operationType ); - await delay(config.delayInSeconds * 1000); + await delay(targetDelayInMs); continue; } else { break; diff --git a/sdk/core/core-amqp/src/util/constants.ts b/sdk/core/core-amqp/src/util/constants.ts index 41339362bccb..f1992189b189 100644 --- a/sdk/core/core-amqp/src/util/constants.ts +++ b/sdk/core/core-amqp/src/util/constants.ts @@ -75,8 +75,9 @@ export const aadTokenValidityMarginSeconds = 5; export const connectionReconnectDelay = 300; export const defaultMaxRetries = 3; export const defaultMaxRetriesForConnection = 150; -export const defaultDelayBetweenOperationRetriesInSeconds = 5; -export const defaultDelayBetweenRetriesInSeconds = 15; +export const defaultDelayBetweenOperationRetriesInSeconds = 30; +export const defaultMaxDelayForExponentialRetryInMs = 1000 * 90; +export const defaultMinDelayForExponentialRetryInMs = 1000 * 3; export const receiverSettleMode = "receiver-settle-mode"; export const dispositionStatus = "disposition-status"; export const fromSequenceNumber = "from-sequence-number"; diff --git a/sdk/core/core-amqp/test/retry.spec.ts b/sdk/core/core-amqp/test/retry.spec.ts index 7b28526c6fd0..a289e1be37fe 100644 --- a/sdk/core/core-amqp/test/retry.spec.ts +++ b/sdk/core/core-amqp/test/retry.spec.ts @@ -8,7 +8,8 @@ import { RetryOperationType, Constants, delay, - MessagingError + MessagingError, + RetryPolicy } from "../src"; import * as chai from "chai"; import debugModule from "debug"; @@ -17,347 +18,380 @@ const should = chai.should(); import * as dotenv from "dotenv"; dotenv.config(); -describe("retry function", function() { - it("should succeed if the operation succeeds.", async function() { - let counter = 0; - try { - const config: RetryConfig = { - operation: async () => { - debug("counter: %d", ++counter); - await delay(200); - return { - code: 200, - description: "OK" - }; - }, - connectionId: "connection-1", - operationType: RetryOperationType.cbsAuth - }; - const result = await retry(config); - result.code.should.equal(200); - result.description.should.equal("OK"); - counter.should.equal(1); - } catch (err) { - debug("An error occurred in a test that should have succeeded: %O", err); - throw err; - } - }); - - it("should fail if the operation returns a non retryable error", async function() { - let counter = 0; - try { - const config: RetryConfig = { - operation: async () => { - debug("counter: %d", ++counter); - await delay(200); - throw translate({ - condition: "amqp:precondition-failed", - description: "I would like to fail, not retryable." - }); - }, - connectionId: "connection-1", - operationType: RetryOperationType.management - }; - await retry(config); - } catch (err) { - should.exist(err); - should.equal(true, err instanceof MessagingError); - err.message.should.equal("I would like to fail, not retryable."); - counter.should.equal(1); - } - }); +[RetryPolicy.ExponentialRetryPolicy, RetryPolicy.LinearRetryPolicy].forEach( + () => + function(retryPolicy: RetryPolicy): void { + const retryPolicyName = + retryPolicy === RetryPolicy.ExponentialRetryPolicy ? "Exponential" : "Linear"; + describe(`retry function for ${retryPolicyName}`, function() { + it("should succeed if the operation succeeds.", async function() { + let counter = 0; + try { + const config: RetryConfig = { + operation: async () => { + debug("counter: %d", ++counter); + await delay(200); + return { + code: 200, + description: "OK" + }; + }, + connectionId: "connection-1", + operationType: RetryOperationType.cbsAuth, + delayInSeconds: 15, + minExponentialRetryDelayInMs: 0, + retryPolicy: retryPolicy + }; + const result = await retry(config); + result.code.should.equal(200); + result.description.should.equal("OK"); + counter.should.equal(1); + } catch (err) { + debug("An error occurred in a test that should have succeeded: %O", err); + throw err; + } + }); - it("should succeed if the operation initially fails with a retryable error and then succeeds.", async function() { - let counter = 0; - try { - const config: RetryConfig = { - operation: async () => { - await delay(200); - debug("counter: %d", ++counter); - if (counter == 1) { - throw translate({ - condition: "com.microsoft:server-busy", - description: "The server is busy right now. Retry later." - }); - } else { - return { - code: 200, - description: "OK" + it("should fail if the operation returns a non retryable error", async function() { + let counter = 0; + try { + const config: RetryConfig = { + operation: async () => { + debug("counter: %d", ++counter); + await delay(200); + throw translate({ + condition: "amqp:precondition-failed", + description: "I would like to fail, not retryable." + }); + }, + connectionId: "connection-1", + operationType: RetryOperationType.management, + delayInSeconds: 15, + minExponentialRetryDelayInMs: 0, + retryPolicy: retryPolicy }; + await retry(config); + } catch (err) { + should.exist(err); + should.equal(true, err instanceof MessagingError); + err.message.should.equal("I would like to fail, not retryable."); + counter.should.equal(1); } - }, - connectionId: "connection-1", - operationType: RetryOperationType.receiverLink, - maxRetries: 2, - delayInSeconds: 0.5 - }; - const result = await retry(config); - result.code.should.equal(200); - result.description.should.equal("OK"); - counter.should.equal(2); - } catch (err) { - debug("An error occurred in a test that should have succeeded: %O", err); - throw err; - } - }); + }); - it("should succeed in the last attempt.", async function() { - let counter = 0; - try { - const config: RetryConfig = { - operation: async () => { - await delay(200); - debug("counter: %d", ++counter); - if (counter == 1) { - const e = new MessagingError("A retryable error."); - e.retryable = true; - throw e; - } else if (counter == 2) { - const e = new MessagingError("A retryable error."); - e.retryable = true; - throw e; - } else { - return { - code: 200, - description: "OK" + it("should succeed if the operation initially fails with a retryable error and then succeeds.", async function() { + let counter = 0; + try { + const config: RetryConfig = { + operation: async () => { + await delay(200); + debug("counter: %d", ++counter); + if (counter == 1) { + throw translate({ + condition: "com.microsoft:server-busy", + description: "The server is busy right now. Retry later." + }); + } else { + return { + code: 200, + description: "OK" + }; + } + }, + connectionId: "connection-1", + operationType: RetryOperationType.receiverLink, + maxRetries: 2, + delayInSeconds: 0.5, + minExponentialRetryDelayInMs: 0, + retryPolicy: retryPolicy }; + const result = await retry(config); + result.code.should.equal(200); + result.description.should.equal("OK"); + counter.should.equal(2); + } catch (err) { + debug("An error occurred in a test that should have succeeded: %O", err); + throw err; } - }, - connectionId: "connection-1", - operationType: RetryOperationType.senderLink, - maxRetries: 2, - delayInSeconds: 0.5 - }; - const result = await retry(config); - result.code.should.equal(200); - result.description.should.equal("OK"); - counter.should.equal(3); - } catch (err) { - debug("An error occurred in a test that should have succeeded: %O", err); - throw err; - } - }); + }); - it("should fail if the last attempt return a non-retryable error", async function() { - let counter = 0; - try { - const config: RetryConfig = { - operation: async () => { - await delay(200); - debug("counter: %d", ++counter); - if (counter == 1) { - const e = new MessagingError("A retryable error."); - e.retryable = true; - throw e; - } else if (counter == 2) { - const e = new MessagingError("A retryable error."); - e.retryable = true; - throw e; - } else { - const x: any = { - condition: "com.microsoft:message-lock-lost", - description: "I would like to fail." + it("should succeed in the last attempt.", async function() { + let counter = 0; + try { + const config: RetryConfig = { + operation: async () => { + await delay(200); + debug("counter: %d", ++counter); + if (counter == 1) { + const e = new MessagingError("A retryable error."); + e.retryable = true; + throw e; + } else if (counter == 2) { + const e = new MessagingError("A retryable error."); + e.retryable = true; + throw e; + } else { + return { + code: 200, + description: "OK" + }; + } + }, + connectionId: "connection-1", + operationType: RetryOperationType.senderLink, + maxRetries: 2, + delayInSeconds: 0.5, + minExponentialRetryDelayInMs: 0, + retryPolicy: retryPolicy }; - throw x; + const result = await retry(config); + result.code.should.equal(200); + result.description.should.equal("OK"); + counter.should.equal(3); + } catch (err) { + debug("An error occurred in a test that should have succeeded: %O", err); + throw err; } - }, - connectionId: "connection-1", - operationType: RetryOperationType.sendMessage, - maxRetries: 2, - delayInSeconds: 0.5 - }; - await retry(config); - } catch (err) { - should.exist(err); - should.equal(true, err instanceof MessagingError); - err.message.should.equal("I would like to fail."); - counter.should.equal(3); - } - }); + }); - it("should fail if all attempts return a retryable error", async function() { - let counter = 0; - try { - const config: RetryConfig = { - operation: async () => { - debug("counter: %d", ++counter); - await delay(200); - const e = new MessagingError("I would always like to fail, keep retrying."); - e.retryable = true; - throw e; - }, - connectionId: "connection-1", - operationType: RetryOperationType.session, - maxRetries: 4, - delayInSeconds: 0.5 - }; - await retry(config); - } catch (err) { - should.exist(err); - should.equal(true, err instanceof MessagingError); - err.message.should.equal("I would always like to fail, keep retrying."); - counter.should.equal(5); - } - }); + it("should fail if the last attempt return a non-retryable error", async function() { + let counter = 0; + try { + const config: RetryConfig = { + operation: async () => { + await delay(200); + debug("counter: %d", ++counter); + if (counter == 1) { + const e = new MessagingError("A retryable error."); + e.retryable = true; + throw e; + } else if (counter == 2) { + const e = new MessagingError("A retryable error."); + e.retryable = true; + throw e; + } else { + const x: any = { + condition: "com.microsoft:message-lock-lost", + description: "I would like to fail." + }; + throw x; + } + }, + connectionId: "connection-1", + operationType: RetryOperationType.sendMessage, + maxRetries: 2, + delayInSeconds: 0.5, + minExponentialRetryDelayInMs: 0, + retryPolicy: retryPolicy + }; + await retry(config); + } catch (err) { + should.exist(err); + should.equal(true, err instanceof MessagingError); + err.message.should.equal("I would like to fail."); + counter.should.equal(3); + } + }); - describe("with config.maxRetries set to Infinity", function() { - it("should succeed if the operation succeeds.", async function() { - let counter = 0; - try { - const config: RetryConfig = { - maxRetries: Infinity, - operation: async () => { - debug("counter: %d", ++counter); - await delay(200); - return { - code: 200, - description: "OK" + it("should fail if all attempts return a retryable error", async function() { + let counter = 0; + try { + const config: RetryConfig = { + operation: async () => { + debug("counter: %d", ++counter); + await delay(200); + const e = new MessagingError("I would always like to fail, keep retrying."); + e.retryable = true; + throw e; + }, + connectionId: "connection-1", + operationType: RetryOperationType.session, + maxRetries: 4, + delayInSeconds: 0.5, + minExponentialRetryDelayInMs: 0, + retryPolicy: retryPolicy }; - }, - connectionId: "connection-1", - operationType: RetryOperationType.cbsAuth - }; - const result = await retry(config); - result.code.should.equal(200); - result.description.should.equal("OK"); - counter.should.equal(1); - } catch (err) { - debug("An error occurred in a test that should have succeeded: %O", err); - throw err; - } - }); + await retry(config); + } catch (err) { + should.exist(err); + should.equal(true, err instanceof MessagingError); + err.message.should.equal("I would always like to fail, keep retrying."); + counter.should.equal(5); + } + }); + + describe("with config.maxRetries set to Infinity", function() { + it("should succeed if the operation succeeds.", async function() { + let counter = 0; + try { + const config: RetryConfig = { + maxRetries: Infinity, + operation: async () => { + debug("counter: %d", ++counter); + await delay(200); + return { + code: 200, + description: "OK" + }; + }, + connectionId: "connection-1", + operationType: RetryOperationType.cbsAuth, + delayInSeconds: 0.5, + minExponentialRetryDelayInMs: 0, + retryPolicy: retryPolicy + }; + const result = await retry(config); + result.code.should.equal(200); + result.description.should.equal("OK"); + counter.should.equal(1); + } catch (err) { + debug("An error occurred in a test that should have succeeded: %O", err); + throw err; + } + }); - it("should fail if the operation returns a non retryable error", async function() { - let counter = 0; - try { - const config: RetryConfig = { - operation: async () => { - debug("counter: %d", ++counter); - await delay(200); - throw translate({ - condition: "amqp:precondition-failed", - description: "I would like to fail, not retryable." - }); - }, - connectionId: "connection-1", - operationType: RetryOperationType.management, - maxRetries: Infinity - }; - await retry(config); - } catch (err) { - should.exist(err); - should.equal(true, err instanceof MessagingError); - err.message.should.equal("I would like to fail, not retryable."); - counter.should.equal(1); - } - }); + it("should fail if the operation returns a non retryable error", async function() { + let counter = 0; + try { + const config: RetryConfig = { + operation: async () => { + debug("counter: %d", ++counter); + await delay(200); + throw translate({ + condition: "amqp:precondition-failed", + description: "I would like to fail, not retryable." + }); + }, + connectionId: "connection-1", + operationType: RetryOperationType.management, + maxRetries: Infinity, + delayInSeconds: 0.5, + minExponentialRetryDelayInMs: 0, + retryPolicy: retryPolicy + }; + await retry(config); + } catch (err) { + should.exist(err); + should.equal(true, err instanceof MessagingError); + err.message.should.equal("I would like to fail, not retryable."); + counter.should.equal(1); + } + }); - it("should succeed if the operation initially fails with a retryable error and then succeeds.", async function() { - let counter = 0; - try { - const config: RetryConfig = { - operation: async () => { - await delay(200); - debug("counter: %d", ++counter); - if (counter == 1) { - throw translate({ - condition: "com.microsoft:server-busy", - description: "The server is busy right now. Retry later." - }); - } else { - return { - code: 200, - description: "OK" + it("should succeed if the operation initially fails with a retryable error and then succeeds.", async function() { + let counter = 0; + try { + const config: RetryConfig = { + operation: async () => { + await delay(200); + debug("counter: %d", ++counter); + if (counter == 1) { + throw translate({ + condition: "com.microsoft:server-busy", + description: "The server is busy right now. Retry later." + }); + } else { + return { + code: 200, + description: "OK" + }; + } + }, + connectionId: "connection-1", + operationType: RetryOperationType.receiverLink, + maxRetries: Infinity, + delayInSeconds: 0.5, + minExponentialRetryDelayInMs: 0, + retryPolicy: retryPolicy }; + const result = await retry(config); + result.code.should.equal(200); + result.description.should.equal("OK"); + counter.should.equal(2); + } catch (err) { + debug("An error occurred in a test that should have succeeded: %O", err); + throw err; } - }, - connectionId: "connection-1", - operationType: RetryOperationType.receiverLink, - maxRetries: Infinity, - delayInSeconds: 0.5 - }; - const result = await retry(config); - result.code.should.equal(200); - result.description.should.equal("OK"); - counter.should.equal(2); - } catch (err) { - debug("An error occurred in a test that should have succeeded: %O", err); - throw err; - } - }); + }); - it("should succeed in the last attempt.", async function() { - let counter = 0; - try { - const config: RetryConfig = { - operation: async () => { - await delay(200); - debug("counter: %d", ++counter); - if (counter == 1) { - const e = new MessagingError("A retryable error."); - e.retryable = true; - throw e; - } else if (counter == 2) { - const e = new MessagingError("A retryable error."); - e.retryable = true; - throw e; - } else { - return { - code: 200, - description: "OK" + it("should succeed in the last attempt.", async function() { + let counter = 0; + try { + const config: RetryConfig = { + operation: async () => { + await delay(200); + debug("counter: %d", ++counter); + if (counter == 1) { + const e = new MessagingError("A retryable error."); + e.retryable = true; + throw e; + } else if (counter == 2) { + const e = new MessagingError("A retryable error."); + e.retryable = true; + throw e; + } else { + return { + code: 200, + description: "OK" + }; + } + }, + connectionId: "connection-1", + operationType: RetryOperationType.senderLink, + maxRetries: Infinity, + delayInSeconds: 0.5, + minExponentialRetryDelayInMs: 0, + retryPolicy: retryPolicy }; + const result = await retry(config); + result.code.should.equal(200); + result.description.should.equal("OK"); + counter.should.equal(3); + } catch (err) { + debug("An error occurred in a test that should have succeeded: %O", err); + throw err; } - }, - connectionId: "connection-1", - operationType: RetryOperationType.senderLink, - maxRetries: Infinity, - delayInSeconds: 0.5 - }; - const result = await retry(config); - result.code.should.equal(200); - result.description.should.equal("OK"); - counter.should.equal(3); - } catch (err) { - debug("An error occurred in a test that should have succeeded: %O", err); - throw err; - } - }); + }); - it("should fail if the last attempt return a non-retryable error", async function() { - let counter = 0; - try { - const config: RetryConfig = { - operation: async () => { - await delay(200); - debug("counter: %d", ++counter); - if (counter == 1) { - const e = new MessagingError("A retryable error."); - e.retryable = true; - throw e; - } else if (counter == 2) { - const e = new MessagingError("A retryable error."); - e.retryable = true; - throw e; - } else { - const x: any = { - condition: "com.microsoft:message-lock-lost", - description: "I would like to fail." + it("should fail if the last attempt return a non-retryable error", async function() { + let counter = 0; + try { + const config: RetryConfig = { + operation: async () => { + await delay(200); + debug("counter: %d", ++counter); + if (counter == 1) { + const e = new MessagingError("A retryable error."); + e.retryable = true; + throw e; + } else if (counter == 2) { + const e = new MessagingError("A retryable error."); + e.retryable = true; + throw e; + } else { + const x: any = { + condition: "com.microsoft:message-lock-lost", + description: "I would like to fail." + }; + throw x; + } + }, + connectionId: "connection-1", + operationType: RetryOperationType.sendMessage, + maxRetries: Constants.defaultMaxRetriesForConnection, + delayInSeconds: 0.001, + minExponentialRetryDelayInMs: 0, + retryPolicy: retryPolicy }; - throw x; + await retry(config); + } catch (err) { + should.exist(err); + should.equal(true, err instanceof MessagingError); + err.message.should.equal("I would like to fail."); + counter.should.equal(3); } - }, - connectionId: "connection-1", - operationType: RetryOperationType.sendMessage, - maxRetries: Constants.defaultMaxRetriesForConnection, - delayInSeconds: 0.0001 - }; - await retry(config); - } catch (err) { - should.exist(err); - should.equal(true, err instanceof MessagingError); - err.message.should.equal("I would like to fail."); - counter.should.equal(3); - } - }); - }); -}); + }); + }); + }); + } +); From 40fe1affb3ef272094684065dd1751185721ba66 Mon Sep 17 00:00:00 2001 From: ramya0820 <45977823+ramya0820@users.noreply.github.com> Date: Thu, 11 Jul 2019 15:56:24 -0700 Subject: [PATCH 264/289] [Event Hubs] Introduce operationTimeoutInMs (#4239) --- sdk/eventhub/event-hubs/src/eventHubClient.ts | 16 ++++++++++++++++ sdk/eventhub/event-hubs/src/eventHubSender.ts | 11 +++-------- sdk/eventhub/event-hubs/src/managementClient.ts | 10 +++------- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/sdk/eventhub/event-hubs/src/eventHubClient.ts b/sdk/eventhub/event-hubs/src/eventHubClient.ts index 6218d4fd287a..60b2828d01da 100644 --- a/sdk/eventhub/event-hubs/src/eventHubClient.ts +++ b/sdk/eventhub/event-hubs/src/eventHubClient.ts @@ -35,6 +35,11 @@ export interface RetryOptions { * Number of milliseconds to wait between attempts. */ retryInterval?: number; + /** + * Number of milliseconds to wait before declaring that current attempt has timed out which will trigger a retry + * A minimum value of 60 seconds will be used if a value not greater than this is provided. + */ + timeoutInMs?: number; // /** // * The maximum value the `retryInterval` gets incremented exponentially between retries. // * Not applicable, when `isExponential` is set to `false`. @@ -47,6 +52,17 @@ export interface RetryOptions { // isExponential?: boolean; } +export function getRetryAttemptTimeoutInMs(retryOptions: RetryOptions | undefined): number { + const timeoutInMs = + retryOptions == undefined || + typeof retryOptions.timeoutInMs !== "number" || + !isFinite(retryOptions.timeoutInMs) || + retryOptions.timeoutInMs < Constants.defaultOperationTimeoutInSeconds * 1000 + ? Constants.defaultOperationTimeoutInSeconds * 1000 + : retryOptions.timeoutInMs; + return timeoutInMs; +} + /** * The set of options to configure the behavior of an `EventHubProducer`. * These can be specified when creating the producer via the `createProducer` method. diff --git a/sdk/eventhub/event-hubs/src/eventHubSender.ts b/sdk/eventhub/event-hubs/src/eventHubSender.ts index 4b78bb798cd1..de34ad5db3e7 100644 --- a/sdk/eventhub/event-hubs/src/eventHubSender.ts +++ b/sdk/eventhub/event-hubs/src/eventHubSender.ts @@ -30,6 +30,7 @@ import { ConnectionContext } from "./connectionContext"; import { LinkEntity } from "./linkEntity"; import { SendOptions, EventHubProducerOptions } from "./eventHubClient"; import { AbortSignalLike, AbortError } from "@azure/abort-controller"; +import { getRetryAttemptTimeoutInMs } from "./eventHubClient"; /** * @ignore @@ -464,12 +465,9 @@ export class EventHubSender extends LinkEntity { private _trySendBatch( message: AmqpMessage | Buffer, tag: any, - options?: SendOptions & EventHubProducerOptions, + options: SendOptions & EventHubProducerOptions = {}, format?: number ): Promise { - if (!options) { - options = {}; - } const abortSignal: AbortSignalLike | undefined = options.abortSignal; const sendEventPromise = () => @@ -610,10 +608,7 @@ export class EventHubSender extends LinkEntity { this._sender!.on(SenderEvents.rejected, onRejected); this._sender!.on(SenderEvents.modified, onModified); this._sender!.on(SenderEvents.released, onReleased); - waitTimer = setTimeout( - actionAfterTimeout, - Constants.defaultOperationTimeoutInSeconds * 1000 - ); + waitTimer = setTimeout(actionAfterTimeout, getRetryAttemptTimeoutInMs(options.retryOptions)); const delivery = this._sender!.send(message, tag, 0x80013700); log.sender( "[%s] Sender '%s', sent message with delivery id: %d and tag: %s", diff --git a/sdk/eventhub/event-hubs/src/managementClient.ts b/sdk/eventhub/event-hubs/src/managementClient.ts index e0bbc4ea9758..26e615be262b 100644 --- a/sdk/eventhub/event-hubs/src/managementClient.ts +++ b/sdk/eventhub/event-hubs/src/managementClient.ts @@ -20,7 +20,7 @@ import { import { ConnectionContext } from "./connectionContext"; import { LinkEntity } from "./linkEntity"; import * as log from "./log"; -import { RetryOptions } from "./eventHubClient"; +import { RetryOptions, getRetryAttemptTimeoutInMs } from "./eventHubClient"; import { AbortSignalLike } from "@azure/abort-controller"; /** * Describes the runtime information of an Event Hub. @@ -303,12 +303,7 @@ export class ManagementClient extends LinkEntity { */ private async _makeManagementRequest( request: Message, - options?: { - retryOptions?: RetryOptions; - timeout?: number; - abortSignal?: AbortSignalLike; - requestName?: string; - } + options?: { retryOptions?: RetryOptions; abortSignal?: AbortSignalLike; requestName?: string } ): Promise { try { log.mgmt( @@ -327,6 +322,7 @@ export class ManagementClient extends LinkEntity { maxRetries: options.retryOptions && options.retryOptions.maxRetries, abortSignal: options.abortSignal, requestName: options.requestName, + timeoutInSeconds: getRetryAttemptTimeoutInMs(options.retryOptions) / 1000, delayInSeconds: options.retryOptions && options.retryOptions.retryInterval && From 399d87a57e7e720869877372c03886fc982709ee Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Thu, 11 Jul 2019 16:14:53 -0700 Subject: [PATCH 265/289] Update rush and pnpm to latest (#4270) - Temporarily allow warnings in build and unit-test commands (will be fixed in future commits) - Default was changed from true to false in Rush 5.9.0 - https://github.com/microsoft/web-build-tools/blob/master/apps/rush/CHANGELOG.md#590 - Fixes #3435 --- common/config/rush/command-line.json | 14 +- common/config/rush/pnpm-lock.yaml | 600 ++++----------------------- rush.json | 4 +- 3 files changed, 85 insertions(+), 533 deletions(-) diff --git a/common/config/rush/command-line.json b/common/config/rush/command-line.json index deb68e06d8ed..4409c37444dd 100644 --- a/common/config/rush/command-line.json +++ b/common/config/rush/command-line.json @@ -18,6 +18,17 @@ "summary": "Audit projects", "enableParallelism": true }, + { + "commandKind": "bulk", + "name": "build", + "summary": "Build all projects that haven't been built, or have changed since they were last built", + "description": "This command is similar to \"rush rebuild\", except that \"rush build\" performs...", + "safeForSimultaneousRushProcesses": false, + "enableParallelism": true, + "ignoreDependencyOrder": false, + "ignoreMissingScript": false, + "allowWarningsInSuccessfulBuild": true + }, { "commandKind": "bulk", "name": "build:test", @@ -115,7 +126,8 @@ "name": "unit-test", "summary": "Execute unit tests defined in projects", "description": "Execute tests which don't need to connect to any external service.", - "enableParallelism": true + "enableParallelism": true, + "allowWarningsInSuccessfulBuild": true }, // Optional Scripts diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 70624d4b41fc..d1c816a6cdbd 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -1,12 +1,12 @@ dependencies: - '@azure/amqp-common': 1.0.0-preview.6 + '@azure/amqp-common': 1.0.0-preview.6_rhea-promise@0.1.15 '@azure/arm-servicebus': 0.1.0 '@azure/event-hubs': 1.0.8 '@azure/logger-js': 1.3.2 '@azure/ms-rest-azure-js': 1.3.8 '@azure/ms-rest-js': 1.8.13 '@azure/ms-rest-nodeauth': 0.9.3 - '@microsoft/api-extractor': 7.3.0 + '@microsoft/api-extractor': 7.3.1 '@rush-temp/abort-controller': 'file:projects/abort-controller.tgz' '@rush-temp/core-amqp': 'file:projects/core-amqp.tgz' '@rush-temp/core-arm': 'file:projects/core-arm.tgz' @@ -61,19 +61,19 @@ dependencies: '@types/ws': 6.0.1 '@types/xml2js': 0.4.4 '@types/yargs': 11.1.2 - '@typescript-eslint/eslint-plugin': 1.11.0 - '@typescript-eslint/parser': 1.11.0 + '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 + '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 abortcontroller-polyfill: 1.3.0 assert: 1.5.0 async-lock: 1.2.0 axios: 0.19.0 - axios-mock-adapter: 1.17.0 + axios-mock-adapter: 1.17.0_axios@0.19.0 azure-storage: 2.10.3 binary-search-bounds: 2.0.3 buffer: 5.2.1 chai: 4.2.0 - chai-as-promised: 7.1.1 - chai-string: 1.5.0 + chai-as-promised: 7.1.1_chai@4.2.0 + chai-string: 1.5.0_chai@4.2.0 create-hmac: 1.1.7 cross-env: 5.2.0 death: 1.1.0 @@ -82,9 +82,9 @@ dependencies: dotenv: 7.0.0 es6-promise: 4.2.8 eslint: 5.16.0 - eslint-config-prettier: 4.3.0 - eslint-detailed-reporter: 0.8.0 - eslint-plugin-no-null: 1.0.2 + eslint-config-prettier: 4.3.0_eslint@5.16.0 + eslint-detailed-reporter: 0.8.0_eslint@5.16.0 + eslint-plugin-no-null: 1.0.2_eslint@5.16.0 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 events: 3.0.0 @@ -101,28 +101,28 @@ dependencies: jssha: 2.3.1 jws: 3.2.2 karma: 4.1.0 - karma-chai: 0.1.0 + karma-chai: 0.1.0_chai@4.2.0+karma@4.1.0 karma-chrome-launcher: 2.2.0 karma-coverage: 1.1.2 - karma-edge-launcher: 0.4.2 + karma-edge-launcher: 0.4.2_karma@4.1.0 karma-env-preprocessor: 0.1.1 karma-firefox-launcher: 1.1.0 - karma-ie-launcher: 1.0.0 - karma-json-preprocessor: 0.3.3 + karma-ie-launcher: 1.0.0_karma@4.1.0 + karma-json-preprocessor: 0.3.3_karma@4.1.0 karma-json-to-file-reporter: 1.0.1 - karma-junit-reporter: 1.2.0 + karma-junit-reporter: 1.2.0_karma@4.1.0 karma-mocha: 1.3.0 - karma-mocha-reporter: 2.2.5 - karma-remap-coverage: 0.1.5 - karma-rollup-preprocessor: 7.0.0 + karma-mocha-reporter: 2.2.5_karma@4.1.0 + karma-remap-coverage: 0.1.5_karma-coverage@1.1.2 + karma-rollup-preprocessor: 7.0.0_rollup@1.16.7 karma-sourcemap-loader: 0.3.7 karma-typescript-es6-transform: 4.1.1 - karma-webpack: 4.0.2 + karma-webpack: 4.0.2_webpack@4.35.3 long: 4.0.0 mocha: 5.2.0 mocha-chrome: 1.1.0 - mocha-junit-reporter: 1.23.0 - mocha-multi: 1.1.0 + mocha-junit-reporter: 1.23.0_mocha@5.2.0 + mocha-multi: 1.1.0_mocha@5.2.0 mocha-multi-reporters: 1.1.7 moment: 2.24.0 ms-rest: 2.5.3 @@ -146,19 +146,19 @@ dependencies: rimraf: 2.6.3 rollup: 1.16.7 rollup-plugin-alias: 1.5.2 - rollup-plugin-commonjs: 10.0.1 + rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 rollup-plugin-inject: 3.0.0 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-plugin-node-resolve: 5.2.0_rollup@1.16.7 rollup-plugin-replace: 2.2.0 rollup-plugin-resolve: 0.0.1-predev.1 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2 - rollup-plugin-terser: 5.1.1 - rollup-plugin-uglify: 6.0.2 - rollup-plugin-visualizer: 2.4.4 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 + rollup-plugin-terser: 5.1.1_rollup@1.16.7 + rollup-plugin-uglify: 6.0.2_rollup@1.16.7 + rollup-plugin-visualizer: 2.4.4_rollup@1.16.7 semaphore: 1.0.5 semver: 5.7.0 shx: 0.3.2 @@ -167,26 +167,26 @@ dependencies: stream-browserify: 2.0.2 stream-http: 2.8.3 tough-cookie: 2.5.0 - ts-loader: 5.4.5 - ts-mocha: 6.0.0 + ts-loader: 5.4.5_typescript@3.5.3 + ts-mocha: 6.0.0_mocha@5.2.0 ts-node: 7.0.1 tslib: 1.10.0 - tslint: 5.18.0 + tslint: 5.18.0_typescript@3.5.3 tunnel: 0.0.6 typescript: 3.5.3 uglify-js: 3.6.0 url: 0.11.0 util: 0.11.1 uuid: 3.3.2 - webpack: 4.35.3 - webpack-cli: 3.3.5 - webpack-dev-middleware: 3.7.0 + webpack: 4.35.3_webpack@4.35.3 + webpack-cli: 3.3.5_webpack@4.35.3 + webpack-dev-middleware: 3.7.0_webpack@4.35.3 ws: 6.2.1 xhr-mock: 2.4.1 xml2js: 0.4.19 yargs: 11.1.0 yarn: 1.16.0 -lockfileVersion: 5 +lockfileVersion: 5.1 packages: /@azure/amqp-common/0.1.9_rhea-promise@0.1.15: dependencies: @@ -202,27 +202,6 @@ packages: rhea-promise: ^0.1.13 resolution: integrity: sha512-B/HFWNbqAjFjhj8x/zlHcpuYtsr92l3ZVArJdumi2kpN2Di/h4g6GIa2JeQEDD+rkLa3oAR6zHKfJbGnybOmvg== - /@azure/amqp-common/1.0.0-preview.6: - dependencies: - '@azure/ms-rest-nodeauth': 0.9.3 - '@types/async-lock': 1.1.1 - '@types/is-buffer': 2.0.0 - async-lock: 1.2.0 - buffer: 5.2.1 - debug: 3.2.6 - events: 3.0.0 - is-buffer: 2.0.3 - jssha: 2.3.1 - process: 0.11.10 - stream-browserify: 2.0.2 - tslib: 1.10.0 - url: 0.11.0 - util: 0.11.1 - dev: false - peerDependencies: - rhea-promise: ^0.1.15 - resolution: - integrity: sha512-5XJZaJGtGoPmLhFx5y0vfCXiAHksoA4fdSnHAfkgEm4krhCW1jt1LH/6aJdUwUTJe+bz6m3Pv0sG/ILG0Vd65g== /@azure/amqp-common/1.0.0-preview.6_rhea-promise@0.1.15: dependencies: '@azure/ms-rest-nodeauth': 0.9.3 @@ -394,7 +373,7 @@ packages: dev: false resolution: integrity: sha512-LYMnA1cB2W3YuCOAFruNvnQBZ64OzEnsHxzcxclBhTcUGag6NrtGnip90AVTvVzFlXDLoT7trvPEenlWflWZFQ== - /@microsoft/api-extractor/7.3.0: + /@microsoft/api-extractor/7.3.1: dependencies: '@microsoft/api-extractor-model': 7.2.0 '@microsoft/node-core-library': 3.13.0 @@ -404,11 +383,11 @@ packages: lodash: 4.17.14 resolve: 1.8.1 source-map: 0.6.1 - typescript: 3.4.5 + typescript: 3.5.3 dev: false hasBin: true resolution: - integrity: sha512-ac4mNPQhha00vVWpjrLoU3lA5HASE4CpvUAbKUXMPHsHu1JIr1E3lZrf47YRtkIJHkoRD180lOSDd8FQIFIuYw== + integrity: sha512-tldZDD8tRRc9d4LKdZbNptB958S5pIsf0Nu8eOEpcxoffM3sofG3O8+RZ2Rm9JpAVeGcxPA3r0hWyQ+srNqs+Q== /@microsoft/node-core-library/3.13.0: dependencies: '@types/fs-extra': 5.0.4 @@ -756,22 +735,6 @@ packages: dev: false resolution: integrity: sha1-LrHQCl5Ow/pYx2r94S4YK2bcXBw= - /@typescript-eslint/eslint-plugin/1.11.0: - dependencies: - '@typescript-eslint/experimental-utils': 1.11.0 - eslint-utils: 1.3.1 - functional-red-black-tree: 1.0.1 - regexpp: 2.0.1 - tsutils: 3.14.0 - dev: false - engines: - node: ^6.14.0 || ^8.10.0 || >=9.10.0 - peerDependencies: - '@typescript-eslint/parser': ^1.9.0 - eslint: ^5.0.0 - typescript: '*' - resolution: - integrity: sha512-mXv9ccCou89C8/4avKHuPB2WkSZyY/XcTQUXd5LFZAcLw1I3mWYVjUu6eS9Ja0QkP/ClolbcW9tb3Ov/pMdcqw== /@typescript-eslint/eslint-plugin/1.11.0_8d1711d609953acbf65aedec42f2b5c5: dependencies: '@typescript-eslint/experimental-utils': 1.11.0_eslint@5.16.0+typescript@3.5.3 @@ -790,18 +753,6 @@ packages: typescript: '*' resolution: integrity: sha512-mXv9ccCou89C8/4avKHuPB2WkSZyY/XcTQUXd5LFZAcLw1I3mWYVjUu6eS9Ja0QkP/ClolbcW9tb3Ov/pMdcqw== - /@typescript-eslint/experimental-utils/1.11.0: - dependencies: - '@typescript-eslint/typescript-estree': 1.11.0 - eslint-scope: 4.0.3 - dev: false - engines: - node: ^6.14.0 || ^8.10.0 || >=9.10.0 - peerDependencies: - eslint: '*' - typescript: '*' - resolution: - integrity: sha512-7LbfaqF6B8oa8cp/315zxKk8FFzosRzzhF8Kn/ZRsRsnpm7Qcu25cR/9RnAQo5utZ2KIWVgaALr+ZmcbG47ruw== /@typescript-eslint/experimental-utils/1.11.0_eslint@5.16.0+typescript@3.5.3: dependencies: '@typescript-eslint/typescript-estree': 1.11.0 @@ -816,20 +767,6 @@ packages: typescript: '*' resolution: integrity: sha512-7LbfaqF6B8oa8cp/315zxKk8FFzosRzzhF8Kn/ZRsRsnpm7Qcu25cR/9RnAQo5utZ2KIWVgaALr+ZmcbG47ruw== - /@typescript-eslint/parser/1.11.0: - dependencies: - '@types/eslint-visitor-keys': 1.0.0 - '@typescript-eslint/experimental-utils': 1.11.0 - '@typescript-eslint/typescript-estree': 1.11.0 - eslint-visitor-keys: 1.0.0 - dev: false - engines: - node: ^6.14.0 || ^8.10.0 || >=9.10.0 - peerDependencies: - eslint: ^5.0.0 - typescript: '*' - resolution: - integrity: sha512-5xBExyXaxVyczrZvbRKEXvaTUFFq7gIM9BynXukXZE0zF3IQP/FxF4mPmmh3gJ9egafZFqByCpPTFm3dk4SY7Q== /@typescript-eslint/parser/1.11.0_eslint@5.16.0+typescript@3.5.3: dependencies: '@types/eslint-visitor-keys': 1.0.0 @@ -1476,14 +1413,6 @@ packages: dev: false resolution: integrity: sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== - /axios-mock-adapter/1.17.0: - dependencies: - deep-equal: 1.0.1 - dev: false - peerDependencies: - axios: '>= 0.9.0' - resolution: - integrity: sha512-q3efmwJUOO4g+wsLNSk9Ps1UlJoF3fQ3FSEe4uEEhkRtu7SoiAVPj8R3Hc/WP55MBTVFzaDP9QkdJhdVhP8A1Q== /axios-mock-adapter/1.17.0_axios@0.19.0: dependencies: axios: 0.19.0 @@ -2186,7 +2115,7 @@ packages: /browserslist/3.2.8: dependencies: caniuse-lite: 1.0.30000983 - electron-to-chromium: 1.3.188 + electron-to-chromium: 1.3.190 dev: false hasBin: true resolution: @@ -2376,14 +2305,6 @@ packages: dev: false resolution: integrity: sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - /chai-as-promised/7.1.1: - dependencies: - check-error: 1.0.2 - dev: false - peerDependencies: - chai: '>= 2.1.2 < 5' - resolution: - integrity: sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA== /chai-as-promised/7.1.1_chai@4.2.0: dependencies: chai: 4.2.0 @@ -2393,12 +2314,6 @@ packages: chai: '>= 2.1.2 < 5' resolution: integrity: sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA== - /chai-string/1.5.0: - dev: false - peerDependencies: - chai: ^4.1.2 - resolution: - integrity: sha512-sydDC3S3pNAQMYwJrs6dQX0oBQ6KfIPuOZ78n7rocW0eJJlsHPh2t3kwW7xfwYA/1Bf6/arGtSUo16rxR2JFlw== /chai-string/1.5.0_chai@4.2.0: dependencies: chai: 4.2.0 @@ -3159,15 +3074,6 @@ packages: dev: false resolution: integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - /doctrine/0.7.2: - dependencies: - esutils: 1.1.6 - isarray: 0.0.1 - dev: false - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-fLhgNZujvpDgQLJrcpzkv6ZUxSM= /doctrine/3.0.0: dependencies: esutils: 2.0.2 @@ -3243,10 +3149,10 @@ packages: dev: false resolution: integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - /electron-to-chromium/1.3.188: + /electron-to-chromium/1.3.190: dev: false resolution: - integrity: sha512-tEQcughYIMj8WDMc59EGEtNxdGgwal/oLLTDw+NEqJRJwGflQvH3aiyiexrWeZOETP4/ko78PVr6gwNhdozvuQ== + integrity: sha512-cs9WnTnGBGnYYVFMCtLmr9jXNTOkdp95RLz5VhwzDn7dErg1Lnt9o4d01gEH69XlmRKWUr91Yu1hA+Hi8qW0PA== /elliptic/6.5.0: dependencies: bn.js: 4.11.8 @@ -3448,15 +3354,6 @@ packages: source-map: 0.2.0 resolution: integrity: sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg= - /eslint-config-prettier/4.3.0: - dependencies: - get-stdin: 6.0.0 - dev: false - hasBin: true - peerDependencies: - eslint: '>=3.14.1' - resolution: - integrity: sha512-sZwhSTHVVz78+kYD3t5pCWSYEdVSBR0PXnwjDRsUs8ytIrK8PLXw+6FKp8r3Z7rx4ZszdetWlXYKOHoUrrwPlA== /eslint-config-prettier/4.3.0_eslint@5.16.0: dependencies: eslint: 5.16.0 @@ -3467,14 +3364,6 @@ packages: eslint: '>=3.14.1' resolution: integrity: sha512-sZwhSTHVVz78+kYD3t5pCWSYEdVSBR0PXnwjDRsUs8ytIrK8PLXw+6FKp8r3Z7rx4ZszdetWlXYKOHoUrrwPlA== - /eslint-detailed-reporter/0.8.0: - dependencies: - lodash: 4.17.14 - dev: false - peerDependencies: - eslint: 3.0.0 - 5.9999.9999 - resolution: - integrity: sha512-u/LAPwSQ8udUiWXJ2aYZfvV4gd7uhS77ZctOv8FZ8SDxzEG5aV18dgOTMilT8uEHBJyv3MpGHoQH7A3tXOfm/Q== /eslint-detailed-reporter/0.8.0_eslint@5.16.0: dependencies: eslint: 5.16.0 @@ -3484,14 +3373,6 @@ packages: eslint: 3.0.0 - 5.9999.9999 resolution: integrity: sha512-u/LAPwSQ8udUiWXJ2aYZfvV4gd7uhS77ZctOv8FZ8SDxzEG5aV18dgOTMilT8uEHBJyv3MpGHoQH7A3tXOfm/Q== - /eslint-plugin-no-null/1.0.2: - dev: false - engines: - node: '>=5.0.0' - peerDependencies: - eslint: '>=3.0.0' - resolution: - integrity: sha1-EjaoEjkTkKGHetQAfCbnRTQclR8= /eslint-plugin-no-null/1.0.2_eslint@5.16.0: dependencies: eslint: 5.16.0 @@ -3556,7 +3437,7 @@ packages: ignore: 4.0.6 import-fresh: 3.1.0 imurmurhash: 0.1.4 - inquirer: 6.4.1 + inquirer: 6.5.0 js-yaml: 3.13.1 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.3.0 @@ -3639,12 +3520,6 @@ packages: dev: false resolution: integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - /esutils/1.1.6: - dev: false - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-wBzKqa5LiXxtDD4hCuUvPHqEQ3U= /esutils/2.0.2: dev: false engines: @@ -4756,7 +4631,7 @@ packages: dev: false resolution: integrity: sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - /inquirer/6.4.1: + /inquirer/6.5.0: dependencies: ansi-escapes: 3.2.0 chalk: 2.4.2 @@ -4775,7 +4650,7 @@ packages: engines: node: '>=6.0.0' resolution: - integrity: sha512-/Jw+qPZx4EDYsaT6uz7F4GJRNFMRdKNeUZw3ZnKV8lyuUgz/YWRCSUAJMZSVhSq4Ec0R2oYnyi6b3d4JXcL5Nw== + integrity: sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== /interpret/1.2.0: dev: false engines: @@ -5364,13 +5239,6 @@ packages: dev: false resolution: integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== - /karma-chai/0.1.0: - dev: false - peerDependencies: - chai: '*' - karma: '>=0.10.9' - resolution: - integrity: sha1-vuWtQEAFF4Ea40u5RfdikJEIt5o= /karma-chai/0.1.0_chai@4.2.0+karma@4.1.0: dependencies: chai: 4.2.0 @@ -5398,16 +5266,6 @@ packages: dev: false resolution: integrity: sha512-eQawj4Cl3z/CjxslYy9ariU4uDh7cCNFZHNWXWRpl0pNeblY/4wHR7M7boTYXWrn9bY0z2pZmr11eKje/S/hIw== - /karma-edge-launcher/0.4.2: - dependencies: - edge-launcher: 1.2.2 - dev: false - engines: - node: '>=4' - peerDependencies: - karma: '>=0.9' - resolution: - integrity: sha512-YAJZb1fmRcxNhMIWYsjLuxwODBjh2cSHgTW/jkVmdpGguJjLbs9ZgIK/tEJsMQcBLUkO+yO4LBbqYxqgGW2HIw== /karma-edge-launcher/0.4.2_karma@4.1.0: dependencies: edge-launcher: 1.2.2 @@ -5427,14 +5285,6 @@ packages: dev: false resolution: integrity: sha512-LbZ5/XlIXLeQ3cqnCbYLn+rOVhuMIK9aZwlP6eOLGzWdo1UVp7t6CN3DP4SafiRLjexKwHeKHDm0c38Mtd3VxA== - /karma-ie-launcher/1.0.0: - dependencies: - lodash: 4.17.14 - dev: false - peerDependencies: - karma: '>=0.9' - resolution: - integrity: sha1-SXmGhCxJAZA0bNifVJTKmDDG1Zw= /karma-ie-launcher/1.0.0_karma@4.1.0: dependencies: karma: 4.1.0 @@ -5444,12 +5294,6 @@ packages: karma: '>=0.9' resolution: integrity: sha1-SXmGhCxJAZA0bNifVJTKmDDG1Zw= - /karma-json-preprocessor/0.3.3: - dev: false - peerDependencies: - karma: '>=0.9' - resolution: - integrity: sha1-X36ZW+uuS06PCiy1IVBVSq8LHi4= /karma-json-preprocessor/0.3.3_karma@4.1.0: dependencies: karma: 4.1.0 @@ -5464,15 +5308,6 @@ packages: dev: false resolution: integrity: sha512-kNCi+0UrXAeTJMpMsHkHNbfmlErsYT+/haNakJIhsE/gtj3Jx7zWRg7BTc1HHSbH5KeVXVRJr3/KLB/NHWY7Hg== - /karma-junit-reporter/1.2.0: - dependencies: - 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.1.0: dependencies: karma: 4.1.0 @@ -5483,16 +5318,6 @@ packages: karma: '>=0.9' resolution: integrity: sha1-T5xAzt+xo5X4rvh2q/lhiZF8Y5Y= - /karma-mocha-reporter/2.2.5: - dependencies: - chalk: 2.4.2 - 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.1.0: dependencies: chalk: 2.4.2 @@ -5510,16 +5335,6 @@ packages: dev: false resolution: integrity: sha1-7qrH/8DiAetjxGdEDStpx883eL8= - /karma-remap-coverage/0.1.5: - dependencies: - remap-istanbul: 0.10.1 - dev: false - engines: - node: '>=4.2.0' - peerDependencies: - karma-coverage: '>=0.5.4' - resolution: - integrity: sha512-FM5h8eHcHbMMR+2INBUxD+4+wUbkCnobfn5uWprkLyj6Xcm2MRFQOuAJn9h2H13nNso6rk+QoNpHd5xCevlPOw== /karma-remap-coverage/0.1.5_karma-coverage@1.1.2: dependencies: karma-coverage: 1.1.2 @@ -5531,17 +5346,6 @@ packages: karma-coverage: '>=0.5.4' resolution: integrity: sha512-FM5h8eHcHbMMR+2INBUxD+4+wUbkCnobfn5uWprkLyj6Xcm2MRFQOuAJn9h2H13nNso6rk+QoNpHd5xCevlPOw== - /karma-rollup-preprocessor/7.0.0: - dependencies: - chokidar: 2.1.6 - debounce: 1.2.0 - dev: false - engines: - node: '>= 8.0.0' - peerDependencies: - rollup: '>= 1.0.0' - resolution: - integrity: sha512-/a7bBtinT4+fdbnatCh5ZWvbqIqPzse7O3tvT4x9tadXsxPqybo1Lilpe7AKEmvhAcUwGRlcLOWeV66lIPFrXQ== /karma-rollup-preprocessor/7.0.0_rollup@1.16.7: dependencies: chokidar: 2.1.6 @@ -5571,21 +5375,6 @@ packages: dev: false resolution: integrity: sha512-WTGGThwufBT73c20q30iTcXq8Jb3Wat/h+JW1lwKgMtymT5rVxLknoaUVNfenaV3+cRMiTEsBT773kz9jWk6IQ== - /karma-webpack/4.0.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-dev-middleware: 3.7.0 - dev: false - engines: - node: '>= 8.9.0' - peerDependencies: - webpack: ^4.0.0 - resolution: - integrity: sha512-970/okAsdUOmiMOCY8sb17A2I8neS25Ad9uhyK3GHgmRSIFJbDcNEFE8dqqUhNe9OHiCC9k3DMrSmtd/0ymP1A== /karma-webpack/4.0.2_webpack@4.35.3: dependencies: clone-deep: 4.0.1 @@ -5593,7 +5382,7 @@ packages: neo-async: 2.6.1 schema-utils: 1.0.0 source-map: 0.7.3 - webpack: 4.35.3 + webpack: 4.35.3_webpack@4.35.3 webpack-dev-middleware: 3.7.0_webpack@4.35.3 dev: false engines: @@ -6302,18 +6091,6 @@ packages: hasBin: true resolution: integrity: sha512-Zk1HvDF13TLOBH2sML+4T1o5Z3nwUYN9ah3gz4TUrnwx7Sdk0N+rq5n+uzw0/3BAQH9aejPCJILWoWi7HW0qyw== - /mocha-junit-reporter/1.23.0: - dependencies: - debug: 2.6.9 - md5: 2.2.1 - mkdirp: 0.5.1 - strip-ansi: 4.0.0 - xml: 1.0.1 - dev: false - peerDependencies: - mocha: '>=2.2.5' - resolution: - integrity: sha512-pmpnEO4iDTmLfrT2RKqPsc5relG4crnDSGmXPuGogdda27A7kLujDNJV4EbTbXlVBCZXggN9rQYPEWMkOv4AAA== /mocha-junit-reporter/1.23.0_mocha@5.2.0: dependencies: debug: 2.6.9 @@ -6334,20 +6111,6 @@ packages: dev: false resolution: integrity: sha1-zH8/TTL0eFIJQdhSq7ZNmYhYfYI= - /mocha-multi/1.1.0: - dependencies: - debug: 3.2.6 - is-string: 1.0.4 - lodash.once: 4.1.1 - mkdirp: 0.5.1 - object-assign: 4.1.1 - dev: false - engines: - node: '>=6.0.0' - peerDependencies: - mocha: '>=2.2.0 <6.0.0' - resolution: - integrity: sha512-arxYYafYVx/FEmA9xk8lw2nhc57Ld227YqX1yBYVcTQAeOhCBsvI7kIEeoxMcmwWOT1Ed+3C60Ambng4n2xRuw== /mocha-multi/1.1.0_mocha@5.2.0: dependencies: debug: 3.2.6 @@ -7876,18 +7639,6 @@ packages: dev: false resolution: integrity: sha512-ODeZXhTxpD48sfcYLAFc1BGrsXKDj7o1CSNH3uYbdK3o0NxyMmaQPTNgW+ko+am92DLC8QSTe4kyxTuEkI5S5w== - /rollup-plugin-commonjs/10.0.1: - dependencies: - estree-walker: 0.6.1 - is-reference: 1.1.3 - magic-string: 0.25.3 - resolve: 1.11.1 - rollup-pluginutils: 2.8.1 - dev: false - peerDependencies: - rollup: '>=1.12.0' - resolution: - integrity: sha512-x0PcCVdEc4J8igv1qe2vttz8JKAKcTs3wfIA3L8xEty3VzxgORLrzZrNWaVMc+pBC4U3aDOb9BnWLAQ8J11vkA== /rollup-plugin-commonjs/10.0.1_rollup@1.16.7: dependencies: estree-walker: 0.6.1 @@ -7932,18 +7683,6 @@ packages: dev: false resolution: integrity: sha512-xRkB+W/m1KLIzPUmG0ofvR+CPNcvuCuNdjVBVS7ALKSxr3EDhnzNceGkGi1m8MToSli13AzKFYH4ie9w3I5L3g== - /rollup-plugin-node-resolve/5.2.0: - dependencies: - '@types/resolve': 0.0.8 - builtin-modules: 3.1.0 - is-module: 1.0.0 - resolve: 1.11.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.16.7: dependencies: '@types/resolve': 0.0.8 @@ -7972,18 +7711,6 @@ packages: dev: false resolution: integrity: sha512-rZqFD43y4U9nSqVq3iyWBiDwmBQJY8Txi04yI9jTKD3xcl7CbFjh1qRpQshUB3sONLubDzm7vJiwB+1MEGv67w== - /rollup-plugin-sourcemaps/0.4.2: - dependencies: - 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.16.7: dependencies: rollup: 1.16.7 @@ -7997,18 +7724,6 @@ packages: rollup: '>=0.31.2' resolution: integrity: sha1-YhJaqUCHqt97g+9N+vYptHMTXoc= - /rollup-plugin-terser/5.1.1: - dependencies: - '@babel/code-frame': 7.0.0 - jest-worker: 24.6.0 - rollup-pluginutils: 2.8.1 - serialize-javascript: 1.7.0 - terser: 4.1.2 - dev: false - peerDependencies: - rollup: '>=0.66.0 <2' - resolution: - integrity: sha512-McIMCDEY8EU6Y839C09UopeRR56wXHGdvKKjlfiZG/GrP6wvZQ62u2ko/Xh1MNH2M9WDL+obAAHySljIZYCuPQ== /rollup-plugin-terser/5.1.1_rollup@1.16.7: dependencies: '@babel/code-frame': 7.0.0 @@ -8022,28 +7737,6 @@ packages: rollup: '>=0.66.0 <2' resolution: integrity: sha512-McIMCDEY8EU6Y839C09UopeRR56wXHGdvKKjlfiZG/GrP6wvZQ62u2ko/Xh1MNH2M9WDL+obAAHySljIZYCuPQ== - /rollup-plugin-uglify/6.0.2: - dependencies: - '@babel/code-frame': 7.0.0 - jest-worker: 24.6.0 - serialize-javascript: 1.7.0 - uglify-js: 3.6.0 - dev: false - peerDependencies: - rollup: '>=0.66.0 <2' - resolution: - integrity: sha512-qwz2Tryspn5QGtPUowq5oumKSxANKdrnfz7C0jm4lKxvRDsNe/hSGsB9FntUul7UeC4TsZEWKErVgE1qWSO0gw== - /rollup-plugin-uglify/6.0.2_rollup@1.16.6: - dependencies: - '@babel/code-frame': 7.0.0 - jest-worker: 24.6.0 - serialize-javascript: 1.7.0 - uglify-js: 3.6.0 - dev: false - peerDependencies: - rollup: '>=0.66.0 <2' - resolution: - integrity: sha512-qwz2Tryspn5QGtPUowq5oumKSxANKdrnfz7C0jm4lKxvRDsNe/hSGsB9FntUul7UeC4TsZEWKErVgE1qWSO0gw== /rollup-plugin-uglify/6.0.2_rollup@1.16.7: dependencies: '@babel/code-frame': 7.0.0 @@ -8056,19 +7749,6 @@ packages: rollup: '>=0.66.0 <2' resolution: integrity: sha512-qwz2Tryspn5QGtPUowq5oumKSxANKdrnfz7C0jm4lKxvRDsNe/hSGsB9FntUul7UeC4TsZEWKErVgE1qWSO0gw== - /rollup-plugin-visualizer/2.4.4: - dependencies: - mkdirp: 0.5.1 - open: 6.4.0 - pupa: 2.0.0 - source-map: 0.7.3 - dev: false - engines: - node: '>=8.10' - peerDependencies: - rollup: '>=0.60.0' - resolution: - integrity: sha512-QMDrJfMwl8koU2IH8A/hb7zcE1Q+174uwjd9gtQ+ITbbmoGu9ro1pXoxGnTNXwkaAdlaRVECmfcAOga078Y+Qw== /rollup-plugin-visualizer/2.4.4_rollup@1.16.7: dependencies: mkdirp: 0.5.1 @@ -8499,7 +8179,7 @@ packages: /spdx-correct/3.1.0: dependencies: spdx-expression-parse: 3.0.0 - spdx-license-ids: 3.0.4 + spdx-license-ids: 3.0.5 dev: false resolution: integrity: sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== @@ -8510,14 +8190,14 @@ packages: /spdx-expression-parse/3.0.0: dependencies: spdx-exceptions: 2.2.0 - spdx-license-ids: 3.0.4 + spdx-license-ids: 3.0.5 dev: false resolution: integrity: sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== - /spdx-license-ids/3.0.4: + /spdx-license-ids/3.0.5: dev: false resolution: - integrity: sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== + integrity: sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== /split-string/3.1.0: dependencies: extend-shallow: 3.0.2 @@ -8834,7 +8514,7 @@ packages: node: '>=4' resolution: integrity: sha1-jP9jD7fp2gXwR8dM5M5NaFRX1JI= - /terser-webpack-plugin/1.3.0: + /terser-webpack-plugin/1.3.0_webpack@4.35.3: dependencies: cacache: 11.3.3 find-cache-dir: 2.1.0 @@ -8844,6 +8524,7 @@ packages: serialize-javascript: 1.7.0 source-map: 0.6.1 terser: 4.1.2 + webpack: 4.35.3_webpack@4.35.3 webpack-sources: 1.3.0 worker-farm: 1.7.0 dev: false @@ -9033,20 +8714,6 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= - /ts-loader/5.4.5: - dependencies: - chalk: 2.4.2 - enhanced-resolve: 4.1.0 - loader-utils: 1.2.3 - micromatch: 3.1.10 - semver: 5.7.0 - dev: false - engines: - node: '>=6.11.5' - peerDependencies: - typescript: '*' - resolution: - integrity: sha512-XYsjfnRQCBum9AMRZpk2rTYSVpdZBpZK+kDh0TeT3kxmQNBDVIeUjdPjY5RZry4eIAb8XHc4gYSUiUWPYvzSRw== /ts-loader/5.4.5_typescript@3.5.3: dependencies: chalk: 2.4.2 @@ -9062,19 +8729,6 @@ packages: typescript: '*' resolution: integrity: sha512-XYsjfnRQCBum9AMRZpk2rTYSVpdZBpZK+kDh0TeT3kxmQNBDVIeUjdPjY5RZry4eIAb8XHc4gYSUiUWPYvzSRw== - /ts-mocha/6.0.0: - dependencies: - ts-node: 7.0.1 - dev: false - engines: - node: '>= 6.X.X' - hasBin: true - optionalDependencies: - tsconfig-paths: 3.8.0 - peerDependencies: - mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X - resolution: - integrity: sha512-ZCtJK8WXxHNbFNjvUKQIXZby/+ybQQkaBcM/3QhBQUfwjpdGFE9F6iWsHhF5ifQNFV/lWiOODi2VMD5AyPcQyg== /ts-mocha/6.0.0_mocha@5.2.0: dependencies: mocha: 5.2.0 @@ -9120,53 +8774,6 @@ packages: dev: false resolution: integrity: sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== - /tslib/1.9.0: - dev: false - resolution: - integrity: sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ== - /tslint-config-prettier/1.18.0: - dev: false - engines: - node: '>=4.0.0' - hasBin: true - resolution: - integrity: sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg== - /tslint-eslint-rules/5.4.0_tslint@5.18.0+typescript@3.5.3: - dependencies: - doctrine: 0.7.2 - tslib: 1.9.0 - tslint: 5.18.0_typescript@3.5.3 - tsutils: 3.14.0_typescript@3.5.3 - typescript: 3.5.3 - dev: false - peerDependencies: - tslint: ^5.0.0 - typescript: ^2.2.0 || ^3.0.0 - resolution: - integrity: sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w== - /tslint/5.18.0: - dependencies: - '@babel/code-frame': 7.0.0 - builtin-modules: 1.1.1 - chalk: 2.4.2 - commander: 2.20.0 - diff: 3.5.0 - glob: 7.1.4 - js-yaml: 3.13.1 - minimatch: 3.0.4 - mkdirp: 0.5.1 - resolve: 1.11.1 - semver: 5.7.0 - tslib: 1.10.0 - tsutils: 2.29.0 - dev: false - engines: - node: '>=4.8.0' - hasBin: true - peerDependencies: - typescript: '>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev' - resolution: - integrity: sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w== /tslint/5.18.0_typescript@3.5.3: dependencies: '@babel/code-frame': 7.0.0 @@ -9191,14 +8798,6 @@ packages: typescript: '>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev' resolution: integrity: sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w== - /tsutils/2.29.0: - dependencies: - tslib: 1.10.0 - dev: false - peerDependencies: - typescript: '>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev' - resolution: - integrity: sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== /tsutils/2.29.0_typescript@3.5.3: dependencies: tslib: 1.10.0 @@ -9208,16 +8807,6 @@ packages: typescript: '>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev' resolution: integrity: sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== - /tsutils/3.14.0: - dependencies: - tslib: 1.10.0 - 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' - resolution: - integrity: sha512-SmzGbB0l+8I0QwsPgjooFRaRvHLBLNYM8SeQ0k6rtNDru5sCGeLJcZdwilNndN+GysuFjF5EIYgN8GfFG6UeUw== /tsutils/3.14.0_typescript@3.5.3: dependencies: tslib: 1.10.0 @@ -9286,13 +8875,6 @@ packages: dev: false resolution: integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - /typescript/3.4.5: - dev: false - engines: - node: '>=4.2.0' - hasBin: true - resolution: - integrity: sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw== /typescript/3.5.3: dev: false engines: @@ -9590,27 +9172,6 @@ packages: dev: false resolution: integrity: sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== - /webpack-cli/3.3.5: - dependencies: - chalk: 2.4.2 - cross-spawn: 6.0.5 - enhanced-resolve: 4.1.0 - findup-sync: 3.0.0 - global-modules: 2.0.0 - import-local: 2.0.0 - interpret: 1.2.0 - loader-utils: 1.2.3 - supports-color: 6.1.0 - v8-compile-cache: 2.0.3 - yargs: 13.2.4 - dev: false - engines: - node: '>=6.11.5' - hasBin: true - peerDependencies: - webpack: 4.x.x - resolution: - integrity: sha512-w0j/s42c5UhchwTmV/45MLQnTVwRoaUTu9fM5LuyOd/8lFoCNCELDogFoecx5NzRUndO0yD/gF2b02XKMnmAWQ== /webpack-cli/3.3.5_webpack@4.35.3: dependencies: chalk: 2.4.2 @@ -9623,7 +9184,7 @@ packages: loader-utils: 1.2.3 supports-color: 6.1.0 v8-compile-cache: 2.0.3 - webpack: 4.35.3 + webpack: 4.35.3_webpack@4.35.3 yargs: 13.2.4 dev: false engines: @@ -9633,25 +9194,12 @@ packages: webpack: 4.x.x resolution: integrity: sha512-w0j/s42c5UhchwTmV/45MLQnTVwRoaUTu9fM5LuyOd/8lFoCNCELDogFoecx5NzRUndO0yD/gF2b02XKMnmAWQ== - /webpack-dev-middleware/3.7.0: - dependencies: - memory-fs: 0.4.1 - mime: 2.4.4 - range-parser: 1.2.1 - webpack-log: 2.0.0 - dev: false - engines: - node: '>= 6' - peerDependencies: - webpack: ^4.0.0 - resolution: - integrity: sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA== /webpack-dev-middleware/3.7.0_webpack@4.35.3: dependencies: memory-fs: 0.4.1 mime: 2.4.4 range-parser: 1.2.1 - webpack: 4.35.3 + webpack: 4.35.3_webpack@4.35.3 webpack-log: 2.0.0 dev: false engines: @@ -9676,7 +9224,7 @@ packages: dev: false resolution: integrity: sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== - /webpack/4.35.3: + /webpack/4.35.3_webpack@4.35.3: dependencies: '@webassemblyjs/ast': 1.8.5 '@webassemblyjs/helper-module-context': 1.8.5 @@ -9698,13 +9246,15 @@ packages: node-libs-browser: 2.2.1 schema-utils: 1.0.0 tapable: 1.1.3 - terser-webpack-plugin: 1.3.0 + terser-webpack-plugin: 1.3.0_webpack@4.35.3 watchpack: 1.6.0 webpack-sources: 1.3.0 dev: false engines: node: '>=6.11.5' hasBin: true + peerDependencies: + webpack: '*' resolution: integrity: sha512-xggQPwr9ILlXzz61lHzjvgoqGU08v5+Wnut19Uv3GaTtzN4xBTcwnobodrXE142EL1tOiS5WVEButooGzcQzTA== /which-module/1.0.0: @@ -9985,7 +9535,7 @@ packages: integrity: sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw== 'file:projects/abort-controller.tgz': dependencies: - '@microsoft/api-extractor': 7.3.0 + '@microsoft/api-extractor': 7.3.1 '@types/mocha': 5.2.7 '@types/node': 8.10.50 '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 @@ -10033,7 +9583,6 @@ packages: version: 0.0.0 'file:projects/core-amqp.tgz': dependencies: - '@azure/ms-rest-nodeauth': 0.9.3 '@types/async-lock': 1.1.1 '@types/chai': 4.1.7 '@types/chai-as-promised': 7.1.0 @@ -10091,7 +9640,6 @@ packages: stream-browserify: 2.0.2 ts-node: 7.0.1 tslib: 1.10.0 - tslint: 5.18.0_typescript@3.5.3 typescript: 3.5.3 url: 0.11.0 util: 0.11.1 @@ -10154,7 +9702,7 @@ packages: version: 0.0.0 'file:projects/core-auth.tgz': dependencies: - '@microsoft/api-extractor': 7.3.0 + '@microsoft/api-extractor': 7.3.1 '@types/mocha': 5.2.7 '@types/node': 8.10.50 '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 @@ -10258,13 +9806,11 @@ packages: ts-loader: 5.4.5_typescript@3.5.3 ts-node: 7.0.1 tslib: 1.10.0 - tslint: 5.18.0_typescript@3.5.3 - tslint-eslint-rules: 5.4.0_tslint@5.18.0+typescript@3.5.3 tunnel: 0.0.6 typescript: 3.5.3 uglify-js: 3.6.0 uuid: 3.3.2 - webpack: 4.35.3 + webpack: 4.35.3_webpack@4.35.3 webpack-cli: 3.3.5_webpack@4.35.3 webpack-dev-middleware: 3.7.0_webpack@4.35.3 xhr-mock: 2.4.1 @@ -10327,11 +9873,9 @@ packages: stream-http: 2.8.3 ts-node: 7.0.1 tslib: 1.10.0 - tslint: 5.18.0_typescript@3.5.3 - tslint-config-prettier: 1.18.0 tunnel: 0.0.6 typescript: 3.5.3 - webpack: 4.35.3 + webpack: 4.35.3_webpack@4.35.3 webpack-cli: 3.3.5_webpack@4.35.3 dev: false name: '@rush-temp/cosmos' @@ -10341,7 +9885,7 @@ packages: version: 0.0.0 'file:projects/event-hubs.tgz': dependencies: - '@microsoft/api-extractor': 7.3.0 + '@microsoft/api-extractor': 7.3.1 '@types/async-lock': 1.1.1 '@types/chai': 4.1.7 '@types/chai-as-promised': 7.1.0 @@ -10404,7 +9948,6 @@ packages: ts-mocha: 6.0.0_mocha@5.2.0 ts-node: 7.0.1 tslib: 1.10.0 - tslint: 5.18.0_typescript@3.5.3 typescript: 3.5.3 uuid: 3.3.2 ws: 6.2.1 @@ -10417,7 +9960,7 @@ packages: 'file:projects/event-processor-host.tgz': dependencies: '@azure/event-hubs': 1.0.8 - '@microsoft/api-extractor': 7.3.0 + '@microsoft/api-extractor': 7.3.1 '@types/async-lock': 1.1.1 '@types/chai': 4.1.7 '@types/chai-as-promised': 7.1.0 @@ -10461,7 +10004,6 @@ packages: rollup-plugin-uglify: 6.0.2_rollup@1.16.7 ts-node: 7.0.1 tslib: 1.10.0 - tslint: 5.18.0_typescript@3.5.3 typescript: 3.5.3 uuid: 3.3.2 dev: false @@ -10510,7 +10052,6 @@ packages: rollup-plugin-replace: 2.2.0 rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 rollup-plugin-terser: 5.1.1_rollup@1.16.7 - rollup-plugin-uglify: 6.0.2_rollup@1.16.6 rollup-plugin-visualizer: 2.4.4_rollup@1.16.7 tslib: 1.10.0 typescript: 3.5.3 @@ -10524,7 +10065,7 @@ packages: version: 0.0.0 'file:projects/keyvault-certificates.tgz': dependencies: - '@microsoft/api-extractor': 7.3.0 + '@microsoft/api-extractor': 7.3.1 '@types/chai': 4.1.7 '@types/node': 8.10.50 '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 @@ -10553,7 +10094,7 @@ packages: version: 0.0.0 'file:projects/keyvault-keys.tgz': dependencies: - '@microsoft/api-extractor': 7.3.0 + '@microsoft/api-extractor': 7.3.1 '@types/chai': 4.1.7 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 @@ -10594,7 +10135,7 @@ packages: dependencies: '@azure/ms-rest-azure-js': 1.3.8 '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.3.0 + '@microsoft/api-extractor': 7.3.1 '@types/chai': 4.1.7 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 @@ -10636,7 +10177,7 @@ packages: '@azure/amqp-common': 1.0.0-preview.6_rhea-promise@0.1.15 '@azure/arm-servicebus': 0.1.0 '@azure/ms-rest-nodeauth': 0.9.3 - '@microsoft/api-extractor': 7.3.0 + '@microsoft/api-extractor': 7.3.1 '@types/async-lock': 1.1.1 '@types/chai': 4.1.7 '@types/chai-as-promised': 7.1.0 @@ -10712,7 +10253,7 @@ packages: 'file:projects/storage-blob.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.3.0 + '@microsoft/api-extractor': 7.3.1 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 @@ -10783,7 +10324,7 @@ packages: 'file:projects/storage-file.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.3.0 + '@microsoft/api-extractor': 7.3.1 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 @@ -10854,7 +10395,7 @@ packages: 'file:projects/storage-queue.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.3.0 + '@microsoft/api-extractor': 7.3.1 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 @@ -10924,7 +10465,7 @@ packages: 'file:projects/template.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.3.0 + '@microsoft/api-extractor': 7.3.1 '@types/mocha': 5.2.7 '@types/node': 8.10.50 '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 @@ -10987,7 +10528,6 @@ packages: integrity: sha512-c3cFI0Our99carkgcyOFLmX5QRh5fIqyVv9S75VRX7woNtBGXPvWRE8VOxEN9o8N8FjSEQzc6PPEO6YRz7ok8Q== tarball: 'file:projects/testhub.tgz' version: 0.0.0 -registry: '' specifiers: '@azure/amqp-common': ^1.0.0-preview.6 '@azure/arm-servicebus': ^0.1.0 diff --git a/rush.json b/rush.json index d606823eb675..38ce4af69180 100644 --- a/rush.json +++ b/rush.json @@ -15,7 +15,7 @@ * path segment in the "$schema" field for all your Rush config files. This will ensure * correct error-underlining and tab-completion for editors such as VS Code. */ - "rushVersion": "5.7.3", + "rushVersion": "5.10.1", /** * The next field selects which package manager should be installed and determines its version. * Rush installs its own local copy of the package manager to ensure that your build process @@ -24,7 +24,7 @@ * Specify one of: "pnpmVersion", "npmVersion", or "yarnVersion". See the Rush documentation * for details about these alternatives. */ - "pnpmVersion": "3.2.0", + "pnpmVersion": "3.5.3", // "npmVersion": "4.5.0", // "yarnVersion": "1.9.4", /** From 4125def3398c5935029744f3de3ff02deb031701 Mon Sep 17 00:00:00 2001 From: ramya0820 <45977823+ramya0820@users.noreply.github.com> Date: Thu, 11 Jul 2019 16:34:02 -0700 Subject: [PATCH 266/289] [Event Hubs] Update event-hubs.api.md file (#4280) * [Event Hubs] Introduce timeoutInMs on RetryOptions (#4239) * Update event-hubs.api.md file --- sdk/eventhub/event-hubs/review/event-hubs.api.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sdk/eventhub/event-hubs/review/event-hubs.api.md b/sdk/eventhub/event-hubs/review/event-hubs.api.md index c98ecce9cd80..3a2afa4f6195 100644 --- a/sdk/eventhub/event-hubs/review/event-hubs.api.md +++ b/sdk/eventhub/event-hubs/review/event-hubs.api.md @@ -174,6 +174,7 @@ export class ReceiveHandler { export interface RetryOptions { maxRetries?: number; retryInterval?: number; + timeoutInMs?: number; } // @public From 130400d9330ec2d4990001e52be324b07af78326 Mon Sep 17 00:00:00 2001 From: ramya0820 <45977823+ramya0820@users.noreply.github.com> Date: Thu, 11 Jul 2019 17:06:11 -0700 Subject: [PATCH 267/289] [core-amqp] Update to use and handle OperationTimeoutError (#4186) --- sdk/core/core-amqp/src/errors.ts | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/sdk/core/core-amqp/src/errors.ts b/sdk/core/core-amqp/src/errors.ts index eb74f0189b7a..4abba5fd9dcd 100644 --- a/sdk/core/core-amqp/src/errors.ts +++ b/sdk/core/core-amqp/src/errors.ts @@ -125,10 +125,6 @@ export enum ConditionErrorNameMapper { * Error is thrown when no new messages are received for the specified time. */ "com.microsoft:message-wait-timeout" = "MessageWaitTimeout", - /** - * Error is thrown when timeout happens for the said operation. - */ - "amqp:operation-timeout" = "OperationTimeoutError", /** * Error is thrown when an argument has a value that is out of the admissible range. */ @@ -331,10 +327,6 @@ export enum ErrorNameConditionMapper { * Error is thrown when no new messages are received for the specified time. */ MessageWaitTimeout = "com.microsoft:message-wait-timeout", - /** - * Error is thrown when timeout happens for the said operation. - */ - OperationTimeoutError = "amqp:operation-timeout", /** * Error is thrown when an argument has a value that is out of the admissible range. */ @@ -489,6 +481,7 @@ export const retryableErrors: string[] = [ "ServerBusyError", "ServiceUnavailableError", "OperationCancelledError", + "OperationTimeoutError", "SenderBusyError", "MessagingError", "DetachForcedError", @@ -560,6 +553,18 @@ export function translate(err: AmqpError | Error): MessagingError { let error: MessagingError = err as MessagingError; + // OperationTimeoutError occurs when the service fails to respond within a given timeframe. + // Since reasons for such failures can be transient, this is treated as a retryable error. + if ( + // instanceof checks on custom Errors doesn't work without manually setting the prototype within the error. + // Must do a name check until OperationTimeoutError is updated, and that doesn't break compatibility + // https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work + (err as Error).name === "OperationTimeoutError" + ) { + error.retryable = true; + return error; + } + // Built-in errors like TypeError and RangeError should not be retryable as these indicate issues // with user input and not an issue with the Messaging process. if ( From fea8e246ae9c0d1024d0b802532703b882da0339 Mon Sep 17 00:00:00 2001 From: KarishmaGhiya Date: Fri, 12 Jul 2019 10:31:34 -0700 Subject: [PATCH 268/289] [Identity] referencing developer guide in the readme and contribute.md (#4271) * referencing developer guide in the readme and contribute.md --- sdk/identity/identity/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sdk/identity/identity/README.md b/sdk/identity/identity/README.md index fe84cc91436e..62b2a39c1ad7 100644 --- a/sdk/identity/identity/README.md +++ b/sdk/identity/identity/README.md @@ -122,6 +122,8 @@ When you submit a pull request, a CLA-bot will automatically determine whether y a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA. +If you'd like to contribute to this library, please read the the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. + This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. From c63350614ec1db88a46beaec2f1f3130cb2e45bb Mon Sep 17 00:00:00 2001 From: KarishmaGhiya Date: Fri, 12 Jul 2019 10:32:28 -0700 Subject: [PATCH 269/289] referencing developer guide in the readme.md (#4272) * referencing developer guide in the readme.md --- sdk/keyvault/keyvault-certificates/README.md | 2 ++ sdk/keyvault/keyvault-keys/README.md | 2 ++ sdk/keyvault/keyvault-secrets/README.md | 2 ++ 3 files changed, 6 insertions(+) diff --git a/sdk/keyvault/keyvault-certificates/README.md b/sdk/keyvault/keyvault-certificates/README.md index 0cb304ab6713..55f88e3fab48 100644 --- a/sdk/keyvault/keyvault-certificates/README.md +++ b/sdk/keyvault/keyvault-certificates/README.md @@ -171,6 +171,8 @@ When you submit a pull request, a CLA-bot will automatically determine whether y a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA. +If you'd like to contribute to this library, please read the the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. + This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/sdk/keyvault/keyvault-keys/README.md b/sdk/keyvault/keyvault-keys/README.md index 22012c9b6eb4..710b7707f113 100644 --- a/sdk/keyvault/keyvault-keys/README.md +++ b/sdk/keyvault/keyvault-keys/README.md @@ -257,6 +257,8 @@ When you submit a pull request, a CLA-bot will automatically determine whether y a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA. +If you'd like to contribute to this library, please read the the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. + This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/sdk/keyvault/keyvault-secrets/README.md b/sdk/keyvault/keyvault-secrets/README.md index 303683310812..c121d25659fd 100644 --- a/sdk/keyvault/keyvault-secrets/README.md +++ b/sdk/keyvault/keyvault-secrets/README.md @@ -246,6 +246,8 @@ When you submit a pull request, a CLA-bot will automatically determine whether y a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA. +If you'd like to contribute to this library, please read the the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. + This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. From 02768a130cd09096a6a457d305f926e5b73693b0 Mon Sep 17 00:00:00 2001 From: KarishmaGhiya Date: Fri, 12 Jul 2019 11:36:27 -0700 Subject: [PATCH 270/289] remove duplicate 'the' (#4296) --- sdk/identity/identity/README.md | 57 +++++++------ sdk/keyvault/keyvault-certificates/README.md | 11 +-- sdk/keyvault/keyvault-keys/README.md | 75 ++++++++++------- sdk/keyvault/keyvault-secrets/README.md | 84 ++++++++++++-------- 4 files changed, 134 insertions(+), 93 deletions(-) diff --git a/sdk/identity/identity/README.md b/sdk/identity/identity/README.md index 62b2a39c1ad7..d79772a93415 100644 --- a/sdk/identity/identity/README.md +++ b/sdk/identity/identity/README.md @@ -12,11 +12,12 @@ to authenticate API requests. It supports token authentication using an Azure Ac - if you don't have one, you can sign up for a [free account](https://azure.microsoft.com/free/) - Node.js 8 LTS or higher -**NOTE:** The credential implementations in this library are not yet supported in the browser. We will provide browser-supported implementations for some in a future preview release. +**NOTE:** The credential implementations in this library are not yet supported in the browser. We will provide browser-supported implementations for some in a future preview release. ### Install the package Install Azure Identity with `npm`: + ```sh npm install --save @azure/identity ``` @@ -25,24 +26,24 @@ npm install --save @azure/identity ### Credentials -Azure Identity offers a variety of credential classes that are accepted by Azure SDK data plane clients. Each client library documents its Azure Identity integration in its README and samples. Azure SDK management plane libraries (those starting with `@azure/arm-*`) +Azure Identity offers a variety of credential classes that are accepted by Azure SDK data plane clients. Each client library documents its Azure Identity integration in its README and samples. Azure SDK management plane libraries (those starting with `@azure/arm-*`) do not accept these credentials. Credentials differ mostly in configuration: -|credential class|identity|configuration -|-|-|- -|`DefaultAzureCredential`|service principal or managed identity|none for managed identity; [environment variables](#environment-variables) for service principal -|`ManagedIdentityCredential`|managed identity|none -|`EnvironmentCredential`|service principal|[environment variables](#environment-variables) -|`ClientSecretCredential`|service principal|constructor parameters -|`ClientCertificateCredential`|service principal|constructor parameters +| credential class | identity | configuration | +| ----------------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------ | +| `DefaultAzureCredential` | service principal or managed identity | none for managed identity; [environment variables](#environment-variables) for service principal | +| `ManagedIdentityCredential` | managed identity | none | +| `EnvironmentCredential` | service principal | [environment variables](#environment-variables) | +| `ClientSecretCredential` | service principal | constructor parameters | +| `ClientCertificateCredential` | service principal | constructor parameters | Credentials can be chained and tried in turn until one succeeds; see [chaining credentials](#chaining-credentials) for details. ### DefaultAzureCredential -`DefaultAzureCredential` is appropriate for most scenarios. It supports authenticating as a service principal or managed identity. To authenticate as a service principal, provide configuration in environment variables as described in the next section. Currently this credential attempts to use the `EnvironmentCredential` and `ManagedIdentityCredential`, in that order. +`DefaultAzureCredential` is appropriate for most scenarios. It supports authenticating as a service principal or managed identity. To authenticate as a service principal, provide configuration in environment variables as described in the next section. Currently this credential attempts to use the `EnvironmentCredential` and `ManagedIdentityCredential`, in that order. Authenticating as a managed identity requires no configuration, but does require platform support. See the [managed identity documentation](https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/services-support-managed-identities) for more information. @@ -50,11 +51,11 @@ Authenticating as a managed identity requires no configuration, but does require `DefaultAzureCredential` and `EnvironmentCredential` are configured for service principal authentication with these environment variables: -|variable name|value -|-|- -|`AZURE_CLIENT_ID`|service principal's app id -|`AZURE_TENANT_ID`|id of the principal's Azure Active Directory tenant -|`AZURE_CLIENT_SECRET`|one of the service principal's client secrets +| variable name | value | +| --------------------- | --------------------------------------------------- | +| `AZURE_CLIENT_ID` | service principal's app id | +| `AZURE_TENANT_ID` | id of the principal's Azure Active Directory tenant | +| `AZURE_CLIENT_SECRET` | one of the service principal's client secrets | ## Examples @@ -64,7 +65,7 @@ Authenticating as a managed identity requires no configuration, but does require // The default credential first checks environment variables for configuration as described above. // If environment configuration is incomplete, it will try managed identity. const { KeysClient } = require("@azure/keyvault-keys"); -const { DefaultAzureCredential } = require('@azure/identity'); +const { DefaultAzureCredential } = require("@azure/identity"); // Azure SDK clients accept the credential as a parameter const credential = new DefaultAzureCredential(); @@ -73,23 +74,29 @@ const getResult = await client.getKey("MyKeyName"); ``` ### Authenticating as a service principal: + ```javascript // Using a client secret -const { ClientSecretCredential } = require('@azure/identity'); +const { ClientSecretCredential } = require("@azure/identity"); const credential = new ClientSecretCredential(tenantId, clientId, clientSecret); // Using a PEM-encoded certificate with a private key, not password protected -const { ClientCertificateCredential } = require('@azure/identity'); -const credential = new ClientCertificateCredential(tenantId, clientId, "/app/certs/certificate.pem") +const { ClientCertificateCredential } = require("@azure/identity"); +const credential = new ClientCertificateCredential( + tenantId, + clientId, + "/app/certs/certificate.pem" +); // Using environment variables (see "Environment variables" above for variable names) -const { EnvironmentCredential } = require('@azure/identity'); +const { EnvironmentCredential } = require("@azure/identity"); const credential = new EnvironmentCredential(); ``` ### Chaining credentials: + ```javascript -const { ClientSecretCredential, ChainedTokenCredential } = require('@azure/identity'); +const { ClientSecretCredential, ChainedTokenCredential } = require("@azure/identity"); // When an access token is requested, the chain will try each // credential in order, stopping when one provides a token @@ -105,7 +112,8 @@ const client = new KeysClient(vaultUrl, credentialChain); ## Troubleshooting ### General -Credentials raise `AuthenticationError` when they fail to authenticate. This class has a `message` field which describes why authentication failed. An `AggregateAuthenticationError` will be raised by `ChainedTokenCredential` with an `errors` field containing an array of errors from each credential in the chain. + +Credentials raise `AuthenticationError` when they fail to authenticate. This class has a `message` field which describes why authentication failed. An `AggregateAuthenticationError` will be raised by `ChainedTokenCredential` with an `errors` field containing an array of errors from each credential in the chain. ## Next steps @@ -114,7 +122,8 @@ Credentials raise `AuthenticationError` when they fail to authenticate. This cl If you encounter bugs or have suggestions, please [open an issue](https://github.com/Azure/azure-sdk-for-js/issues). ## Contributing -This project welcomes contributions and suggestions. Most contributions require you to agree to a + +This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit [https://cla.microsoft.com](https://cla.microsoft.com). @@ -122,7 +131,7 @@ When you submit a pull request, a CLA-bot will automatically determine whether y a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA. -If you'd like to contribute to this library, please read the the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. +If you'd like to contribute to this library, please read the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) diff --git a/sdk/keyvault/keyvault-certificates/README.md b/sdk/keyvault/keyvault-certificates/README.md index 55f88e3fab48..74c5a6b516d9 100644 --- a/sdk/keyvault/keyvault-certificates/README.md +++ b/sdk/keyvault/keyvault-certificates/README.md @@ -56,7 +56,7 @@ import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; const clientId = process.env["CLIENT_ID"] || ""; const clientSecret = process.env["CLIENT_SECRET"] || ""; const tenantId = process.env["TENANT_ID"] || ""; -const vaultName = process.env["KEYVAULT_NAME"] || "" +const vaultName = process.env["KEYVAULT_NAME"] || ""; const url = `https://${vaultName}.vault.azure.net`; const credential = await msRestNodeAuth.loginWithServicePrincipalSecret( @@ -64,7 +64,7 @@ const credential = await msRestNodeAuth.loginWithServicePrincipalSecret( clientSecret, tenantId, { - tokenAudience: 'https://vault.azure.net' + tokenAudience: "https://vault.azure.net" } ); @@ -75,7 +75,6 @@ const client = new SecretsClient(url, credential); > Soon. - ## Examples The following sections provide code snippets that cover some of the @@ -142,6 +141,7 @@ export DEBUG=azure:keyvault-secrets:error,azure-amqp-common:error,rhea-promise:e ### Logging to a file - Set the `DEBUG` environment variable as shown above and then run your test script as follows: + - Logging statements from your test script go to `out.log` and logging statements from the sdk go to `debug.log`. ```bash node your-test-script.js > out.log 2>debug.log @@ -151,10 +151,11 @@ export DEBUG=azure:keyvault-secrets:error,azure-amqp-common:error,rhea-promise:e node your-test-script.js >out.log 2>&1 ``` - Logging statements from your test script and the sdk go to the same file `out.log`. + ```bash node your-test-script.js &> out.log ``` - + ## Next steps Please take a look at the @@ -171,7 +172,7 @@ When you submit a pull request, a CLA-bot will automatically determine whether y a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA. -If you'd like to contribute to this library, please read the the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. +If you'd like to contribute to this library, please read the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or diff --git a/sdk/keyvault/keyvault-keys/README.md b/sdk/keyvault/keyvault-keys/README.md index 710b7707f113..a6faf2325c4d 100644 --- a/sdk/keyvault/keyvault-keys/README.md +++ b/sdk/keyvault/keyvault-keys/README.md @@ -51,38 +51,41 @@ You also need to enable `compilerOptions.allowSyntheticDefaultImports` in your t Use the [Azure Cloud Shell](https://shell.azure.com/bash) snippet below to create/get client secret credentials. - * Create a service principal and configure its access to Azure resources: - ```Bash - az ad sp create-for-rbac -n --skip-assignment - ``` - Output: - ```json - { - "appId": "generated-app-ID", - "displayName": "dummy-app-name", - "name": "http://dummy-app-name", - "password": "random-password", - "tenant": "tenant-ID" - } - ``` -* Use the above returned credentials information to set **AZURE_CLIENT_ID**(appId), **AZURE_CLIENT_SECRET**(password) and **AZURE_TENANT_ID**(tenant) environment variables. The following example shows a way to do this in Bash: +- Create a service principal and configure its access to Azure resources: + ```Bash + az ad sp create-for-rbac -n --skip-assignment + ``` + Output: + ```json + { + "appId": "generated-app-ID", + "displayName": "dummy-app-name", + "name": "http://dummy-app-name", + "password": "random-password", + "tenant": "tenant-ID" + } + ``` +- Use the above returned credentials information to set **AZURE_CLIENT_ID**(appId), **AZURE_CLIENT_SECRET**(password) and **AZURE_TENANT_ID**(tenant) environment variables. The following example shows a way to do this in Bash: + ```Bash export AZURE_CLIENT_ID="generated-app-ID" export AZURE_CLIENT_SECRET="random-password" export AZURE_TENANT_ID="tenant-ID" ``` -* Grant the above mentioned application authorization to perform secret operations on the keyvault: - ```Bash - az keyvault set-policy --name --spn $AZURE_CLIENT_ID --secret-permissions backup delete get list set - ``` - > --secret-permissions: - > Accepted values: backup, delete, get, list, purge, recover, restore, set +- Grant the above mentioned application authorization to perform secret operations on the keyvault: -* Use the above mentioned Key Vault name to retrieve details of your Vault which also contains your Key Vault URL: - ```Bash - az keyvault show --name - ``` + ```Bash + az keyvault set-policy --name --spn $AZURE_CLIENT_ID --secret-permissions backup delete get list set + ``` + + > --secret-permissions: + > Accepted values: backup, delete, get, list, purge, recover, restore, set + +- Use the above mentioned Key Vault name to retrieve details of your Vault which also contains your Key Vault URL: + ```Bash + az keyvault show --name + ``` ### Authenticate the client @@ -144,12 +147,14 @@ In key vaults with 'soft delete' enabled, keys are not immediately removed but i ## Examples -The following sections provide code snippets that cover some of the common tasks using Azure KeyVault Keys. +The following sections provide code snippets that cover some of the common tasks using Azure KeyVault Keys. Once you have authenticated and created an instance of an `KeysClient` class (see "Authenticate the client" above), you can create, read, update, and delete keys: ### Create a key + `createKey` creates a Key to be stored in the Azure Key Vault. If a key with the same name already exists, then a new version of the key is created. + ```javascript const keyName = "MyKeyName"; @@ -158,14 +163,18 @@ console.log("result: ", result); ``` ### Get a key + `getKey` retrieves a key previous stores in the Key Vault. + ```javascript const getResult = await client.getKey(keyName); console.log("getResult: ", getResult); ``` ### List all versions of a key + `listKeyVersions` will list versions of the given key. + ```javascript for await (let version of client.listKeyVersions(keyName)) { console.log("version: ", version); @@ -173,7 +182,9 @@ for await (let version of client.listKeyVersions(keyName)) { ``` ### List all keys + `listKeys` will list all keys in the Key Vault. + ```javascript for await (let listedKey of client.listKeys()) { console.log("key: ", listedKey); @@ -181,14 +192,17 @@ for await (let listedKey of client.listKeys()) { ``` ### Update a key + `updateKey` updates the attributes of a key. + ```javascript const updatedKey = await client.updateKeyAttributes(keyName, result.version, { enabled: false }); - ``` ### Delete a key + `deleteKey` deletes a key previously stored in the Key Vault. When [soft-delete](https://docs.microsoft.com/en-us/azure/key-vault/key-vault-ovw-soft-delete) is not enabled for the Key Vault, this operation permanently deletes the key. + ```javascript await client.deleteKey(keyName); ``` @@ -235,17 +249,18 @@ export DEBUG=azure:keyvault-keys:error,azure-amqp-common:error,rhea-promise:erro node your-test-script.js >out.log 2>&1 ``` - Logging statements from your test script and the sdk go to the same file `out.log`. + ```bash node your-test-script.js &> out.log ``` - + ## Next steps Please take a look at the [samples](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/keyvault/keyvault-keys/samples) directory for detailed examples on how to use this library. -* [helloWorld.ts](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/keyvault/keyvault-keys/samples/helloWorld.ts) - Create, read, update, and delete keys +- [helloWorld.ts](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/keyvault/keyvault-keys/samples/helloWorld.ts) - Create, read, update, and delete keys ## Contributing @@ -257,7 +272,7 @@ When you submit a pull request, a CLA-bot will automatically determine whether y a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA. -If you'd like to contribute to this library, please read the the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. +If you'd like to contribute to this library, please read the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or diff --git a/sdk/keyvault/keyvault-secrets/README.md b/sdk/keyvault/keyvault-secrets/README.md index c121d25659fd..98c3f65740ed 100644 --- a/sdk/keyvault/keyvault-secrets/README.md +++ b/sdk/keyvault/keyvault-secrets/README.md @@ -47,38 +47,41 @@ You also need to enable `compilerOptions.allowSyntheticDefaultImports` in your t Use the [Azure Cloud Shell](https://shell.azure.com/bash) snippet below to create/get client secret credentials. - * Create a service principal and configure its access to Azure resources: - ```Bash - az ad sp create-for-rbac -n --skip-assignment - ``` - Output: - ```json - { - "appId": "generated-app-ID", - "displayName": "dummy-app-name", - "name": "http://dummy-app-name", - "password": "random-password", - "tenant": "tenant-ID" - } - ``` -* Use the above returned credentials information to set **AZURE_CLIENT_ID**(appId), **AZURE_CLIENT_SECRET**(password) and **AZURE_TENANT_ID**(tenant) environment variables. The following example shows a way to do this in Bash: +- Create a service principal and configure its access to Azure resources: + ```Bash + az ad sp create-for-rbac -n --skip-assignment + ``` + Output: + ```json + { + "appId": "generated-app-ID", + "displayName": "dummy-app-name", + "name": "http://dummy-app-name", + "password": "random-password", + "tenant": "tenant-ID" + } + ``` +- Use the above returned credentials information to set **AZURE_CLIENT_ID**(appId), **AZURE_CLIENT_SECRET**(password) and **AZURE_TENANT_ID**(tenant) environment variables. The following example shows a way to do this in Bash: + ```Bash export AZURE_CLIENT_ID="generated-app-ID" export AZURE_CLIENT_SECRET="random-password" export AZURE_TENANT_ID="tenant-ID" ``` -* Grant the above mentioned application authorization to perform secret operations on the keyvault: - ```Bash - az keyvault set-policy --name --spn $AZURE_CLIENT_ID --secret-permissions backup delete get list set - ``` - > --secret-permissions: - > Accepted values: backup, delete, get, list, purge, recover, restore, set +- Grant the above mentioned application authorization to perform secret operations on the keyvault: -* Use the above mentioned Key Vault name to retrieve details of your Vault which also contains your Key Vault URL: - ```Bash - az keyvault show --name - ``` + ```Bash + az keyvault set-policy --name --spn $AZURE_CLIENT_ID --secret-permissions backup delete get list set + ``` + + > --secret-permissions: + > Accepted values: backup, delete, get, list, purge, recover, restore, set + +- Use the above mentioned Key Vault name to retrieve details of your Vault which also contains your Key Vault URL: + ```Bash + az keyvault show --name + ``` ### Authenticate the client @@ -129,29 +132,35 @@ Once a secret is created, it is possible to update attributes of the secret. For Key vaults allow deleting secrets so that they are no longer available. In key vaults with 'soft delete' enabled, secrets are not immediately removed but instead marked simply as 'deleted'. These deleted secrets can be listed, purged, and recovered. - + ## Examples -The following sections provide code snippets that cover some of the common tasks using Azure KeyVault Secrets. +The following sections provide code snippets that cover some of the common tasks using Azure KeyVault Secrets. Once you have authenticated and created an instance of an `SecretsClient` class (see "Authenticate the client" above), you can create, read, update, and delete secrets: ### Create a secret + `setSecret` creates a secret to be stored in the Azure Key Vault. If a secret with the same name already exists, then a new version of the secret is created. + ```javascript const secretName = "MySecretName"; const result = await client.setSecret(secretName, "MySecretValue"); ``` ### Get a secret + `getSecret` retrieves a secret previously stored in the Key Vault. + ```javascript const getResult = await client.getSecret(secretName); console.log("getResult: ", getResult); ``` ### List all versions of a secret + `listSecretVersions` will list versions of the given secret. + ```javascript for await (let version of client.listSecretVersions(secretName)) { console.log("version: ", version); @@ -159,7 +168,9 @@ for await (let version of client.listSecretVersions(secretName)) { ``` ### List all secrets + `listSecrets` will list all secrets in the Key Vault. + ```javascript for await (let listedSecret of client.listSecrets()) { console.log("secret: ", listedSecret); @@ -167,14 +178,18 @@ for await (let listedSecret of client.listSecrets()) { ``` ### Update the attributes of a secret + `updateSecretAttributes` updates the attributes of a secret. -```javascript + +```javascript const result = getSecret(secretName); await client.updateSecretAttributes(secretName, result.version, { enabled: false }); ``` ### Delete a secret + `deleteSecret` deletes a secret previously stored in the Key Vault. When [soft-delete](https://docs.microsoft.com/en-us/azure/key-vault/key-vault-ovw-soft-delete) is not enabled for the Key Vault, this operation permanently deletes the deletes. + ```javascript await client.deleteSecret(secretName); ``` @@ -221,20 +236,21 @@ export DEBUG=azure:keyvault-secrets:error,azure-amqp-common:error,rhea-promise:e node your-test-script.js >out.log 2>&1 ``` - Logging statements from your test script and the sdk go to the same file `out.log`. + ```bash node your-test-script.js &> out.log ``` - + ## Next steps Please take a look at the [samples](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/keyvault/keyvault-secrets/samples) directory for detailed examples on how to use this library. -* [helloWorld.ts](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/keyvault/keyvault-secrets/samples/helloWorld.ts) - Create, read, update, and delete secrets -* [listOperations.ts](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/keyvault/keyvault-secrets/samples/listOperations.ts) - List secrets all at once, list by page, and list versions of a secret. -* [backupAndRestore.ts](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/keyvault/keyvault-secrets/samples/backupAndRestore.ts) - Backup a secret and restore it after it has been deleted. -* [deleteAndRecover.ts](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/keyvault/keyvault-secrets/samples/deleteAndRecover.ts) - Deletes a secret and recovers it after. **Note:** this assumes [soft-delete](https://docs.microsoft.com/en-us/azure/key-vault/key-vault-ovw-soft-delete) is enabled for the key vault. +- [helloWorld.ts](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/keyvault/keyvault-secrets/samples/helloWorld.ts) - Create, read, update, and delete secrets +- [listOperations.ts](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/keyvault/keyvault-secrets/samples/listOperations.ts) - List secrets all at once, list by page, and list versions of a secret. +- [backupAndRestore.ts](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/keyvault/keyvault-secrets/samples/backupAndRestore.ts) - Backup a secret and restore it after it has been deleted. +- [deleteAndRecover.ts](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/keyvault/keyvault-secrets/samples/deleteAndRecover.ts) - Deletes a secret and recovers it after. **Note:** this assumes [soft-delete](https://docs.microsoft.com/en-us/azure/key-vault/key-vault-ovw-soft-delete) is enabled for the key vault. ## Contributing @@ -246,7 +262,7 @@ When you submit a pull request, a CLA-bot will automatically determine whether y a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA. -If you'd like to contribute to this library, please read the the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. +If you'd like to contribute to this library, please read the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or From 2009f0526daeee48acb928866268c12f48b7162c Mon Sep 17 00:00:00 2001 From: David Wilson Date: Fri, 12 Jul 2019 11:37:09 -0700 Subject: [PATCH 271/289] Switch Rollup minifier plugin to rollup-plugin-terser (#4203) * Use rollup-plugin-terser in @azure/abort-controller * Use rollup-plugin-terser in @azure/core-amqp * Use rollup-plugin-terser in @azure/core-auth * Use rollup-plugin-terser in @azure/event-hubs * Use rollup-plugin-terser in @azure/storage-blob * Use rollup-plugin-terser in @azure/storage-file * Use rollup-plugin-terser in @azure/storage-queue * Use rollup-plugin-terser in the SDK library template --- sdk/core/abort-controller/package.json | 2 +- sdk/core/abort-controller/rollup.base.config.js | 6 +++--- sdk/core/core-amqp/package.json | 2 +- sdk/core/core-amqp/rollup.base.config.js | 6 +++--- sdk/core/core-auth/package.json | 2 +- sdk/core/core-auth/rollup.base.config.js | 16 +++++++++++++--- sdk/eventhub/event-hubs/package.json | 2 +- sdk/eventhub/event-hubs/rollup.base.config.js | 6 +++--- sdk/storage/storage-blob/package.json | 2 +- sdk/storage/storage-blob/rollup.base.config.js | 6 +++--- sdk/storage/storage-file/package.json | 2 +- sdk/storage/storage-file/rollup.base.config.js | 6 +++--- sdk/storage/storage-queue/package.json | 2 +- sdk/storage/storage-queue/rollup.base.config.js | 6 +++--- sdk/template/template/package.json | 2 +- sdk/template/template/rollup.base.config.js | 6 +++--- 16 files changed, 42 insertions(+), 32 deletions(-) diff --git a/sdk/core/abort-controller/package.json b/sdk/core/abort-controller/package.json index 60b89e50a32c..c1ec9ff92200 100644 --- a/sdk/core/abort-controller/package.json +++ b/sdk/core/abort-controller/package.json @@ -107,7 +107,7 @@ "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-replace": "^2.1.0", "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-uglify": "^6.0.0", + "rollup-plugin-terser": "^5.1.1", "typescript": "^3.2.2" } } diff --git a/sdk/core/abort-controller/rollup.base.config.js b/sdk/core/abort-controller/rollup.base.config.js index c640b10794f8..ade53aa28af3 100644 --- a/sdk/core/abort-controller/rollup.base.config.js +++ b/sdk/core/abort-controller/rollup.base.config.js @@ -5,7 +5,7 @@ import nodeResolve from "rollup-plugin-node-resolve"; import multiEntry from "rollup-plugin-multi-entry"; import cjs from "rollup-plugin-commonjs"; import replace from "rollup-plugin-replace"; -import { uglify } from "rollup-plugin-uglify"; +import { terser } from "rollup-plugin-terser"; import sourcemaps from "rollup-plugin-sourcemaps"; const pkg = require("./package.json"); @@ -57,7 +57,7 @@ export function nodeConfig(test = false) { // applies to test code, which causes all tests to be removed by tree-shaking. baseConfig.treeshake = false; } else if (production) { - baseConfig.plugins.push(uglify()); + baseConfig.plugins.push(terser()); } return baseConfig; @@ -118,7 +118,7 @@ export function browserConfig(test = false) { // applies to test code, which causes all tests to be removed by tree-shaking. baseConfig.treeshake = false; } else if (production) { - baseConfig.plugins.push(uglify()); + baseConfig.plugins.push(terser()); } return baseConfig; diff --git a/sdk/core/core-amqp/package.json b/sdk/core/core-amqp/package.json index fe79973775e8..b6b379582402 100644 --- a/sdk/core/core-amqp/package.json +++ b/sdk/core/core-amqp/package.json @@ -116,7 +116,7 @@ "rollup-plugin-replace": "^2.1.0", "rollup-plugin-shim": "^1.0.0", "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-uglify": "^6.0.0", + "rollup-plugin-terser": "^5.1.1", "sinon": "^7.1.0", "ts-node": "^7.0.1", "typescript": "^3.2.2", diff --git a/sdk/core/core-amqp/rollup.base.config.js b/sdk/core/core-amqp/rollup.base.config.js index 87872a0c05ff..3ad1745b702c 100644 --- a/sdk/core/core-amqp/rollup.base.config.js +++ b/sdk/core/core-amqp/rollup.base.config.js @@ -7,7 +7,7 @@ import nodeResolve from "rollup-plugin-node-resolve"; import multiEntry from "rollup-plugin-multi-entry"; import cjs from "rollup-plugin-commonjs"; import replace from "rollup-plugin-replace"; -import { uglify } from "rollup-plugin-uglify"; +import { terser } from "rollup-plugin-terser"; import sourcemaps from "rollup-plugin-sourcemaps"; import inject from "rollup-plugin-inject"; import shim from "rollup-plugin-shim"; @@ -78,7 +78,7 @@ export function nodeConfig(test = false) { // applies to test code, which causes all tests to be removed by tree-shaking. baseConfig.treeshake = false; } else if (production) { - baseConfig.plugins.push(uglify()); + baseConfig.plugins.push(terser()); } return baseConfig; @@ -162,7 +162,7 @@ export function browserConfig(test = false) { // applies to test code, which causes all tests to be removed by tree-shaking. baseConfig.treeshake = false; } else if (production) { - baseConfig.plugins.push(uglify()); + baseConfig.plugins.push(terser()); } return baseConfig; diff --git a/sdk/core/core-auth/package.json b/sdk/core/core-auth/package.json index 7d73cd98a7dc..e7160b44a305 100644 --- a/sdk/core/core-auth/package.json +++ b/sdk/core/core-auth/package.json @@ -88,7 +88,7 @@ "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-replace": "^2.1.0", "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-uglify": "^6.0.0", + "rollup-plugin-terser": "^5.1.1", "rollup-plugin-visualizer": "^2.0.0", "typescript": "^3.2.2", "util": "^0.11.1" diff --git a/sdk/core/core-auth/rollup.base.config.js b/sdk/core/core-auth/rollup.base.config.js index 8897d63bd33e..ae3f3354c5b4 100644 --- a/sdk/core/core-auth/rollup.base.config.js +++ b/sdk/core/core-auth/rollup.base.config.js @@ -2,7 +2,7 @@ import nodeResolve from "rollup-plugin-node-resolve"; import multiEntry from "rollup-plugin-multi-entry"; import cjs from "rollup-plugin-commonjs"; import replace from "rollup-plugin-replace"; -import { uglify } from "rollup-plugin-uglify"; +import { terser } from "rollup-plugin-terser"; import sourcemaps from "rollup-plugin-sourcemaps"; import viz from "rollup-plugin-visualizer"; @@ -43,8 +43,13 @@ export function nodeConfig(test = false) { // mark assert as external baseConfig.external.push("assert"); + + // 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(uglify()); + baseConfig.plugins.push(terser()); } return baseConfig; @@ -86,9 +91,14 @@ export function browserConfig(test = false, production = false) { 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.output.file = "browser/core-auth.min.js"; - baseConfig.plugins.push(uglify()); + baseConfig.plugins.push(terser()); } return baseConfig; diff --git a/sdk/eventhub/event-hubs/package.json b/sdk/eventhub/event-hubs/package.json index 81717f42caeb..f299af9f63f4 100644 --- a/sdk/eventhub/event-hubs/package.json +++ b/sdk/eventhub/event-hubs/package.json @@ -129,7 +129,7 @@ "rollup-plugin-replace": "^2.1.0", "rollup-plugin-shim": "^1.0.0", "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-uglify": "^6.0.0", + "rollup-plugin-terser": "^5.1.1", "ts-mocha": "^6.0.0", "ts-node": "^7.0.1", "typescript": "^3.2.2", diff --git a/sdk/eventhub/event-hubs/rollup.base.config.js b/sdk/eventhub/event-hubs/rollup.base.config.js index a4f5c3f4427d..833571a7f4f0 100644 --- a/sdk/eventhub/event-hubs/rollup.base.config.js +++ b/sdk/eventhub/event-hubs/rollup.base.config.js @@ -6,7 +6,7 @@ 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 { uglify } from "rollup-plugin-uglify"; +import { terser } from "rollup-plugin-terser"; import sourcemaps from "rollup-plugin-sourcemaps"; import shim from "rollup-plugin-shim"; import inject from "rollup-plugin-inject"; @@ -79,7 +79,7 @@ export function nodeConfig(test = false) { // applies to test code, which causes all tests to be removed by tree-shaking. baseConfig.treeshake = false; } else if (production) { - baseConfig.plugins.push(uglify()); + baseConfig.plugins.push(terser()); } return baseConfig; @@ -170,7 +170,7 @@ export function browserConfig(test = false) { // applies to test code, which causes all tests to be removed by tree-shaking. baseConfig.treeshake = false; } else if (production) { - baseConfig.plugins.push(uglify()); + baseConfig.plugins.push(terser()); } return baseConfig; diff --git a/sdk/storage/storage-blob/package.json b/sdk/storage/storage-blob/package.json index c44a09792b0f..230f36c0890a 100644 --- a/sdk/storage/storage-blob/package.json +++ b/sdk/storage/storage-blob/package.json @@ -133,7 +133,7 @@ "rollup-plugin-replace": "^2.1.0", "rollup-plugin-shim": "^1.0.0", "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-uglify": "^6.0.0", + "rollup-plugin-terser": "^5.1.1", "rollup-plugin-visualizer": "^2.0.0", "source-map-support": "^0.5.9", "ts-node": "^7.0.1", diff --git a/sdk/storage/storage-blob/rollup.base.config.js b/sdk/storage/storage-blob/rollup.base.config.js index 87d7066374e5..1e22b17b89b0 100644 --- a/sdk/storage/storage-blob/rollup.base.config.js +++ b/sdk/storage/storage-blob/rollup.base.config.js @@ -5,7 +5,7 @@ import nodeResolve from "rollup-plugin-node-resolve"; import multiEntry from "rollup-plugin-multi-entry"; import cjs from "rollup-plugin-commonjs"; import replace from "rollup-plugin-replace"; -import { uglify } from "rollup-plugin-uglify"; +import { terser } from "rollup-plugin-terser"; import sourcemaps from "rollup-plugin-sourcemaps"; import shim from "rollup-plugin-shim"; // import visualizer from "rollup-plugin-visualizer"; @@ -66,7 +66,7 @@ export function nodeConfig(test = false) { // applies to test code, which causes all tests to be removed by tree-shaking. baseConfig.treeshake = false; } else if (production) { - baseConfig.plugins.push(uglify()); + baseConfig.plugins.push(terser()); } return baseConfig; @@ -135,7 +135,7 @@ export function browserConfig(test = false, production = false) { } else if (production) { baseConfig.output.file = "browser/azure-storage-blob.min.js"; baseConfig.plugins.push( - uglify({ + terser({ output: { preamble: banner } diff --git a/sdk/storage/storage-file/package.json b/sdk/storage/storage-file/package.json index d330f5eede30..89da72af9e40 100644 --- a/sdk/storage/storage-file/package.json +++ b/sdk/storage/storage-file/package.json @@ -133,7 +133,7 @@ "rollup-plugin-replace": "^2.1.0", "rollup-plugin-shim": "^1.0.0", "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-uglify": "^6.0.0", + "rollup-plugin-terser": "^5.1.1", "rollup-plugin-visualizer": "^2.0.0", "source-map-support": "^0.5.9", "ts-node": "^7.0.1", diff --git a/sdk/storage/storage-file/rollup.base.config.js b/sdk/storage/storage-file/rollup.base.config.js index 4a6369191d3f..588416f23e6c 100644 --- a/sdk/storage/storage-file/rollup.base.config.js +++ b/sdk/storage/storage-file/rollup.base.config.js @@ -5,7 +5,7 @@ import nodeResolve from "rollup-plugin-node-resolve"; import multiEntry from "rollup-plugin-multi-entry"; import cjs from "rollup-plugin-commonjs"; import replace from "rollup-plugin-replace"; -import { uglify } from "rollup-plugin-uglify"; +import { terser } from "rollup-plugin-terser"; import sourcemaps from "rollup-plugin-sourcemaps"; import shim from "rollup-plugin-shim"; // import visualizer from "rollup-plugin-visualizer"; @@ -66,7 +66,7 @@ export function nodeConfig(test = false) { // applies to test code, which causes all tests to be removed by tree-shaking. baseConfig.treeshake = false; } else if (production) { - baseConfig.plugins.push(uglify()); + baseConfig.plugins.push(terser()); } return baseConfig; @@ -144,7 +144,7 @@ export function browserConfig(test = false, production = false) { } else if (production) { baseConfig.output.file = "browser/azure-storage-file.min.js"; baseConfig.plugins.push( - uglify({ + terser({ output: { preamble: banner } diff --git a/sdk/storage/storage-queue/package.json b/sdk/storage/storage-queue/package.json index d17b30139914..dd826d68c784 100644 --- a/sdk/storage/storage-queue/package.json +++ b/sdk/storage/storage-queue/package.json @@ -131,7 +131,7 @@ "rollup-plugin-replace": "^2.1.0", "rollup-plugin-shim": "^1.0.0", "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-uglify": "^6.0.0", + "rollup-plugin-terser": "^5.1.1", "rollup-plugin-visualizer": "^2.0.0", "source-map-support": "^0.5.9", "ts-node": "^7.0.1", diff --git a/sdk/storage/storage-queue/rollup.base.config.js b/sdk/storage/storage-queue/rollup.base.config.js index ead2ec18453f..7039f0022802 100644 --- a/sdk/storage/storage-queue/rollup.base.config.js +++ b/sdk/storage/storage-queue/rollup.base.config.js @@ -5,7 +5,7 @@ import nodeResolve from "rollup-plugin-node-resolve"; import multiEntry from "rollup-plugin-multi-entry"; import cjs from "rollup-plugin-commonjs"; import replace from "rollup-plugin-replace"; -import { uglify } from "rollup-plugin-uglify"; +import { terser } from "rollup-plugin-terser"; import sourcemaps from "rollup-plugin-sourcemaps"; import shim from "rollup-plugin-shim"; // import visualizer from "rollup-plugin-visualizer"; @@ -66,7 +66,7 @@ export function nodeConfig(test = false) { // applies to test code, which causes all tests to be removed by tree-shaking. baseConfig.treeshake = false; } else if (production) { - baseConfig.plugins.push(uglify()); + baseConfig.plugins.push(terser()); } return baseConfig; @@ -133,7 +133,7 @@ export function browserConfig(test = false, production = false) { } else if (production) { baseConfig.output.file = "browser/azure-storage-queue.min.js"; baseConfig.plugins.push( - uglify({ + terser({ output: { preamble: banner } diff --git a/sdk/template/template/package.json b/sdk/template/template/package.json index 801c690d18be..41fa202c953b 100644 --- a/sdk/template/template/package.json +++ b/sdk/template/template/package.json @@ -90,7 +90,7 @@ "rollup-plugin-node-resolve": "^5.0.2", "rollup-plugin-replace": "^2.1.0", "rollup-plugin-sourcemaps": "^0.4.2", - "rollup-plugin-uglify": "^6.0.0", + "rollup-plugin-terser": "^5.1.1", "rollup-plugin-visualizer": "^2.0.0", "typescript": "^3.2.2", "util": "^0.11.1" diff --git a/sdk/template/template/rollup.base.config.js b/sdk/template/template/rollup.base.config.js index 25bb67d0163f..f7ed0a1b2851 100644 --- a/sdk/template/template/rollup.base.config.js +++ b/sdk/template/template/rollup.base.config.js @@ -2,7 +2,7 @@ import nodeResolve from "rollup-plugin-node-resolve"; import multiEntry from "rollup-plugin-multi-entry"; import cjs from "rollup-plugin-commonjs"; import replace from "rollup-plugin-replace"; -import { uglify } from "rollup-plugin-uglify"; +import { terser } from "rollup-plugin-terser"; import sourcemaps from "rollup-plugin-sourcemaps"; import viz from "rollup-plugin-visualizer"; @@ -49,7 +49,7 @@ export function nodeConfig(test = false) { // applies to test code, which causes all tests to be removed by tree-shaking. baseConfig.treeshake = false; } else if (production) { - baseConfig.plugins.push(uglify()); + baseConfig.plugins.push(terser()); } return baseConfig; @@ -103,7 +103,7 @@ export function browserConfig(test = false, production = false) { baseConfig.treeshake = false; } else if (production) { baseConfig.output.file = "browser/azure-template.min.js"; - baseConfig.plugins.push(uglify()); + baseConfig.plugins.push(terser()); } return baseConfig; From 73f7f90c4eadbf982d01c5ab886c68a2fd2850f1 Mon Sep 17 00:00:00 2001 From: KarishmaGhiya Date: Fri, 12 Jul 2019 11:40:03 -0700 Subject: [PATCH 272/289] [event-hubs, service-bus] referencing developer guide in the readme and contribute.md (#4269) * referencing developer guide in the readme and contribute.md --- CONTRIBUTING.md | 52 ++++++++++++++---- sdk/eventhub/event-hubs/CONTRIBUTING.md | 61 ---------------------- sdk/eventhub/event-hubs/README.md | 7 +++ sdk/servicebus/service-bus/CONTRIBUTING.md | 61 ---------------------- sdk/servicebus/service-bus/README.md | 7 +++ 5 files changed, 55 insertions(+), 133 deletions(-) delete mode 100644 sdk/eventhub/event-hubs/CONTRIBUTING.md delete mode 100644 sdk/servicebus/service-bus/CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c39806d5eee6..6c370c82b771 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,19 +1,42 @@ -# How to contribute to the Azure SDK for Javascript +# Contributing -You found something you'd like to change? Great! Please submit a pull request and we'll do our best to work with you to get your code included into the project. +This project welcomes contributions and suggestions. Most contributions require you to agree to a +Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us +the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com. -1. Commit your changes (`git commit -am 'Add some feature'`) -2. Push to the branch (`git push origin my-new-feature`) -3. Create new Pull Request +When you submit a pull request, a CLA bot will automatically determine whether you need to provide +a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions +provided by the bot. You will only need to do this once across all repos using our CLA. This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or +contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. + +# How to contribute to the Azure SDK for Javascript -For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. +There are many ways that you can contribute to the Azure Event Hubs client project: -If you would like to become an active contributor to this project please follow the instructions provided in [Microsoft Azure Projects Contribution Guidelines](http://azure.github.io/guidelines/). +- Submit a bug +- Submit a code fix for a bug +- Submit additions or modifications to the documentation +- Submit a feature request + +All code submissions will be reviewed and tested by the team, and those that meet a high bar for both quality and design/roadmap appropriateness will be merged into the source. Be sure to follow the existing file/folder structure when adding new boards or sensors. If you encounter any bugs with the library please file an issue in the [Issues](https://github.com/Azure/azure-sdk-for-js/issues) section of the project. +## Things to keep in mind when contributing + +Some guidance for when you make a contribution: + +- Add/update unit tests and code as required by your change +- Make sure you run all the unit tests on the affected platform(s)/languages. If the change is in common code, generally running on one platform would be acceptable. +- Run end-to-end tests or simple sample code to make sure the lib works in an end-to-end scenario. + +## Big contributions + +If your contribution is significantly big it is better to first check with the project developers in order to make sure the change aligns with the long term plans. This can be done simply by submitting a question via the GitHub Issues section. + ## Project orchestration This project uses [Rush](https://rushjs.io) to manage our many Azure SDK libraries within a single repository. It is highly recommended that you read the [Rush Developer Tutorials](https://rushjs.io/pages/developer/new_developer/) to familiarize yourself with the tool. @@ -33,6 +56,7 @@ can continue to contribute to the project using the standard `npm` workflow, ado Want to get started hacking on the code? Super! Follow these instructions to get up and running. First, make sure you have the prerequisites installed and available on your `$PATH`: + - Git - Node 8.x or higher - Rush 5.7.3 or higher (install / update globally via `npm install -g @microsoft/rush`) @@ -44,14 +68,16 @@ Next, get the code: 3. Open a terminal and move into your local copy (`cd azure-sdk-for-js`) 4. Install and link all dependencies (`rush update`) - ### Making the switch + If you have previously worked in this repo using the `npm` workflow, the first time you switch to using Rush you should commit or stash any untracked files and then get back to a clean state by running `rush reset-workspace` before proceeding any further. This will get rid of any latent package-lock files, as well as your existing (incompatible) node_modules directories. You can then proceed down the path outlined below. ### Warnings for VSCode users + Visual Studio Code has a feature which will automatically fetch and install @types packages for you, using the standard npm package manager. This will cause problems with your node_modules directory, since Rush uses PNPM which lays out this directory quite differently. It's highly recommended that you ensure "Typescript: Disable Automatic Type Acquisition" is checked in your VSCode Workspace Settings (or ensure `typescript.disableAutomaticTypeAcquisition` is present in your .vscode/settings.json file). The current version of VSCode for Windows has a bug that may cause a "file locked" error when you run any Rush command that modifies your node_modules directory: + ``` ERROR: Error: Error: EPERM: operation not permitted, mkdir 'C:\XXXXX\node_modules' Often this is caused by a file lock from a process such as your text editor, command prompt, or "gulp serve" @@ -60,6 +86,7 @@ Often this is caused by a file lock from a process such as your text editor, com This bug is fixed in the Insiders build of VSCode (1.34), and will be included in the next release. Until then, you can resolve this by running the "Typescript: Restart TS server" command from the Command Palette to release the lock on the files. ### Warnings for Windows users + Git for Windows has a bug where repository files may be unintentionally removed by `git clean -df` when a directory is locally linked. Because Rush creates local links between packages, you may encounter this. It's highly recommended to use the `rush reset-workspace` command to get your working directory back to a clean state instead. If you prefer to run `git clean -df` manually, you must first run `rush unlink` so that the operation can be performed safely. ## Inner loop developer workflow with Rush @@ -104,6 +131,7 @@ By default, Rush only displays things written to `STDERR`. If you want to see th Most package scripts are exposed as Rush commands. Use `rush ` in place of `npm run ` to run the package script in all projects. Navigate to a project's directory and substitute `rushx` for `rush` to run the script for just the current project. Run `rush --help` for more information about each script. All projects have at least the following scripts: + - `audit`: Run `npm audit` on the project (with some workarounds for Rush) - `build`: Build the project's production artifacts (Node and browser bundles) - `build:test`: Build the project's test artifacts only @@ -124,6 +152,7 @@ All projects have at least the following scripts: - `unit-test`: Execute all unit tests Projects may optionally have the following scripts: + - `extract-api`: Run API Extractor to show API issues and generate API reports ### Getting back to a clean state @@ -137,7 +166,7 @@ If you want to get back to a completely clean state, you can instead run `rush r Generally speaking, the following commands are roughly equivalent: | NPM command | Rush command | Rush command effect | -|------------------------------------- | ------------------------------------ | ---------------------------------------------------------------- | +| ------------------------------------ | ------------------------------------ | ---------------------------------------------------------------- | | `npm install` | `rush update` | Install dependencies for all projects in the Rush workspace | | `npm install --save[-dev] ` | `rush add -p [--dev]` | Add or update a dependency in the current project | | `npm build` | `rush [re]build` | Build all projects in the Rush workspace | @@ -155,11 +184,11 @@ Generally speaking, the following commands are roughly equivalent: To add a new library to the repo, update `rush.json` in the root of the repo and add a new entry to the `projects` array at the bottom of the file. The package name must be the full name of the package as specified in its package.json. Your new library must follow our [repository structure](https://github.com/Azure/azure-sdk/blob/master/docs/engineering-system/repo-structure.md) (specifically, it must be located at `sdk//`) and your library's package.json must contain the required scripts as documented [above](#other-npm-scripts). Once the library is added, run `rush update` to install and link dependencies. If your new library has introduced a dependency version conflict, this command will fail. See [above](#resolving-dependency-version-conflicts) to learn how to resolve dependency version conflicts. -Rush assumes that anything printed to `STDERR` is a warning. Your package scripts should avoid writing to `STDERR` unless emitting warnings or errors, since this will cause Rush to flag them as warnings during the execution of your build or script command. If your library uses a tool that can't be configured this way, you can still append ` 2>&1` to the command which will redirect all output to `STDOUT`. You won't see warnings show up, but Rush will still consider the command to have failed as long as it returns a nonzero exit code. +Rush assumes that anything printed to `STDERR` is a warning. Your package scripts should avoid writing to `STDERR` unless emitting warnings or errors, since this will cause Rush to flag them as warnings during the execution of your build or script command. If your library uses a tool that can't be configured this way, you can still append `2>&1` to the command which will redirect all output to `STDOUT`. You won't see warnings show up, but Rush will still consider the command to have failed as long as it returns a nonzero exit code. In general, it's recommended to avoid using NPM [hook scripts](https://docs.npmjs.com/misc/scripts) (those starting with `pre` / `post`). The build system will always explicitly run the `install`, `build`, `build:test`, `pack`, `audit`, `lint`, `unit-test`, and `integration-test` scripts at the appropriate times during the build. Adding hooks that performs steps like installing dependencies or compiling the source code will at best slow down the build, and at worst may lead to difficult to diagnose build failures. -Because Rush uses PNPM to download and manage dependencies, it's ***especially*** important to make sure that none of your package scripts are calling `npm install` when your library is built via the Rush toolchain. Most commonly this occurs in a `prepack` or `prebuild` script. Ensure your library does not contain these scripts - or if you determine that such a script is required, ensure that it doesn't run `npm install`. +Because Rush uses PNPM to download and manage dependencies, it's **_especially_** important to make sure that none of your package scripts are calling `npm install` when your library is built via the Rush toolchain. Most commonly this occurs in a `prepack` or `prebuild` script. Ensure your library does not contain these scripts - or if you determine that such a script is required, ensure that it doesn't run `npm install`. ### Issues with Rollup @@ -178,6 +207,7 @@ equal is not exported by ..\..\..\common\temp\node_modules\.registry.npmjs.org\a ``` This is due to an open issue with one of Rollup's plugins (if you want the details, refer to this [GitHub issue](https://github.com/rollup/rollup-plugin-node-resolve/issues/94)). To work around the issue, locate the Rollup configuration object for your browser bundle and modify the configuration for the nodeResolve plugin to match the following: + ``` nodeResolve({ mainFields: ['module', 'browser'], diff --git a/sdk/eventhub/event-hubs/CONTRIBUTING.md b/sdk/eventhub/event-hubs/CONTRIBUTING.md deleted file mode 100644 index f37f78dde551..000000000000 --- a/sdk/eventhub/event-hubs/CONTRIBUTING.md +++ /dev/null @@ -1,61 +0,0 @@ -# Contributing - -This project welcomes contributions and suggestions. Most contributions require you to -agree to a Contributor License Agreement (CLA) declaring that you have the right to, -and actually do, grant us the rights to use your contribution. For details, visit -https://cla.microsoft.com. - -When you submit a pull request, a CLA-bot will automatically determine whether you need -to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the -instructions provided by the bot. You will only need to do this once across all repositories using our CLA. - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). -For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) -or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. - -## What to contribute -There are many ways that you can contribute to the Azure Event Hubs client project: - -* Submit a bug -* Submit a code fix for a bug -* Submit additions or modifications to the documentation -* Submit a feature request - -## Contributing Code -To contribute code you need to issue a Pull Request against the develop branch. All code submissions will be reviewed and tested by the team, and those that meet a high bar for both quality and design/roadmap appropriateness will be merged into the source. Be sure to follow the existing file/folder structure when adding new boards or sensors. - -You must sign a [Contribution License Agreement](https://cla.microsoft.com/) ([CLA](https://cla.microsoft.com/)) before submitting a Pull Request. To complete the CLA, you will need to submit the request via the form and then electronically sign the CLA when you receive the email containing the link to the document. - -## Big contributions -If your contribution is significantly big it is better to first check with the project developers in order to make sure the change aligns with the long term plans. This can be done simply by submitting a question via the GitHub Issues section. - -## Things to keep in mind when contributing -Some guidance for when you make a contribution: - -* Add/update unit tests and code as required by your change -* Make sure you run all the unit tests on the affected platform(s)/languages. If the change is in common code, generally running on one platform would be acceptable. -* Run end-to-end tests or simple sample code to make sure the lib works in an end-to-end scenario. - -## Building the library -- Install typescript, ts-node globally (optional, but very useful) -``` -npm i -g typescript -npm i -g ts-node -``` -- Clone the repo, cd to the sub folder for event hubs and install the dependencies -``` -git clone https://github.com/azure/azure-sdk-for-js.git -cd azure-sdk-for-js/sdk/eventhub/event-hubs -npm install -``` -- Build the project -``` -npm run build -``` - -## Run/Debug tests - -If you want to run or debug tests in this project, please see our [Test README](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/eventhub/testhub/README.md). - -## AMQP Dependencies ## -The Event Hubs library depends on the [rhea-promise](https://github.com/amqp/rhea-promise) library for managing connections, sending and receiving events over the [AMQP](http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-complete-v1.0-os.pdf) protocol. diff --git a/sdk/eventhub/event-hubs/README.md b/sdk/eventhub/event-hubs/README.md index ac320ebf1f86..c4eefbd85aaa 100644 --- a/sdk/eventhub/event-hubs/README.md +++ b/sdk/eventhub/event-hubs/README.md @@ -198,6 +198,9 @@ await client.getPartitionInformation("partitionId"); ## Troubleshooting +### AMQP Dependencies +The Event Hubs library depends on the [rhea-promise](https://github.com/amqp/rhea-promise) library for managing connections, sending and receiving events over the [AMQP](http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-complete-v1.0-os.pdf) protocol. + ### Enable logs You can set the following environment variable to get the debug logs when using this library. @@ -250,4 +253,8 @@ Please take a look at the [samples](https://github.com/Azure/azure-sdk-for-js/tr directory for detailed examples on how to use this library to send and receive events to/from [Event Hubs](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-about). +## Contributing + +If you'd like to contribute to this library, please read the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. + ![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/eventhub/event-hubs/README.png) diff --git a/sdk/servicebus/service-bus/CONTRIBUTING.md b/sdk/servicebus/service-bus/CONTRIBUTING.md deleted file mode 100644 index e3baf117ab54..000000000000 --- a/sdk/servicebus/service-bus/CONTRIBUTING.md +++ /dev/null @@ -1,61 +0,0 @@ -# Contributing - -This project welcomes contributions and suggestions. Most contributions require you to -agree to a Contributor License Agreement (CLA) declaring that you have the right to, -and actually do, grant us the rights to use your contribution. For details, visit -https://cla.microsoft.com. - -When you submit a pull request, a CLA-bot will automatically determine whether you need -to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the -instructions provided by the bot. You will only need to do this once across all repositories using our CLA. - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). -For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) -or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. - -## What to contribute -There are many ways that you can contribute to the Azure Service Bus client project: - -* Submit a bug -* Submit a code fix for a bug -* Submit additions or modifications to the documentation -* Submit a feature request - -## Contributing Code -To contribute code you need to issue a Pull Request against the develop branch. All code submissions will be reviewed and tested by the team, and those that meet a high bar for both quality and design/roadmap appropriateness will be merged into the source. Be sure to follow the existing file/folder structure when adding new boards or sensors. - -You must sign a [Contribution License Agreement](https://cla.microsoft.com/) ([CLA](https://cla.microsoft.com/)) before submitting a Pull Request. To complete the CLA, you will need to submit the request via the form and then electronically sign the CLA when you receive the email containing the link to the document. - -## Big contributions -If your contribution is significantly big it is better to first check with the project developers in order to make sure the change aligns with the long term plans. This can be done simply by submitting a question via the GitHub Issues section. - -## Things to keep in mind when contributing -Some guidance for when you make a contribution: - -* Add/update unit tests and code as required by your change -* Make sure you run all the unit tests on the affected platform(s)/languages. If the change is in common code, generally running on one platform would be acceptable. -* Run end-to-end tests or simple sample code to make sure the lib works in an end-to-end scenario. - -## Building the library -- Install typescript, ts-node globally (optional, but very useful) -``` -npm i -g typescript -npm i -g ts-node -``` -- Clone the repo, cd to the sub folder for service bus and install the dependencies -``` -git clone https://github.com/azure/azure-sdk-for-js.git -cd azure-sdk-for-js/sdk/servicebus/service-bus -npm install -``` -- Build the project -``` -npm run build -``` - -## Run/Debug tests - -If you want to run or debug tests in this project, please see our [Test README](https://github.com/Azure/azure-sdk-for-js/blob/master/sdk/servicebus/service-bus/test/README.md). - -## AMQP Dependencies ## -The Service Bus library depends on the [rhea-promise](https://github.com/amqp/rhea-promise) library for managing connections, sending and receiving messages over the [AMQP](http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-complete-v1.0-os.pdf) protocol. diff --git a/sdk/servicebus/service-bus/README.md b/sdk/servicebus/service-bus/README.md index da665a00a830..c641ec4bad9d 100644 --- a/sdk/servicebus/service-bus/README.md +++ b/sdk/servicebus/service-bus/README.md @@ -189,6 +189,9 @@ You can use this receiver in one of 3 ways to receive messages ## Troubleshooting +## AMQP Dependencies ## +The Service Bus library depends on the [rhea-promise](https://github.com/amqp/rhea-promise) library for managing connections, sending and receiving messages over the [AMQP](http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-complete-v1.0-os.pdf) protocol. + ### Enable logs You can set the following environment variable to get the debug logs when using this library. @@ -239,4 +242,8 @@ Please take a look at the [samples](https://github.com/Azure/azure-sdk-for-js/tr directory for detailed examples on how to use this library to send and receive messages to/from [Service Bus Queues, Topics and Subscriptions](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview). +## Contributing + +If you'd like to contribute to this library, please read the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. + ![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/servicebus/service-bus/README.png) From cf4b0988708225d3a92990d69efcae4470105074 Mon Sep 17 00:00:00 2001 From: KarishmaGhiya Date: Fri, 12 Jul 2019 11:59:00 -0700 Subject: [PATCH 273/289] [core] referencing developer guide in the readme and remove old contribute.md (#4274) Co-Authored-By: David Wilson --- sdk/core/abort-controller/README.md | 2 ++ sdk/core/core-amqp/Contributing.md | 1 - sdk/core/core-amqp/README.md | 2 ++ sdk/core/core-arm/README.md | 9 ++++++++- sdk/core/core-asynciterator-polyfill/README.md | 6 ++++-- sdk/core/core-auth/README.md | 17 ++++++++++++++++- sdk/core/core-http/README.md | 10 ++++++++-- sdk/core/core-paging/README.md | 4 +++- 8 files changed, 43 insertions(+), 8 deletions(-) delete mode 100644 sdk/core/core-amqp/Contributing.md diff --git a/sdk/core/abort-controller/README.md b/sdk/core/abort-controller/README.md index d52dbcff03ba..7ae0d6a9c858 100644 --- a/sdk/core/abort-controller/README.md +++ b/sdk/core/abort-controller/README.md @@ -99,6 +99,8 @@ When you submit a pull request, a CLA-bot will automatically determine whether y decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA. +If you'd like to contribute to this library, please read the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. + This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments. diff --git a/sdk/core/core-amqp/Contributing.md b/sdk/core/core-amqp/Contributing.md deleted file mode 100644 index 4e2d3191db38..000000000000 --- a/sdk/core/core-amqp/Contributing.md +++ /dev/null @@ -1 +0,0 @@ -Please read the contributing guidelines from the [Azure Team](https://azure.microsoft.com/en-us/blog/simple-contribution-to-azure-documentation-and-sdk/) diff --git a/sdk/core/core-amqp/README.md b/sdk/core/core-amqp/README.md index e35bd4dae294..5c588a5b579d 100644 --- a/sdk/core/core-amqp/README.md +++ b/sdk/core/core-amqp/README.md @@ -230,6 +230,8 @@ When you submit a pull request, a CLA-bot will automatically determine whether y a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA. +If you'd like to contribute to this library, please read the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. + This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/sdk/core/core-arm/README.md b/sdk/core/core-arm/README.md index e6a673ffcbcc..8b32314ef9e1 100644 --- a/sdk/core/core-arm/README.md +++ b/sdk/core/core-arm/README.md @@ -1,26 +1,31 @@ # ms-rest-azure-js [![Build Status](https://dev.azure.com/azure-public/azsdk/_apis/build/status/public.Azure.ms-rest-azure-js%20-%20CI?branchName=master)](https://dev.azure.com/azure-public/azsdk/_build/latest?definitionId=31&branchName=master) + Azure Runtime for isomorphic javascript libraries (that work in the browser and node.js environemnt) generated via [Autorest](https://github.com/Azure/Autorest). ## Requirements + - node.js version > 6.x - npm install -g typescript ## Installation + - After cloning the repo, execute `npm install` ## Execution ### node.js + - Set the subscriptionId and token - Run `node samples/node-sample.js` ### In the browser + - Set the subscriptionId and token and then run - Open index.html file in the browser. It should show the response from GET request on the storage account. From Chrome type Ctrl + Shift + I and you can see the logs in console. # Contributing -This project welcomes contributions and suggestions. Most contributions require you to agree to a +This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com. @@ -28,6 +33,8 @@ When you submit a pull request, a CLA-bot will automatically determine whether y a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA. +If you'd like to contribute to this library, please read the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. + This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/sdk/core/core-asynciterator-polyfill/README.md b/sdk/core/core-asynciterator-polyfill/README.md index 0618bd80e822..a82b3c8abddf 100644 --- a/sdk/core/core-asynciterator-polyfill/README.md +++ b/sdk/core/core-asynciterator-polyfill/README.md @@ -18,7 +18,7 @@ npm install @azure/core-asynciterator-polyfill ## Key concepts -[Symbol.asyncIterator](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator) is not supported +[Symbol.asyncIterator](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator) is not supported in all platforms and therefore you might need a polyfill in order to get it working on such platforms. Importing the polyfill from this library lets you use the iterator in your applications. @@ -41,7 +41,7 @@ Log an issue at https://github.com/Azure/azure-sdk-for-js/issues ## Contributing -This project welcomes contributions and suggestions. Most contributions require you to agree to a +This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com. @@ -49,6 +49,8 @@ When you submit a pull request, a CLA-bot will automatically determine whether y a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA. +If you'd like to contribute to this library, please read the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. + This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/sdk/core/core-auth/README.md b/sdk/core/core-auth/README.md index 6efd349ecf02..3aae01d1d83e 100644 --- a/sdk/core/core-auth/README.md +++ b/sdk/core/core-auth/README.md @@ -1,6 +1,21 @@ ## Azure Core Authentication -This library provides core interfaces and helper methods for authenticating with Azure Active Directory. As a "core" library, it shouldn't need to be added as a dependency to any user code, only other Azure SDK libraries. +This library provides core interfaces and helper methods for authenticating with Azure Active Directory. As a "core" library, it shouldn't need to be added as a dependency to any user code, only other Azure SDK libraries. +## Contributing + +This project welcomes contributions and suggestions. Most contributions require you to agree to a +Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us +the rights to use your contribution. For details, visit https://cla.microsoft.com. + +When you submit a pull request, a CLA-bot will automatically determine whether you need to provide +a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions +provided by the bot. You will only need to do this once across all repos using our CLA. + +If you'd like to contribute to this library, please read the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or +contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. ![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/core/core-auth/README.png) diff --git a/sdk/core/core-http/README.md b/sdk/core/core-http/README.md index b4c1bf7e78b3..ac13adf33f88 100644 --- a/sdk/core/core-http/README.md +++ b/sdk/core/core-http/README.md @@ -1,14 +1,16 @@ # Azure Core HTTP client library for JS -This is the core HTTP pipeline for Azure SDK JavaScript libraries which work in the browser and Node.js. This library is primarily intended to be used in code generated by [AutoRest](https://github.com/Azure/Autorest). +This is the core HTTP pipeline for Azure SDK JavaScript libraries which work in the browser and Node.js. This library is primarily intended to be used in code generated by [AutoRest](https://github.com/Azure/Autorest). ## Getting started ### Requirements + - node.js version > 6.x - npm install -g typescript ### Installation + - After cloning the repo, execute `npm install` ## Key concepts @@ -22,10 +24,12 @@ Examples can be found in the `samples` folder. ## Next steps ### node.js + - Set the subscriptionId and token - Run `node samples/node-sample.js` ### In the browser + - Set the subscriptionId and token and then run - Open index.html file in the browser. It should show the response from GET request on the storage account. From Chrome type Ctrl + Shift + I and you can see the logs in console. @@ -35,7 +39,7 @@ If you run into issues while using this library, please feel free to [file an is ## Contributing -This project welcomes contributions and suggestions. Most contributions require you to agree to a +This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com. @@ -43,6 +47,8 @@ When you submit a pull request, a CLA-bot will automatically determine whether y a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA. +If you'd like to contribute to this library, please read the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. + This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/sdk/core/core-paging/README.md b/sdk/core/core-paging/README.md index b98586f2f192..3f75f02041aa 100644 --- a/sdk/core/core-paging/README.md +++ b/sdk/core/core-paging/README.md @@ -59,7 +59,7 @@ Log an issue at https://github.com/Azure/azure-sdk-for-js/issues ## Contributing -This project welcomes contributions and suggestions. Most contributions require you to agree to a +This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com. @@ -67,6 +67,8 @@ When you submit a pull request, a CLA-bot will automatically determine whether y a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA. +If you'd like to contribute to this library, please read the [contributing guide](../../../CONTRIBUTING.md) to learn more about how to build and test the code. + This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. From e7cd4d9fea455f77d6945f1d9565fcb23e65a93f Mon Sep 17 00:00:00 2001 From: David Wilson Date: Fri, 12 Jul 2019 13:22:50 -0700 Subject: [PATCH 274/289] Add "sdk-type": "client" to more core libraries (#4283) * Add "sdk-type": "client" to more core libraries * Add "sdk-type": "client" to project template --- sdk/core/core-arm/package.json | 1 + sdk/core/core-auth/package.json | 1 + sdk/core/core-paging/package.json | 1 + sdk/template/template/package.json | 1 + 4 files changed, 4 insertions(+) diff --git a/sdk/core/core-arm/package.json b/sdk/core/core-arm/package.json index 8c5c228a66b4..66ae62ed910c 100644 --- a/sdk/core/core-arm/package.json +++ b/sdk/core/core-arm/package.json @@ -5,6 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/azure-sdk-for-js" }, + "sdk-type": "client", "version": "1.0.0-preview.1", "description": "Isomorphic Azure client runtime for Typescript/node.js/browser javascript client libraries generated using AutoRest", "tags": [ diff --git a/sdk/core/core-auth/package.json b/sdk/core/core-auth/package.json index e7160b44a305..1070c4f5cc8f 100644 --- a/sdk/core/core-auth/package.json +++ b/sdk/core/core-auth/package.json @@ -2,6 +2,7 @@ "name": "@azure/core-auth", "version": "1.0.0-preview.1", "description": "Provides low-level interfaces and helper methods for authentication in Azure SDK", + "sdk-type": "client", "main": "dist/index.js", "module": "dist-esm/src/index.js", "browser": { diff --git a/sdk/core/core-paging/package.json b/sdk/core/core-paging/package.json index 08de7f6ae86b..4e50c9d315a9 100644 --- a/sdk/core/core-paging/package.json +++ b/sdk/core/core-paging/package.json @@ -5,6 +5,7 @@ "email": "azsdkteam@microsoft.com", "url": "https://github.com/Azure/azure-sdk-for-js" }, + "sdk-type": "client", "version": "1.0.0-preview.1", "description": "Core types for paging async iterable iterators", "tags": [ diff --git a/sdk/template/template/package.json b/sdk/template/template/package.json index 41fa202c953b..290807a08720 100644 --- a/sdk/template/template/package.json +++ b/sdk/template/template/package.json @@ -2,6 +2,7 @@ "name": "@azure/template", "version": "0.1.0", "description": "Template Library with typescript type definitions for node.js and browser.", + "sdk-type": "client", "main": "dist/index.js", "module": "dist-esm/src/index.js", "browser": { From 4cf887431a567b6227b3894652e1ed41c4929d77 Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Fri, 12 Jul 2019 15:38:42 -0700 Subject: [PATCH 275/289] Update client status badge (#4299) - From "azure-sdk-for-js - client" to "js - client - ci" --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f1957e855832..608fa8889522 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ | Component | Build Status | | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Management Libraries | [![Build Status](https://dev.azure.com/azure-sdk/public/_apis/build/status/138?branchName=master)](https://dev.azure.com/azure-sdk/public/_build/latest?definitionId=138&branchName=master) | -| Client Libraries | [![Build Status](https://dev.azure.com/azure-sdk/public/_apis/build/status/45?branchName=master)](https://dev.azure.com/azure-sdk/public/_build/latest?definitionId=45&branchName=master) | +| Client Libraries | [![Build Status](https://dev.azure.com/azure-sdk/public/_apis/build/status/614?branchName=master)](https://dev.azure.com/azure-sdk/public/_build/latest?definitionId=614&branchName=master) | This repository contains official JavaScript libraries and TypeScript definitions for Azure services. For documentation go to [Azure SDK for JavaScript documentation](https://aka.ms/js-docs). From 8801fca04a78a10328d5c4da21bd4467888c1767 Mon Sep 17 00:00:00 2001 From: Daniel Jurek Date: Fri, 12 Jul 2019 16:39:28 -0700 Subject: [PATCH 276/289] update CODEOWNERS links to point to sync documentation (#4263) * update CODEOWNERS links to point to sync documentation * update documentation link, add EngSys config, add commented catch all and example configs * update engsys entries in CODEOWNERS * move EngSys section down so that its rules match LAST * add track 2 sdk locations * remove extra documentation link --- .github/CODEOWNERS | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index ec0dab9ffce3..5ad6db70da9e 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1,25 @@ -# See for instructions on this file https://help.github.com/articles/about-codeowners/ +# Instructions for CODEOWNERS file format and automatic build failure notifications: +# https://github.com/Azure/azure-sdk/blob/master/docs/engineering-system/codeowners.md + +########### +# SDK +########### + +# Catch all +# /sdk/ @ramya-rao-a + +# Core +# /sdk/core/ + +# Service teams +# /sdk/eventhub/ +# /sdk/identity/ +# /sdk/keyvault/ +# /sdk/storage/ + +########### +# Eng Sys +########### +/eng/ @weshaggard @KarishmaGhiya @mikeharder @mitchdenny @danieljurek +/**/tests.yml @danieljurek +/**/ci.yml @mitchdenny From 61efc161a21d63e0015ec0b0af4748f7d3e16f57 Mon Sep 17 00:00:00 2001 From: Harsha Nalluru Date: Fri, 12 Jul 2019 16:46:08 -0700 Subject: [PATCH 277/289] [Template] Update "template" with karma and a sample browser test-suite (#4297) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add karma.conf.js file in the template * add karma dependencies * update rollup for consistency * update scripts - package.json * update node test suite * update unit-test scripts * seperate out node tests and browser tests * 👊 is not allowed in headless chrome browser, So, updated to ❤ * sample browser test * comment out polyfill * entry points - add comments --- sdk/template/template/karma.conf.js | 118 ++++++++++++++++++ sdk/template/template/package.json | 15 ++- sdk/template/template/rollup.base.config.js | 11 +- sdk/template/template/src/index.ts | 2 +- .../test/browser/sampleBrowser.spec.ts | 11 ++ .../template/test/{ => node}/index.spec.ts | 4 +- 6 files changed, 151 insertions(+), 10 deletions(-) create mode 100644 sdk/template/template/karma.conf.js create mode 100644 sdk/template/template/test/browser/sampleBrowser.spec.ts rename sdk/template/template/test/{ => node}/index.spec.ts (81%) diff --git a/sdk/template/template/karma.conf.js b/sdk/template/template/karma.conf.js new file mode 100644 index 000000000000..f6c9a619ba18 --- /dev/null +++ b/sdk/template/template/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/template/template/package.json b/sdk/template/template/package.json index 290807a08720..db191d350eff 100644 --- a/sdk/template/template/package.json +++ b/sdk/template/template/package.json @@ -32,8 +32,8 @@ "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": "mocha test-dist/**/*.js --reporter mocha-multi --reporter-options spec=-,mocha-junit-reporter=-", + "unit-test:browser": "karma start --single-run", + "unit-test:node": "mocha --reporter mocha-multi --reporter-options spec=-,mocha-junit-reporter=- dist-test/index.node.js", "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "files": [ @@ -79,6 +79,17 @@ "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": "^2.2.0", + "karma-coverage": "^1.1.2", + "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": "^5.2.0", "mocha-junit-reporter": "^1.18.0", "mocha-multi": "^1.0.1", diff --git a/sdk/template/template/rollup.base.config.js b/sdk/template/template/rollup.base.config.js index f7ed0a1b2851..76a4d7ecb8af 100644 --- a/sdk/template/template/rollup.base.config.js +++ b/sdk/template/template/rollup.base.config.js @@ -34,12 +34,12 @@ export function nodeConfig(test = false) { }; if (test) { - // entry point is every test file - baseConfig.input = "dist-esm/test/**/*.spec.js"; + // Entry points - test files under the `test` folder(common for both browser and node), node specific test files + baseConfig.input = ["dist-esm/test/*.spec.js", "dist-esm/test/node/*.spec.js"]; baseConfig.plugins.unshift(multiEntry({ exports: false })); // different output file - baseConfig.output.file = "test-dist/index.js"; + baseConfig.output.file = "dist-test/index.node.js"; // mark assert as external baseConfig.external.push("assert"); @@ -93,9 +93,10 @@ export function browserConfig(test = false, production = false) { }; if (test) { - baseConfig.input = "dist-esm/test/**/*.spec.js"; + // Entry points - test files under the `test` folder(common for both browser and node), browser specific test files + baseConfig.input = ["dist-esm/test/*.spec.js", "dist-esm/test/browser/*.spec.js"]; baseConfig.plugins.unshift(multiEntry({ exports: false })); - baseConfig.output.file = "test-browser/index.js"; + baseConfig.output.file = "dist-test/index.browser.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 diff --git a/sdk/template/template/src/index.ts b/sdk/template/template/src/index.ts index e91b7b6b9c14..6b6105dcf980 100644 --- a/sdk/template/template/src/index.ts +++ b/sdk/template/template/src/index.ts @@ -20,7 +20,7 @@ export function createEventEmitter() { if (isNode) { console.log("Node 👊"); } else { - console.log("Browser 👊"); + console.log("Browser ❤"); } print("Created event emitter"); diff --git a/sdk/template/template/test/browser/sampleBrowser.spec.ts b/sdk/template/template/test/browser/sampleBrowser.spec.ts new file mode 100644 index 000000000000..563dfba401ff --- /dev/null +++ b/sdk/template/template/test/browser/sampleBrowser.spec.ts @@ -0,0 +1,11 @@ +import * as lib from "../../src/index"; +import EventEmitter from "events"; + +describe("Hello function - browser", () => { + it("should create an event emitter", () => { + const result = lib.createEventEmitter(); + if (!(result instanceof EventEmitter)) { + throw new Error("Error occurred while creating an event emitter"); + } + }); +}); diff --git a/sdk/template/template/test/index.spec.ts b/sdk/template/template/test/node/index.spec.ts similarity index 81% rename from sdk/template/template/test/index.spec.ts rename to sdk/template/template/test/node/index.spec.ts index 6a05f29fa0b4..5ab88efc18b5 100644 --- a/sdk/template/template/test/index.spec.ts +++ b/sdk/template/template/test/node/index.spec.ts @@ -1,10 +1,10 @@ -import * as lib from "../src/index"; +import * as lib from "../../src/index"; import EventEmitter from "events"; // another node built-in that has to be shimmed for the browser import assert from "assert"; -describe("Hello function", () => { +describe("Hello function - node", () => { it("should create an event emitter", () => { const result = lib.createEventEmitter(); assert(result instanceof EventEmitter); From 948a3e41af4c2a87fbfcdda2233ad9ac9488e530 Mon Sep 17 00:00:00 2001 From: Amar Zavery Date: Mon, 15 Jul 2019 10:59:19 -0700 Subject: [PATCH 278/289] generated kusto and app service mgmt plane packages (#4312) * generated kusto and updated deps to 2.x.x version of ms-rest-js and ms-rest-azure-js * generated appservice and updated deps to 2.x.x version of ms-rest-js and ms-rest-azure-js --- sdk/appservice/arm-appservice/LICENSE.txt | 2 +- sdk/appservice/arm-appservice/README.md | 9 +- sdk/appservice/arm-appservice/package.json | 16 +- .../arm-appservice/rollup.config.js | 22 +- .../appServiceCertificateOrdersMappers.ts | 267 +- .../models/appServiceEnvironmentsMappers.ts | 305 +- .../src/models/appServicePlansMappers.ts | 285 +- .../certificateRegistrationProviderMappers.ts | 21 +- .../src/models/certificatesMappers.ts | 259 +- .../src/models/deletedWebAppsMappers.ts | 263 +- .../src/models/diagnosticsMappers.ts | 265 +- .../domainRegistrationProviderMappers.ts | 21 +- .../src/models/domainsMappers.ts | 269 +- .../arm-appservice/src/models/index.ts | 8204 +++++++---------- .../arm-appservice/src/models/mappers.ts | 485 +- .../arm-appservice/src/models/parameters.ts | 56 +- .../src/models/providerMappers.ts | 27 +- .../src/models/recommendationsMappers.ts | 265 +- ...resourceHealthMetadataOperationsMappers.ts | 263 +- .../src/models/topLevelDomainsMappers.ts | 269 +- .../src/models/webAppsMappers.ts | 367 +- .../operations/appServiceCertificateOrders.ts | 50 +- .../src/operations/appServiceEnvironments.ts | 298 +- .../src/operations/appServicePlans.ts | 81 +- .../certificateRegistrationProvider.ts | 2 +- .../src/operations/certificates.ts | 12 +- .../src/operations/deletedWebApps.ts | 163 +- .../src/operations/diagnostics.ts | 44 +- .../operations/domainRegistrationProvider.ts | 2 +- .../arm-appservice/src/operations/domains.ts | 30 +- .../arm-appservice/src/operations/provider.ts | 6 +- .../src/operations/recommendations.ts | 491 +- .../resourceHealthMetadataOperations.ts | 12 +- .../src/operations/topLevelDomains.ts | 6 +- .../arm-appservice/src/operations/webApps.ts | 1964 ++-- .../src/webSiteManagementClient.ts | 101 +- .../src/webSiteManagementClientContext.ts | 4 +- sdk/appservice/arm-appservice/tsconfig.json | 2 +- sdk/kusto/arm-kusto/README.md | 1 - sdk/kusto/arm-kusto/package.json | 12 +- .../src/kustoManagementClientContext.ts | 8 +- .../src/models/dataConnectionsMappers.ts | 2 + sdk/kusto/arm-kusto/src/models/index.ts | 43 + sdk/kusto/arm-kusto/src/models/mappers.ts | 32 + .../src/operations/dataConnections.ts | 73 + sdk/kusto/arm-kusto/tsconfig.json | 2 +- 46 files changed, 7872 insertions(+), 7509 deletions(-) diff --git a/sdk/appservice/arm-appservice/LICENSE.txt b/sdk/appservice/arm-appservice/LICENSE.txt index a70e8cf66038..b73b4a1293c3 100644 --- a/sdk/appservice/arm-appservice/LICENSE.txt +++ b/sdk/appservice/arm-appservice/LICENSE.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2018 Microsoft +Copyright (c) 2019 Microsoft Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/sdk/appservice/arm-appservice/README.md b/sdk/appservice/arm-appservice/README.md index 5f2d1439a479..91c31c36cda5 100644 --- a/sdk/appservice/arm-appservice/README.md +++ b/sdk/appservice/arm-appservice/README.md @@ -9,7 +9,7 @@ This package contains an isomorphic SDK for WebSiteManagementClient. ### How to Install -``` +```bash npm install @azure/arm-appservice ``` @@ -19,13 +19,13 @@ npm install @azure/arm-appservice ##### Install @azure/ms-rest-nodeauth -``` +```bash npm install @azure/ms-rest-nodeauth ``` ##### Sample code -```ts +```typescript import * as msRest from "@azure/ms-rest-js"; import * as msRestAzure from "@azure/ms-rest-azure-js"; import * as msRestNodeAuth from "@azure/ms-rest-nodeauth"; @@ -47,7 +47,7 @@ msRestNodeAuth.interactiveLogin().then((creds) => { ##### Install @azure/ms-rest-browserauth -``` +```bash npm install @azure/ms-rest-browserauth ``` @@ -95,5 +95,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) - ![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/appservice/arm-appservice/README.png) diff --git a/sdk/appservice/arm-appservice/package.json b/sdk/appservice/arm-appservice/package.json index 9c0d06f6dfaa..4e0873b3dbe2 100644 --- a/sdk/appservice/arm-appservice/package.json +++ b/sdk/appservice/arm-appservice/package.json @@ -2,10 +2,10 @@ "name": "@azure/arm-appservice", "author": "Microsoft Corporation", "description": "WebSiteManagementClient Library with typescript type definitions for node.js and browser.", - "version": "5.7.0", + "version": "5.8.0", "dependencies": { - "@azure/ms-rest-azure-js": "^1.1.0", - "@azure/ms-rest-js": "^1.1.0", + "@azure/ms-rest-azure-js": "^2.0.0", + "@azure/ms-rest-js": "^2.0.3", "tslib": "^1.9.3" }, "keywords": [ @@ -23,15 +23,16 @@ "typescript": "^3.1.1", "rollup": "^0.66.2", "rollup-plugin-node-resolve": "^3.4.0", + "rollup-plugin-sourcemaps": "^0.4.2", "uglify-js": "^3.4.9" }, - "homepage": "https://github.com/azure/azure-sdk-for-js/tree/master/sdk/appservice/arm-appservice", + "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/appservice/arm-appservice", "repository": { "type": "git", - "url": "https://github.com/azure/azure-sdk-for-js.git" + "url": "https://github.com/Azure/azure-sdk-for-js.git" }, "bugs": { - "url": "https://github.com/azure/azure-sdk-for-js/issues" + "url": "https://github.com/Azure/azure-sdk-for-js/issues" }, "files": [ "dist/**/*.js", @@ -43,6 +44,7 @@ "esm/**/*.d.ts", "esm/**/*.d.ts.map", "src/**/*.ts", + "README.md", "rollup.config.js", "tsconfig.json" ], @@ -52,5 +54,5 @@ "prepack": "npm install && npm run build" }, "sideEffects": false, - "authPublish": true + "autoPublish": true } diff --git a/sdk/appservice/arm-appservice/rollup.config.js b/sdk/appservice/arm-appservice/rollup.config.js index e6db84e58048..c0c606fdb8d8 100644 --- a/sdk/appservice/arm-appservice/rollup.config.js +++ b/sdk/appservice/arm-appservice/rollup.config.js @@ -1,10 +1,16 @@ +import rollup from "rollup"; import nodeResolve from "rollup-plugin-node-resolve"; +import sourcemaps from "rollup-plugin-sourcemaps"; + /** - * @type {import('rollup').RollupFileOptions} + * @type {rollup.RollupFileOptions} */ const config = { - input: './esm/webSiteManagementClient.js', - external: ["@azure/ms-rest-js", "@azure/ms-rest-azure-js"], + input: "./esm/webSiteManagementClient.js", + external: [ + "@azure/ms-rest-js", + "@azure/ms-rest-azure-js" + ], output: { file: "./dist/arm-appservice.js", format: "umd", @@ -16,16 +22,16 @@ const config = { }, banner: `/* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */` }, plugins: [ - nodeResolve({ module: true }) + nodeResolve({ module: true }), + sourcemaps() ] }; + export default config; diff --git a/sdk/appservice/arm-appservice/src/models/appServiceCertificateOrdersMappers.ts b/sdk/appservice/arm-appservice/src/models/appServiceCertificateOrdersMappers.ts index 4259e87164d7..0d10f98202f1 100644 --- a/sdk/appservice/arm-appservice/src/models/appServiceCertificateOrdersMappers.ts +++ b/sdk/appservice/arm-appservice/src/models/appServiceCertificateOrdersMappers.ts @@ -1,192 +1,191 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ export { - AppServiceCertificateOrderCollection, - AppServiceCertificateOrder, - Resource, - BaseResource, + AbnormalTimePeriod, + Address, + AnalysisData, + AnalysisDefinition, + ApiDefinitionInfo, + ApplicationLogsConfig, AppServiceCertificate, - CertificateDetails, - DefaultErrorResponse, - DefaultErrorResponseError, - DefaultErrorResponseErrorDetailsItem, - CloudError, - AppServiceCertificateOrderPatchResource, - ProxyOnlyResource, AppServiceCertificateCollection, - AppServiceCertificateResource, + AppServiceCertificateOrder, + AppServiceCertificateOrderCollection, + AppServiceCertificateOrderPatchResource, AppServiceCertificatePatchResource, - ReissueCertificateOrderRequest, - RenewCertificateOrderRequest, - NameIdentifier, - SiteSealRequest, - SiteSeal, - CertificateOrderAction, - CertificateEmail, - VnetRoute, - VnetInfo, - VnetGateway, - User, - Snapshot, - ResourceMetricDefinition, - ResourceMetricAvailability, - PushSettings, - Identifier, - HybridConnectionKey, - HybridConnection, - DeletedSite, - Site, - HostNameSslState, - SiteConfig, - NameValuePair, - AzureStorageInfoValue, - ConnStringInfo, - SiteMachineKey, - HandlerMapping, - VirtualApplication, - VirtualDirectory, - Experiments, - RampUpRule, - SiteLimits, - AutoHealRules, - AutoHealTriggers, - RequestsBasedTrigger, - StatusCodesBasedTrigger, - SlowRequestsBasedTrigger, + AppServiceCertificateResource, + AppServiceEnvironmentPatchResource, + AppServiceEnvironmentResource, + AppServicePlan, + AppServicePlanPatchResource, AutoHealActions, AutoHealCustomAction, - CorsSettings, - ApiDefinitionInfo, - IpSecurityRestriction, - HostingEnvironmentProfile, - CloningInfo, - SlotSwapStatus, - ManagedServiceIdentity, - AppServicePlan, - SkuDescription, - SkuCapacity, - Capability, - Domain, - Contact, - Address, - HostName, - DomainPurchaseConsent, - DomainOwnershipIdentifier, - DomainPatchResource, - TopLevelDomain, - Certificate, - CertificatePatchResource, - DetectorDefinition, - AnalysisDefinition, - DetectorResponse, - DetectorInfo, - DiagnosticData, - DataTableResponseObject, - DataTableResponseColumn, - Rendering, - DiagnosticAnalysis, - AbnormalTimePeriod, - DetectorAbnormalTimePeriod, - Solution, - AnalysisData, - DiagnosticMetricSet, - DiagnosticMetricSample, - ResponseMetaData, - DataSource, - DiagnosticCategory, - DiagnosticDetectorResponse, - Recommendation, - RecommendationRule, - BillingMeter, - GeoRegion, - PremierAddOnOffer, - SourceControl, - VnetParameters, - VnetValidationTestFailure, - VnetValidationFailureDetails, + AutoHealRules, + AutoHealTriggers, + AzureBlobStorageApplicationLogsConfig, + AzureBlobStorageHttpLogsConfig, + AzureStorageInfoValue, AzureStoragePropertyDictionaryResource, + AzureTableStorageApplicationLogsConfig, BackupItem, - DatabaseBackupSetting, BackupRequest, BackupSchedule, + BaseResource, + BillingMeter, + Capability, + Certificate, + CertificateDetails, + CertificateEmail, + CertificateOrderAction, + CertificatePatchResource, + CloningInfo, + CloudError, ConnectionStringDictionary, + ConnStringInfo, ConnStringValueTypePair, + Contact, ContinuousWebJob, + CorsSettings, CustomHostnameAnalysisResult, - ErrorEntity, + DatabaseBackupSetting, + DataSource, + DataTableResponseColumn, + DataTableResponseObject, + DefaultErrorResponse, + DefaultErrorResponseError, + DefaultErrorResponseErrorDetailsItem, DeletedAppRestoreRequest, + DeletedSite, Deployment, + DetectorAbnormalTimePeriod, + DetectorDefinition, + DetectorInfo, + DetectorResponse, + DiagnosticAnalysis, + DiagnosticCategory, + DiagnosticData, + DiagnosticDetectorResponse, + DiagnosticMetricSample, + DiagnosticMetricSet, + Domain, + DomainOwnershipIdentifier, + DomainPatchResource, + DomainPurchaseConsent, + EnabledConfig, + ErrorEntity, + Experiments, + FileSystemApplicationLogsConfig, + FileSystemHttpLogsConfig, FunctionEnvelope, FunctionSecrets, + GeoDistribution, + GeoRegion, + HandlerMapping, + HostingEnvironmentProfile, + HostName, HostNameBinding, + HostNameSslState, + HttpLogsConfig, + HybridConnection, + HybridConnectionKey, + HybridConnectionLimits, + Identifier, + IpSecurityRestriction, + ManagedServiceIdentity, + ManagedServiceIdentityUserAssignedIdentitiesValue, + MetricAvailabilily, + MetricDefinition, + MigrateMySqlRequest, + MigrateMySqlStatus, MSDeploy, MSDeployLog, MSDeployLogEntry, MSDeployStatus, - MigrateMySqlRequest, - MigrateMySqlStatus, - RelayServiceConnectionEntity, + NameIdentifier, + NameValuePair, + NetworkAccessControlEntry, NetworkFeatures, PremierAddOn, + PremierAddOnOffer, PremierAddOnPatchResource, PrivateAccess, - PrivateAccessVirtualNetwork, PrivateAccessSubnet, - ProcessThreadInfo, - ProcessModuleInfo, + PrivateAccessVirtualNetwork, ProcessInfo, + ProcessModuleInfo, + ProcessThreadInfo, + ProxyOnlyResource, PublicCertificate, + PushSettings, + RampUpRule, + Recommendation, + RecommendationRule, + ReissueCertificateOrderRequest, + RelayServiceConnectionEntity, + Rendering, + RenewCertificateOrderRequest, + RequestsBasedTrigger, + Resource, + ResourceHealthMetadata, + ResourceMetricAvailability, + ResourceMetricDefinition, + ResponseMetaData, RestoreRequest, + Site, SiteAuthSettings, + SiteConfig, SiteConfigResource, SiteConfigurationSnapshotInfo, SiteExtensionInfo, SiteInstance, + SiteLimits, SiteLogsConfig, - ApplicationLogsConfig, - FileSystemApplicationLogsConfig, - AzureTableStorageApplicationLogsConfig, - AzureBlobStorageApplicationLogsConfig, - HttpLogsConfig, - FileSystemHttpLogsConfig, - AzureBlobStorageHttpLogsConfig, - EnabledConfig, + SiteMachineKey, SitePatchResource, SitePhpErrorLogFlag, + SiteSeal, + SiteSealRequest, SiteSourceControl, + SkuCapacity, + SkuDescription, SlotConfigNamesResource, SlotDifference, - SnapshotRestoreRequest, + SlotSwapStatus, + SlowRequestsBasedTrigger, + Snapshot, SnapshotRecoverySource, + SnapshotRestoreRequest, + Solution, + SourceControl, + StampCapacity, + StatusCodesBasedTrigger, StorageMigrationOptions, StorageMigrationResponse, StringDictionary, SwiftVirtualNetwork, - TriggeredJobRun, + TopLevelDomain, TriggeredJobHistory, + TriggeredJobRun, TriggeredWebJob, - WebJob, - AppServiceEnvironmentResource, + Usage, + User, + VirtualApplication, + VirtualDirectory, + VirtualIPMapping, VirtualNetworkProfile, + VnetGateway, + VnetInfo, + VnetParameters, + VnetRoute, + VnetValidationFailureDetails, + VnetValidationTestFailure, + WebJob, WorkerPool, - VirtualIPMapping, - StampCapacity, - NetworkAccessControlEntry, - AppServiceEnvironmentPatchResource, - MetricDefinition, - MetricAvailabilily, - Usage, - WorkerPoolResource, - AppServicePlanPatchResource, - HybridConnectionLimits, - ResourceHealthMetadata + WorkerPoolResource } from "../models/mappers"; - diff --git a/sdk/appservice/arm-appservice/src/models/appServiceEnvironmentsMappers.ts b/sdk/appservice/arm-appservice/src/models/appServiceEnvironmentsMappers.ts index 2ed046d7bab1..d5c29b2df099 100644 --- a/sdk/appservice/arm-appservice/src/models/appServiceEnvironmentsMappers.ts +++ b/sdk/appservice/arm-appservice/src/models/appServiceEnvironmentsMappers.ts @@ -1,207 +1,212 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ export { - AppServiceEnvironmentCollection, - AppServiceEnvironmentResource, - Resource, - BaseResource, - VirtualNetworkProfile, - WorkerPool, - VirtualIPMapping, - StampCapacity, - NetworkAccessControlEntry, - NameValuePair, - DefaultErrorResponse, - DefaultErrorResponseError, - DefaultErrorResponseErrorDetailsItem, - CloudError, - AppServiceEnvironmentPatchResource, - ProxyOnlyResource, - StampCapacityCollection, + AbnormalTimePeriod, + Address, AddressResponse, - WebAppCollection, - Site, - HostNameSslState, - SiteConfig, - AzureStorageInfoValue, - ConnStringInfo, - SiteMachineKey, - HandlerMapping, - VirtualApplication, - VirtualDirectory, - Experiments, - RampUpRule, - SiteLimits, - AutoHealRules, - AutoHealTriggers, - RequestsBasedTrigger, - StatusCodesBasedTrigger, - SlowRequestsBasedTrigger, - AutoHealActions, - AutoHealCustomAction, - CorsSettings, - PushSettings, + AnalysisData, + AnalysisDefinition, ApiDefinitionInfo, - IpSecurityRestriction, - HostingEnvironmentProfile, - CloningInfo, - SlotSwapStatus, - ManagedServiceIdentity, - HostingEnvironmentDiagnostics, - MetricDefinition, - MetricAvailabilily, - ResourceMetricCollection, - ResourceMetric, - ResourceMetricName, - ResourceMetricValue, - ResourceMetricProperty, - WorkerPoolCollection, - WorkerPoolResource, - SkuDescription, - SkuCapacity, - Capability, - ResourceMetricDefinitionCollection, - ResourceMetricDefinition, - ResourceMetricAvailability, - SkuInfoCollection, - SkuInfo, - UsageCollection, - Usage, - Operation, - ErrorEntity, - AppServicePlanCollection, - AppServicePlan, - CsmUsageQuotaCollection, - CsmUsageQuota, - LocalizableString, - AppServiceCertificateResource, - AppServiceCertificateOrder, + ApplicationLogsConfig, AppServiceCertificate, - CertificateDetails, + AppServiceCertificateOrder, AppServiceCertificateOrderPatchResource, AppServiceCertificatePatchResource, - CertificateEmail, - CertificateOrderAction, - ReissueCertificateOrderRequest, - RenewCertificateOrderRequest, - VnetRoute, - VnetInfo, - VnetGateway, - User, - Snapshot, - Identifier, - HybridConnectionKey, - HybridConnection, - DeletedSite, - Domain, - Contact, - Address, - HostName, - DomainPurchaseConsent, - DomainOwnershipIdentifier, - DomainPatchResource, - TopLevelDomain, - Certificate, - CertificatePatchResource, - DetectorDefinition, - AnalysisDefinition, - DetectorResponse, - DetectorInfo, - DiagnosticData, - DataTableResponseObject, - DataTableResponseColumn, - Rendering, - DiagnosticAnalysis, - AbnormalTimePeriod, - DetectorAbnormalTimePeriod, - Solution, - AnalysisData, - DiagnosticMetricSet, - DiagnosticMetricSample, - ResponseMetaData, - DataSource, - DiagnosticCategory, - DiagnosticDetectorResponse, - Recommendation, - RecommendationRule, - BillingMeter, - GeoRegion, - PremierAddOnOffer, - SourceControl, - VnetParameters, - VnetValidationTestFailure, - VnetValidationFailureDetails, + AppServiceCertificateResource, + AppServiceEnvironmentCollection, + AppServiceEnvironmentPatchResource, + AppServiceEnvironmentResource, + AppServicePlan, + AppServicePlanCollection, + AppServicePlanPatchResource, + AutoHealActions, + AutoHealCustomAction, + AutoHealRules, + AutoHealTriggers, + AzureBlobStorageApplicationLogsConfig, + AzureBlobStorageHttpLogsConfig, + AzureStorageInfoValue, AzureStoragePropertyDictionaryResource, + AzureTableStorageApplicationLogsConfig, BackupItem, - DatabaseBackupSetting, BackupRequest, BackupSchedule, + BaseResource, + BillingMeter, + Capability, + Certificate, + CertificateDetails, + CertificateEmail, + CertificateOrderAction, + CertificatePatchResource, + CloningInfo, + CloudError, ConnectionStringDictionary, + ConnStringInfo, ConnStringValueTypePair, + Contact, ContinuousWebJob, + CorsSettings, + CsmUsageQuota, + CsmUsageQuotaCollection, CustomHostnameAnalysisResult, + DatabaseBackupSetting, + DataSource, + DataTableResponseColumn, + DataTableResponseObject, + DefaultErrorResponse, + DefaultErrorResponseError, + DefaultErrorResponseErrorDetailsItem, DeletedAppRestoreRequest, + DeletedSite, Deployment, + DetectorAbnormalTimePeriod, + DetectorDefinition, + DetectorInfo, + DetectorResponse, + DiagnosticAnalysis, + DiagnosticCategory, + DiagnosticData, + DiagnosticDetectorResponse, + DiagnosticMetricSample, + DiagnosticMetricSet, + Domain, + DomainOwnershipIdentifier, + DomainPatchResource, + DomainPurchaseConsent, + EnabledConfig, + EndpointDependency, + EndpointDetail, + ErrorEntity, + Experiments, + FileSystemApplicationLogsConfig, + FileSystemHttpLogsConfig, FunctionEnvelope, FunctionSecrets, + GeoDistribution, + GeoRegion, + HandlerMapping, + HostingEnvironmentDiagnostics, + HostingEnvironmentProfile, + HostName, HostNameBinding, + HostNameSslState, + HttpLogsConfig, + HybridConnection, + HybridConnectionKey, + HybridConnectionLimits, + Identifier, + InboundEnvironmentEndpoint, + InboundEnvironmentEndpointCollection, + IpSecurityRestriction, + LocalizableString, + ManagedServiceIdentity, + ManagedServiceIdentityUserAssignedIdentitiesValue, + MetricAvailabilily, + MetricDefinition, + MigrateMySqlRequest, + MigrateMySqlStatus, MSDeploy, MSDeployLog, MSDeployLogEntry, MSDeployStatus, - MigrateMySqlRequest, - MigrateMySqlStatus, - RelayServiceConnectionEntity, + NameValuePair, + NetworkAccessControlEntry, NetworkFeatures, + Operation, + OutboundEnvironmentEndpoint, + OutboundEnvironmentEndpointCollection, PremierAddOn, + PremierAddOnOffer, PremierAddOnPatchResource, PrivateAccess, - PrivateAccessVirtualNetwork, PrivateAccessSubnet, - ProcessThreadInfo, - ProcessModuleInfo, + PrivateAccessVirtualNetwork, ProcessInfo, + ProcessModuleInfo, + ProcessThreadInfo, + ProxyOnlyResource, PublicCertificate, + PushSettings, + RampUpRule, + Recommendation, + RecommendationRule, + ReissueCertificateOrderRequest, + RelayServiceConnectionEntity, + Rendering, + RenewCertificateOrderRequest, + RequestsBasedTrigger, + Resource, + ResourceHealthMetadata, + ResourceMetric, + ResourceMetricAvailability, + ResourceMetricCollection, + ResourceMetricDefinition, + ResourceMetricDefinitionCollection, + ResourceMetricName, + ResourceMetricProperty, + ResourceMetricValue, + ResponseMetaData, RestoreRequest, + Site, SiteAuthSettings, + SiteConfig, SiteConfigResource, SiteConfigurationSnapshotInfo, SiteExtensionInfo, SiteInstance, + SiteLimits, SiteLogsConfig, - ApplicationLogsConfig, - FileSystemApplicationLogsConfig, - AzureTableStorageApplicationLogsConfig, - AzureBlobStorageApplicationLogsConfig, - HttpLogsConfig, - FileSystemHttpLogsConfig, - AzureBlobStorageHttpLogsConfig, - EnabledConfig, + SiteMachineKey, SitePatchResource, SitePhpErrorLogFlag, SiteSourceControl, + SkuCapacity, + SkuDescription, + SkuInfo, + SkuInfoCollection, SlotConfigNamesResource, SlotDifference, - SnapshotRestoreRequest, + SlotSwapStatus, + SlowRequestsBasedTrigger, + Snapshot, SnapshotRecoverySource, + SnapshotRestoreRequest, + Solution, + SourceControl, + StampCapacity, + StampCapacityCollection, + StatusCodesBasedTrigger, StorageMigrationOptions, StorageMigrationResponse, StringDictionary, SwiftVirtualNetwork, - TriggeredJobRun, + TopLevelDomain, TriggeredJobHistory, + TriggeredJobRun, TriggeredWebJob, + Usage, + UsageCollection, + User, + VirtualApplication, + VirtualDirectory, + VirtualIPMapping, + VirtualNetworkProfile, + VnetGateway, + VnetInfo, + VnetParameters, + VnetRoute, + VnetValidationFailureDetails, + VnetValidationTestFailure, + WebAppCollection, WebJob, - AppServicePlanPatchResource, - HybridConnectionLimits, - ResourceHealthMetadata + WorkerPool, + WorkerPoolCollection, + WorkerPoolResource } from "../models/mappers"; - diff --git a/sdk/appservice/arm-appservice/src/models/appServicePlansMappers.ts b/sdk/appservice/arm-appservice/src/models/appServicePlansMappers.ts index fdf07a0995e6..5bd86a00b425 100644 --- a/sdk/appservice/arm-appservice/src/models/appServicePlansMappers.ts +++ b/sdk/appservice/arm-appservice/src/models/appServicePlansMappers.ts @@ -1,200 +1,199 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ export { - AppServicePlanCollection, - AppServicePlan, - Resource, - BaseResource, - HostingEnvironmentProfile, - SkuDescription, - SkuCapacity, - Capability, - DefaultErrorResponse, - DefaultErrorResponseError, - DefaultErrorResponseErrorDetailsItem, - CloudError, - AppServicePlanPatchResource, - ProxyOnlyResource, - HybridConnection, - HybridConnectionKey, - ResourceCollection, - HybridConnectionLimits, - HybridConnectionCollection, - ResourceMetricDefinitionCollection, - ResourceMetricDefinition, - ResourceMetricAvailability, - ResourceMetricCollection, - ResourceMetric, - ResourceMetricName, - ResourceMetricValue, - ResourceMetricProperty, - WebAppCollection, - Site, - HostNameSslState, - SiteConfig, - NameValuePair, - AzureStorageInfoValue, - ConnStringInfo, - SiteMachineKey, - HandlerMapping, - VirtualApplication, - VirtualDirectory, - Experiments, - RampUpRule, - SiteLimits, - AutoHealRules, - AutoHealTriggers, - RequestsBasedTrigger, - StatusCodesBasedTrigger, - SlowRequestsBasedTrigger, - AutoHealActions, - AutoHealCustomAction, - CorsSettings, - PushSettings, + AbnormalTimePeriod, + Address, + AnalysisData, + AnalysisDefinition, ApiDefinitionInfo, - IpSecurityRestriction, - CloningInfo, - SlotSwapStatus, - ManagedServiceIdentity, - CsmUsageQuotaCollection, - CsmUsageQuota, - LocalizableString, - VnetInfo, - VnetRoute, - VnetGateway, - AppServiceCertificateResource, - AppServiceCertificateOrder, + ApplicationLogsConfig, AppServiceCertificate, - CertificateDetails, + AppServiceCertificateOrder, AppServiceCertificateOrderPatchResource, AppServiceCertificatePatchResource, - CertificateEmail, - CertificateOrderAction, - ReissueCertificateOrderRequest, - RenewCertificateOrderRequest, - User, - Snapshot, - Identifier, - DeletedSite, - Domain, - Contact, - Address, - HostName, - DomainPurchaseConsent, - DomainOwnershipIdentifier, - DomainPatchResource, - TopLevelDomain, - Certificate, - CertificatePatchResource, - DetectorDefinition, - AnalysisDefinition, - DetectorResponse, - DetectorInfo, - DiagnosticData, - DataTableResponseObject, - DataTableResponseColumn, - Rendering, - DiagnosticAnalysis, - AbnormalTimePeriod, - DetectorAbnormalTimePeriod, - Solution, - AnalysisData, - DiagnosticMetricSet, - DiagnosticMetricSample, - ResponseMetaData, - DataSource, - DiagnosticCategory, - DiagnosticDetectorResponse, - Recommendation, - RecommendationRule, - BillingMeter, - GeoRegion, - PremierAddOnOffer, - SourceControl, - VnetParameters, - VnetValidationTestFailure, - VnetValidationFailureDetails, + AppServiceCertificateResource, + AppServiceEnvironmentPatchResource, + AppServiceEnvironmentResource, + AppServicePlan, + AppServicePlanCollection, + AppServicePlanPatchResource, + AutoHealActions, + AutoHealCustomAction, + AutoHealRules, + AutoHealTriggers, + AzureBlobStorageApplicationLogsConfig, + AzureBlobStorageHttpLogsConfig, + AzureStorageInfoValue, AzureStoragePropertyDictionaryResource, + AzureTableStorageApplicationLogsConfig, BackupItem, - DatabaseBackupSetting, BackupRequest, BackupSchedule, + BaseResource, + BillingMeter, + Capability, + Certificate, + CertificateDetails, + CertificateEmail, + CertificateOrderAction, + CertificatePatchResource, + CloningInfo, + CloudError, ConnectionStringDictionary, + ConnStringInfo, ConnStringValueTypePair, + Contact, ContinuousWebJob, + CorsSettings, + CsmUsageQuota, + CsmUsageQuotaCollection, CustomHostnameAnalysisResult, - ErrorEntity, + DatabaseBackupSetting, + DataSource, + DataTableResponseColumn, + DataTableResponseObject, + DefaultErrorResponse, + DefaultErrorResponseError, + DefaultErrorResponseErrorDetailsItem, DeletedAppRestoreRequest, + DeletedSite, Deployment, + DetectorAbnormalTimePeriod, + DetectorDefinition, + DetectorInfo, + DetectorResponse, + DiagnosticAnalysis, + DiagnosticCategory, + DiagnosticData, + DiagnosticDetectorResponse, + DiagnosticMetricSample, + DiagnosticMetricSet, + Domain, + DomainOwnershipIdentifier, + DomainPatchResource, + DomainPurchaseConsent, + EnabledConfig, + ErrorEntity, + Experiments, + FileSystemApplicationLogsConfig, + FileSystemHttpLogsConfig, FunctionEnvelope, FunctionSecrets, + GeoDistribution, + GeoRegion, + HandlerMapping, + HostingEnvironmentProfile, + HostName, HostNameBinding, + HostNameSslState, + HttpLogsConfig, + HybridConnection, + HybridConnectionCollection, + HybridConnectionKey, + HybridConnectionLimits, + Identifier, + IpSecurityRestriction, + LocalizableString, + ManagedServiceIdentity, + ManagedServiceIdentityUserAssignedIdentitiesValue, + MetricAvailabilily, + MetricDefinition, + MigrateMySqlRequest, + MigrateMySqlStatus, MSDeploy, MSDeployLog, MSDeployLogEntry, MSDeployStatus, - MigrateMySqlRequest, - MigrateMySqlStatus, - RelayServiceConnectionEntity, + NameValuePair, + NetworkAccessControlEntry, NetworkFeatures, PremierAddOn, + PremierAddOnOffer, PremierAddOnPatchResource, PrivateAccess, - PrivateAccessVirtualNetwork, PrivateAccessSubnet, - ProcessThreadInfo, - ProcessModuleInfo, + PrivateAccessVirtualNetwork, ProcessInfo, + ProcessModuleInfo, + ProcessThreadInfo, + ProxyOnlyResource, PublicCertificate, + PushSettings, + RampUpRule, + Recommendation, + RecommendationRule, + ReissueCertificateOrderRequest, + RelayServiceConnectionEntity, + Rendering, + RenewCertificateOrderRequest, + RequestsBasedTrigger, + Resource, + ResourceCollection, + ResourceHealthMetadata, + ResourceMetric, + ResourceMetricAvailability, + ResourceMetricCollection, + ResourceMetricDefinition, + ResourceMetricDefinitionCollection, + ResourceMetricName, + ResourceMetricProperty, + ResourceMetricValue, + ResponseMetaData, RestoreRequest, + Site, SiteAuthSettings, + SiteConfig, SiteConfigResource, SiteConfigurationSnapshotInfo, SiteExtensionInfo, SiteInstance, + SiteLimits, SiteLogsConfig, - ApplicationLogsConfig, - FileSystemApplicationLogsConfig, - AzureTableStorageApplicationLogsConfig, - AzureBlobStorageApplicationLogsConfig, - HttpLogsConfig, - FileSystemHttpLogsConfig, - AzureBlobStorageHttpLogsConfig, - EnabledConfig, + SiteMachineKey, SitePatchResource, SitePhpErrorLogFlag, SiteSourceControl, + SkuCapacity, + SkuDescription, SlotConfigNamesResource, SlotDifference, - SnapshotRestoreRequest, + SlotSwapStatus, + SlowRequestsBasedTrigger, + Snapshot, SnapshotRecoverySource, + SnapshotRestoreRequest, + Solution, + SourceControl, + StampCapacity, + StatusCodesBasedTrigger, StorageMigrationOptions, StorageMigrationResponse, StringDictionary, SwiftVirtualNetwork, - TriggeredJobRun, + TopLevelDomain, TriggeredJobHistory, + TriggeredJobRun, TriggeredWebJob, - WebJob, - AppServiceEnvironmentResource, + Usage, + User, + VirtualApplication, + VirtualDirectory, + VirtualIPMapping, VirtualNetworkProfile, + VnetGateway, + VnetInfo, + VnetParameters, + VnetRoute, + VnetValidationFailureDetails, + VnetValidationTestFailure, + WebAppCollection, + WebJob, WorkerPool, - VirtualIPMapping, - StampCapacity, - NetworkAccessControlEntry, - AppServiceEnvironmentPatchResource, - MetricDefinition, - MetricAvailabilily, - Usage, - WorkerPoolResource, - ResourceHealthMetadata + WorkerPoolResource } from "../models/mappers"; - diff --git a/sdk/appservice/arm-appservice/src/models/certificateRegistrationProviderMappers.ts b/sdk/appservice/arm-appservice/src/models/certificateRegistrationProviderMappers.ts index 8fdb86ba9e15..3d64a964d021 100644 --- a/sdk/appservice/arm-appservice/src/models/certificateRegistrationProviderMappers.ts +++ b/sdk/appservice/arm-appservice/src/models/certificateRegistrationProviderMappers.ts @@ -1,25 +1,22 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ export { CsmOperationCollection, CsmOperationDescription, - CsmOperationDisplay, CsmOperationDescriptionProperties, - ServiceSpecification, - MetricSpecification, - Dimension, - MetricAvailability, - LogSpecification, + CsmOperationDisplay, DefaultErrorResponse, DefaultErrorResponseError, - DefaultErrorResponseErrorDetailsItem + DefaultErrorResponseErrorDetailsItem, + Dimension, + LogSpecification, + MetricAvailability, + MetricSpecification, + ServiceSpecification } from "../models/mappers"; - diff --git a/sdk/appservice/arm-appservice/src/models/certificatesMappers.ts b/sdk/appservice/arm-appservice/src/models/certificatesMappers.ts index dc54d0db9642..644ba6f1e19e 100644 --- a/sdk/appservice/arm-appservice/src/models/certificatesMappers.ts +++ b/sdk/appservice/arm-appservice/src/models/certificatesMappers.ts @@ -1,188 +1,187 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ export { - CertificateCollection, - Certificate, - Resource, - BaseResource, - HostingEnvironmentProfile, - DefaultErrorResponse, - DefaultErrorResponseError, - DefaultErrorResponseErrorDetailsItem, - CloudError, - CertificatePatchResource, - ProxyOnlyResource, - AppServiceCertificateResource, - AppServiceCertificateOrder, + AbnormalTimePeriod, + Address, + AnalysisData, + AnalysisDefinition, + ApiDefinitionInfo, + ApplicationLogsConfig, AppServiceCertificate, - CertificateDetails, + AppServiceCertificateOrder, AppServiceCertificateOrderPatchResource, AppServiceCertificatePatchResource, - CertificateEmail, - CertificateOrderAction, - ReissueCertificateOrderRequest, - RenewCertificateOrderRequest, - VnetRoute, - VnetInfo, - VnetGateway, - User, - Snapshot, - ResourceMetricDefinition, - ResourceMetricAvailability, - PushSettings, - Identifier, - HybridConnectionKey, - HybridConnection, - DeletedSite, - Site, - HostNameSslState, - SiteConfig, - NameValuePair, - AzureStorageInfoValue, - ConnStringInfo, - SiteMachineKey, - HandlerMapping, - VirtualApplication, - VirtualDirectory, - Experiments, - RampUpRule, - SiteLimits, - AutoHealRules, - AutoHealTriggers, - RequestsBasedTrigger, - StatusCodesBasedTrigger, - SlowRequestsBasedTrigger, + AppServiceCertificateResource, + AppServiceEnvironmentPatchResource, + AppServiceEnvironmentResource, + AppServicePlan, + AppServicePlanPatchResource, AutoHealActions, AutoHealCustomAction, - CorsSettings, - ApiDefinitionInfo, - IpSecurityRestriction, - CloningInfo, - SlotSwapStatus, - ManagedServiceIdentity, - AppServicePlan, - SkuDescription, - SkuCapacity, - Capability, - Domain, - Contact, - Address, - HostName, - DomainPurchaseConsent, - DomainOwnershipIdentifier, - DomainPatchResource, - TopLevelDomain, - DetectorDefinition, - AnalysisDefinition, - DetectorResponse, - DetectorInfo, - DiagnosticData, - DataTableResponseObject, - DataTableResponseColumn, - Rendering, - DiagnosticAnalysis, - AbnormalTimePeriod, - DetectorAbnormalTimePeriod, - Solution, - AnalysisData, - DiagnosticMetricSet, - DiagnosticMetricSample, - ResponseMetaData, - DataSource, - DiagnosticCategory, - DiagnosticDetectorResponse, - Recommendation, - RecommendationRule, - BillingMeter, - GeoRegion, - PremierAddOnOffer, - SourceControl, - VnetParameters, - VnetValidationTestFailure, - VnetValidationFailureDetails, + AutoHealRules, + AutoHealTriggers, + AzureBlobStorageApplicationLogsConfig, + AzureBlobStorageHttpLogsConfig, + AzureStorageInfoValue, AzureStoragePropertyDictionaryResource, + AzureTableStorageApplicationLogsConfig, BackupItem, - DatabaseBackupSetting, BackupRequest, BackupSchedule, + BaseResource, + BillingMeter, + Capability, + Certificate, + CertificateCollection, + CertificateDetails, + CertificateEmail, + CertificateOrderAction, + CertificatePatchResource, + CloningInfo, + CloudError, ConnectionStringDictionary, + ConnStringInfo, ConnStringValueTypePair, + Contact, ContinuousWebJob, + CorsSettings, CustomHostnameAnalysisResult, - ErrorEntity, + DatabaseBackupSetting, + DataSource, + DataTableResponseColumn, + DataTableResponseObject, + DefaultErrorResponse, + DefaultErrorResponseError, + DefaultErrorResponseErrorDetailsItem, DeletedAppRestoreRequest, + DeletedSite, Deployment, + DetectorAbnormalTimePeriod, + DetectorDefinition, + DetectorInfo, + DetectorResponse, + DiagnosticAnalysis, + DiagnosticCategory, + DiagnosticData, + DiagnosticDetectorResponse, + DiagnosticMetricSample, + DiagnosticMetricSet, + Domain, + DomainOwnershipIdentifier, + DomainPatchResource, + DomainPurchaseConsent, + EnabledConfig, + ErrorEntity, + Experiments, + FileSystemApplicationLogsConfig, + FileSystemHttpLogsConfig, FunctionEnvelope, FunctionSecrets, + GeoDistribution, + GeoRegion, + HandlerMapping, + HostingEnvironmentProfile, + HostName, HostNameBinding, + HostNameSslState, + HttpLogsConfig, + HybridConnection, + HybridConnectionKey, + HybridConnectionLimits, + Identifier, + IpSecurityRestriction, + ManagedServiceIdentity, + ManagedServiceIdentityUserAssignedIdentitiesValue, + MetricAvailabilily, + MetricDefinition, + MigrateMySqlRequest, + MigrateMySqlStatus, MSDeploy, MSDeployLog, MSDeployLogEntry, MSDeployStatus, - MigrateMySqlRequest, - MigrateMySqlStatus, - RelayServiceConnectionEntity, + NameValuePair, + NetworkAccessControlEntry, NetworkFeatures, PremierAddOn, + PremierAddOnOffer, PremierAddOnPatchResource, PrivateAccess, - PrivateAccessVirtualNetwork, PrivateAccessSubnet, - ProcessThreadInfo, - ProcessModuleInfo, + PrivateAccessVirtualNetwork, ProcessInfo, + ProcessModuleInfo, + ProcessThreadInfo, + ProxyOnlyResource, PublicCertificate, + PushSettings, + RampUpRule, + Recommendation, + RecommendationRule, + ReissueCertificateOrderRequest, + RelayServiceConnectionEntity, + Rendering, + RenewCertificateOrderRequest, + RequestsBasedTrigger, + Resource, + ResourceHealthMetadata, + ResourceMetricAvailability, + ResourceMetricDefinition, + ResponseMetaData, RestoreRequest, + Site, SiteAuthSettings, + SiteConfig, SiteConfigResource, SiteConfigurationSnapshotInfo, SiteExtensionInfo, SiteInstance, + SiteLimits, SiteLogsConfig, - ApplicationLogsConfig, - FileSystemApplicationLogsConfig, - AzureTableStorageApplicationLogsConfig, - AzureBlobStorageApplicationLogsConfig, - HttpLogsConfig, - FileSystemHttpLogsConfig, - AzureBlobStorageHttpLogsConfig, - EnabledConfig, + SiteMachineKey, SitePatchResource, SitePhpErrorLogFlag, SiteSourceControl, + SkuCapacity, + SkuDescription, SlotConfigNamesResource, SlotDifference, - SnapshotRestoreRequest, + SlotSwapStatus, + SlowRequestsBasedTrigger, + Snapshot, SnapshotRecoverySource, + SnapshotRestoreRequest, + Solution, + SourceControl, + StampCapacity, + StatusCodesBasedTrigger, StorageMigrationOptions, StorageMigrationResponse, StringDictionary, SwiftVirtualNetwork, - TriggeredJobRun, + TopLevelDomain, TriggeredJobHistory, + TriggeredJobRun, TriggeredWebJob, - WebJob, - AppServiceEnvironmentResource, + Usage, + User, + VirtualApplication, + VirtualDirectory, + VirtualIPMapping, VirtualNetworkProfile, + VnetGateway, + VnetInfo, + VnetParameters, + VnetRoute, + VnetValidationFailureDetails, + VnetValidationTestFailure, + WebJob, WorkerPool, - VirtualIPMapping, - StampCapacity, - NetworkAccessControlEntry, - AppServiceEnvironmentPatchResource, - MetricDefinition, - MetricAvailabilily, - Usage, - WorkerPoolResource, - AppServicePlanPatchResource, - HybridConnectionLimits, - ResourceHealthMetadata + WorkerPoolResource } from "../models/mappers"; - diff --git a/sdk/appservice/arm-appservice/src/models/deletedWebAppsMappers.ts b/sdk/appservice/arm-appservice/src/models/deletedWebAppsMappers.ts index d36b03fb1cbc..e782334c42f7 100644 --- a/sdk/appservice/arm-appservice/src/models/deletedWebAppsMappers.ts +++ b/sdk/appservice/arm-appservice/src/models/deletedWebAppsMappers.ts @@ -1,187 +1,186 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ export { - DeletedWebAppCollection, - DeletedSite, - ProxyOnlyResource, - BaseResource, - DefaultErrorResponse, - DefaultErrorResponseError, - DefaultErrorResponseErrorDetailsItem, - AppServiceCertificateOrderPatchResource, - AppServiceCertificate, - CertificateDetails, - AppServiceCertificatePatchResource, - CertificateEmail, - CertificateOrderAction, - ReissueCertificateOrderRequest, - RenewCertificateOrderRequest, - VnetRoute, - VnetInfo, - VnetGateway, - User, - Snapshot, - ResourceMetricDefinition, - ResourceMetricAvailability, - PushSettings, - Identifier, - HybridConnectionKey, - HybridConnection, - Resource, - Domain, - Contact, - Address, - HostName, - DomainPurchaseConsent, - DomainOwnershipIdentifier, - DomainPatchResource, - TopLevelDomain, - Certificate, - HostingEnvironmentProfile, - CertificatePatchResource, - DetectorDefinition, - AnalysisDefinition, - DetectorResponse, - DetectorInfo, - DiagnosticData, - DataTableResponseObject, - DataTableResponseColumn, - Rendering, - DiagnosticAnalysis, AbnormalTimePeriod, - DetectorAbnormalTimePeriod, - NameValuePair, - Solution, + Address, AnalysisData, - DiagnosticMetricSet, - DiagnosticMetricSample, - ResponseMetaData, - DataSource, - DiagnosticCategory, - DiagnosticDetectorResponse, - Recommendation, - RecommendationRule, - BillingMeter, - GeoRegion, - PremierAddOnOffer, - SourceControl, - VnetParameters, - VnetValidationTestFailure, - VnetValidationFailureDetails, - AzureStoragePropertyDictionaryResource, + AnalysisDefinition, + ApiDefinitionInfo, + ApplicationLogsConfig, + AppServiceCertificate, + AppServiceCertificateOrder, + AppServiceCertificateOrderPatchResource, + AppServiceCertificatePatchResource, + AppServiceCertificateResource, + AppServiceEnvironmentPatchResource, + AppServiceEnvironmentResource, + AppServicePlan, + AppServicePlanPatchResource, + AutoHealActions, + AutoHealCustomAction, + AutoHealRules, + AutoHealTriggers, + AzureBlobStorageApplicationLogsConfig, + AzureBlobStorageHttpLogsConfig, AzureStorageInfoValue, + AzureStoragePropertyDictionaryResource, + AzureTableStorageApplicationLogsConfig, BackupItem, - DatabaseBackupSetting, BackupRequest, BackupSchedule, + BaseResource, + BillingMeter, + Capability, + Certificate, + CertificateDetails, + CertificateEmail, + CertificateOrderAction, + CertificatePatchResource, + CloningInfo, ConnectionStringDictionary, + ConnStringInfo, ConnStringValueTypePair, + Contact, ContinuousWebJob, + CorsSettings, CustomHostnameAnalysisResult, - ErrorEntity, + DatabaseBackupSetting, + DataSource, + DataTableResponseColumn, + DataTableResponseObject, + DefaultErrorResponse, + DefaultErrorResponseError, + DefaultErrorResponseErrorDetailsItem, DeletedAppRestoreRequest, + DeletedSite, + DeletedWebAppCollection, Deployment, + DetectorAbnormalTimePeriod, + DetectorDefinition, + DetectorInfo, + DetectorResponse, + DiagnosticAnalysis, + DiagnosticCategory, + DiagnosticData, + DiagnosticDetectorResponse, + DiagnosticMetricSample, + DiagnosticMetricSet, + Domain, + DomainOwnershipIdentifier, + DomainPatchResource, + DomainPurchaseConsent, + EnabledConfig, + ErrorEntity, + Experiments, + FileSystemApplicationLogsConfig, + FileSystemHttpLogsConfig, FunctionEnvelope, FunctionSecrets, + GeoDistribution, + GeoRegion, + HandlerMapping, + HostingEnvironmentProfile, + HostName, HostNameBinding, + HostNameSslState, + HttpLogsConfig, + HybridConnection, + HybridConnectionKey, + HybridConnectionLimits, + Identifier, + IpSecurityRestriction, + ManagedServiceIdentity, + ManagedServiceIdentityUserAssignedIdentitiesValue, + MetricAvailabilily, + MetricDefinition, + MigrateMySqlRequest, + MigrateMySqlStatus, MSDeploy, MSDeployLog, MSDeployLogEntry, MSDeployStatus, - MigrateMySqlRequest, - MigrateMySqlStatus, - RelayServiceConnectionEntity, + NameValuePair, + NetworkAccessControlEntry, NetworkFeatures, PremierAddOn, + PremierAddOnOffer, PremierAddOnPatchResource, PrivateAccess, - PrivateAccessVirtualNetwork, PrivateAccessSubnet, - ProcessThreadInfo, - ProcessModuleInfo, + PrivateAccessVirtualNetwork, ProcessInfo, + ProcessModuleInfo, + ProcessThreadInfo, + ProxyOnlyResource, PublicCertificate, + PushSettings, + RampUpRule, + Recommendation, + RecommendationRule, + ReissueCertificateOrderRequest, + RelayServiceConnectionEntity, + Rendering, + RenewCertificateOrderRequest, + RequestsBasedTrigger, + Resource, + ResourceHealthMetadata, + ResourceMetricAvailability, + ResourceMetricDefinition, + ResponseMetaData, RestoreRequest, + Site, SiteAuthSettings, + SiteConfig, SiteConfigResource, - ConnStringInfo, - SiteMachineKey, - HandlerMapping, - VirtualApplication, - VirtualDirectory, - Experiments, - RampUpRule, - SiteLimits, - AutoHealRules, - AutoHealTriggers, - RequestsBasedTrigger, - StatusCodesBasedTrigger, - SlowRequestsBasedTrigger, - AutoHealActions, - AutoHealCustomAction, - CorsSettings, - ApiDefinitionInfo, - IpSecurityRestriction, SiteConfigurationSnapshotInfo, SiteExtensionInfo, SiteInstance, + SiteLimits, SiteLogsConfig, - ApplicationLogsConfig, - FileSystemApplicationLogsConfig, - AzureTableStorageApplicationLogsConfig, - AzureBlobStorageApplicationLogsConfig, - HttpLogsConfig, - FileSystemHttpLogsConfig, - AzureBlobStorageHttpLogsConfig, - EnabledConfig, + SiteMachineKey, SitePatchResource, - HostNameSslState, - SiteConfig, - CloningInfo, - SlotSwapStatus, SitePhpErrorLogFlag, SiteSourceControl, + SkuCapacity, + SkuDescription, SlotConfigNamesResource, SlotDifference, - SnapshotRestoreRequest, + SlotSwapStatus, + SlowRequestsBasedTrigger, + Snapshot, SnapshotRecoverySource, + SnapshotRestoreRequest, + Solution, + SourceControl, + StampCapacity, + StatusCodesBasedTrigger, StorageMigrationOptions, StorageMigrationResponse, StringDictionary, SwiftVirtualNetwork, - TriggeredJobRun, + TopLevelDomain, TriggeredJobHistory, + TriggeredJobRun, TriggeredWebJob, - WebJob, - AppServiceEnvironmentResource, + Usage, + User, + VirtualApplication, + VirtualDirectory, + VirtualIPMapping, VirtualNetworkProfile, + VnetGateway, + VnetInfo, + VnetParameters, + VnetRoute, + VnetValidationFailureDetails, + VnetValidationTestFailure, + WebJob, WorkerPool, - VirtualIPMapping, - StampCapacity, - NetworkAccessControlEntry, - AppServiceEnvironmentPatchResource, - MetricDefinition, - MetricAvailabilily, - Usage, - WorkerPoolResource, - SkuDescription, - SkuCapacity, - Capability, - AppServicePlanPatchResource, - HybridConnectionLimits, - ResourceHealthMetadata, - AppServiceCertificateResource, - AppServiceCertificateOrder, - Site, - ManagedServiceIdentity, - AppServicePlan + WorkerPoolResource } from "../models/mappers"; - diff --git a/sdk/appservice/arm-appservice/src/models/diagnosticsMappers.ts b/sdk/appservice/arm-appservice/src/models/diagnosticsMappers.ts index b1c78aaa8573..82e9a59ec611 100644 --- a/sdk/appservice/arm-appservice/src/models/diagnosticsMappers.ts +++ b/sdk/appservice/arm-appservice/src/models/diagnosticsMappers.ts @@ -1,190 +1,189 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ export { - DetectorResponseCollection, - DetectorResponse, - ProxyOnlyResource, - BaseResource, - DetectorInfo, - DiagnosticData, - DataTableResponseObject, - DataTableResponseColumn, - Rendering, - DefaultErrorResponse, - DefaultErrorResponseError, - DefaultErrorResponseErrorDetailsItem, - DiagnosticCategoryCollection, - DiagnosticCategory, - DiagnosticAnalysisCollection, - AnalysisDefinition, - DiagnosticAnalysis, AbnormalTimePeriod, - DetectorAbnormalTimePeriod, - NameValuePair, - Solution, + Address, AnalysisData, - DetectorDefinition, - DiagnosticMetricSet, - DiagnosticMetricSample, - ResponseMetaData, - DataSource, - DiagnosticDetectorCollection, - DiagnosticDetectorResponse, - AppServiceCertificateOrderPatchResource, + AnalysisDefinition, + ApiDefinitionInfo, + ApplicationLogsConfig, AppServiceCertificate, - CertificateDetails, + AppServiceCertificateOrder, + AppServiceCertificateOrderPatchResource, AppServiceCertificatePatchResource, - CertificateEmail, - CertificateOrderAction, - ReissueCertificateOrderRequest, - RenewCertificateOrderRequest, - VnetRoute, - VnetInfo, - VnetGateway, - User, - Snapshot, - ResourceMetricDefinition, - ResourceMetricAvailability, - PushSettings, - Identifier, - HybridConnectionKey, - HybridConnection, - DeletedSite, - Resource, - Domain, - Contact, - Address, - HostName, - DomainPurchaseConsent, - DomainOwnershipIdentifier, - DomainPatchResource, - TopLevelDomain, - Certificate, - HostingEnvironmentProfile, - CertificatePatchResource, - Recommendation, - RecommendationRule, - BillingMeter, - GeoRegion, - PremierAddOnOffer, - SourceControl, - VnetParameters, - VnetValidationTestFailure, - VnetValidationFailureDetails, - AzureStoragePropertyDictionaryResource, + AppServiceCertificateResource, + AppServiceEnvironmentPatchResource, + AppServiceEnvironmentResource, + AppServicePlan, + AppServicePlanPatchResource, + AutoHealActions, + AutoHealCustomAction, + AutoHealRules, + AutoHealTriggers, + AzureBlobStorageApplicationLogsConfig, + AzureBlobStorageHttpLogsConfig, AzureStorageInfoValue, + AzureStoragePropertyDictionaryResource, + AzureTableStorageApplicationLogsConfig, BackupItem, - DatabaseBackupSetting, BackupRequest, BackupSchedule, + BaseResource, + BillingMeter, + Capability, + Certificate, + CertificateDetails, + CertificateEmail, + CertificateOrderAction, + CertificatePatchResource, + CloningInfo, ConnectionStringDictionary, + ConnStringInfo, ConnStringValueTypePair, + Contact, ContinuousWebJob, + CorsSettings, CustomHostnameAnalysisResult, - ErrorEntity, + DatabaseBackupSetting, + DataSource, + DataTableResponseColumn, + DataTableResponseObject, + DefaultErrorResponse, + DefaultErrorResponseError, + DefaultErrorResponseErrorDetailsItem, DeletedAppRestoreRequest, + DeletedSite, Deployment, + DetectorAbnormalTimePeriod, + DetectorDefinition, + DetectorInfo, + DetectorResponse, + DetectorResponseCollection, + DiagnosticAnalysis, + DiagnosticAnalysisCollection, + DiagnosticCategory, + DiagnosticCategoryCollection, + DiagnosticData, + DiagnosticDetectorCollection, + DiagnosticDetectorResponse, + DiagnosticMetricSample, + DiagnosticMetricSet, + Domain, + DomainOwnershipIdentifier, + DomainPatchResource, + DomainPurchaseConsent, + EnabledConfig, + ErrorEntity, + Experiments, + FileSystemApplicationLogsConfig, + FileSystemHttpLogsConfig, FunctionEnvelope, FunctionSecrets, + GeoDistribution, + GeoRegion, + HandlerMapping, + HostingEnvironmentProfile, + HostName, HostNameBinding, + HostNameSslState, + HttpLogsConfig, + HybridConnection, + HybridConnectionKey, + HybridConnectionLimits, + Identifier, + IpSecurityRestriction, + ManagedServiceIdentity, + ManagedServiceIdentityUserAssignedIdentitiesValue, + MetricAvailabilily, + MetricDefinition, + MigrateMySqlRequest, + MigrateMySqlStatus, MSDeploy, MSDeployLog, MSDeployLogEntry, MSDeployStatus, - MigrateMySqlRequest, - MigrateMySqlStatus, - RelayServiceConnectionEntity, + NameValuePair, + NetworkAccessControlEntry, NetworkFeatures, PremierAddOn, + PremierAddOnOffer, PremierAddOnPatchResource, PrivateAccess, - PrivateAccessVirtualNetwork, PrivateAccessSubnet, - ProcessThreadInfo, - ProcessModuleInfo, + PrivateAccessVirtualNetwork, ProcessInfo, + ProcessModuleInfo, + ProcessThreadInfo, + ProxyOnlyResource, PublicCertificate, + PushSettings, + RampUpRule, + Recommendation, + RecommendationRule, + ReissueCertificateOrderRequest, + RelayServiceConnectionEntity, + Rendering, + RenewCertificateOrderRequest, + RequestsBasedTrigger, + Resource, + ResourceHealthMetadata, + ResourceMetricAvailability, + ResourceMetricDefinition, + ResponseMetaData, RestoreRequest, + Site, SiteAuthSettings, + SiteConfig, SiteConfigResource, - ConnStringInfo, - SiteMachineKey, - HandlerMapping, - VirtualApplication, - VirtualDirectory, - Experiments, - RampUpRule, - SiteLimits, - AutoHealRules, - AutoHealTriggers, - RequestsBasedTrigger, - StatusCodesBasedTrigger, - SlowRequestsBasedTrigger, - AutoHealActions, - AutoHealCustomAction, - CorsSettings, - ApiDefinitionInfo, - IpSecurityRestriction, SiteConfigurationSnapshotInfo, SiteExtensionInfo, SiteInstance, + SiteLimits, SiteLogsConfig, - ApplicationLogsConfig, - FileSystemApplicationLogsConfig, - AzureTableStorageApplicationLogsConfig, - AzureBlobStorageApplicationLogsConfig, - HttpLogsConfig, - FileSystemHttpLogsConfig, - AzureBlobStorageHttpLogsConfig, - EnabledConfig, + SiteMachineKey, SitePatchResource, - HostNameSslState, - SiteConfig, - CloningInfo, - SlotSwapStatus, SitePhpErrorLogFlag, SiteSourceControl, + SkuCapacity, + SkuDescription, SlotConfigNamesResource, SlotDifference, - SnapshotRestoreRequest, + SlotSwapStatus, + SlowRequestsBasedTrigger, + Snapshot, SnapshotRecoverySource, + SnapshotRestoreRequest, + Solution, + SourceControl, + StampCapacity, + StatusCodesBasedTrigger, StorageMigrationOptions, StorageMigrationResponse, StringDictionary, SwiftVirtualNetwork, - TriggeredJobRun, + TopLevelDomain, TriggeredJobHistory, + TriggeredJobRun, TriggeredWebJob, - WebJob, - AppServiceEnvironmentResource, + Usage, + User, + VirtualApplication, + VirtualDirectory, + VirtualIPMapping, VirtualNetworkProfile, + VnetGateway, + VnetInfo, + VnetParameters, + VnetRoute, + VnetValidationFailureDetails, + VnetValidationTestFailure, + WebJob, WorkerPool, - VirtualIPMapping, - StampCapacity, - NetworkAccessControlEntry, - AppServiceEnvironmentPatchResource, - MetricDefinition, - MetricAvailabilily, - Usage, - WorkerPoolResource, - SkuDescription, - SkuCapacity, - Capability, - AppServicePlanPatchResource, - HybridConnectionLimits, - ResourceHealthMetadata, - AppServiceCertificateResource, - AppServiceCertificateOrder, - Site, - ManagedServiceIdentity, - AppServicePlan + WorkerPoolResource } from "../models/mappers"; - diff --git a/sdk/appservice/arm-appservice/src/models/domainRegistrationProviderMappers.ts b/sdk/appservice/arm-appservice/src/models/domainRegistrationProviderMappers.ts index 8fdb86ba9e15..3d64a964d021 100644 --- a/sdk/appservice/arm-appservice/src/models/domainRegistrationProviderMappers.ts +++ b/sdk/appservice/arm-appservice/src/models/domainRegistrationProviderMappers.ts @@ -1,25 +1,22 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ export { CsmOperationCollection, CsmOperationDescription, - CsmOperationDisplay, CsmOperationDescriptionProperties, - ServiceSpecification, - MetricSpecification, - Dimension, - MetricAvailability, - LogSpecification, + CsmOperationDisplay, DefaultErrorResponse, DefaultErrorResponseError, - DefaultErrorResponseErrorDetailsItem + DefaultErrorResponseErrorDetailsItem, + Dimension, + LogSpecification, + MetricAvailability, + MetricSpecification, + ServiceSpecification } from "../models/mappers"; - diff --git a/sdk/appservice/arm-appservice/src/models/domainsMappers.ts b/sdk/appservice/arm-appservice/src/models/domainsMappers.ts index 620c86b22956..8fb9d52e1fd2 100644 --- a/sdk/appservice/arm-appservice/src/models/domainsMappers.ts +++ b/sdk/appservice/arm-appservice/src/models/domainsMappers.ts @@ -1,194 +1,193 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ export { - NameIdentifier, - DomainAvailablilityCheckResult, - DefaultErrorResponse, - DefaultErrorResponseError, - DefaultErrorResponseErrorDetailsItem, - DomainCollection, - Domain, - Resource, - BaseResource, - Contact, + AbnormalTimePeriod, Address, - HostName, - DomainPurchaseConsent, - DomainControlCenterSsoRequest, - DomainRecommendationSearchParameters, - NameIdentifierCollection, - CloudError, - DomainPatchResource, - ProxyOnlyResource, - DomainOwnershipIdentifierCollection, - DomainOwnershipIdentifier, - AppServiceCertificateResource, - AppServiceCertificateOrder, + AnalysisData, + AnalysisDefinition, + ApiDefinitionInfo, + ApplicationLogsConfig, AppServiceCertificate, - CertificateDetails, + AppServiceCertificateOrder, AppServiceCertificateOrderPatchResource, AppServiceCertificatePatchResource, - CertificateEmail, - CertificateOrderAction, - ReissueCertificateOrderRequest, - RenewCertificateOrderRequest, - VnetRoute, - VnetInfo, - VnetGateway, - User, - Snapshot, - ResourceMetricDefinition, - ResourceMetricAvailability, - PushSettings, - Identifier, - HybridConnectionKey, - HybridConnection, - DeletedSite, - Site, - HostNameSslState, - SiteConfig, - NameValuePair, - AzureStorageInfoValue, - ConnStringInfo, - SiteMachineKey, - HandlerMapping, - VirtualApplication, - VirtualDirectory, - Experiments, - RampUpRule, - SiteLimits, - AutoHealRules, - AutoHealTriggers, - RequestsBasedTrigger, - StatusCodesBasedTrigger, - SlowRequestsBasedTrigger, + AppServiceCertificateResource, + AppServiceEnvironmentPatchResource, + AppServiceEnvironmentResource, + AppServicePlan, + AppServicePlanPatchResource, AutoHealActions, AutoHealCustomAction, - CorsSettings, - ApiDefinitionInfo, - IpSecurityRestriction, - HostingEnvironmentProfile, - CloningInfo, - SlotSwapStatus, - ManagedServiceIdentity, - AppServicePlan, - SkuDescription, - SkuCapacity, - Capability, - TopLevelDomain, - Certificate, - CertificatePatchResource, - DetectorDefinition, - AnalysisDefinition, - DetectorResponse, - DetectorInfo, - DiagnosticData, - DataTableResponseObject, - DataTableResponseColumn, - Rendering, - DiagnosticAnalysis, - AbnormalTimePeriod, - DetectorAbnormalTimePeriod, - Solution, - AnalysisData, - DiagnosticMetricSet, - DiagnosticMetricSample, - ResponseMetaData, - DataSource, - DiagnosticCategory, - DiagnosticDetectorResponse, - Recommendation, - RecommendationRule, - BillingMeter, - GeoRegion, - PremierAddOnOffer, - SourceControl, - VnetParameters, - VnetValidationTestFailure, - VnetValidationFailureDetails, + AutoHealRules, + AutoHealTriggers, + AzureBlobStorageApplicationLogsConfig, + AzureBlobStorageHttpLogsConfig, + AzureStorageInfoValue, AzureStoragePropertyDictionaryResource, + AzureTableStorageApplicationLogsConfig, BackupItem, - DatabaseBackupSetting, BackupRequest, BackupSchedule, + BaseResource, + BillingMeter, + Capability, + Certificate, + CertificateDetails, + CertificateEmail, + CertificateOrderAction, + CertificatePatchResource, + CloningInfo, + CloudError, ConnectionStringDictionary, + ConnStringInfo, ConnStringValueTypePair, + Contact, ContinuousWebJob, + CorsSettings, CustomHostnameAnalysisResult, - ErrorEntity, + DatabaseBackupSetting, + DataSource, + DataTableResponseColumn, + DataTableResponseObject, + DefaultErrorResponse, + DefaultErrorResponseError, + DefaultErrorResponseErrorDetailsItem, DeletedAppRestoreRequest, + DeletedSite, Deployment, + DetectorAbnormalTimePeriod, + DetectorDefinition, + DetectorInfo, + DetectorResponse, + DiagnosticAnalysis, + DiagnosticCategory, + DiagnosticData, + DiagnosticDetectorResponse, + DiagnosticMetricSample, + DiagnosticMetricSet, + Domain, + DomainAvailablilityCheckResult, + DomainCollection, + DomainControlCenterSsoRequest, + DomainOwnershipIdentifier, + DomainOwnershipIdentifierCollection, + DomainPatchResource, + DomainPurchaseConsent, + DomainRecommendationSearchParameters, + EnabledConfig, + ErrorEntity, + Experiments, + FileSystemApplicationLogsConfig, + FileSystemHttpLogsConfig, FunctionEnvelope, FunctionSecrets, + GeoDistribution, + GeoRegion, + HandlerMapping, + HostingEnvironmentProfile, + HostName, HostNameBinding, + HostNameSslState, + HttpLogsConfig, + HybridConnection, + HybridConnectionKey, + HybridConnectionLimits, + Identifier, + IpSecurityRestriction, + ManagedServiceIdentity, + ManagedServiceIdentityUserAssignedIdentitiesValue, + MetricAvailabilily, + MetricDefinition, + MigrateMySqlRequest, + MigrateMySqlStatus, MSDeploy, MSDeployLog, MSDeployLogEntry, MSDeployStatus, - MigrateMySqlRequest, - MigrateMySqlStatus, - RelayServiceConnectionEntity, + NameIdentifier, + NameIdentifierCollection, + NameValuePair, + NetworkAccessControlEntry, NetworkFeatures, PremierAddOn, + PremierAddOnOffer, PremierAddOnPatchResource, PrivateAccess, - PrivateAccessVirtualNetwork, PrivateAccessSubnet, - ProcessThreadInfo, - ProcessModuleInfo, + PrivateAccessVirtualNetwork, ProcessInfo, + ProcessModuleInfo, + ProcessThreadInfo, + ProxyOnlyResource, PublicCertificate, + PushSettings, + RampUpRule, + Recommendation, + RecommendationRule, + ReissueCertificateOrderRequest, + RelayServiceConnectionEntity, + Rendering, + RenewCertificateOrderRequest, + RequestsBasedTrigger, + Resource, + ResourceHealthMetadata, + ResourceMetricAvailability, + ResourceMetricDefinition, + ResponseMetaData, RestoreRequest, + Site, SiteAuthSettings, + SiteConfig, SiteConfigResource, SiteConfigurationSnapshotInfo, SiteExtensionInfo, SiteInstance, + SiteLimits, SiteLogsConfig, - ApplicationLogsConfig, - FileSystemApplicationLogsConfig, - AzureTableStorageApplicationLogsConfig, - AzureBlobStorageApplicationLogsConfig, - HttpLogsConfig, - FileSystemHttpLogsConfig, - AzureBlobStorageHttpLogsConfig, - EnabledConfig, + SiteMachineKey, SitePatchResource, SitePhpErrorLogFlag, SiteSourceControl, + SkuCapacity, + SkuDescription, SlotConfigNamesResource, SlotDifference, - SnapshotRestoreRequest, + SlotSwapStatus, + SlowRequestsBasedTrigger, + Snapshot, SnapshotRecoverySource, + SnapshotRestoreRequest, + Solution, + SourceControl, + StampCapacity, + StatusCodesBasedTrigger, StorageMigrationOptions, StorageMigrationResponse, StringDictionary, SwiftVirtualNetwork, - TriggeredJobRun, + TopLevelDomain, TriggeredJobHistory, + TriggeredJobRun, TriggeredWebJob, - WebJob, - AppServiceEnvironmentResource, + Usage, + User, + VirtualApplication, + VirtualDirectory, + VirtualIPMapping, VirtualNetworkProfile, + VnetGateway, + VnetInfo, + VnetParameters, + VnetRoute, + VnetValidationFailureDetails, + VnetValidationTestFailure, + WebJob, WorkerPool, - VirtualIPMapping, - StampCapacity, - NetworkAccessControlEntry, - AppServiceEnvironmentPatchResource, - MetricDefinition, - MetricAvailabilily, - Usage, - WorkerPoolResource, - AppServicePlanPatchResource, - HybridConnectionLimits, - ResourceHealthMetadata + WorkerPoolResource } from "../models/mappers"; - diff --git a/sdk/appservice/arm-appservice/src/models/index.ts b/sdk/appservice/arm-appservice/src/models/index.ts index 18fb3f04d3b6..dd1fdf46d983 100644 --- a/sdk/appservice/arm-appservice/src/models/index.ts +++ b/sdk/appservice/arm-appservice/src/models/index.ts @@ -1,11 +1,9 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ import { BaseResource, CloudError, AzureServiceClientOptions } from "@azure/ms-rest-azure-js"; @@ -13,1092 +11,887 @@ import * as msRest from "@azure/ms-rest-js"; export { BaseResource, CloudError }; - /** - * @interface - * An interface representing AppServiceCertificate. * Key Vault container for a certificate that is purchased through Azure. - * */ export interface AppServiceCertificate { /** - * @member {string} [keyVaultId] Key Vault resource Id. + * Key Vault resource Id. */ keyVaultId?: string; /** - * @member {string} [keyVaultSecretName] Key Vault secret name. + * Key Vault secret name. */ keyVaultSecretName?: string; /** - * @member {KeyVaultSecretStatus} [provisioningState] Status of the Key Vault - * secret. Possible values include: 'Initialized', + * Status of the Key Vault secret. Possible values include: 'Initialized', * 'WaitingOnCertificateOrder', 'Succeeded', 'CertificateOrderFailed', - * 'OperationNotPermittedOnKeyVault', - * 'AzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultDoesNotExist', - * 'KeyVaultSecretDoesNotExist', 'UnknownError', 'ExternalPrivateKey', + * 'OperationNotPermittedOnKeyVault', 'AzureServiceUnauthorizedToAccessKeyVault', + * 'KeyVaultDoesNotExist', 'KeyVaultSecretDoesNotExist', 'UnknownError', 'ExternalPrivateKey', * 'Unknown' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: KeyVaultSecretStatus; } /** - * @interface - * An interface representing Resource. * Azure resource. This resource is tracked in Azure Resource Manager - * - * @extends BaseResource */ export interface Resource extends BaseResource { /** - * @member {string} [id] Resource Id. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Resource Id. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly id?: string; /** - * @member {string} [name] Resource Name. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Resource Name. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly name?: string; /** - * @member {string} [kind] Kind of resource. + * Kind of resource. */ kind?: string; /** - * @member {string} location Resource Location. + * Resource Location. */ location: string; /** - * @member {string} [type] Resource type. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Resource type. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly type?: string; /** - * @member {{ [propertyName: string]: string }} [tags] Resource tags. + * Resource tags. */ tags?: { [propertyName: string]: string }; } /** - * @interface - * An interface representing AppServiceCertificateResource. - * Key Vault container ARM resource for a certificate that is purchased through - * Azure. - * - * @extends Resource + * Key Vault container ARM resource for a certificate that is purchased through Azure. */ export interface AppServiceCertificateResource extends Resource { /** - * @member {string} [keyVaultId] Key Vault resource Id. + * Key Vault resource Id. */ keyVaultId?: string; /** - * @member {string} [keyVaultSecretName] Key Vault secret name. + * Key Vault secret name. */ keyVaultSecretName?: string; /** - * @member {KeyVaultSecretStatus} [provisioningState] Status of the Key Vault - * secret. Possible values include: 'Initialized', + * Status of the Key Vault secret. Possible values include: 'Initialized', * 'WaitingOnCertificateOrder', 'Succeeded', 'CertificateOrderFailed', - * 'OperationNotPermittedOnKeyVault', - * 'AzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultDoesNotExist', - * 'KeyVaultSecretDoesNotExist', 'UnknownError', 'ExternalPrivateKey', + * 'OperationNotPermittedOnKeyVault', 'AzureServiceUnauthorizedToAccessKeyVault', + * 'KeyVaultDoesNotExist', 'KeyVaultSecretDoesNotExist', 'UnknownError', 'ExternalPrivateKey', * 'Unknown' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: KeyVaultSecretStatus; } /** - * @interface - * An interface representing CertificateDetails. * SSL certificate details. - * */ export interface CertificateDetails { /** - * @member {number} [version] Certificate Version. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Certificate Version. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly version?: number; /** - * @member {string} [serialNumber] Certificate Serial Number. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Certificate Serial Number. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly serialNumber?: string; /** - * @member {string} [thumbprint] Certificate Thumbprint. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Certificate Thumbprint. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly thumbprint?: string; /** - * @member {string} [subject] Certificate Subject. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Certificate Subject. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly subject?: string; /** - * @member {Date} [notBefore] Date Certificate is valid from. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Date Certificate is valid from. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly notBefore?: Date; /** - * @member {Date} [notAfter] Date Certificate is valid to. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Date Certificate is valid to. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly notAfter?: Date; /** - * @member {string} [signatureAlgorithm] Certificate Signature algorithm. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Certificate Signature algorithm. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly signatureAlgorithm?: string; /** - * @member {string} [issuer] Certificate Issuer. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Certificate Issuer. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly issuer?: string; /** - * @member {string} [rawData] Raw certificate data. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Raw certificate data. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly rawData?: string; } /** - * @interface - * An interface representing AppServiceCertificateOrder. * SSL certificate purchase order. - * - * @extends Resource */ export interface AppServiceCertificateOrder extends Resource { /** - * @member {{ [propertyName: string]: AppServiceCertificate }} [certificates] * State of the Key Vault secret. */ certificates?: { [propertyName: string]: AppServiceCertificate }; /** - * @member {string} [distinguishedName] Certificate distinguished name. + * Certificate distinguished name. */ distinguishedName?: string; /** - * @member {string} [domainVerificationToken] Domain verification token. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Domain verification token. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly domainVerificationToken?: string; /** - * @member {number} [validityInYears] Duration in years (must be between 1 - * and 3). Default value: 1 . + * Duration in years (must be between 1 and 3). Default value: 1. */ validityInYears?: number; /** - * @member {number} [keySize] Certificate key size. Default value: 2048 . + * Certificate key size. Default value: 2048. */ keySize?: number; /** - * @member {CertificateProductType} productType Certificate product type. - * Possible values include: 'StandardDomainValidatedSsl', + * Certificate product type. Possible values include: 'StandardDomainValidatedSsl', * 'StandardDomainValidatedWildCardSsl' */ productType: CertificateProductType; /** - * @member {boolean} [autoRenew] true if the certificate should - * be automatically renewed when it expires; otherwise, false. - * Default value: true . + * true if the certificate should be automatically renewed when it expires; + * otherwise, false. Default value: true. */ autoRenew?: boolean; /** - * @member {ProvisioningState} [provisioningState] Status of certificate - * order. Possible values include: 'Succeeded', 'Failed', 'Canceled', + * Status of certificate order. Possible values include: 'Succeeded', 'Failed', 'Canceled', * 'InProgress', 'Deleting' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: ProvisioningState; /** - * @member {CertificateOrderStatus} [status] Current order status. Possible - * values include: 'Pendingissuance', 'Issued', 'Revoked', 'Canceled', - * 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', - * 'NotSubmitted' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Current order status. Possible values include: 'Pendingissuance', 'Issued', 'Revoked', + * 'Canceled', 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', 'NotSubmitted' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly status?: CertificateOrderStatus; /** - * @member {CertificateDetails} [signedCertificate] Signed certificate. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Signed certificate. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly signedCertificate?: CertificateDetails; /** - * @member {string} [csr] Last CSR that was created for this order. + * Last CSR that was created for this order. */ csr?: string; /** - * @member {CertificateDetails} [intermediate] Intermediate certificate. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Intermediate certificate. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly intermediate?: CertificateDetails; /** - * @member {CertificateDetails} [root] Root certificate. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Root certificate. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly root?: CertificateDetails; /** - * @member {string} [serialNumber] Current serial number of the certificate. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Current serial number of the certificate. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly serialNumber?: string; /** - * @member {Date} [lastCertificateIssuanceTime] Certificate last issuance - * time. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Certificate last issuance time. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly lastCertificateIssuanceTime?: Date; /** - * @member {Date} [expirationTime] Certificate expiration time. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Certificate expiration time. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly expirationTime?: Date; /** - * @member {boolean} [isPrivateKeyExternal] true if private key - * is external; otherwise, false. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * true if private key is external; otherwise, false. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly isPrivateKeyExternal?: boolean; /** - * @member {string[]} [appServiceCertificateNotRenewableReasons] Reasons why - * App Service Certificate is not renewable at the current moment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Reasons why App Service Certificate is not renewable at the current moment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly appServiceCertificateNotRenewableReasons?: string[]; /** - * @member {Date} [nextAutoRenewalTimeStamp] Time stamp when the certificate - * would be auto renewed next - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Time stamp when the certificate would be auto renewed next + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextAutoRenewalTimeStamp?: Date; } /** - * @interface - * An interface representing ProxyOnlyResource. - * Azure proxy only resource. This resource is not tracked by Azure Resource - * Manager. - * - * @extends BaseResource + * Azure proxy only resource. This resource is not tracked by Azure Resource Manager. */ export interface ProxyOnlyResource extends BaseResource { /** - * @member {string} [id] Resource Id. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Resource Id. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly id?: string; /** - * @member {string} [name] Resource Name. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Resource Name. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly name?: string; /** - * @member {string} [kind] Kind of resource. + * Kind of resource. */ kind?: string; /** - * @member {string} [type] Resource type. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Resource type. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly type?: string; } /** - * @interface - * An interface representing AppServiceCertificateOrderPatchResource. * ARM resource for a certificate order that is purchased through Azure. - * - * @extends ProxyOnlyResource */ export interface AppServiceCertificateOrderPatchResource extends ProxyOnlyResource { /** - * @member {{ [propertyName: string]: AppServiceCertificate }} [certificates] * State of the Key Vault secret. */ certificates?: { [propertyName: string]: AppServiceCertificate }; /** - * @member {string} [distinguishedName] Certificate distinguished name. + * Certificate distinguished name. */ distinguishedName?: string; /** - * @member {string} [domainVerificationToken] Domain verification token. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Domain verification token. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly domainVerificationToken?: string; /** - * @member {number} [validityInYears] Duration in years (must be between 1 - * and 3). Default value: 1 . + * Duration in years (must be between 1 and 3). Default value: 1. */ validityInYears?: number; /** - * @member {number} [keySize] Certificate key size. Default value: 2048 . + * Certificate key size. Default value: 2048. */ keySize?: number; /** - * @member {CertificateProductType} productType Certificate product type. - * Possible values include: 'StandardDomainValidatedSsl', + * Certificate product type. Possible values include: 'StandardDomainValidatedSsl', * 'StandardDomainValidatedWildCardSsl' */ productType: CertificateProductType; /** - * @member {boolean} [autoRenew] true if the certificate should - * be automatically renewed when it expires; otherwise, false. - * Default value: true . + * true if the certificate should be automatically renewed when it expires; + * otherwise, false. Default value: true. */ autoRenew?: boolean; /** - * @member {ProvisioningState} [provisioningState] Status of certificate - * order. Possible values include: 'Succeeded', 'Failed', 'Canceled', + * Status of certificate order. Possible values include: 'Succeeded', 'Failed', 'Canceled', * 'InProgress', 'Deleting' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: ProvisioningState; /** - * @member {CertificateOrderStatus} [status] Current order status. Possible - * values include: 'Pendingissuance', 'Issued', 'Revoked', 'Canceled', - * 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', - * 'NotSubmitted' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Current order status. Possible values include: 'Pendingissuance', 'Issued', 'Revoked', + * 'Canceled', 'Denied', 'Pendingrevocation', 'PendingRekey', 'Unused', 'Expired', 'NotSubmitted' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly status?: CertificateOrderStatus; /** - * @member {CertificateDetails} [signedCertificate] Signed certificate. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Signed certificate. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly signedCertificate?: CertificateDetails; /** - * @member {string} [csr] Last CSR that was created for this order. + * Last CSR that was created for this order. */ csr?: string; /** - * @member {CertificateDetails} [intermediate] Intermediate certificate. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Intermediate certificate. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly intermediate?: CertificateDetails; /** - * @member {CertificateDetails} [root] Root certificate. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Root certificate. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly root?: CertificateDetails; /** - * @member {string} [serialNumber] Current serial number of the certificate. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Current serial number of the certificate. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly serialNumber?: string; /** - * @member {Date} [lastCertificateIssuanceTime] Certificate last issuance - * time. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Certificate last issuance time. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly lastCertificateIssuanceTime?: Date; /** - * @member {Date} [expirationTime] Certificate expiration time. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Certificate expiration time. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly expirationTime?: Date; /** - * @member {boolean} [isPrivateKeyExternal] true if private key - * is external; otherwise, false. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * true if private key is external; otherwise, false. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly isPrivateKeyExternal?: boolean; /** - * @member {string[]} [appServiceCertificateNotRenewableReasons] Reasons why - * App Service Certificate is not renewable at the current moment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Reasons why App Service Certificate is not renewable at the current moment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly appServiceCertificateNotRenewableReasons?: string[]; /** - * @member {Date} [nextAutoRenewalTimeStamp] Time stamp when the certificate - * would be auto renewed next - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Time stamp when the certificate would be auto renewed next + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextAutoRenewalTimeStamp?: Date; } /** - * @interface - * An interface representing AppServiceCertificatePatchResource. - * Key Vault container ARM resource for a certificate that is purchased through - * Azure. - * - * @extends ProxyOnlyResource + * Key Vault container ARM resource for a certificate that is purchased through Azure. */ export interface AppServiceCertificatePatchResource extends ProxyOnlyResource { /** - * @member {string} [keyVaultId] Key Vault resource Id. + * Key Vault resource Id. */ keyVaultId?: string; /** - * @member {string} [keyVaultSecretName] Key Vault secret name. + * Key Vault secret name. */ keyVaultSecretName?: string; /** - * @member {KeyVaultSecretStatus} [provisioningState] Status of the Key Vault - * secret. Possible values include: 'Initialized', + * Status of the Key Vault secret. Possible values include: 'Initialized', * 'WaitingOnCertificateOrder', 'Succeeded', 'CertificateOrderFailed', - * 'OperationNotPermittedOnKeyVault', - * 'AzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultDoesNotExist', - * 'KeyVaultSecretDoesNotExist', 'UnknownError', 'ExternalPrivateKey', + * 'OperationNotPermittedOnKeyVault', 'AzureServiceUnauthorizedToAccessKeyVault', + * 'KeyVaultDoesNotExist', 'KeyVaultSecretDoesNotExist', 'UnknownError', 'ExternalPrivateKey', * 'Unknown' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: KeyVaultSecretStatus; } /** - * @interface - * An interface representing CertificateEmail. * SSL certificate email. - * - * @extends ProxyOnlyResource */ export interface CertificateEmail extends ProxyOnlyResource { /** - * @member {string} [emailId] Email id. + * Email id. */ emailId?: string; /** - * @member {Date} [timeStamp] Time stamp. + * Time stamp. */ timeStamp?: Date; } /** - * @interface - * An interface representing CertificateOrderAction. * Certificate order action. - * - * @extends ProxyOnlyResource */ export interface CertificateOrderAction extends ProxyOnlyResource { /** - * @member {CertificateOrderActionType} [actionType] Action type. Possible - * values include: 'CertificateIssued', 'CertificateOrderCanceled', - * 'CertificateOrderCreated', 'CertificateRevoked', - * 'DomainValidationComplete', 'FraudDetected', 'OrgNameChange', - * 'OrgValidationComplete', 'SanDrop', 'FraudCleared', 'CertificateExpired', + * Action type. Possible values include: 'CertificateIssued', 'CertificateOrderCanceled', + * 'CertificateOrderCreated', 'CertificateRevoked', 'DomainValidationComplete', 'FraudDetected', + * 'OrgNameChange', 'OrgValidationComplete', 'SanDrop', 'FraudCleared', 'CertificateExpired', * 'CertificateExpirationWarning', 'FraudDocumentationRequired', 'Unknown' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly actionType?: CertificateOrderActionType; /** - * @member {Date} [createdAt] Time at which the certificate action was - * performed. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Time at which the certificate action was performed. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly createdAt?: Date; } /** - * @interface - * An interface representing ReissueCertificateOrderRequest. * Class representing certificate reissue request. - * - * @extends ProxyOnlyResource */ export interface ReissueCertificateOrderRequest extends ProxyOnlyResource { /** - * @member {number} [keySize] Certificate Key Size. + * Certificate Key Size. */ keySize?: number; /** - * @member {number} [delayExistingRevokeInHours] Delay in hours to revoke - * existing certificate after the new certificate is issued. + * Delay in hours to revoke existing certificate after the new certificate is issued. */ delayExistingRevokeInHours?: number; /** - * @member {string} [csr] Csr to be used for re-key operation. + * Csr to be used for re-key operation. */ csr?: string; /** - * @member {boolean} [isPrivateKeyExternal] Should we change the ASC type - * (from managed private key to external private key and vice versa). + * Should we change the ASC type (from managed private key to external private key and vice + * versa). */ isPrivateKeyExternal?: boolean; } /** - * @interface - * An interface representing RenewCertificateOrderRequest. * Class representing certificate renew request. - * - * @extends ProxyOnlyResource */ export interface RenewCertificateOrderRequest extends ProxyOnlyResource { /** - * @member {number} [keySize] Certificate Key Size. + * Certificate Key Size. */ keySize?: number; /** - * @member {string} [csr] Csr to be used for re-key operation. + * Csr to be used for re-key operation. */ csr?: string; /** - * @member {boolean} [isPrivateKeyExternal] Should we change the ASC type - * (from managed private key to external private key and vice versa). + * Should we change the ASC type (from managed private key to external private key and vice + * versa). */ isPrivateKeyExternal?: boolean; } /** - * @interface - * An interface representing SiteSeal. * Site seal - * */ export interface SiteSeal { /** - * @member {string} html HTML snippet + * HTML snippet */ html: string; } /** - * @interface - * An interface representing SiteSealRequest. * Site seal request. - * */ export interface SiteSealRequest { /** - * @member {boolean} [lightTheme] If true use the light color - * theme for site seal; otherwise, use the default color theme. + * If true use the light color theme for site seal; otherwise, use the default color + * theme. */ lightTheme?: boolean; /** - * @member {string} [locale] Locale of site seal. + * Locale of site seal. */ locale?: string; } /** - * @interface - * An interface representing VnetRoute. - * Virtual Network route contract used to pass routing information for a - * Virtual Network. - * - * @extends ProxyOnlyResource + * Virtual Network route contract used to pass routing information for a Virtual Network. */ export interface VnetRoute extends ProxyOnlyResource { /** - * @member {string} [startAddress] The starting address for this route. This - * may also include a CIDR notation, in which case the end address must not - * be specified. + * The starting address for this route. This may also include a CIDR notation, in which case the + * end address must not be specified. */ startAddress?: string; /** - * @member {string} [endAddress] The ending address for this route. If the - * start address is specified in CIDR notation, this must be omitted. + * The ending address for this route. If the start address is specified in CIDR notation, this + * must be omitted. */ endAddress?: string; /** - * @member {RouteType} [routeType] The type of route this is: - * DEFAULT - By default, every app has routes to the local address ranges - * specified by RFC1918 + * The type of route this is: + * DEFAULT - By default, every app has routes to the local address ranges specified by RFC1918 * INHERITED - Routes inherited from the real Virtual Network routes * STATIC - Static route set on the app only * - * These values will be used for syncing an app's routes with those from a - * Virtual Network. Possible values include: 'DEFAULT', 'INHERITED', 'STATIC' + * These values will be used for syncing an app's routes with those from a Virtual Network. + * Possible values include: 'DEFAULT', 'INHERITED', 'STATIC' */ routeType?: RouteType; } /** - * @interface - * An interface representing VnetInfo. * Virtual Network information contract. - * - * @extends ProxyOnlyResource */ export interface VnetInfo extends ProxyOnlyResource { /** - * @member {string} [vnetResourceId] The Virtual Network's resource ID. + * The Virtual Network's resource ID. */ vnetResourceId?: string; /** - * @member {string} [certThumbprint] The client certificate thumbprint. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The client certificate thumbprint. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly certThumbprint?: string; /** - * @member {Uint8Array} [certBlob] A certificate file (.cer) blob containing - * the public key of the private key used to authenticate a + * A certificate file (.cer) blob containing the public key of the private key used to + * authenticate a * Point-To-Site VPN connection. */ - certBlob?: Uint8Array; + certBlob?: string; /** - * @member {VnetRoute[]} [routes] The routes that this Virtual Network - * connection uses. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The routes that this Virtual Network connection uses. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly routes?: VnetRoute[]; /** - * @member {boolean} [resyncRequired] true if a resync is - * required; otherwise, false. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * true if a resync is required; otherwise, false. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly resyncRequired?: boolean; /** - * @member {string} [dnsServers] DNS servers to be used by this Virtual - * Network. This should be a comma-separated list of IP addresses. + * DNS servers to be used by this Virtual Network. This should be a comma-separated list of IP + * addresses. */ dnsServers?: string; + /** + * Flag that is used to denote if this is VNET injection + */ + isSwift?: boolean; } /** - * @interface - * An interface representing VnetGateway. - * The Virtual Network gateway contract. This is used to give the Virtual - * Network gateway access to the VPN package. - * - * @extends ProxyOnlyResource + * The Virtual Network gateway contract. This is used to give the Virtual Network gateway access to + * the VPN package. */ export interface VnetGateway extends ProxyOnlyResource { /** - * @member {string} [vnetName] The Virtual Network name. + * The Virtual Network name. */ vnetName?: string; /** - * @member {string} vpnPackageUri The URI where the VPN package can be - * downloaded. + * The URI where the VPN package can be downloaded. */ vpnPackageUri: string; } /** - * @interface - * An interface representing User. - * User crendentials used for publishing activity. - * - * @extends ProxyOnlyResource + * User credentials used for publishing activity. */ export interface User extends ProxyOnlyResource { /** - * @member {string} publishingUserName Username used for publishing. + * Username used for publishing. */ publishingUserName: string; /** - * @member {string} [publishingPassword] Password used for publishing. + * Password used for publishing. */ publishingPassword?: string; /** - * @member {string} [publishingPasswordHash] Password hash used for - * publishing. + * Password hash used for publishing. */ publishingPasswordHash?: string; /** - * @member {string} [publishingPasswordHashSalt] Password hash salt used for - * publishing. + * Password hash salt used for publishing. */ publishingPasswordHashSalt?: string; /** - * @member {string} [scmUri] Url of SCM site. + * Url of SCM site. */ scmUri?: string; } /** - * @interface - * An interface representing Snapshot. * A snapshot of an app. - * - * @extends ProxyOnlyResource */ export interface Snapshot extends ProxyOnlyResource { /** - * @member {string} [time] The time the snapshot was taken. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The time the snapshot was taken. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly time?: string; } /** - * @interface - * An interface representing ResourceMetricAvailability. * Metrics availability and retention. - * */ export interface ResourceMetricAvailability { /** - * @member {string} [timeGrain] Time grain . - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Time grain . + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly timeGrain?: string; /** - * @member {string} [retention] Retention period for the current time grain. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Retention period for the current time grain. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly retention?: string; } /** - * @interface - * An interface representing ResourceMetricDefinition. * Metadata for the metrics. - * - * @extends ProxyOnlyResource */ export interface ResourceMetricDefinition extends ProxyOnlyResource { /** - * @member {string} [unit] Unit of the metric. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Unit of the metric. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly unit?: string; /** - * @member {string} [primaryAggregationType] Primary aggregation type. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Primary aggregation type. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly primaryAggregationType?: string; /** - * @member {ResourceMetricAvailability[]} [metricAvailabilities] List of time - * grains supported for the metric together with retention period. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * List of time grains supported for the metric together with retention period. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly metricAvailabilities?: ResourceMetricAvailability[]; /** - * @member {string} [resourceUri] Resource URI. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Resource URI. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly resourceUri?: string; /** - * @member {{ [propertyName: string]: string }} [properties] Resource metric - * definition properties. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Resource metric definition properties. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly properties?: { [propertyName: string]: string }; } /** - * @interface - * An interface representing PushSettings. * Push settings for the App. - * - * @extends ProxyOnlyResource */ export interface PushSettings extends ProxyOnlyResource { /** - * @member {boolean} isPushEnabled Gets or sets a flag indicating whether the - * Push endpoint is enabled. + * Gets or sets a flag indicating whether the Push endpoint is enabled. */ isPushEnabled: boolean; /** - * @member {string} [tagWhitelistJson] Gets or sets a JSON string containing - * a list of tags that are whitelisted for use by the push registration - * endpoint. + * Gets or sets a JSON string containing a list of tags that are whitelisted for use by the push + * registration endpoint. */ tagWhitelistJson?: string; /** - * @member {string} [tagsRequiringAuth] Gets or sets a JSON string containing - * a list of tags that require user authentication to be used in the push - * registration endpoint. + * Gets or sets a JSON string containing a list of tags that require user authentication to be + * used in the push registration endpoint. * Tags can consist of alphanumeric characters and the following: * '_', '@', '#', '.', ':', '-'. * Validation should be performed at the PushRequestHandler. */ tagsRequiringAuth?: string; /** - * @member {string} [dynamicTagsJson] Gets or sets a JSON string containing a - * list of dynamic tags that will be evaluated from user claims in the push - * registration endpoint. + * Gets or sets a JSON string containing a list of dynamic tags that will be evaluated from user + * claims in the push registration endpoint. */ dynamicTagsJson?: string; } /** - * @interface - * An interface representing Identifier. * A domain specific resource identifier. - * - * @extends ProxyOnlyResource */ export interface Identifier extends ProxyOnlyResource { /** - * @member {string} [identifierId] String representation of the identity. + * String representation of the identity. */ identifierId?: string; } /** - * @interface - * An interface representing HybridConnectionKey. - * Hybrid Connection key contract. This has the send key name and value for a - * Hybrid Connection. - * - * @extends ProxyOnlyResource + * Hybrid Connection key contract. This has the send key name and value for a Hybrid Connection. */ export interface HybridConnectionKey extends ProxyOnlyResource { /** - * @member {string} [sendKeyName] The name of the send key. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The name of the send key. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly sendKeyName?: string; /** - * @member {string} [sendKeyValue] The value of the send key. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The value of the send key. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly sendKeyValue?: string; } /** - * @interface - * An interface representing HybridConnection. * Hybrid Connection contract. This is used to configure a Hybrid Connection. - * - * @extends ProxyOnlyResource */ export interface HybridConnection extends ProxyOnlyResource { /** - * @member {string} [serviceBusNamespace] The name of the Service Bus - * namespace. + * The name of the Service Bus namespace. */ serviceBusNamespace?: string; /** - * @member {string} [relayName] The name of the Service Bus relay. + * The name of the Service Bus relay. */ relayName?: string; /** - * @member {string} [relayArmUri] The ARM URI to the Service Bus relay. + * The ARM URI to the Service Bus relay. */ relayArmUri?: string; /** - * @member {string} [hostname] The hostname of the endpoint. + * The hostname of the endpoint. */ hostname?: string; /** - * @member {number} [port] The port of the endpoint. + * The port of the endpoint. */ port?: number; /** - * @member {string} [sendKeyName] The name of the Service Bus key which has - * Send permissions. This is used to authenticate to Service Bus. + * The name of the Service Bus key which has Send permissions. This is used to authenticate to + * Service Bus. */ sendKeyName?: string; /** - * @member {string} [sendKeyValue] The value of the Service Bus key. This is - * used to authenticate to Service Bus. In ARM this key will not be returned + * The value of the Service Bus key. This is used to authenticate to Service Bus. In ARM this key + * will not be returned * normally, use the POST /listKeys API instead. */ sendKeyValue?: string; /** - * @member {string} [serviceBusSuffix] The suffix for the service bus - * endpoint. By default this is .servicebus.windows.net + * The suffix for the service bus endpoint. By default this is .servicebus.windows.net */ serviceBusSuffix?: string; } /** - * @interface - * An interface representing DeletedSite. * A deleted app. - * - * @extends ProxyOnlyResource */ export interface DeletedSite extends ProxyOnlyResource { /** - * @member {number} [deletedSiteId] Numeric id for the deleted site - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Numeric id for the deleted site + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly deletedSiteId?: number; /** - * @member {string} [deletedTimestamp] Time in UTC when the app was deleted. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Time in UTC when the app was deleted. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly deletedTimestamp?: string; /** - * @member {string} [subscription] Subscription containing the deleted site - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Subscription containing the deleted site + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly subscription?: string; /** - * @member {string} [resourceGroup] ResourceGroup that contained the deleted - * site - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * ResourceGroup that contained the deleted site + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly resourceGroup?: string; /** - * @member {string} [deletedSiteName] Name of the deleted site - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Name of the deleted site + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly deletedSiteName?: string; /** - * @member {string} [slot] Slot of the deleted site - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Slot of the deleted site + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly slot?: string; /** - * @member {string} [deletedSiteKind] Kind of site that was deleted - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Kind of site that was deleted + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly deletedSiteKind?: string; /** - * @member {string} [geoRegionName] Geo Region of the deleted site - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Geo Region of the deleted site + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly geoRegionName?: string; } /** - * @interface - * An interface representing ManagedServiceIdentity. + * An interface representing ManagedServiceIdentityUserAssignedIdentitiesValue. + */ +export interface ManagedServiceIdentityUserAssignedIdentitiesValue { + /** + * Principal Id of user assigned identity + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly principalId?: string; + /** + * Client Id of user assigned identity + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly clientId?: string; +} + +/** * Managed service identity. - * */ export interface ManagedServiceIdentity { /** - * @member {ManagedServiceIdentityType} [type] Type of managed service - * identity. Possible values include: 'SystemAssigned', 'UserAssigned' + * Type of managed service identity. Possible values include: 'SystemAssigned', 'UserAssigned', + * 'SystemAssigned, UserAssigned', 'None' */ type?: ManagedServiceIdentityType; /** - * @member {string} [tenantId] Tenant of managed service identity. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Tenant of managed service identity. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly tenantId?: string; /** - * @member {string} [principalId] Principal Id of managed service identity. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Principal Id of managed service identity. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly principalId?: string; /** - * @member {string[]} [identityIds] Array of UserAssigned managed service - * identities. + * The list of user assigned identities associated with the resource. The user identity + * dictionary key references will be ARM resource ids in the form: + * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName} */ - identityIds?: string[]; + userAssignedIdentities?: { [propertyName: string]: ManagedServiceIdentityUserAssignedIdentitiesValue }; } /** - * @interface - * An interface representing SlotSwapStatus. - * The status of the last successfull slot swap operation. - * + * A global distribution definition. + */ +export interface GeoDistribution { + /** + * Location. + */ + location?: string; + /** + * NumberOfWorkers. + */ + numberOfWorkers?: number; +} + +/** + * The status of the last successful slot swap operation. */ export interface SlotSwapStatus { /** - * @member {Date} [timestampUtc] The time the last successful slot swap - * completed. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The time the last successful slot swap completed. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly timestampUtc?: Date; /** - * @member {string} [sourceSlotName] The source slot of the last swap - * operation. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The source slot of the last swap operation. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly sourceSlotName?: string; /** - * @member {string} [destinationSlotName] The destination slot of the last - * swap operation. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The destination slot of the last swap operation. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly destinationSlotName?: string; } /** - * @interface - * An interface representing CloningInfo. * Information needed for cloning operation. - * */ export interface CloningInfo { /** - * @member {string} [correlationId] Correlation ID of cloning operation. This - * ID ties multiple cloning operations + * Correlation ID of cloning operation. This ID ties multiple cloning operations * together to use the same snapshot. */ correlationId?: string; /** - * @member {boolean} [overwrite] true to overwrite destination - * app; otherwise, false. + * true to overwrite destination app; otherwise, false. */ overwrite?: boolean; /** - * @member {boolean} [cloneCustomHostNames] true to clone custom - * hostnames from source app; otherwise, false. + * true to clone custom hostnames from source app; otherwise, false. */ cloneCustomHostNames?: boolean; /** - * @member {boolean} [cloneSourceControl] true to clone source - * control from source app; otherwise, false. + * true to clone source control from source app; otherwise, false. */ cloneSourceControl?: boolean; /** - * @member {string} sourceWebAppId ARM resource ID of the source app. App - * resource ID is of the form + * ARM resource ID of the source app. App resource ID is of the form * /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} * for production slots and * /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} @@ -1106,4396 +899,3577 @@ export interface CloningInfo { */ sourceWebAppId: string; /** - * @member {string} [hostingEnvironment] App Service Environment. + * Location of source app ex: West US or North Europe + */ + sourceWebAppLocation?: string; + /** + * App Service Environment. */ hostingEnvironment?: string; /** - * @member {{ [propertyName: string]: string }} [appSettingsOverrides] - * Application setting overrides for cloned app. If specified, these settings - * override the settings cloned - * from source app. Otherwise, application settings from source app are - * retained. + * Application setting overrides for cloned app. If specified, these settings override the + * settings cloned + * from source app. Otherwise, application settings from source app are retained. */ appSettingsOverrides?: { [propertyName: string]: string }; /** - * @member {boolean} [configureLoadBalancing] true to configure - * load balancing for source and destination app. + * true to configure load balancing for source and destination app. */ configureLoadBalancing?: boolean; /** - * @member {string} [trafficManagerProfileId] ARM resource ID of the Traffic - * Manager profile to use, if it exists. Traffic Manager resource ID is of - * the form + * ARM resource ID of the Traffic Manager profile to use, if it exists. Traffic Manager resource + * ID is of the form * /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/trafficManagerProfiles/{profileName}. */ trafficManagerProfileId?: string; /** - * @member {string} [trafficManagerProfileName] Name of Traffic Manager - * profile to create. This is only needed if Traffic Manager profile does not - * already exist. + * Name of Traffic Manager profile to create. This is only needed if Traffic Manager profile does + * not already exist. */ trafficManagerProfileName?: string; } /** - * @interface - * An interface representing HostingEnvironmentProfile. * Specification for an App Service Environment to use for this resource. - * */ export interface HostingEnvironmentProfile { /** - * @member {string} [id] Resource ID of the App Service Environment. + * Resource ID of the App Service Environment. */ id?: string; /** - * @member {string} [name] Name of the App Service Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Name of the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly name?: string; /** - * @member {string} [type] Resource type of the App Service Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Resource type of the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly type?: string; } /** - * @interface - * An interface representing IpSecurityRestriction. * IP security restriction on an app. - * */ export interface IpSecurityRestriction { /** - * @member {string} ipAddress IP address the security restriction is valid - * for. + * IP address the security restriction is valid for. * It can be in form of pure ipv4 address (required SubnetMask property) or * CIDR notation such as ipv4/mask (leading bit match). For CIDR, * SubnetMask property must not be specified. */ - ipAddress: string; + ipAddress?: string; /** - * @member {string} [subnetMask] Subnet mask for the range of IP addresses - * the restriction is valid for. + * Subnet mask for the range of IP addresses the restriction is valid for. */ subnetMask?: string; /** - * @member {string} [action] Allow or Deny access for this IP range. + * Virtual network resource id + */ + vnetSubnetResourceId?: string; + /** + * (internal) Vnet traffic tag + */ + vnetTrafficTag?: number; + /** + * (internal) Subnet traffic tag + */ + subnetTrafficTag?: number; + /** + * Allow or Deny access for this IP range. */ action?: string; /** - * @member {IpFilterTag} [tag] Defines what this IP filter will be used for. - * This is to support IP filtering on proxies. Possible values include: - * 'Default', 'XffProxy' + * Defines what this IP filter will be used for. This is to support IP filtering on proxies. + * Possible values include: 'Default', 'XffProxy' */ tag?: IpFilterTag; /** - * @member {number} [priority] Priority of IP restriction rule. + * Priority of IP restriction rule. */ priority?: number; /** - * @member {string} [name] IP restriction rule name. + * IP restriction rule name. */ name?: string; /** - * @member {string} [description] IP restriction rule description. + * IP restriction rule description. */ description?: string; } /** - * @interface - * An interface representing ApiDefinitionInfo. * Information about the formal API definition for the app. - * */ export interface ApiDefinitionInfo { /** - * @member {string} [url] The URL of the API definition. + * The URL of the API definition. */ url?: string; } /** - * @interface - * An interface representing CorsSettings. * Cross-Origin Resource Sharing (CORS) settings for the app. - * */ export interface CorsSettings { /** - * @member {string[]} [allowedOrigins] Gets or sets the list of origins that - * should be allowed to make cross-origin + * Gets or sets the list of origins that should be allowed to make cross-origin * calls (for example: http://example.com:12345). Use "*" to allow all. */ allowedOrigins?: string[]; + /** + * Gets or sets whether CORS requests with credentials are allowed. See + * https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Requests_with_credentials + * for more details. + */ + supportCredentials?: boolean; } /** - * @interface - * An interface representing AutoHealCustomAction. * Custom action to be executed * when an auto heal rule is triggered. - * */ export interface AutoHealCustomAction { /** - * @member {string} [exe] Executable to be run. + * Executable to be run. */ exe?: string; /** - * @member {string} [parameters] Parameters for the executable. + * Parameters for the executable. */ parameters?: string; } /** - * @interface - * An interface representing AutoHealActions. * Actions which to take by the auto-heal module when a rule is triggered. - * */ export interface AutoHealActions { /** - * @member {AutoHealActionType} [actionType] Predefined action to be taken. - * Possible values include: 'Recycle', 'LogEvent', 'CustomAction' + * Predefined action to be taken. Possible values include: 'Recycle', 'LogEvent', 'CustomAction' */ actionType?: AutoHealActionType; /** - * @member {AutoHealCustomAction} [customAction] Custom action to be taken. + * Custom action to be taken. */ customAction?: AutoHealCustomAction; /** - * @member {string} [minProcessExecutionTime] Minimum time the process must - * execute + * Minimum time the process must execute * before taking the action */ minProcessExecutionTime?: string; } /** - * @interface - * An interface representing SlowRequestsBasedTrigger. * Trigger based on request execution time. - * */ export interface SlowRequestsBasedTrigger { /** - * @member {string} [timeTaken] Time taken. + * Time taken. */ timeTaken?: string; /** - * @member {number} [count] Request Count. + * Request Count. */ count?: number; /** - * @member {string} [timeInterval] Time interval. + * Time interval. */ timeInterval?: string; } /** - * @interface - * An interface representing StatusCodesBasedTrigger. * Trigger based on status code. - * */ export interface StatusCodesBasedTrigger { /** - * @member {number} [status] HTTP status code. + * HTTP status code. */ status?: number; /** - * @member {number} [subStatus] Request Sub Status. + * Request Sub Status. */ subStatus?: number; /** - * @member {number} [win32Status] Win32 error code. + * Win32 error code. */ win32Status?: number; /** - * @member {number} [count] Request Count. + * Request Count. */ count?: number; /** - * @member {string} [timeInterval] Time interval. + * Time interval. */ timeInterval?: string; } /** - * @interface - * An interface representing RequestsBasedTrigger. * Trigger based on total requests. - * */ export interface RequestsBasedTrigger { /** - * @member {number} [count] Request Count. + * Request Count. */ count?: number; /** - * @member {string} [timeInterval] Time interval. + * Time interval. */ timeInterval?: string; } /** - * @interface - * An interface representing AutoHealTriggers. * Triggers for auto-heal. - * */ export interface AutoHealTriggers { /** - * @member {RequestsBasedTrigger} [requests] A rule based on total requests. + * A rule based on total requests. */ requests?: RequestsBasedTrigger; /** - * @member {number} [privateBytesInKB] A rule based on private bytes. + * A rule based on private bytes. */ privateBytesInKB?: number; /** - * @member {StatusCodesBasedTrigger[]} [statusCodes] A rule based on status - * codes. + * A rule based on status codes. */ statusCodes?: StatusCodesBasedTrigger[]; /** - * @member {SlowRequestsBasedTrigger} [slowRequests] A rule based on request - * execution time. + * A rule based on request execution time. */ slowRequests?: SlowRequestsBasedTrigger; } /** - * @interface - * An interface representing AutoHealRules. * Rules that can be defined for auto-heal. - * */ export interface AutoHealRules { /** - * @member {AutoHealTriggers} [triggers] Conditions that describe when to - * execute the auto-heal actions. + * Conditions that describe when to execute the auto-heal actions. */ triggers?: AutoHealTriggers; /** - * @member {AutoHealActions} [actions] Actions to be executed when a rule is - * triggered. + * Actions to be executed when a rule is triggered. */ actions?: AutoHealActions; } /** - * @interface - * An interface representing SiteLimits. * Metric limits set on an app. - * */ export interface SiteLimits { /** - * @member {number} [maxPercentageCpu] Maximum allowed CPU usage percentage. + * Maximum allowed CPU usage percentage. */ maxPercentageCpu?: number; /** - * @member {number} [maxMemoryInMb] Maximum allowed memory usage in MB. + * Maximum allowed memory usage in MB. */ maxMemoryInMb?: number; /** - * @member {number} [maxDiskSizeInMb] Maximum allowed disk size usage in MB. + * Maximum allowed disk size usage in MB. */ maxDiskSizeInMb?: number; } /** - * @interface - * An interface representing RampUpRule. - * Routing rules for ramp up testing. This rule allows to redirect static - * traffic % to a slot or to gradually change routing % based on performance. - * + * Routing rules for ramp up testing. This rule allows to redirect static traffic % to a slot or to + * gradually change routing % based on performance. */ export interface RampUpRule { /** - * @member {string} [actionHostName] Hostname of a slot to which the traffic - * will be redirected if decided to. E.g. myapp-stage.azurewebsites.net. + * Hostname of a slot to which the traffic will be redirected if decided to. E.g. + * myapp-stage.azurewebsites.net. */ actionHostName?: string; /** - * @member {number} [reroutePercentage] Percentage of the traffic which will - * be redirected to ActionHostName. + * Percentage of the traffic which will be redirected to ActionHostName. */ reroutePercentage?: number; /** - * @member {number} [changeStep] In auto ramp up scenario this is the step to - * to add/remove from ReroutePercentage until it reaches - * MinReroutePercentage or MaxReroutePercentage. - * Site metrics are checked every N minutes specificed in - * ChangeIntervalInMinutes. - * Custom decision algorithm can be provided in TiPCallback site extension - * which URL can be specified in ChangeDecisionCallbackUrl. + * In auto ramp up scenario this is the step to add/remove from ReroutePercentage + * until it reaches + * MinReroutePercentage or MaxReroutePercentage. Site metrics are + * checked every N minutes specified in ChangeIntervalInMinutes. + * Custom decision algorithm can be provided in TiPCallback site extension which URL can be + * specified in ChangeDecisionCallbackUrl. */ changeStep?: number; /** - * @member {number} [changeIntervalInMinutes] Specifies interval in mimuntes - * to reevaluate ReroutePercentage. + * Specifies interval in minutes to reevaluate ReroutePercentage. */ changeIntervalInMinutes?: number; /** - * @member {number} [minReroutePercentage] Specifies lower boundary above - * which ReroutePercentage will stay. + * Specifies lower boundary above which ReroutePercentage will stay. */ minReroutePercentage?: number; /** - * @member {number} [maxReroutePercentage] Specifies upper boundary below - * which ReroutePercentage will stay. + * Specifies upper boundary below which ReroutePercentage will stay. */ maxReroutePercentage?: number; /** - * @member {string} [changeDecisionCallbackUrl] Custom decision algorithm can - * be provided in TiPCallback site extension which URL can be specified. See - * TiPCallback site extension for the scaffold and contracts. + * Custom decision algorithm can be provided in TiPCallback site extension which URL can be + * specified. See TiPCallback site extension for the scaffold and contracts. * https://www.siteextensions.net/packages/TiPCallback/ */ changeDecisionCallbackUrl?: string; /** - * @member {string} [name] Name of the routing rule. The recommended name - * would be to point to the slot which will receive the traffic in the - * experiment. + * Name of the routing rule. The recommended name would be to point to the slot which will + * receive the traffic in the experiment. */ name?: string; } /** - * @interface - * An interface representing Experiments. * Routing rules in production experiments. - * */ export interface Experiments { /** - * @member {RampUpRule[]} [rampUpRules] List of ramp-up rules. + * List of ramp-up rules. */ rampUpRules?: RampUpRule[]; } /** - * @interface - * An interface representing VirtualDirectory. * Directory for virtual application. - * */ export interface VirtualDirectory { /** - * @member {string} [virtualPath] Path to virtual application. + * Path to virtual application. */ virtualPath?: string; /** - * @member {string} [physicalPath] Physical path. + * Physical path. */ physicalPath?: string; } /** - * @interface - * An interface representing VirtualApplication. * Virtual application in an app. - * */ export interface VirtualApplication { /** - * @member {string} [virtualPath] Virtual path. + * Virtual path. */ virtualPath?: string; /** - * @member {string} [physicalPath] Physical path. + * Physical path. */ physicalPath?: string; /** - * @member {boolean} [preloadEnabled] true if preloading is - * enabled; otherwise, false. + * true if preloading is enabled; otherwise, false. */ preloadEnabled?: boolean; /** - * @member {VirtualDirectory[]} [virtualDirectories] Virtual directories for - * virtual application. + * Virtual directories for virtual application. */ virtualDirectories?: VirtualDirectory[]; } /** - * @interface - * An interface representing HandlerMapping. - * The IIS handler mappings used to define which handler processes HTTP - * requests with certain extension. - * For example, it is used to configure php-cgi.exe process to handle all HTTP - * requests with *.php extension. - * + * The IIS handler mappings used to define which handler processes HTTP requests with certain + * extension. + * For example, it is used to configure php-cgi.exe process to handle all HTTP requests with *.php + * extension. */ export interface HandlerMapping { /** - * @member {string} [extension] Requests with this extension will be handled - * using the specified FastCGI application. + * Requests with this extension will be handled using the specified FastCGI application. */ extension?: string; /** - * @member {string} [scriptProcessor] The absolute path to the FastCGI - * application. + * The absolute path to the FastCGI application. */ scriptProcessor?: string; /** - * @member {string} [argumentsProperty] Command-line arguments to be passed - * to the script processor. + * Command-line arguments to be passed to the script processor. */ argumentsProperty?: string; } /** - * @interface - * An interface representing SiteMachineKey. * MachineKey of an app. - * */ export interface SiteMachineKey { /** - * @member {string} [validation] MachineKey validation. + * MachineKey validation. */ validation?: string; /** - * @member {string} [validationKey] Validation key. + * Validation key. */ validationKey?: string; /** - * @member {string} [decryption] Algorithm used for decryption. + * Algorithm used for decryption. */ decryption?: string; /** - * @member {string} [decryptionKey] Decryption key. + * Decryption key. */ decryptionKey?: string; } /** - * @interface - * An interface representing ConnStringInfo. * Database connection string information. - * */ export interface ConnStringInfo { /** - * @member {string} [name] Name of connection string. + * Name of connection string. */ name?: string; /** - * @member {string} [connectionString] Connection string value. + * Connection string value. */ connectionString?: string; /** - * @member {ConnectionStringType} [type] Type of database. Possible values - * include: 'MySql', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', - * 'ServiceBus', 'EventHub', 'ApiHub', 'DocDb', 'RedisCache', 'PostgreSQL' + * Type of database. Possible values include: 'MySql', 'SQLServer', 'SQLAzure', 'Custom', + * 'NotificationHub', 'ServiceBus', 'EventHub', 'ApiHub', 'DocDb', 'RedisCache', 'PostgreSQL' */ type?: ConnectionStringType; } /** - * @interface - * An interface representing AzureStorageInfoValue. * Azure Files or Blob Storage access information value for dictionary storage. - * */ export interface AzureStorageInfoValue { /** - * @member {AzureStorageType} [type] Type of storage. Possible values - * include: 'AzureFiles', 'AzureBlob' + * Type of storage. Possible values include: 'AzureFiles', 'AzureBlob' */ type?: AzureStorageType; /** - * @member {string} [accountName] Name of the storage account. + * Name of the storage account. */ accountName?: string; /** - * @member {string} [shareName] Name of the file share (container name, for - * Blob storage). + * Name of the file share (container name, for Blob storage). */ shareName?: string; /** - * @member {string} [accessKey] Access key for the storage account. + * Access key for the storage account. */ accessKey?: string; /** - * @member {string} [mountPath] Path to mount the storage within the site's - * runtime environment. + * Path to mount the storage within the site's runtime environment. */ mountPath?: string; /** - * @member {AzureStorageState} [state] State of the storage account. Possible - * values include: 'Ok', 'InvalidCredentials', 'InvalidShare' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * State of the storage account. Possible values include: 'Ok', 'InvalidCredentials', + * 'InvalidShare' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly state?: AzureStorageState; } /** - * @interface - * An interface representing NameValuePair. * Name value pair. - * */ export interface NameValuePair { /** - * @member {string} [name] Pair name. + * Pair name. */ name?: string; /** - * @member {string} [value] Pair value. + * Pair value. */ value?: string; } /** - * @interface - * An interface representing SiteConfig. * Configuration of an App Service app. - * */ export interface SiteConfig { /** - * @member {number} [numberOfWorkers] Number of workers. + * Number of workers. */ numberOfWorkers?: number; /** - * @member {string[]} [defaultDocuments] Default documents. + * Default documents. */ defaultDocuments?: string[]; /** - * @member {string} [netFrameworkVersion] .NET Framework version. Default - * value: 'v4.6' . + * .NET Framework version. Default value: 'v4.6'. */ netFrameworkVersion?: string; /** - * @member {string} [phpVersion] Version of PHP. + * Version of PHP. */ phpVersion?: string; /** - * @member {string} [pythonVersion] Version of Python. + * Version of Python. */ pythonVersion?: string; /** - * @member {string} [nodeVersion] Version of Node.js. + * Version of Node.js. */ nodeVersion?: string; /** - * @member {string} [linuxFxVersion] Linux App Framework and version + * Linux App Framework and version */ linuxFxVersion?: string; /** - * @member {string} [windowsFxVersion] Xenon App Framework and version + * Xenon App Framework and version */ windowsFxVersion?: string; /** - * @member {boolean} [requestTracingEnabled] true if request - * tracing is enabled; otherwise, false. + * true if request tracing is enabled; otherwise, false. */ requestTracingEnabled?: boolean; /** - * @member {Date} [requestTracingExpirationTime] Request tracing expiration - * time. + * Request tracing expiration time. */ requestTracingExpirationTime?: Date; /** - * @member {boolean} [remoteDebuggingEnabled] true if remote - * debugging is enabled; otherwise, false. + * true if remote debugging is enabled; otherwise, false. */ remoteDebuggingEnabled?: boolean; /** - * @member {string} [remoteDebuggingVersion] Remote debugging version. + * Remote debugging version. */ remoteDebuggingVersion?: string; /** - * @member {boolean} [httpLoggingEnabled] true if HTTP logging - * is enabled; otherwise, false. + * true if HTTP logging is enabled; otherwise, false. */ httpLoggingEnabled?: boolean; /** - * @member {number} [logsDirectorySizeLimit] HTTP logs directory size limit. + * HTTP logs directory size limit. */ logsDirectorySizeLimit?: number; /** - * @member {boolean} [detailedErrorLoggingEnabled] true if - * detailed error logging is enabled; otherwise, false. + * true if detailed error logging is enabled; otherwise, false. */ detailedErrorLoggingEnabled?: boolean; /** - * @member {string} [publishingUsername] Publishing user name. + * Publishing user name. */ publishingUsername?: string; /** - * @member {NameValuePair[]} [appSettings] Application settings. + * Application settings. */ appSettings?: NameValuePair[]; /** - * @member {{ [propertyName: string]: AzureStorageInfoValue }} - * [azureStorageAccounts] User-provided Azure storage accounts. + * User-provided Azure storage accounts. */ azureStorageAccounts?: { [propertyName: string]: AzureStorageInfoValue }; /** - * @member {ConnStringInfo[]} [connectionStrings] Connection strings. + * Connection strings. */ connectionStrings?: ConnStringInfo[]; /** - * @member {SiteMachineKey} [machineKey] Site MachineKey. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Site MachineKey. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly machineKey?: SiteMachineKey; /** - * @member {HandlerMapping[]} [handlerMappings] Handler mappings. + * Handler mappings. */ handlerMappings?: HandlerMapping[]; /** - * @member {string} [documentRoot] Document root. + * Document root. */ documentRoot?: string; /** - * @member {ScmType} [scmType] SCM type. Possible values include: 'None', - * 'Dropbox', 'Tfs', 'LocalGit', 'GitHub', 'CodePlexGit', 'CodePlexHg', - * 'BitbucketGit', 'BitbucketHg', 'ExternalGit', 'ExternalHg', 'OneDrive', - * 'VSO' + * SCM type. Possible values include: 'None', 'Dropbox', 'Tfs', 'LocalGit', 'GitHub', + * 'CodePlexGit', 'CodePlexHg', 'BitbucketGit', 'BitbucketHg', 'ExternalGit', 'ExternalHg', + * 'OneDrive', 'VSO' */ scmType?: ScmType; /** - * @member {boolean} [use32BitWorkerProcess] true to use 32-bit - * worker process; otherwise, false. + * true to use 32-bit worker process; otherwise, false. */ use32BitWorkerProcess?: boolean; /** - * @member {boolean} [webSocketsEnabled] true if WebSocket is - * enabled; otherwise, false. + * true if WebSocket is enabled; otherwise, false. */ webSocketsEnabled?: boolean; /** - * @member {boolean} [alwaysOn] true if Always On is enabled; - * otherwise, false. + * true if Always On is enabled; otherwise, false. */ alwaysOn?: boolean; /** - * @member {string} [javaVersion] Java version. + * Java version. */ javaVersion?: string; /** - * @member {string} [javaContainer] Java container. + * Java container. */ javaContainer?: string; /** - * @member {string} [javaContainerVersion] Java container version. + * Java container version. */ javaContainerVersion?: string; /** - * @member {string} [appCommandLine] App command line to launch. + * App command line to launch. */ appCommandLine?: string; /** - * @member {ManagedPipelineMode} [managedPipelineMode] Managed pipeline mode. - * Possible values include: 'Integrated', 'Classic' + * Managed pipeline mode. Possible values include: 'Integrated', 'Classic' */ managedPipelineMode?: ManagedPipelineMode; /** - * @member {VirtualApplication[]} [virtualApplications] Virtual applications. + * Virtual applications. */ virtualApplications?: VirtualApplication[]; /** - * @member {SiteLoadBalancing} [loadBalancing] Site load balancing. Possible - * values include: 'WeightedRoundRobin', 'LeastRequests', + * Site load balancing. Possible values include: 'WeightedRoundRobin', 'LeastRequests', * 'LeastResponseTime', 'WeightedTotalTraffic', 'RequestHash' */ loadBalancing?: SiteLoadBalancing; /** - * @member {Experiments} [experiments] This is work around for polymophic - * types. + * This is work around for polymorphic types. */ experiments?: Experiments; /** - * @member {SiteLimits} [limits] Site limits. + * Site limits. */ limits?: SiteLimits; /** - * @member {boolean} [autoHealEnabled] true if Auto Heal is - * enabled; otherwise, false. + * true if Auto Heal is enabled; otherwise, false. */ autoHealEnabled?: boolean; /** - * @member {AutoHealRules} [autoHealRules] Auto Heal rules. + * Auto Heal rules. */ autoHealRules?: AutoHealRules; /** - * @member {string} [tracingOptions] Tracing options. + * Tracing options. */ tracingOptions?: string; /** - * @member {string} [vnetName] Virtual Network name. + * Virtual Network name. */ vnetName?: string; /** - * @member {CorsSettings} [cors] Cross-Origin Resource Sharing (CORS) - * settings. + * Cross-Origin Resource Sharing (CORS) settings. */ cors?: CorsSettings; /** - * @member {PushSettings} [push] Push endpoint settings. + * Push endpoint settings. */ push?: PushSettings; /** - * @member {ApiDefinitionInfo} [apiDefinition] Information about the formal - * API definition for the app. + * Information about the formal API definition for the app. */ apiDefinition?: ApiDefinitionInfo; /** - * @member {string} [autoSwapSlotName] Auto-swap slot name. + * Auto-swap slot name. */ autoSwapSlotName?: string; /** - * @member {boolean} [localMySqlEnabled] true to enable local - * MySQL; otherwise, false. Default value: false . + * true to enable local MySQL; otherwise, false. Default value: false. */ localMySqlEnabled?: boolean; /** - * @member {number} [managedServiceIdentityId] Managed Service Identity Id + * Managed Service Identity Id */ managedServiceIdentityId?: number; /** - * @member {number} [xManagedServiceIdentityId] Explicit Managed Service - * Identity Id + * Explicit Managed Service Identity Id */ xManagedServiceIdentityId?: number; /** - * @member {IpSecurityRestriction[]} [ipSecurityRestrictions] IP security - * restrictions. + * IP security restrictions for main. */ ipSecurityRestrictions?: IpSecurityRestriction[]; /** - * @member {boolean} [http20Enabled] Http20Enabled: configures a web site to - * allow clients to connect over http2.0. Default value: true . + * IP security restrictions for scm. + */ + scmIpSecurityRestrictions?: IpSecurityRestriction[]; + /** + * IP security restrictions for scm to use main. + */ + scmIpSecurityRestrictionsUseMain?: boolean; + /** + * Http20Enabled: configures a web site to allow clients to connect over http2.0. Default value: + * true. */ http20Enabled?: boolean; /** - * @member {SupportedTlsVersions} [minTlsVersion] MinTlsVersion: configures - * the minimum version of TLS required for SSL requests. Possible values - * include: '1.0', '1.1', '1.2' + * MinTlsVersion: configures the minimum version of TLS required for SSL requests. Possible + * values include: '1.0', '1.1', '1.2' */ minTlsVersion?: SupportedTlsVersions; /** - * @member {FtpsState} [ftpsState] State of FTP / FTPS service. Possible - * values include: 'AllAllowed', 'FtpsOnly', 'Disabled' + * State of FTP / FTPS service. Possible values include: 'AllAllowed', 'FtpsOnly', 'Disabled' */ ftpsState?: FtpsState; /** - * @member {number} [reservedInstanceCount] Number of reserved instances. + * Number of reserved instances. * This setting only applies to the Consumption Plan */ reservedInstanceCount?: number; } /** - * @interface - * An interface representing HostNameSslState. * SSL-enabled hostname. - * */ export interface HostNameSslState { /** - * @member {string} [name] Hostname. + * Hostname. */ name?: string; /** - * @member {SslState} [sslState] SSL type. Possible values include: - * 'Disabled', 'SniEnabled', 'IpBasedEnabled' + * SSL type. Possible values include: 'Disabled', 'SniEnabled', 'IpBasedEnabled' */ sslState?: SslState; /** - * @member {string} [virtualIP] Virtual IP address assigned to the hostname - * if IP based SSL is enabled. + * Virtual IP address assigned to the hostname if IP based SSL is enabled. */ virtualIP?: string; /** - * @member {string} [thumbprint] SSL certificate thumbprint. + * SSL certificate thumbprint. */ thumbprint?: string; /** - * @member {boolean} [toUpdate] Set to true to update existing - * hostname. + * Set to true to update existing hostname. */ toUpdate?: boolean; /** - * @member {HostType} [hostType] Indicates whether the hostname is a standard - * or repository hostname. Possible values include: 'Standard', 'Repository' + * Indicates whether the hostname is a standard or repository hostname. Possible values include: + * 'Standard', 'Repository' */ hostType?: HostType; } /** - * @interface - * An interface representing Site. * A web app, a mobile app backend, or an API app. - * - * @extends Resource */ export interface Site extends Resource { /** - * @member {string} [state] Current state of the app. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Current state of the app. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly state?: string; /** - * @member {string[]} [hostNames] Hostnames associated with the app. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Hostnames associated with the app. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly hostNames?: string[]; /** - * @member {string} [repositorySiteName] Name of the repository site. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Name of the repository site. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly repositorySiteName?: string; /** - * @member {UsageState} [usageState] State indicating whether the app has - * exceeded its quota usage. Read-only. Possible values include: 'Normal', - * 'Exceeded' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * State indicating whether the app has exceeded its quota usage. Read-only. Possible values + * include: 'Normal', 'Exceeded' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly usageState?: UsageState; /** - * @member {boolean} [enabled] true if the app is enabled; - * otherwise, false. Setting this value to false disables the - * app (takes the app offline). + * true if the app is enabled; otherwise, false. Setting this value to + * false disables the app (takes the app offline). */ enabled?: boolean; /** - * @member {string[]} [enabledHostNames] Enabled hostnames for the - * app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise, + * Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. + * Otherwise, * the app is not served on those hostnames. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly enabledHostNames?: string[]; /** - * @member {SiteAvailabilityState} [availabilityState] Management information - * availability state for the app. Possible values include: 'Normal', + * Management information availability state for the app. Possible values include: 'Normal', * 'Limited', 'DisasterRecoveryMode' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly availabilityState?: SiteAvailabilityState; /** - * @member {HostNameSslState[]} [hostNameSslStates] Hostname SSL states are - * used to manage the SSL bindings for app's hostnames. + * Hostname SSL states are used to manage the SSL bindings for app's hostnames. */ hostNameSslStates?: HostNameSslState[]; /** - * @member {string} [serverFarmId] Resource ID of the associated App Service - * plan, formatted as: + * Resource ID of the associated App Service plan, formatted as: * "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}". */ serverFarmId?: string; /** - * @member {boolean} [reserved] true if reserved; otherwise, - * false. Default value: false . + * true if reserved; otherwise, false. Default value: false. */ reserved?: boolean; /** - * @member {boolean} [isXenon] Obsolete: Hyper-V sandbox. Default value: - * false . + * Obsolete: Hyper-V sandbox. Default value: false. */ isXenon?: boolean; /** - * @member {boolean} [hyperV] Hyper-V sandbox. Default value: false . + * Hyper-V sandbox. Default value: false. */ hyperV?: boolean; /** - * @member {Date} [lastModifiedTimeUtc] Last time the app was modified, in - * UTC. Read-only. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Last time the app was modified, in UTC. Read-only. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly lastModifiedTimeUtc?: Date; /** - * @member {SiteConfig} [siteConfig] Configuration of the app. + * Configuration of the app. */ siteConfig?: SiteConfig; /** - * @member {string[]} [trafficManagerHostNames] Azure Traffic Manager - * hostnames associated with the app. Read-only. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Azure Traffic Manager hostnames associated with the app. Read-only. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly trafficManagerHostNames?: string[]; /** - * @member {boolean} [scmSiteAlsoStopped] true to stop SCM - * (KUDU) site when the app is stopped; otherwise, false. The - * default is false. Default value: false . + * true to stop SCM (KUDU) site when the app is stopped; otherwise, + * false. The default is false. Default value: false. */ scmSiteAlsoStopped?: boolean; /** - * @member {string} [targetSwapSlot] Specifies which deployment slot this app - * will swap into. Read-only. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Specifies which deployment slot this app will swap into. Read-only. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly targetSwapSlot?: string; /** - * @member {HostingEnvironmentProfile} [hostingEnvironmentProfile] App - * Service Environment to use for the app. + * App Service Environment to use for the app. */ hostingEnvironmentProfile?: HostingEnvironmentProfile; /** - * @member {boolean} [clientAffinityEnabled] true to enable - * client affinity; false to stop sending session affinity - * cookies, which route client requests in the same session to the same - * instance. Default is true. + * true to enable client affinity; false to stop sending session + * affinity cookies, which route client requests in the same session to the same instance. + * Default is true. */ clientAffinityEnabled?: boolean; /** - * @member {boolean} [clientCertEnabled] true to enable client - * certificate authentication (TLS mutual authentication); otherwise, - * false. Default is false. + * true to enable client certificate authentication (TLS mutual authentication); + * otherwise, false. Default is false. */ clientCertEnabled?: boolean; /** - * @member {boolean} [hostNamesDisabled] true to disable the - * public hostnames of the app; otherwise, false. - * If true, the app is only accessible via API management - * process. + * client certificate authentication comma-separated exclusion paths + */ + clientCertExclusionPaths?: string; + /** + * true to disable the public hostnames of the app; otherwise, false. + * If true, the app is only accessible via API management process. */ hostNamesDisabled?: boolean; /** - * @member {string} [outboundIpAddresses] List of IP addresses that the app - * uses for outbound connections (e.g. database access). Includes VIPs from - * tenants that site can be hosted with current settings. Read-only. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * List of IP addresses that the app uses for outbound connections (e.g. database access). + * Includes VIPs from tenants that site can be hosted with current settings. Read-only. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly outboundIpAddresses?: string; /** - * @member {string} [possibleOutboundIpAddresses] List of IP addresses that - * the app uses for outbound connections (e.g. database access). Includes - * VIPs from all tenants. Read-only. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * List of IP addresses that the app uses for outbound connections (e.g. database access). + * Includes VIPs from all tenants. Read-only. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly possibleOutboundIpAddresses?: string; /** - * @member {number} [containerSize] Size of the function container. + * Size of the function container. */ containerSize?: number; /** - * @member {number} [dailyMemoryTimeQuota] Maximum allowed daily memory-time - * quota (applicable on dynamic apps only). + * Maximum allowed daily memory-time quota (applicable on dynamic apps only). */ dailyMemoryTimeQuota?: number; /** - * @member {Date} [suspendedTill] App suspended till in case memory-time - * quota is exceeded. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * App suspended till in case memory-time quota is exceeded. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly suspendedTill?: Date; /** - * @member {number} [maxNumberOfWorkers] Maximum number of workers. + * Maximum number of workers. * This only applies to Functions container. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly maxNumberOfWorkers?: number; /** - * @member {CloningInfo} [cloningInfo] If specified during app creation, the - * app is cloned from a source app. + * If specified during app creation, the app is cloned from a source app. */ cloningInfo?: CloningInfo; /** - * @member {string} [resourceGroup] Name of the resource group the app - * belongs to. Read-only. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Name of the resource group the app belongs to. Read-only. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly resourceGroup?: string; /** - * @member {boolean} [isDefaultContainer] true if the app is a - * default container; otherwise, false. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * true if the app is a default container; otherwise, false. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly isDefaultContainer?: boolean; /** - * @member {string} [defaultHostName] Default hostname of the app. Read-only. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Default hostname of the app. Read-only. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly defaultHostName?: string; /** - * @member {SlotSwapStatus} [slotSwapStatus] Status of the last deployment - * slot swap operation. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Status of the last deployment slot swap operation. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly slotSwapStatus?: SlotSwapStatus; /** - * @member {boolean} [httpsOnly] HttpsOnly: configures a web site to accept - * only https requests. Issues redirect for + * HttpsOnly: configures a web site to accept only https requests. Issues redirect for * http requests */ httpsOnly?: boolean; /** - * @member {ManagedServiceIdentity} [identity] + * Site redundancy mode. Possible values include: 'None', 'Manual', 'Failover', 'ActiveActive', + * 'GeoRedundant' + */ + redundancyMode?: RedundancyMode; + /** + * Specifies an operation id if this site has a pending operation. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly inProgressOperationId?: string; + /** + * GeoDistributions for this site */ + geoDistributions?: GeoDistribution[]; identity?: ManagedServiceIdentity; } /** - * @interface - * An interface representing Capability. * Describes the capabilities/features allowed for a specific SKU. - * */ export interface Capability { /** - * @member {string} [name] Name of the SKU capability. + * Name of the SKU capability. */ name?: string; /** - * @member {string} [value] Value of the SKU capability. + * Value of the SKU capability. */ value?: string; /** - * @member {string} [reason] Reason of the SKU capability. + * Reason of the SKU capability. */ reason?: string; } /** - * @interface - * An interface representing SkuCapacity. * Description of the App Service plan scale options. - * */ export interface SkuCapacity { /** - * @member {number} [minimum] Minimum number of workers for this App Service - * plan SKU. + * Minimum number of workers for this App Service plan SKU. */ minimum?: number; /** - * @member {number} [maximum] Maximum number of workers for this App Service - * plan SKU. + * Maximum number of workers for this App Service plan SKU. */ maximum?: number; /** - * @member {number} [default] Default number of workers for this App Service - * plan SKU. + * Default number of workers for this App Service plan SKU. */ default?: number; /** - * @member {string} [scaleType] Available scale configurations for an App - * Service plan. + * Available scale configurations for an App Service plan. */ scaleType?: string; } /** - * @interface - * An interface representing SkuDescription. * Description of a SKU for a scalable resource. - * */ export interface SkuDescription { /** - * @member {string} [name] Name of the resource SKU. + * Name of the resource SKU. */ name?: string; /** - * @member {string} [tier] Service tier of the resource SKU. + * Service tier of the resource SKU. */ tier?: string; /** - * @member {string} [size] Size specifier of the resource SKU. + * Size specifier of the resource SKU. */ size?: string; /** - * @member {string} [family] Family code of the resource SKU. + * Family code of the resource SKU. */ family?: string; /** - * @member {number} [capacity] Current number of instances assigned to the - * resource. + * Current number of instances assigned to the resource. */ capacity?: number; /** - * @member {SkuCapacity} [skuCapacity] Min, max, and default scale values of - * the SKU. + * Min, max, and default scale values of the SKU. */ skuCapacity?: SkuCapacity; /** - * @member {string[]} [locations] Locations of the SKU. + * Locations of the SKU. */ locations?: string[]; /** - * @member {Capability[]} [capabilities] Capabilities of the SKU, e.g., is - * traffic manager enabled? + * Capabilities of the SKU, e.g., is traffic manager enabled? */ capabilities?: Capability[]; } /** - * @interface - * An interface representing AppServicePlan. * App Service plan. - * - * @extends Resource */ export interface AppServicePlan extends Resource { /** - * @member {string} [workerTierName] Target worker tier assigned to the App - * Service plan. + * Target worker tier assigned to the App Service plan. */ workerTierName?: string; /** - * @member {StatusOptions} [status] App Service plan status. Possible values - * include: 'Ready', 'Pending', 'Creating' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * App Service plan status. Possible values include: 'Ready', 'Pending', 'Creating' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly status?: StatusOptions; /** - * @member {string} [subscription] App Service plan subscription. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * App Service plan subscription. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly subscription?: string; /** - * @member {string} [adminSiteName] App Service plan administration site. - */ - adminSiteName?: string; - /** - * @member {HostingEnvironmentProfile} [hostingEnvironmentProfile] - * Specification for the App Service Environment to use for the App Service - * plan. + * Specification for the App Service Environment to use for the App Service plan. */ hostingEnvironmentProfile?: HostingEnvironmentProfile; /** - * @member {number} [maximumNumberOfWorkers] Maximum number of instances that - * can be assigned to this App Service plan. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Maximum number of instances that can be assigned to this App Service plan. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly maximumNumberOfWorkers?: number; /** - * @member {string} [geoRegion] Geographical location for the App Service - * plan. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Geographical location for the App Service plan. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly geoRegion?: string; /** - * @member {boolean} [perSiteScaling] If true, apps assigned to - * this App Service plan can be scaled independently. - * If false, apps assigned to this App Service plan will scale - * to all instances of the plan. Default value: false . + * If true, apps assigned to this App Service plan can be scaled independently. + * If false, apps assigned to this App Service plan will scale to all instances of + * the plan. Default value: false. */ perSiteScaling?: boolean; /** - * @member {number} [maximumElasticWorkerCount] Maximum number of total - * workers allowed for this ElasticScaleEnabled App Service Plan + * Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan */ maximumElasticWorkerCount?: number; /** - * @member {number} [numberOfSites] Number of apps assigned to this App - * Service plan. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Number of apps assigned to this App Service plan. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly numberOfSites?: number; /** - * @member {boolean} [isSpot] If true, this App Service Plan - * owns spot instances. + * If true, this App Service Plan owns spot instances. */ isSpot?: boolean; /** - * @member {Date} [spotExpirationTime] The time when the server farm expires. - * Valid only if it is a spot server farm. + * The time when the server farm expires. Valid only if it is a spot server farm. */ spotExpirationTime?: Date; /** - * @member {Date} [freeOfferExpirationTime] The time when the server farm - * free offer expires. + * The time when the server farm free offer expires. */ freeOfferExpirationTime?: Date; /** - * @member {string} [resourceGroup] Resource group of the App Service plan. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Resource group of the App Service plan. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly resourceGroup?: string; /** - * @member {boolean} [reserved] If Linux app service plan true, - * false otherwise. Default value: false . + * If Linux app service plan true, false otherwise. Default value: + * false. */ reserved?: boolean; /** - * @member {boolean} [isXenon] Obsolete: If Hyper-V container app service - * plan true, false otherwise. Default value: false - * . + * Obsolete: If Hyper-V container app service plan true, false + * otherwise. Default value: false. */ isXenon?: boolean; /** - * @member {boolean} [hyperV] If Hyper-V container app service plan - * true, false otherwise. Default value: false . + * If Hyper-V container app service plan true, false otherwise. Default + * value: false. */ hyperV?: boolean; /** - * @member {number} [targetWorkerCount] Scaling worker count. + * Scaling worker count. */ targetWorkerCount?: number; /** - * @member {number} [targetWorkerSizeId] Scaling worker size ID. + * Scaling worker size ID. */ targetWorkerSizeId?: number; /** - * @member {ProvisioningState} [provisioningState] Provisioning state of the - * App Service Environment. Possible values include: 'Succeeded', 'Failed', - * 'Canceled', 'InProgress', 'Deleting' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Provisioning state of the App Service Environment. Possible values include: 'Succeeded', + * 'Failed', 'Canceled', 'InProgress', 'Deleting' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: ProvisioningState; - /** - * @member {SkuDescription} [sku] - */ sku?: SkuDescription; } /** - * @interface - * An interface representing DefaultErrorResponseErrorDetailsItem. * Detailed errors. - * */ export interface DefaultErrorResponseErrorDetailsItem { /** - * @member {string} [code] Standardized string to programmatically identify - * the error. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Standardized string to programmatically identify the error. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly code?: string; /** - * @member {string} [message] Detailed error description and debugging - * information. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Detailed error description and debugging information. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly message?: string; /** - * @member {string} [target] Detailed error description and debugging - * information. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Detailed error description and debugging information. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly target?: string; } /** - * @interface - * An interface representing DefaultErrorResponseError. * Error model. - * */ export interface DefaultErrorResponseError { /** - * @member {string} [code] Standardized string to programmatically identify - * the error. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Standardized string to programmatically identify the error. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly code?: string; /** - * @member {string} [message] Detailed error description and debugging - * information. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Detailed error description and debugging information. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly message?: string; /** - * @member {string} [target] Detailed error description and debugging - * information. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Detailed error description and debugging information. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly target?: string; - /** - * @member {DefaultErrorResponseErrorDetailsItem[]} [details] - */ details?: DefaultErrorResponseErrorDetailsItem[]; /** - * @member {string} [innererror] More information to debug error. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * More information to debug error. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly innererror?: string; } /** - * @interface - * An interface representing DefaultErrorResponse. * App Service error response. - * */ export interface DefaultErrorResponse { /** - * @member {DefaultErrorResponseError} [error] Error model. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Error model. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly error?: DefaultErrorResponseError; } /** - * @interface - * An interface representing NameIdentifier. * Identifies an object. - * */ export interface NameIdentifier { /** - * @member {string} [name] Name of the object. + * Name of the object. */ name?: string; } /** - * @interface - * An interface representing LogSpecification. * Log Definition of a single resource metric. - * */ export interface LogSpecification { - /** - * @member {string} [name] - */ name?: string; - /** - * @member {string} [displayName] - */ displayName?: string; - /** - * @member {string} [blobDuration] - */ blobDuration?: string; } /** - * @interface - * An interface representing MetricAvailability. * Retention policy of a resource metric. - * */ export interface MetricAvailability { - /** - * @member {string} [timeGrain] - */ timeGrain?: string; - /** - * @member {string} [blobDuration] - */ blobDuration?: string; } /** - * @interface - * An interface representing Dimension. - * Dimension of a resource metric. For e.g. instance specific HTTP requests for - * a web app, + * Dimension of a resource metric. For e.g. instance specific HTTP requests for a web app, * where instance name is dimension of the metric HTTP request - * */ export interface Dimension { - /** - * @member {string} [name] - */ name?: string; - /** - * @member {string} [displayName] - */ displayName?: string; - /** - * @member {string} [internalName] - */ internalName?: string; - /** - * @member {boolean} [toBeExportedForShoebox] - */ toBeExportedForShoebox?: boolean; } /** - * @interface - * An interface representing MetricSpecification. * Definition of a single resource metric. - * */ export interface MetricSpecification { - /** - * @member {string} [name] - */ name?: string; - /** - * @member {string} [displayName] - */ displayName?: string; - /** - * @member {string} [displayDescription] - */ displayDescription?: string; - /** - * @member {string} [unit] - */ unit?: string; - /** - * @member {string} [aggregationType] - */ aggregationType?: string; - /** - * @member {boolean} [supportsInstanceLevelAggregation] - */ supportsInstanceLevelAggregation?: boolean; - /** - * @member {boolean} [enableRegionalMdmAccount] - */ enableRegionalMdmAccount?: boolean; - /** - * @member {string} [sourceMdmAccount] - */ sourceMdmAccount?: string; - /** - * @member {string} [sourceMdmNamespace] - */ sourceMdmNamespace?: string; - /** - * @member {string} [metricFilterPattern] - */ metricFilterPattern?: string; - /** - * @member {boolean} [fillGapWithZero] - */ fillGapWithZero?: boolean; - /** - * @member {boolean} [isInternal] - */ isInternal?: boolean; - /** - * @member {Dimension[]} [dimensions] - */ dimensions?: Dimension[]; - /** - * @member {string} [category] - */ category?: string; - /** - * @member {MetricAvailability[]} [availabilities] - */ availabilities?: MetricAvailability[]; } /** - * @interface - * An interface representing ServiceSpecification. * Resource metrics service provided by Microsoft.Insights resource provider. - * */ export interface ServiceSpecification { - /** - * @member {MetricSpecification[]} [metricSpecifications] - */ metricSpecifications?: MetricSpecification[]; - /** - * @member {LogSpecification[]} [logSpecifications] - */ logSpecifications?: LogSpecification[]; } /** - * @interface - * An interface representing CsmOperationDescriptionProperties. * Properties available for a Microsoft.Web resource provider operation. - * */ export interface CsmOperationDescriptionProperties { - /** - * @member {ServiceSpecification} [serviceSpecification] - */ serviceSpecification?: ServiceSpecification; } /** - * @interface - * An interface representing CsmOperationDisplay. * Meta data about operation used for display in portal. - * */ export interface CsmOperationDisplay { - /** - * @member {string} [provider] - */ provider?: string; - /** - * @member {string} [resource] - */ resource?: string; - /** - * @member {string} [operation] - */ operation?: string; - /** - * @member {string} [description] - */ description?: string; } /** - * @interface - * An interface representing CsmOperationDescription. * Description of an operation available for Microsoft.Web resource provider. - * */ export interface CsmOperationDescription { - /** - * @member {string} [name] - */ name?: string; - /** - * @member {CsmOperationDisplay} [display] - */ display?: CsmOperationDisplay; - /** - * @member {string} [origin] - */ origin?: string; - /** - * @member {CsmOperationDescriptionProperties} [properties] - */ properties?: CsmOperationDescriptionProperties; } /** - * @interface - * An interface representing Address. * Address information for domain registration. - * */ export interface Address { /** - * @member {string} address1 First line of an Address. + * First line of an Address. */ address1: string; /** - * @member {string} [address2] The second line of the Address. Optional. + * The second line of the Address. Optional. */ address2?: string; /** - * @member {string} city The city for the address. + * The city for the address. */ city: string; /** - * @member {string} country The country for the address. + * The country for the address. */ country: string; /** - * @member {string} postalCode The postal code for the address. + * The postal code for the address. */ postalCode: string; /** - * @member {string} state The state or province for the address. + * The state or province for the address. */ state: string; } /** - * @interface - * An interface representing Contact. - * Contact information for domain registration. If 'Domain Privacy' option is - * not selected then the contact information is made publicly available through - * the Whois + * Contact information for domain registration. If 'Domain Privacy' option is not selected then the + * contact information is made publicly available through the Whois * directories as per ICANN requirements. - * */ export interface Contact { /** - * @member {Address} [addressMailing] Mailing address. + * Mailing address. */ addressMailing?: Address; /** - * @member {string} email Email address. + * Email address. */ email: string; /** - * @member {string} [fax] Fax number. + * Fax number. */ fax?: string; /** - * @member {string} [jobTitle] Job title. + * Job title. */ jobTitle?: string; /** - * @member {string} nameFirst First name. + * First name. */ nameFirst: string; /** - * @member {string} nameLast Last name. + * Last name. */ nameLast: string; /** - * @member {string} [nameMiddle] Middle name. + * Middle name. */ nameMiddle?: string; /** - * @member {string} [organization] Organization contact belongs to. + * Organization contact belongs to. */ organization?: string; /** - * @member {string} phone Phone number. + * Phone number. */ phone: string; } /** - * @interface - * An interface representing HostName. * Details of a hostname derived from a domain. - * */ export interface HostName { /** - * @member {string} [name] Name of the hostname. + * Name of the hostname. */ name?: string; /** - * @member {string[]} [siteNames] List of apps the hostname is assigned to. - * This list will have more than one app only if the hostname is pointing to - * a Traffic Manager. + * List of apps the hostname is assigned to. This list will have more than one app only if the + * hostname is pointing to a Traffic Manager. */ siteNames?: string[]; /** - * @member {string} [azureResourceName] Name of the Azure resource the - * hostname is assigned to. If it is assigned to a Traffic Manager then it - * will be the Traffic Manager name otherwise it will be the app name. + * Name of the Azure resource the hostname is assigned to. If it is assigned to a Traffic Manager + * then it will be the Traffic Manager name otherwise it will be the app name. */ azureResourceName?: string; /** - * @member {AzureResourceType} [azureResourceType] Type of the Azure resource - * the hostname is assigned to. Possible values include: 'Website', + * Type of the Azure resource the hostname is assigned to. Possible values include: 'Website', * 'TrafficManager' */ azureResourceType?: AzureResourceType; /** - * @member {CustomHostNameDnsRecordType} [customHostNameDnsRecordType] Type - * of the DNS record. Possible values include: 'CName', 'A' + * Type of the DNS record. Possible values include: 'CName', 'A' */ customHostNameDnsRecordType?: CustomHostNameDnsRecordType; /** - * @member {HostNameType} [hostNameType] Type of the hostname. Possible - * values include: 'Verified', 'Managed' + * Type of the hostname. Possible values include: 'Verified', 'Managed' */ hostNameType?: HostNameType; } /** - * @interface - * An interface representing DomainPurchaseConsent. - * Domain purchase consent object, representing acceptance of applicable legal - * agreements. - * + * Domain purchase consent object, representing acceptance of applicable legal agreements. */ export interface DomainPurchaseConsent { /** - * @member {string[]} [agreementKeys] List of applicable legal agreement - * keys. This list can be retrieved using ListLegalAgreements API under - * TopLevelDomain resource. + * List of applicable legal agreement keys. This list can be retrieved using ListLegalAgreements + * API under TopLevelDomain resource. */ agreementKeys?: string[]; /** - * @member {string} [agreedBy] Client IP address. + * Client IP address. */ agreedBy?: string; /** - * @member {Date} [agreedAt] Timestamp when the agreements were accepted. + * Timestamp when the agreements were accepted. */ agreedAt?: Date; } /** - * @interface - * An interface representing Domain. * Information about a domain. - * - * @extends Resource */ export interface Domain extends Resource { /** - * @member {Contact} contactAdmin Administrative contact. + * Administrative contact. */ contactAdmin: Contact; /** - * @member {Contact} contactBilling Billing contact. + * Billing contact. */ contactBilling: Contact; /** - * @member {Contact} contactRegistrant Registrant contact. + * Registrant contact. */ contactRegistrant: Contact; /** - * @member {Contact} contactTech Technical contact. + * Technical contact. */ contactTech: Contact; /** - * @member {DomainStatus} [registrationStatus] Domain registration status. - * Possible values include: 'Active', 'Awaiting', 'Cancelled', 'Confiscated', - * 'Disabled', 'Excluded', 'Expired', 'Failed', 'Held', 'Locked', 'Parked', - * 'Pending', 'Reserved', 'Reverted', 'Suspended', 'Transferred', 'Unknown', - * 'Unlocked', 'Unparked', 'Updated', 'JsonConverterFailed' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Domain registration status. Possible values include: 'Active', 'Awaiting', 'Cancelled', + * 'Confiscated', 'Disabled', 'Excluded', 'Expired', 'Failed', 'Held', 'Locked', 'Parked', + * 'Pending', 'Reserved', 'Reverted', 'Suspended', 'Transferred', 'Unknown', 'Unlocked', + * 'Unparked', 'Updated', 'JsonConverterFailed' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly registrationStatus?: DomainStatus; /** - * @member {ProvisioningState} [provisioningState] Domain provisioning state. - * Possible values include: 'Succeeded', 'Failed', 'Canceled', 'InProgress', - * 'Deleting' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Domain provisioning state. Possible values include: 'Succeeded', 'Failed', 'Canceled', + * 'InProgress', 'Deleting' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: ProvisioningState; /** - * @member {string[]} [nameServers] Name servers. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Name servers. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nameServers?: string[]; /** - * @member {boolean} [privacy] true if domain privacy is enabled - * for this domain; otherwise, false. + * true if domain privacy is enabled for this domain; otherwise, false. */ privacy?: boolean; /** - * @member {Date} [createdTime] Domain creation timestamp. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Domain creation timestamp. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly createdTime?: Date; /** - * @member {Date} [expirationTime] Domain expiration timestamp. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Domain expiration timestamp. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly expirationTime?: Date; /** - * @member {Date} [lastRenewedTime] Timestamp when the domain was renewed - * last time. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Timestamp when the domain was renewed last time. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly lastRenewedTime?: Date; /** - * @member {boolean} [autoRenew] true if the domain should be - * automatically renewed; otherwise, false. Default value: true - * . + * true if the domain should be automatically renewed; otherwise, + * false. Default value: true. */ autoRenew?: boolean; /** - * @member {boolean} [readyForDnsRecordManagement] true if Azure - * can assign this domain to App Service apps; otherwise, false. - * This value will be true if domain registration status is + * true if Azure can assign this domain to App Service apps; otherwise, + * false. This value will be true if domain registration status is * active and * it is hosted on name servers Azure has programmatic access to. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly readyForDnsRecordManagement?: boolean; /** - * @member {HostName[]} [managedHostNames] All hostnames derived from the - * domain and assigned to Azure resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * All hostnames derived from the domain and assigned to Azure resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly managedHostNames?: HostName[]; /** - * @member {DomainPurchaseConsent} consent Legal agreement consent. + * Legal agreement consent. */ consent: DomainPurchaseConsent; /** - * @member {string[]} [domainNotRenewableReasons] Reasons why domain is not - * renewable. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Reasons why domain is not renewable. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly domainNotRenewableReasons?: string[]; /** - * @member {DnsType} [dnsType] Current DNS type. Possible values include: - * 'AzureDns', 'DefaultDomainRegistrarDns' + * Current DNS type. Possible values include: 'AzureDns', 'DefaultDomainRegistrarDns' */ dnsType?: DnsType; /** - * @member {string} [dnsZoneId] Azure DNS Zone to use + * Azure DNS Zone to use */ dnsZoneId?: string; /** - * @member {DnsType} [targetDnsType] Target DNS type (would be used for - * migration). Possible values include: 'AzureDns', + * Target DNS type (would be used for migration). Possible values include: 'AzureDns', * 'DefaultDomainRegistrarDns' */ targetDnsType?: DnsType; - /** - * @member {string} [authCode] - */ authCode?: string; } /** - * @interface - * An interface representing DomainAvailablilityCheckResult. - * Domain availablility check result. - * + * Domain availability check result. */ export interface DomainAvailablilityCheckResult { /** - * @member {string} [name] Name of the domain. + * Name of the domain. */ name?: string; /** - * @member {boolean} [available] true if domain can be purchased - * using CreateDomain API; otherwise, false. + * true if domain can be purchased using CreateDomain API; otherwise, + * false. */ available?: boolean; /** - * @member {DomainType} [domainType] Valid values are Regular domain: Azure - * will charge the full price of domain registration, SoftDeleted: Purchasing - * this domain will simply restore it and this operation will not cost + * Valid values are Regular domain: Azure will charge the full price of domain registration, + * SoftDeleted: Purchasing this domain will simply restore it and this operation will not cost * anything. Possible values include: 'Regular', 'SoftDeleted' */ domainType?: DomainType; } /** - * @interface - * An interface representing DomainControlCenterSsoRequest. * Single sign-on request information for domain management. - * */ export interface DomainControlCenterSsoRequest { /** - * @member {string} [url] URL where the single sign-on request is to be made. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * URL where the single sign-on request is to be made. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly url?: string; /** - * @member {string} [postParameterKey] Post parameter key. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Post parameter key. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly postParameterKey?: string; /** - * @member {string} [postParameterValue] Post parameter value. Client should - * use 'application/x-www-form-urlencoded' encoding for this value. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Post parameter value. Client should use 'application/x-www-form-urlencoded' encoding for this + * value. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly postParameterValue?: string; } /** - * @interface - * An interface representing DomainOwnershipIdentifier. * Domain ownership Identifier. - * - * @extends ProxyOnlyResource */ export interface DomainOwnershipIdentifier extends ProxyOnlyResource { /** - * @member {string} [ownershipId] Ownership Id. + * Ownership Id. */ ownershipId?: string; } /** - * @interface - * An interface representing DomainPatchResource. * ARM resource for a domain. - * - * @extends ProxyOnlyResource */ export interface DomainPatchResource extends ProxyOnlyResource { /** - * @member {Contact} contactAdmin Administrative contact. + * Administrative contact. */ contactAdmin: Contact; /** - * @member {Contact} contactBilling Billing contact. + * Billing contact. */ contactBilling: Contact; /** - * @member {Contact} contactRegistrant Registrant contact. + * Registrant contact. */ contactRegistrant: Contact; /** - * @member {Contact} contactTech Technical contact. + * Technical contact. */ contactTech: Contact; /** - * @member {DomainStatus} [registrationStatus] Domain registration status. - * Possible values include: 'Active', 'Awaiting', 'Cancelled', 'Confiscated', - * 'Disabled', 'Excluded', 'Expired', 'Failed', 'Held', 'Locked', 'Parked', - * 'Pending', 'Reserved', 'Reverted', 'Suspended', 'Transferred', 'Unknown', - * 'Unlocked', 'Unparked', 'Updated', 'JsonConverterFailed' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Domain registration status. Possible values include: 'Active', 'Awaiting', 'Cancelled', + * 'Confiscated', 'Disabled', 'Excluded', 'Expired', 'Failed', 'Held', 'Locked', 'Parked', + * 'Pending', 'Reserved', 'Reverted', 'Suspended', 'Transferred', 'Unknown', 'Unlocked', + * 'Unparked', 'Updated', 'JsonConverterFailed' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly registrationStatus?: DomainStatus; /** - * @member {ProvisioningState} [provisioningState] Domain provisioning state. - * Possible values include: 'Succeeded', 'Failed', 'Canceled', 'InProgress', - * 'Deleting' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Domain provisioning state. Possible values include: 'Succeeded', 'Failed', 'Canceled', + * 'InProgress', 'Deleting' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: ProvisioningState; /** - * @member {string[]} [nameServers] Name servers. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Name servers. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nameServers?: string[]; /** - * @member {boolean} [privacy] true if domain privacy is enabled - * for this domain; otherwise, false. + * true if domain privacy is enabled for this domain; otherwise, false. */ privacy?: boolean; /** - * @member {Date} [createdTime] Domain creation timestamp. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Domain creation timestamp. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly createdTime?: Date; /** - * @member {Date} [expirationTime] Domain expiration timestamp. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Domain expiration timestamp. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly expirationTime?: Date; /** - * @member {Date} [lastRenewedTime] Timestamp when the domain was renewed - * last time. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Timestamp when the domain was renewed last time. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly lastRenewedTime?: Date; /** - * @member {boolean} [autoRenew] true if the domain should be - * automatically renewed; otherwise, false. Default value: true - * . + * true if the domain should be automatically renewed; otherwise, + * false. Default value: true. */ autoRenew?: boolean; /** - * @member {boolean} [readyForDnsRecordManagement] true if Azure - * can assign this domain to App Service apps; otherwise, false. - * This value will be true if domain registration status is + * true if Azure can assign this domain to App Service apps; otherwise, + * false. This value will be true if domain registration status is * active and * it is hosted on name servers Azure has programmatic access to. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly readyForDnsRecordManagement?: boolean; /** - * @member {HostName[]} [managedHostNames] All hostnames derived from the - * domain and assigned to Azure resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * All hostnames derived from the domain and assigned to Azure resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly managedHostNames?: HostName[]; /** - * @member {DomainPurchaseConsent} consent Legal agreement consent. + * Legal agreement consent. */ consent: DomainPurchaseConsent; /** - * @member {string[]} [domainNotRenewableReasons] Reasons why domain is not - * renewable. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Reasons why domain is not renewable. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly domainNotRenewableReasons?: string[]; /** - * @member {DnsType} [dnsType] Current DNS type. Possible values include: - * 'AzureDns', 'DefaultDomainRegistrarDns' + * Current DNS type. Possible values include: 'AzureDns', 'DefaultDomainRegistrarDns' */ dnsType?: DnsType; /** - * @member {string} [dnsZoneId] Azure DNS Zone to use + * Azure DNS Zone to use */ dnsZoneId?: string; /** - * @member {DnsType} [targetDnsType] Target DNS type (would be used for - * migration). Possible values include: 'AzureDns', + * Target DNS type (would be used for migration). Possible values include: 'AzureDns', * 'DefaultDomainRegistrarDns' */ targetDnsType?: DnsType; - /** - * @member {string} [authCode] - */ authCode?: string; } /** - * @interface - * An interface representing DomainRecommendationSearchParameters. * Domain recommendation search parameters. - * */ export interface DomainRecommendationSearchParameters { /** - * @member {string} [keywords] Keywords to be used for generating domain - * recommendations. + * Keywords to be used for generating domain recommendations. */ keywords?: string; /** - * @member {number} [maxDomainRecommendations] Maximum number of - * recommendations. + * Maximum number of recommendations. */ maxDomainRecommendations?: number; } /** - * @interface - * An interface representing TldLegalAgreement. * Legal agreement for a top level domain. - * */ export interface TldLegalAgreement { /** - * @member {string} agreementKey Unique identifier for the agreement. + * Unique identifier for the agreement. */ agreementKey: string; /** - * @member {string} title Agreement title. + * Agreement title. */ title: string; /** - * @member {string} content Agreement details. + * Agreement details. */ content: string; /** - * @member {string} [url] URL where a copy of the agreement details is - * hosted. + * URL where a copy of the agreement details is hosted. */ url?: string; } /** - * @interface - * An interface representing TopLevelDomain. * A top level domain object. - * - * @extends ProxyOnlyResource */ export interface TopLevelDomain extends ProxyOnlyResource { /** - * @member {boolean} [privacy] If true, then the top level - * domain supports domain privacy; otherwise, false. + * If true, then the top level domain supports domain privacy; otherwise, + * false. */ privacy?: boolean; } /** - * @interface - * An interface representing TopLevelDomainAgreementOption. * Options for retrieving the list of top level domain legal agreements. - * */ export interface TopLevelDomainAgreementOption { /** - * @member {boolean} [includePrivacy] If true, then the list of - * agreements will include agreements for domain privacy as well; otherwise, - * false. + * If true, then the list of agreements will include agreements for domain privacy + * as well; otherwise, false. */ includePrivacy?: boolean; /** - * @member {boolean} [forTransfer] If true, then the list of - * agreements will include agreements for domain transfer as well; otherwise, - * false. + * If true, then the list of agreements will include agreements for domain transfer + * as well; otherwise, false. */ forTransfer?: boolean; } /** - * @interface - * An interface representing Certificate. * SSL certificate for an app. - * - * @extends Resource */ export interface Certificate extends Resource { /** - * @member {string} [friendlyName] Friendly name of the certificate. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Friendly name of the certificate. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly friendlyName?: string; /** - * @member {string} [subjectName] Subject name of the certificate. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Subject name of the certificate. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly subjectName?: string; /** - * @member {string[]} [hostNames] Host names the certificate applies to. + * Host names the certificate applies to. */ hostNames?: string[]; /** - * @member {Uint8Array} [pfxBlob] Pfx blob. + * Pfx blob. */ pfxBlob?: Uint8Array; /** - * @member {string} [siteName] App name. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * App name. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly siteName?: string; /** - * @member {string} [selfLink] Self link. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Self link. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly selfLink?: string; /** - * @member {string} [issuer] Certificate issuer. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Certificate issuer. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly issuer?: string; /** - * @member {Date} [issueDate] Certificate issue Date. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Certificate issue Date. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly issueDate?: Date; /** - * @member {Date} [expirationDate] Certificate expriration date. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Certificate expiration date. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly expirationDate?: Date; /** - * @member {string} password Certificate password. + * Certificate password. */ password: string; /** - * @member {string} [thumbprint] Certificate thumbprint. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Certificate thumbprint. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly thumbprint?: string; /** - * @member {boolean} [valid] Is the certificate valid?. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Is the certificate valid?. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly valid?: boolean; /** - * @member {Uint8Array} [cerBlob] Raw bytes of .cer file - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Raw bytes of .cer file + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly cerBlob?: Uint8Array; /** - * @member {string} [publicKeyHash] Public key hash. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Public key hash. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly publicKeyHash?: string; /** - * @member {HostingEnvironmentProfile} [hostingEnvironmentProfile] * Specification for the App Service Environment to use for the certificate. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly hostingEnvironmentProfile?: HostingEnvironmentProfile; /** - * @member {string} [keyVaultId] Key Vault Csm resource Id. + * Key Vault Csm resource Id. */ keyVaultId?: string; /** - * @member {string} [keyVaultSecretName] Key Vault secret name. + * Key Vault secret name. */ keyVaultSecretName?: string; /** - * @member {KeyVaultSecretStatus} [keyVaultSecretStatus] Status of the Key - * Vault secret. Possible values include: 'Initialized', + * Status of the Key Vault secret. Possible values include: 'Initialized', * 'WaitingOnCertificateOrder', 'Succeeded', 'CertificateOrderFailed', - * 'OperationNotPermittedOnKeyVault', - * 'AzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultDoesNotExist', - * 'KeyVaultSecretDoesNotExist', 'UnknownError', 'ExternalPrivateKey', + * 'OperationNotPermittedOnKeyVault', 'AzureServiceUnauthorizedToAccessKeyVault', + * 'KeyVaultDoesNotExist', 'KeyVaultSecretDoesNotExist', 'UnknownError', 'ExternalPrivateKey', * 'Unknown' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly keyVaultSecretStatus?: KeyVaultSecretStatus; /** - * @member {string} [serverFarmId] Resource ID of the associated App Service - * plan, formatted as: + * Resource ID of the associated App Service plan, formatted as: * "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}". */ serverFarmId?: string; } /** - * @interface - * An interface representing CertificatePatchResource. * ARM resource for a certificate. - * - * @extends ProxyOnlyResource */ export interface CertificatePatchResource extends ProxyOnlyResource { /** - * @member {string} [friendlyName] Friendly name of the certificate. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Friendly name of the certificate. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly friendlyName?: string; /** - * @member {string} [subjectName] Subject name of the certificate. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Subject name of the certificate. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly subjectName?: string; /** - * @member {string[]} [hostNames] Host names the certificate applies to. + * Host names the certificate applies to. */ hostNames?: string[]; /** - * @member {Uint8Array} [pfxBlob] Pfx blob. + * Pfx blob. */ pfxBlob?: Uint8Array; /** - * @member {string} [siteName] App name. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * App name. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly siteName?: string; /** - * @member {string} [selfLink] Self link. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Self link. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly selfLink?: string; /** - * @member {string} [issuer] Certificate issuer. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Certificate issuer. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly issuer?: string; /** - * @member {Date} [issueDate] Certificate issue Date. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Certificate issue Date. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly issueDate?: Date; /** - * @member {Date} [expirationDate] Certificate expriration date. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Certificate expiration date. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly expirationDate?: Date; /** - * @member {string} password Certificate password. + * Certificate password. */ password: string; /** - * @member {string} [thumbprint] Certificate thumbprint. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Certificate thumbprint. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly thumbprint?: string; /** - * @member {boolean} [valid] Is the certificate valid?. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Is the certificate valid?. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly valid?: boolean; /** - * @member {Uint8Array} [cerBlob] Raw bytes of .cer file - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Raw bytes of .cer file + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly cerBlob?: Uint8Array; /** - * @member {string} [publicKeyHash] Public key hash. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Public key hash. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly publicKeyHash?: string; /** - * @member {HostingEnvironmentProfile} [hostingEnvironmentProfile] * Specification for the App Service Environment to use for the certificate. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly hostingEnvironmentProfile?: HostingEnvironmentProfile; /** - * @member {string} [keyVaultId] Key Vault Csm resource Id. + * Key Vault Csm resource Id. */ keyVaultId?: string; /** - * @member {string} [keyVaultSecretName] Key Vault secret name. + * Key Vault secret name. */ keyVaultSecretName?: string; /** - * @member {KeyVaultSecretStatus} [keyVaultSecretStatus] Status of the Key - * Vault secret. Possible values include: 'Initialized', + * Status of the Key Vault secret. Possible values include: 'Initialized', * 'WaitingOnCertificateOrder', 'Succeeded', 'CertificateOrderFailed', - * 'OperationNotPermittedOnKeyVault', - * 'AzureServiceUnauthorizedToAccessKeyVault', 'KeyVaultDoesNotExist', - * 'KeyVaultSecretDoesNotExist', 'UnknownError', 'ExternalPrivateKey', + * 'OperationNotPermittedOnKeyVault', 'AzureServiceUnauthorizedToAccessKeyVault', + * 'KeyVaultDoesNotExist', 'KeyVaultSecretDoesNotExist', 'UnknownError', 'ExternalPrivateKey', * 'Unknown' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly keyVaultSecretStatus?: KeyVaultSecretStatus; /** - * @member {string} [serverFarmId] Resource ID of the associated App Service - * plan, formatted as: + * Resource ID of the associated App Service plan, formatted as: * "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}". */ serverFarmId?: string; } /** - * @interface - * An interface representing VirtualNetworkProfile. * Specification for using a Virtual Network. - * */ export interface VirtualNetworkProfile { /** - * @member {string} [id] Resource id of the Virtual Network. + * Resource id of the Virtual Network. */ id?: string; /** - * @member {string} [name] Name of the Virtual Network (read-only). - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Name of the Virtual Network (read-only). + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly name?: string; /** - * @member {string} [type] Resource type of the Virtual Network (read-only). - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Resource type of the Virtual Network (read-only). + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly type?: string; /** - * @member {string} [subnet] Subnet within the Virtual Network. + * Subnet within the Virtual Network. */ subnet?: string; } /** - * @interface - * An interface representing WorkerPool. * Worker pool of an App Service Environment. - * */ export interface WorkerPool { /** - * @member {number} [workerSizeId] Worker size ID for referencing this worker - * pool. + * Worker size ID for referencing this worker pool. */ workerSizeId?: number; /** - * @member {ComputeModeOptions} [computeMode] Shared or dedicated app - * hosting. Possible values include: 'Shared', 'Dedicated', 'Dynamic' + * Shared or dedicated app hosting. Possible values include: 'Shared', 'Dedicated', 'Dynamic' */ computeMode?: ComputeModeOptions; /** - * @member {string} [workerSize] VM size of the worker pool instances. + * VM size of the worker pool instances. */ workerSize?: string; /** - * @member {number} [workerCount] Number of instances in the worker pool. + * Number of instances in the worker pool. */ workerCount?: number; /** - * @member {string[]} [instanceNames] Names of all instances in the worker - * pool (read only). - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Names of all instances in the worker pool (read only). + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly instanceNames?: string[]; } /** - * @interface - * An interface representing VirtualIPMapping. * Virtual IP mapping. - * */ export interface VirtualIPMapping { /** - * @member {string} [virtualIP] Virtual IP address. + * Virtual IP address. */ virtualIP?: string; /** - * @member {number} [internalHttpPort] Internal HTTP port. + * Internal HTTP port. */ internalHttpPort?: number; /** - * @member {number} [internalHttpsPort] Internal HTTPS port. + * Internal HTTPS port. */ internalHttpsPort?: number; /** - * @member {boolean} [inUse] Is virtual IP mapping in use. + * Is virtual IP mapping in use. */ inUse?: boolean; } /** - * @interface - * An interface representing StampCapacity. * Stamp capacity information. - * */ export interface StampCapacity { /** - * @member {string} [name] Name of the stamp. + * Name of the stamp. */ name?: string; /** - * @member {number} [availableCapacity] Available capacity (# of machines, - * bytes of storage etc...). + * Available capacity (# of machines, bytes of storage etc...). */ availableCapacity?: number; /** - * @member {number} [totalCapacity] Total capacity (# of machines, bytes of - * storage etc...). + * Total capacity (# of machines, bytes of storage etc...). */ totalCapacity?: number; /** - * @member {string} [unit] Name of the unit. + * Name of the unit. */ unit?: string; /** - * @member {ComputeModeOptions} [computeMode] Shared/dedicated workers. - * Possible values include: 'Shared', 'Dedicated', 'Dynamic' + * Shared/dedicated workers. Possible values include: 'Shared', 'Dedicated', 'Dynamic' */ computeMode?: ComputeModeOptions; /** - * @member {WorkerSizeOptions} [workerSize] Size of the machines. Possible - * values include: 'Small', 'Medium', 'Large', 'D1', 'D2', 'D3', 'Default' + * Size of the machines. Possible values include: 'Small', 'Medium', 'Large', 'D1', 'D2', 'D3', + * 'Default' */ workerSize?: WorkerSizeOptions; /** - * @member {number} [workerSizeId] Size ID of machines: + * Size ID of machines: * 0 - Small * 1 - Medium * 2 - Large */ workerSizeId?: number; /** - * @member {boolean} [excludeFromCapacityAllocation] If true, it - * includes basic apps. + * If true, it includes basic apps. * Basic apps are not used for capacity allocation. */ excludeFromCapacityAllocation?: boolean; /** - * @member {boolean} [isApplicableForAllComputeModes] true if - * capacity is applicable for all apps; otherwise, false. + * true if capacity is applicable for all apps; otherwise, false. */ isApplicableForAllComputeModes?: boolean; /** - * @member {string} [siteMode] Shared or Dedicated. + * Shared or Dedicated. */ siteMode?: string; /** - * @member {boolean} [isLinux] Is this a linux stamp capacity + * Is this a linux stamp capacity */ isLinux?: boolean; } /** - * @interface - * An interface representing NetworkAccessControlEntry. * Network access control entry. - * */ export interface NetworkAccessControlEntry { /** - * @member {AccessControlEntryAction} [action] Action object. Possible values - * include: 'Permit', 'Deny' + * Action object. Possible values include: 'Permit', 'Deny' */ action?: AccessControlEntryAction; /** - * @member {string} [description] Description of network access control - * entry. + * Description of network access control entry. */ description?: string; /** - * @member {number} [order] Order of precedence. + * Order of precedence. */ order?: number; /** - * @member {string} [remoteSubnet] Remote subnet. + * Remote subnet. */ remoteSubnet?: string; } /** - * @interface - * An interface representing AppServiceEnvironment. * Description of an App Service Environment. - * */ export interface AppServiceEnvironment { /** - * @member {string} name Name of the App Service Environment. + * Name of the App Service Environment. */ name: string; /** - * @member {string} location Location of the App Service Environment, e.g. - * "West US". + * Location of the App Service Environment, e.g. "West US". */ location: string; /** - * @member {ProvisioningState} [provisioningState] Provisioning state of the - * App Service Environment. Possible values include: 'Succeeded', 'Failed', - * 'Canceled', 'InProgress', 'Deleting' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Provisioning state of the App Service Environment. Possible values include: 'Succeeded', + * 'Failed', 'Canceled', 'InProgress', 'Deleting' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: ProvisioningState; /** - * @member {HostingEnvironmentStatus} [status] Current status of the App - * Service Environment. Possible values include: 'Preparing', 'Ready', + * Current status of the App Service Environment. Possible values include: 'Preparing', 'Ready', * 'Scaling', 'Deleting' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly status?: HostingEnvironmentStatus; /** - * @member {string} [vnetName] Name of the Virtual Network for the App - * Service Environment. + * Name of the Virtual Network for the App Service Environment. */ vnetName?: string; /** - * @member {string} [vnetResourceGroupName] Resource group of the Virtual - * Network. + * Resource group of the Virtual Network. */ vnetResourceGroupName?: string; /** - * @member {string} [vnetSubnetName] Subnet of the Virtual Network. + * Subnet of the Virtual Network. */ vnetSubnetName?: string; /** - * @member {VirtualNetworkProfile} virtualNetwork Description of the Virtual - * Network. + * Description of the Virtual Network. */ virtualNetwork: VirtualNetworkProfile; /** - * @member {InternalLoadBalancingMode} [internalLoadBalancingMode] Specifies - * which endpoints to serve internally in the Virtual Network for the App - * Service Environment. Possible values include: 'None', 'Web', 'Publishing' + * Specifies which endpoints to serve internally in the Virtual Network for the App Service + * Environment. Possible values include: 'None', 'Web', 'Publishing' */ internalLoadBalancingMode?: InternalLoadBalancingMode; /** - * @member {string} [multiSize] Front-end VM size, e.g. "Medium", "Large". + * Front-end VM size, e.g. "Medium", "Large". */ multiSize?: string; /** - * @member {number} [multiRoleCount] Number of front-end instances. + * Number of front-end instances. */ multiRoleCount?: number; /** - * @member {WorkerPool[]} workerPools Description of worker pools with worker - * size IDs, VM sizes, and number of workers in each pool. + * Description of worker pools with worker size IDs, VM sizes, and number of workers in each + * pool. */ workerPools: WorkerPool[]; /** - * @member {number} [ipsslAddressCount] Number of IP SSL addresses reserved - * for the App Service Environment. + * Number of IP SSL addresses reserved for the App Service Environment. */ ipsslAddressCount?: number; /** - * @member {string} [databaseEdition] Edition of the metadata database for - * the App Service Environment, e.g. "Standard". - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Edition of the metadata database for the App Service Environment, e.g. "Standard". + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly databaseEdition?: string; /** - * @member {string} [databaseServiceObjective] Service objective of the - * metadata database for the App Service Environment, e.g. "S0". - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Service objective of the metadata database for the App Service Environment, e.g. "S0". + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly databaseServiceObjective?: string; /** - * @member {number} [upgradeDomains] Number of upgrade domains of the App - * Service Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Number of upgrade domains of the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly upgradeDomains?: number; /** - * @member {string} [subscriptionId] Subscription of the App Service - * Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Subscription of the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly subscriptionId?: string; /** - * @member {string} [dnsSuffix] DNS suffix of the App Service Environment. + * DNS suffix of the App Service Environment. */ dnsSuffix?: string; /** - * @member {string} [lastAction] Last deployment action on the App Service - * Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Last deployment action on the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly lastAction?: string; /** - * @member {string} [lastActionResult] Result of the last deployment action - * on the App Service Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Result of the last deployment action on the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly lastActionResult?: string; /** - * @member {string} [allowedMultiSizes] List of comma separated strings - * describing which VM sizes are allowed for front-ends. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * List of comma separated strings describing which VM sizes are allowed for front-ends. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly allowedMultiSizes?: string; /** - * @member {string} [allowedWorkerSizes] List of comma separated strings - * describing which VM sizes are allowed for workers. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * List of comma separated strings describing which VM sizes are allowed for workers. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly allowedWorkerSizes?: string; /** - * @member {number} [maximumNumberOfMachines] Maximum number of VMs in the - * App Service Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Maximum number of VMs in the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly maximumNumberOfMachines?: number; /** - * @member {VirtualIPMapping[]} [vipMappings] Description of IP SSL mapping - * for the App Service Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Description of IP SSL mapping for the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly vipMappings?: VirtualIPMapping[]; /** - * @member {StampCapacity[]} [environmentCapacities] Current total, used, and - * available worker capacities. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Current total, used, and available worker capacities. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly environmentCapacities?: StampCapacity[]; /** - * @member {NetworkAccessControlEntry[]} [networkAccessControlList] Access - * control list for controlling traffic to the App Service Environment. + * Access control list for controlling traffic to the App Service Environment. */ networkAccessControlList?: NetworkAccessControlEntry[]; /** - * @member {boolean} [environmentIsHealthy] True/false indicating whether the - * App Service Environment is healthy. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * True/false indicating whether the App Service Environment is healthy. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly environmentIsHealthy?: boolean; /** - * @member {string} [environmentStatus] Detailed message about with results - * of the last check of the App Service Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Detailed message about with results of the last check of the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly environmentStatus?: string; /** - * @member {string} [resourceGroup] Resource group of the App Service - * Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Resource group of the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly resourceGroup?: string; /** - * @member {number} [frontEndScaleFactor] Scale factor for front-ends. + * Scale factor for front-ends. */ frontEndScaleFactor?: number; /** - * @member {number} [defaultFrontEndScaleFactor] Default Scale Factor for - * FrontEnds. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Default Scale Factor for FrontEnds. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly defaultFrontEndScaleFactor?: number; /** - * @member {string} [apiManagementAccountId] API Management Account - * associated with the App Service Environment. + * API Management Account associated with the App Service Environment. */ apiManagementAccountId?: string; /** - * @member {boolean} [suspended] true if the App Service - * Environment is suspended; otherwise, false. The environment - * can be suspended, e.g. when the management endpoint is no longer available + * true if the App Service Environment is suspended; otherwise, false. + * The environment can be suspended, e.g. when the management endpoint is no longer available * (most likely because NSG blocked the incoming traffic). */ suspended?: boolean; /** - * @member {boolean} [dynamicCacheEnabled] True/false indicating whether the - * App Service Environment is suspended. The environment can be suspended - * e.g. when the management endpoint is no longer available + * True/false indicating whether the App Service Environment is suspended. The environment can be + * suspended e.g. when the management endpoint is no longer available * (most likely because NSG blocked the incoming traffic). */ dynamicCacheEnabled?: boolean; /** - * @member {NameValuePair[]} [clusterSettings] Custom settings for changing - * the behavior of the App Service Environment. + * Custom settings for changing the behavior of the App Service Environment. */ clusterSettings?: NameValuePair[]; /** - * @member {string[]} [userWhitelistedIpRanges] User added ip ranges to - * whitelist on ASE db + * User added ip ranges to whitelist on ASE db */ userWhitelistedIpRanges?: string[]; /** - * @member {boolean} [hasLinuxWorkers] Flag that displays whether an ASE has - * linux workers or not + * Flag that displays whether an ASE has linux workers or not */ hasLinuxWorkers?: boolean; /** - * @member {string} [sslCertKeyVaultId] Key Vault ID for ILB App Service - * Environment default SSL certificate + * Key Vault ID for ILB App Service Environment default SSL certificate */ sslCertKeyVaultId?: string; /** - * @member {string} [sslCertKeyVaultSecretName] Key Vault Secret Name for ILB - * App Service Environment default SSL certificate + * Key Vault Secret Name for ILB App Service Environment default SSL certificate */ sslCertKeyVaultSecretName?: string; } /** - * @interface - * An interface representing LocalizableString. * Localizable string object containing the name and a localized value. - * */ export interface LocalizableString { /** - * @member {string} [value] Non-localized name. + * Non-localized name. */ value?: string; /** - * @member {string} [localizedValue] Localized name. + * Localized name. */ localizedValue?: string; } /** - * @interface - * An interface representing CsmUsageQuota. * Usage of the quota resource. - * */ export interface CsmUsageQuota { /** - * @member {string} [unit] Units of measurement for the quota resourse. + * Units of measurement for the quota resource. */ unit?: string; /** - * @member {Date} [nextResetTime] Next reset time for the resource counter. + * Next reset time for the resource counter. */ nextResetTime?: Date; /** - * @member {number} [currentValue] The current value of the resource counter. + * The current value of the resource counter. */ currentValue?: number; /** - * @member {number} [limit] The resource limit. + * The resource limit. */ limit?: number; /** - * @member {LocalizableString} [name] Quota name. + * Quota name. */ name?: LocalizableString; } /** - * @interface - * An interface representing ErrorEntity. * Body of the error response returned from the API. - * */ export interface ErrorEntity { /** - * @member {string} [extendedCode] Type of error. + * Type of error. */ extendedCode?: string; /** - * @member {string} [messageTemplate] Message template. + * Message template. */ messageTemplate?: string; /** - * @member {string[]} [parameters] Parameters for the template. + * Parameters for the template. */ parameters?: string[]; /** - * @member {ErrorEntity[]} [innerErrors] Inner errors. + * Inner errors. */ innerErrors?: ErrorEntity[]; /** - * @member {string} [code] Basic error code. + * Basic error code. */ code?: string; /** - * @member {string} [message] Any details of the error. + * Any details of the error. */ message?: string; } /** - * @interface - * An interface representing Operation. * An operation on a resource. - * */ export interface Operation { /** - * @member {string} [id] Operation ID. + * Operation ID. */ id?: string; /** - * @member {string} [name] Operation name. + * Operation name. */ name?: string; /** - * @member {OperationStatus} [status] The current status of the operation. - * Possible values include: 'InProgress', 'Failed', 'Succeeded', 'TimedOut', - * 'Created' + * The current status of the operation. Possible values include: 'InProgress', 'Failed', + * 'Succeeded', 'TimedOut', 'Created' */ status?: OperationStatus; /** - * @member {ErrorEntity[]} [errors] Any errors associate with the operation. + * Any errors associate with the operation. */ errors?: ErrorEntity[]; /** - * @member {Date} [createdTime] Time when operation has started. + * Time when operation has started. */ createdTime?: Date; /** - * @member {Date} [modifiedTime] Time when operation has been updated. + * Time when operation has been updated. */ modifiedTime?: Date; /** - * @member {Date} [expirationTime] Time when operation will expire. + * Time when operation will expire. */ expirationTime?: Date; /** - * @member {string} [geoMasterOperationId] Applicable only for stamp - * operation ids. + * Applicable only for stamp operation ids. */ geoMasterOperationId?: string; } /** - * @interface - * An interface representing ResourceMetricName. * Name of a metric for any resource . - * */ export interface ResourceMetricName { /** - * @member {string} [value] metric name value. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * metric name value. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly value?: string; /** - * @member {string} [localizedValue] Localized metric name value. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Localized metric name value. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly localizedValue?: string; } /** - * @interface - * An interface representing ResourceMetricProperty. * Resource metric property. - * */ export interface ResourceMetricProperty { /** - * @member {string} [key] Key for resource metric property. + * Key for resource metric property. */ key?: string; /** - * @member {string} [value] Value of pair. + * Value of pair. */ value?: string; } /** - * @interface - * An interface representing ResourceMetricValue. * Value of resource metric. - * */ export interface ResourceMetricValue { /** - * @member {string} [timestamp] Value timestamp. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Value timestamp. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly timestamp?: string; /** - * @member {number} [average] Value average. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Value average. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly average?: number; /** - * @member {number} [minimum] Value minimum. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Value minimum. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly minimum?: number; /** - * @member {number} [maximum] Value maximum. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Value maximum. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly maximum?: number; /** - * @member {number} [total] Value total. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Value total. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly total?: number; /** - * @member {number} [count] Value count. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Value count. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly count?: number; /** - * @member {ResourceMetricProperty[]} [properties] Resource metric properties - * collection. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Resource metric properties collection. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly properties?: ResourceMetricProperty[]; } /** - * @interface - * An interface representing ResourceMetric. * Object representing a metric for any resource . - * */ export interface ResourceMetric { /** - * @member {ResourceMetricName} [name] Name of metric. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Name of metric. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly name?: ResourceMetricName; /** - * @member {string} [unit] Metric unit. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Metric unit. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly unit?: string; /** - * @member {string} [timeGrain] Metric granularity. E.g PT1H, PT5M, P1D - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Metric granularity. E.g PT1H, PT5M, P1D + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly timeGrain?: string; /** - * @member {Date} [startTime] Metric start time. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Metric start time. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly startTime?: Date; /** - * @member {Date} [endTime] Metric end time. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Metric end time. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly endTime?: Date; /** - * @member {string} [resourceId] Metric resource Id. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Metric resource Id. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly resourceId?: string; /** - * @member {string} [id] Resource Id. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Resource Id. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly id?: string; /** - * @member {ResourceMetricValue[]} [metricValues] Metric values. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Metric values. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly metricValues?: ResourceMetricValue[]; /** - * @member {ResourceMetricProperty[]} [properties] Resource metric properties - * collection. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Resource metric properties collection. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly properties?: ResourceMetricProperty[]; } /** - * @interface - * An interface representing Solution. * Class Representing Solution for problems detected. - * */ export interface Solution { /** - * @member {number} [id] Solution Id. + * Solution Id. */ id?: number; /** - * @member {string} [displayName] Display Name of the solution + * Display Name of the solution */ displayName?: string; /** - * @member {number} [order] Order of the solution. + * Order of the solution. */ order?: number; /** - * @member {string} [description] Description of the solution + * Description of the solution */ description?: string; /** - * @member {SolutionType} [type] Type of Solution. Possible values include: - * 'QuickSolution', 'DeepInvestigation', 'BestPractices' + * Type of Solution. Possible values include: 'QuickSolution', 'DeepInvestigation', + * 'BestPractices' */ type?: SolutionType; /** - * @member {NameValuePair[][]} [data] Solution Data. + * Solution Data. */ data?: NameValuePair[][]; /** - * @member {NameValuePair[][]} [metadata] Solution Metadata. + * Solution Metadata. */ metadata?: NameValuePair[][]; } /** - * @interface - * An interface representing DetectorAbnormalTimePeriod. * Class representing Abnormal Time Period detected. - * */ export interface DetectorAbnormalTimePeriod { /** - * @member {Date} [startTime] Start time of the corelated event + * Start time of the correlated event */ startTime?: Date; /** - * @member {Date} [endTime] End time of the corelated event + * End time of the correlated event */ endTime?: Date; /** - * @member {string} [message] Message describing the event + * Message describing the event */ message?: string; /** - * @member {string} [source] Represents the name of the Detector + * Represents the name of the Detector */ source?: string; /** - * @member {number} [priority] Represents the rank of the Detector + * Represents the rank of the Detector */ priority?: number; /** - * @member {NameValuePair[][]} [metaData] Downtime metadata + * Downtime metadata */ metaData?: NameValuePair[][]; /** - * @member {IssueType} [type] Represents the type of the Detector. Possible - * values include: 'ServiceIncident', 'AppDeployment', 'AppCrash', - * 'RuntimeIssueDetected', 'AseDeployment', 'UserIssue', 'PlatformIssue', - * 'Other' + * Represents the type of the Detector. Possible values include: 'ServiceIncident', + * 'AppDeployment', 'AppCrash', 'RuntimeIssueDetected', 'AseDeployment', 'UserIssue', + * 'PlatformIssue', 'Other' */ type?: IssueType; /** - * @member {Solution[]} [solutions] List of proposed solutions + * List of proposed solutions */ solutions?: Solution[]; } /** - * @interface - * An interface representing AbnormalTimePeriod. * Class representing Abnormal Time Period identified in diagnosis - * */ export interface AbnormalTimePeriod { /** - * @member {Date} [startTime] Start time of the downtime + * Start time of the downtime */ startTime?: Date; /** - * @member {Date} [endTime] End time of the downtime + * End time of the downtime */ endTime?: Date; /** - * @member {DetectorAbnormalTimePeriod[]} [events] List of Possible Cause of - * downtime + * List of Possible Cause of downtime */ events?: DetectorAbnormalTimePeriod[]; /** - * @member {Solution[]} [solutions] List of proposed solutions + * List of proposed solutions */ solutions?: Solution[]; } /** - * @interface - * An interface representing DetectorDefinition. * Class representing detector definition - * - * @extends ProxyOnlyResource */ export interface DetectorDefinition extends ProxyOnlyResource { /** - * @member {string} [displayName] Display name of the detector - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Display name of the detector + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly displayName?: string; /** - * @member {string} [description] Description of the detector - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Description of the detector + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly description?: string; /** - * @member {number} [rank] Detector Rank - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Detector Rank + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly rank?: number; /** - * @member {boolean} [isEnabled] Flag representing whether detector is - * enabled or not. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Flag representing whether detector is enabled or not. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly isEnabled?: boolean; } /** - * @interface - * An interface representing DiagnosticMetricSample. * Class representing Diagnostic Metric - * */ export interface DiagnosticMetricSample { /** - * @member {Date} [timestamp] Time at which metric is measured + * Time at which metric is measured */ timestamp?: Date; /** - * @member {string} [roleInstance] Role Instance. Null if this counter is not - * per instance - * This is returned and should be whichever instance name we desire to be - * returned + * Role Instance. Null if this counter is not per instance + * This is returned and should be whichever instance name we desire to be returned * i.e. CPU and Memory return RDWORKERNAME (LargeDed..._IN_0) - * where RDWORKERNAME is Machine name below and RoleInstance name in - * parenthesis + * where RDWORKERNAME is Machine name below and RoleInstance name in parenthesis */ roleInstance?: string; /** - * @member {number} [total] Total value of the metric. If multiple - * measurements are made this will have sum of all. + * Total value of the metric. If multiple measurements are made this will have sum of all. */ total?: number; /** - * @member {number} [maximum] Maximum of the metric sampled during the time - * period + * Maximum of the metric sampled during the time period */ maximum?: number; /** - * @member {number} [minimum] Minimum of the metric sampled during the time - * period + * Minimum of the metric sampled during the time period */ minimum?: number; /** - * @member {boolean} [isAggregated] Whether the values are aggregates across - * all workers or not + * Whether the values are aggregates across all workers or not */ isAggregated?: boolean; } /** - * @interface - * An interface representing DiagnosticMetricSet. * Class representing Diagnostic Metric information - * */ export interface DiagnosticMetricSet { /** - * @member {string} [name] Name of the metric + * Name of the metric */ name?: string; /** - * @member {string} [unit] Metric's unit + * Metric's unit */ unit?: string; /** - * @member {Date} [startTime] Start time of the period + * Start time of the period */ startTime?: Date; /** - * @member {Date} [endTime] End time of the period + * End time of the period */ endTime?: Date; /** - * @member {string} [timeGrain] Presented time grain. Supported grains at the - * moment are PT1M, PT1H, P1D + * Presented time grain. Supported grains at the moment are PT1M, PT1H, P1D */ timeGrain?: string; /** - * @member {DiagnosticMetricSample[]} [values] Collection of metric values - * for the selected period based on the + * Collection of metric values for the selected period based on the * {Microsoft.Web.Hosting.Administration.DiagnosticMetricSet.TimeGrain} */ values?: DiagnosticMetricSample[]; } /** - * @interface - * An interface representing DataSource. * Class representing data source used by the detectors - * */ export interface DataSource { /** - * @member {string[]} [instructions] Instrunctions if any for the data source + * Instructions if any for the data source */ instructions?: string[]; /** - * @member {NameValuePair[]} [dataSourceUri] Datasource Uri Links + * Datasource Uri Links */ dataSourceUri?: NameValuePair[]; } /** - * @interface * An interface representing ResponseMetaData. */ export interface ResponseMetaData { /** - * @member {DataSource} [dataSource] Source of the Data + * Source of the Data */ dataSource?: DataSource; } /** - * @interface - * An interface representing AnalysisData. * Class Representing Detector Evidence used for analysis - * */ export interface AnalysisData { /** - * @member {string} [source] Name of the Detector + * Name of the Detector */ source?: string; /** - * @member {DetectorDefinition} [detectorDefinition] Detector Definition + * Detector Definition */ detectorDefinition?: DetectorDefinition; /** - * @member {DiagnosticMetricSet[]} [metrics] Source Metrics + * Source Metrics */ metrics?: DiagnosticMetricSet[]; /** - * @member {NameValuePair[][]} [data] Additional Source Data + * Additional Source Data */ data?: NameValuePair[][]; /** - * @member {ResponseMetaData} [detectorMetaData] Detector Meta Data + * Detector Meta Data */ detectorMetaData?: ResponseMetaData; } /** - * @interface - * An interface representing AnalysisDefinition. * Definition of Analysis - * - * @extends ProxyOnlyResource */ export interface AnalysisDefinition extends ProxyOnlyResource { /** - * @member {string} [description] Description of the Analysis - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Description of the Analysis + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly description?: string; } /** - * @interface - * An interface representing DataTableResponseColumn. * Column definition - * */ export interface DataTableResponseColumn { /** - * @member {string} [columnName] Name of the column + * Name of the column */ columnName?: string; /** - * @member {string} [dataType] Data type which looks like 'String' or - * 'Int32'. + * Data type which looks like 'String' or 'Int32'. */ dataType?: string; /** - * @member {string} [columnType] Column Type + * Column Type */ columnType?: string; } /** - * @interface - * An interface representing DataTableResponseObject. * Data Table which defines columns and raw row values - * */ export interface DataTableResponseObject { /** - * @member {string} [tableName] Name of the table + * Name of the table */ tableName?: string; /** - * @member {DataTableResponseColumn[]} [columns] List of columns with data - * types + * List of columns with data types */ columns?: DataTableResponseColumn[]; /** - * @member {string[][]} [rows] Raw row values + * Raw row values */ rows?: string[][]; } /** - * @interface - * An interface representing DetectorInfo. * Definition of Detector - * */ export interface DetectorInfo { /** - * @member {string} [description] Short description of the detector and its - * purpose - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Short description of the detector and its purpose + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly description?: string; /** - * @member {string} [category] Support Category - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Support Category + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly category?: string; /** - * @member {string} [subCategory] Support Sub Category - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Support Sub Category + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly subCategory?: string; /** - * @member {string} [supportTopicId] Support Topic Id - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Support Topic Id + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly supportTopicId?: string; } /** - * @interface - * An interface representing Rendering. * Instructions for rendering the data - * */ export interface Rendering { /** - * @member {RenderingType} [type] Rendering Type. Possible values include: - * 'NoGraph', 'Table', 'TimeSeries', 'TimeSeriesPerInstance' + * Rendering Type. Possible values include: 'NoGraph', 'Table', 'TimeSeries', + * 'TimeSeriesPerInstance' */ type?: RenderingType; /** - * @member {string} [title] Title of data + * Title of data */ title?: string; /** - * @member {string} [description] Description of the data that will help it - * be interpreted + * Description of the data that will help it be interpreted */ description?: string; } /** - * @interface - * An interface representing DiagnosticData. * Set of data with rendering instructions - * */ export interface DiagnosticData { /** - * @member {DataTableResponseObject} [table] Data in table form + * Data in table form */ table?: DataTableResponseObject; /** - * @member {Rendering} [renderingProperties] Properties that describe how the - * table should be rendered + * Properties that describe how the table should be rendered */ renderingProperties?: Rendering; } /** - * @interface - * An interface representing DetectorResponse. * Class representing Response from Detector - * - * @extends ProxyOnlyResource */ export interface DetectorResponse extends ProxyOnlyResource { /** - * @member {DetectorInfo} [metadata] metadata for the detector + * metadata for the detector */ metadata?: DetectorInfo; /** - * @member {DiagnosticData[]} [dataset] Data Set + * Data Set */ dataset?: DiagnosticData[]; } /** - * @interface - * An interface representing DiagnosticAnalysis. * Class representing a diagnostic analysis done on an application - * - * @extends ProxyOnlyResource */ export interface DiagnosticAnalysis extends ProxyOnlyResource { /** - * @member {Date} [startTime] Start time of the period + * Start time of the period */ startTime?: Date; /** - * @member {Date} [endTime] End time of the period + * End time of the period */ endTime?: Date; /** - * @member {AbnormalTimePeriod[]} [abnormalTimePeriods] List of time periods. + * List of time periods. */ abnormalTimePeriods?: AbnormalTimePeriod[]; /** - * @member {AnalysisData[]} [payload] Data by each detector + * Data by each detector */ payload?: AnalysisData[]; /** - * @member {DetectorDefinition[]} [nonCorrelatedDetectors] Data by each - * detector for detectors that did not corelate + * Data by each detector for detectors that did not corelate */ nonCorrelatedDetectors?: DetectorDefinition[]; } /** - * @interface - * An interface representing DiagnosticCategory. * Class representing detector definition - * - * @extends ProxyOnlyResource */ export interface DiagnosticCategory extends ProxyOnlyResource { /** - * @member {string} [description] Description of the diagnostic category - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Description of the diagnostic category + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly description?: string; } /** - * @interface - * An interface representing DiagnosticDetectorResponse. - * Class representing Reponse from Diagnostic Detectors - * - * @extends ProxyOnlyResource + * Class representing Response from Diagnostic Detectors */ export interface DiagnosticDetectorResponse extends ProxyOnlyResource { /** - * @member {Date} [startTime] Start time of the period + * Start time of the period */ startTime?: Date; /** - * @member {Date} [endTime] End time of the period + * End time of the period */ endTime?: Date; /** - * @member {boolean} [issueDetected] Flag representing Issue was detected. + * Flag representing Issue was detected. */ issueDetected?: boolean; /** - * @member {DetectorDefinition} [detectorDefinition] Detector's definition + * Detector's definition */ detectorDefinition?: DetectorDefinition; /** - * @member {DiagnosticMetricSet[]} [metrics] Metrics provided by the detector + * Metrics provided by the detector */ metrics?: DiagnosticMetricSet[]; /** - * @member {DetectorAbnormalTimePeriod[]} [abnormalTimePeriods] List of - * Correlated events found by the detector + * List of Correlated events found by the detector */ abnormalTimePeriods?: DetectorAbnormalTimePeriod[]; /** - * @member {NameValuePair[][]} [data] Additional Data that detector wants to - * send. + * Additional Data that detector wants to send. */ data?: NameValuePair[][]; /** - * @member {ResponseMetaData} [responseMetaData] Meta Data + * Meta Data */ responseMetaData?: ResponseMetaData; } /** - * @interface - * An interface representing StackMinorVersion. * Application stack minor version. - * */ export interface StackMinorVersion { /** - * @member {string} [displayVersion] Application stack minor version (display - * only). + * Application stack minor version (display only). */ displayVersion?: string; /** - * @member {string} [runtimeVersion] Application stack minor version (runtime - * only). + * Application stack minor version (runtime only). */ runtimeVersion?: string; /** - * @member {boolean} [isDefault] true if this is the default - * minor version; otherwise, false. + * true if this is the default minor version; otherwise, false. */ isDefault?: boolean; + /** + * true if this supports Remote Debugging, otherwise false. + */ + isRemoteDebuggingEnabled?: boolean; } /** - * @interface - * An interface representing StackMajorVersion. * Application stack major version. - * */ export interface StackMajorVersion { /** - * @member {string} [displayVersion] Application stack major version (display - * only). + * Application stack major version (display only). */ displayVersion?: string; /** - * @member {string} [runtimeVersion] Application stack major version (runtime - * only). + * Application stack major version (runtime only). */ runtimeVersion?: string; /** - * @member {boolean} [isDefault] true if this is the default - * major version; otherwise, false. + * true if this is the default major version; otherwise, false. */ isDefault?: boolean; /** - * @member {StackMinorVersion[]} [minorVersions] Minor versions associated - * with the major version. + * Minor versions associated with the major version. */ minorVersions?: StackMinorVersion[]; + /** + * true if this supports Application Insights; otherwise, false. + */ + applicationInsights?: boolean; } /** - * @interface - * An interface representing ApplicationStack. * Application stack. - * */ export interface ApplicationStack { /** - * @member {string} [name] Application stack name. + * Application stack name. */ name?: string; /** - * @member {string} [display] Application stack display name. + * Application stack display name. */ display?: string; /** - * @member {string} [dependency] Application stack dependency. + * Application stack dependency. */ dependency?: string; /** - * @member {StackMajorVersion[]} [majorVersions] List of major versions - * available. + * List of major versions available. */ majorVersions?: StackMajorVersion[]; /** - * @member {ApplicationStack[]} [frameworks] List of frameworks associated - * with application stack. + * List of frameworks associated with application stack. */ frameworks?: ApplicationStack[]; } /** - * @interface - * An interface representing Recommendation. * Represents a recommendation result generated by the recommendation engine. - * - * @extends ProxyOnlyResource */ export interface Recommendation extends ProxyOnlyResource { /** - * @member {Date} [creationTime] Timestamp when this instance was created. + * Timestamp when this instance was created. */ creationTime?: Date; /** - * @member {string} [recommendationId] A GUID value that each recommendation - * object is associated with. + * A GUID value that each recommendation object is associated with. */ recommendationId?: string; /** - * @member {string} [resourceId] Full ARM resource ID string that this - * recommendation object is associated with. + * Full ARM resource ID string that this recommendation object is associated with. */ resourceId?: string; /** - * @member {ResourceScopeType} [resourceScope] Name of a resource type this - * recommendation applies, e.g. Subscription, ServerFarm, Site. Possible - * values include: 'ServerFarm', 'Subscription', 'WebSite' + * Name of a resource type this recommendation applies, e.g. Subscription, ServerFarm, Site. + * Possible values include: 'ServerFarm', 'Subscription', 'WebSite' */ resourceScope?: ResourceScopeType; /** - * @member {string} [ruleName] Unique name of the rule. + * Unique name of the rule. */ ruleName?: string; /** - * @member {string} [displayName] UI friendly name of the rule (may not be - * unique). + * UI friendly name of the rule (may not be unique). */ displayName?: string; /** - * @member {string} [message] Recommendation text. + * Recommendation text. */ message?: string; /** - * @member {NotificationLevel} [level] Level indicating how critical this - * recommendation can impact. Possible values include: 'Critical', 'Warning', - * 'Information', 'NonUrgentSuggestion' + * Level indicating how critical this recommendation can impact. Possible values include: + * 'Critical', 'Warning', 'Information', 'NonUrgentSuggestion' */ level?: NotificationLevel; /** - * @member {Channels} [channels] List of channels that this recommendation - * can apply. Possible values include: 'Notification', 'Api', 'Email', - * 'Webhook', 'All' + * List of channels that this recommendation can apply. Possible values include: 'Notification', + * 'Api', 'Email', 'Webhook', 'All' */ channels?: Channels; /** - * @member {string[]} [categoryTags] The list of category tags that this - * recommendation belongs to. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The list of category tags that this recommendation belongs to. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly categoryTags?: string[]; /** - * @member {string} [actionName] Name of action recommended by this object. + * Name of action recommended by this object. */ actionName?: string; /** - * @member {number} [enabled] True if this recommendation is still valid - * (i.e. "actionable"). False if it is invalid. + * True if this recommendation is still valid (i.e. "actionable"). False if it is invalid. */ enabled?: number; /** - * @member {string[]} [states] The list of states of this recommendation. If - * it's null then it shoud be considered "Active". + * The list of states of this recommendation. If it's null then it should be considered "Active". */ states?: string[]; /** - * @member {Date} [startTime] The beginning time in UTC of a range that the - * recommendation refers to. + * The beginning time in UTC of a range that the recommendation refers to. */ startTime?: Date; /** - * @member {Date} [endTime] The end time in UTC of a range that the - * recommendation refers to. + * The end time in UTC of a range that the recommendation refers to. */ endTime?: Date; /** - * @member {Date} [nextNotificationTime] When to notify this recommendation - * next in UTC. Null means that this will never be notified anymore. + * When to notify this recommendation next in UTC. Null means that this will never be notified + * anymore. */ nextNotificationTime?: Date; /** - * @member {Date} [notificationExpirationTime] Date and time in UTC when this - * notification expires. + * Date and time in UTC when this notification expires. */ notificationExpirationTime?: Date; /** - * @member {Date} [notifiedTime] Last timestamp in UTC this instance was - * actually notified. Null means that this recommendation hasn't been - * notified yet. + * Last timestamp in UTC this instance was actually notified. Null means that this recommendation + * hasn't been notified yet. */ notifiedTime?: Date; /** - * @member {number} [score] A metric value measured by the rule. + * A metric value measured by the rule. */ score?: number; /** - * @member {boolean} [isDynamic] True if this is associated with a - * dynamically added rule + * True if this is associated with a dynamically added rule */ isDynamic?: boolean; /** - * @member {string} [extensionName] Extension name of the portal if exists. + * Extension name of the portal if exists. */ extensionName?: string; /** - * @member {string} [bladeName] Deep link to a blade on the portal. + * Deep link to a blade on the portal. */ bladeName?: string; /** - * @member {string} [forwardLink] Forward link to an external document - * associated with the rule. + * Forward link to an external document associated with the rule. */ forwardLink?: string; } /** - * @interface - * An interface representing RecommendationRule. * Represents a recommendation rule that the recommendation engine can perform. - * - * @extends ProxyOnlyResource */ export interface RecommendationRule extends ProxyOnlyResource { /** - * @member {string} [recommendationName] Unique name of the rule. + * Unique name of the rule. */ recommendationName?: string; /** - * @member {string} [displayName] UI friendly name of the rule. + * UI friendly name of the rule. */ displayName?: string; /** - * @member {string} [message] Localized name of the rule (Good for UI). + * Localized name of the rule (Good for UI). */ message?: string; /** - * @member {string} [recommendationId] Recommendation ID of an associated - * recommendation object tied to the rule, if exists. + * Recommendation ID of an associated recommendation object tied to the rule, if exists. * If such an object doesn't exist, it is set to null. */ recommendationId?: string; /** - * @member {string} [description] Localized detailed description of the rule. + * Localized detailed description of the rule. */ description?: string; /** - * @member {string} [actionName] Name of action that is recommended by this - * rule in string. + * Name of action that is recommended by this rule in string. */ actionName?: string; /** - * @member {NotificationLevel} [level] Level of impact indicating how - * critical this rule is. Possible values include: 'Critical', 'Warning', - * 'Information', 'NonUrgentSuggestion' + * Level of impact indicating how critical this rule is. Possible values include: 'Critical', + * 'Warning', 'Information', 'NonUrgentSuggestion' */ level?: NotificationLevel; /** - * @member {Channels} [channels] List of available channels that this rule - * applies. Possible values include: 'Notification', 'Api', 'Email', - * 'Webhook', 'All' + * List of available channels that this rule applies. Possible values include: 'Notification', + * 'Api', 'Email', 'Webhook', 'All' */ channels?: Channels; /** - * @member {string[]} [categoryTags] The list of category tags that this - * recommendation rule belongs to. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The list of category tags that this recommendation rule belongs to. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly categoryTags?: string[]; /** - * @member {boolean} [isDynamic] True if this is associated with a - * dynamically added rule + * True if this is associated with a dynamically added rule */ isDynamic?: boolean; /** - * @member {string} [extensionName] Extension name of the portal if exists. - * Applicable to dynamic rule only. + * Extension name of the portal if exists. Applicable to dynamic rule only. */ extensionName?: string; /** - * @member {string} [bladeName] Deep link to a blade on the portal. - * Applicable to dynamic rule only. + * Deep link to a blade on the portal. Applicable to dynamic rule only. */ bladeName?: string; /** - * @member {string} [forwardLink] Forward link to an external document - * associated with the rule. Applicable to dynamic rule only. + * Forward link to an external document associated with the rule. Applicable to dynamic rule + * only. */ forwardLink?: string; } /** - * @interface - * An interface representing BillingMeter. - * App Service billing entity that contains information about meter which the - * Azure billing system utilizes to charge users for services. - * - * @extends ProxyOnlyResource + * App Service billing entity that contains information about meter which the Azure billing system + * utilizes to charge users for services. */ export interface BillingMeter extends ProxyOnlyResource { /** - * @member {string} [meterId] Meter GUID onboarded in Commerce + * Meter GUID onboarded in Commerce */ meterId?: string; /** - * @member {string} [billingLocation] Azure Location of billable resource + * Azure Location of billable resource */ billingLocation?: string; /** - * @member {string} [shortName] Short Name from App Service Azure pricing - * Page + * Short Name from App Service Azure pricing Page */ shortName?: string; /** - * @member {string} [friendlyName] Friendly name of the meter + * Friendly name of the meter */ friendlyName?: string; /** - * @member {string} [resourceType] App Service ResourceType meter used for + * App Service ResourceType meter used for */ resourceType?: string; /** - * @member {string} [osType] App Service OS type meter used for + * App Service OS type meter used for */ osType?: string; } /** - * @interface - * An interface representing CsmMoveResourceEnvelope. - * Object with a list of the resources that need to be moved and the resource - * group they should be moved to. - * + * Object with a list of the resources that need to be moved and the resource group they should be + * moved to. */ export interface CsmMoveResourceEnvelope { - /** - * @member {string} [targetResourceGroup] - */ targetResourceGroup?: string; - /** - * @member {string[]} [resources] - */ resources?: string[]; } /** - * @interface - * An interface representing GeoRegion. * Geographical region. - * - * @extends ProxyOnlyResource */ export interface GeoRegion extends ProxyOnlyResource { /** - * @member {string} [description] Region description. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Region description. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly description?: string; /** - * @member {string} [displayName] Display name for region. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Display name for region. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly displayName?: string; } /** - * @interface - * An interface representing HostingEnvironmentDeploymentInfo. * Information needed to create resources on an App Service Environment. - * */ export interface HostingEnvironmentDeploymentInfo { /** - * @member {string} [name] Name of the App Service Environment. + * Name of the App Service Environment. */ name?: string; /** - * @member {string} [location] Location of the App Service Environment. + * Location of the App Service Environment. */ location?: string; } /** - * @interface - * An interface representing DeploymentLocations. * List of available locations (regions or App Service Environments) for * deployment of App Service resources. - * */ export interface DeploymentLocations { /** - * @member {GeoRegion[]} [locations] Available regions. + * Available regions. */ locations?: GeoRegion[]; /** - * @member {AppServiceEnvironment[]} [hostingEnvironments] Available App - * Service Environments with full descriptions of the environments. + * Available App Service Environments with full descriptions of the environments. */ hostingEnvironments?: AppServiceEnvironment[]; /** - * @member {HostingEnvironmentDeploymentInfo[]} - * [hostingEnvironmentDeploymentInfos] Available App Service Environments - * with basic information. + * Available App Service Environments with basic information. */ hostingEnvironmentDeploymentInfos?: HostingEnvironmentDeploymentInfo[]; } /** - * @interface - * An interface representing GlobalCsmSkuDescription. * A Global SKU Description. - * */ export interface GlobalCsmSkuDescription { /** - * @member {string} [name] Name of the resource SKU. + * Name of the resource SKU. */ name?: string; /** - * @member {string} [tier] Service Tier of the resource SKU. + * Service Tier of the resource SKU. */ tier?: string; /** - * @member {string} [size] Size specifier of the resource SKU. + * Size specifier of the resource SKU. */ size?: string; /** - * @member {string} [family] Family code of the resource SKU. + * Family code of the resource SKU. */ family?: string; /** - * @member {SkuCapacity} [capacity] Min, max, and default scale values of the - * SKU. + * Min, max, and default scale values of the SKU. */ capacity?: SkuCapacity; /** - * @member {string[]} [locations] Locations of the SKU. + * Locations of the SKU. */ locations?: string[]; /** - * @member {Capability[]} [capabilities] Capabilities of the SKU, e.g., is - * traffic manager enabled? + * Capabilities of the SKU, e.g., is traffic manager enabled? */ capabilities?: Capability[]; } /** - * @interface - * An interface representing PremierAddOnOffer. * Premier add-on offer. - * - * @extends ProxyOnlyResource */ export interface PremierAddOnOffer extends ProxyOnlyResource { /** - * @member {string} [sku] Premier add on SKU. + * Premier add on SKU. */ sku?: string; /** - * @member {string} [product] Premier add on offer Product. + * Premier add on offer Product. */ product?: string; /** - * @member {string} [vendor] Premier add on offer Vendor. + * Premier add on offer Vendor. */ vendor?: string; /** - * @member {boolean} [promoCodeRequired] true if promotion code - * is required; otherwise, false. + * true if promotion code is required; otherwise, false. */ promoCodeRequired?: boolean; /** - * @member {number} [quota] Premier add on offer Quota. + * Premier add on offer Quota. */ quota?: number; /** - * @member {AppServicePlanRestrictions} [webHostingPlanRestrictions] App - * Service plans this offer is restricted to. Possible values include: - * 'None', 'Free', 'Shared', 'Basic', 'Standard', 'Premium' + * App Service plans this offer is restricted to. Possible values include: 'None', 'Free', + * 'Shared', 'Basic', 'Standard', 'Premium' */ webHostingPlanRestrictions?: AppServicePlanRestrictions; /** - * @member {string} [privacyPolicyUrl] Privacy policy URL. + * Privacy policy URL. */ privacyPolicyUrl?: string; /** - * @member {string} [legalTermsUrl] Legal terms URL. + * Legal terms URL. */ legalTermsUrl?: string; /** - * @member {string} [marketplacePublisher] Marketplace publisher. + * Marketplace publisher. */ marketplacePublisher?: string; /** - * @member {string} [marketplaceOffer] Marketplace offer. + * Marketplace offer. */ marketplaceOffer?: string; } /** - * @interface - * An interface representing ResourceNameAvailability. - * Information regarding availbility of a resource name. - * + * Information regarding availability of a resource name. */ export interface ResourceNameAvailability { /** - * @member {boolean} [nameAvailable] true indicates name is - * valid and available. false indicates the name is invalid, - * unavailable, or both. + * true indicates name is valid and available. false indicates the name + * is invalid, unavailable, or both. */ nameAvailable?: boolean; /** - * @member {InAvailabilityReasonType} [reason] Invalid indicates - * the name provided does not match Azure App Service naming requirements. - * AlreadyExists indicates that the name is already in use and - * is therefore unavailable. Possible values include: 'Invalid', - * 'AlreadyExists' + * Invalid indicates the name provided does not match Azure App Service naming + * requirements. AlreadyExists indicates that the name is already in use and is + * therefore unavailable. Possible values include: 'Invalid', 'AlreadyExists' */ reason?: InAvailabilityReasonType; /** - * @member {string} [message] If reason == invalid, provide the user with the - * reason why the given name is invalid, and provide the resource naming - * requirements so that the user can select a valid name. If reason == - * AlreadyExists, explain that resource name is already in use, and direct - * them to select a different name. + * If reason == invalid, provide the user with the reason why the given name is invalid, and + * provide the resource naming requirements so that the user can select a valid name. If reason + * == AlreadyExists, explain that resource name is already in use, and direct them to select a + * different name. */ message?: string; } /** - * @interface - * An interface representing ResourceNameAvailabilityRequest. * Resource name availability request content. - * */ export interface ResourceNameAvailabilityRequest { /** - * @member {string} name Resource name to verify. + * Resource name to verify. */ name: string; /** - * @member {CheckNameResourceTypes} type Resource type used for verification. - * Possible values include: 'Site', 'Slot', 'HostingEnvironment', - * 'PublishingUser', 'Microsoft.Web/sites', 'Microsoft.Web/sites/slots', + * Resource type used for verification. Possible values include: 'Site', 'Slot', + * 'HostingEnvironment', 'PublishingUser', 'Microsoft.Web/sites', 'Microsoft.Web/sites/slots', * 'Microsoft.Web/hostingEnvironments', 'Microsoft.Web/publishingUsers' */ type: CheckNameResourceTypes; /** - * @member {boolean} [isFqdn] Is fully qualified domain name. + * Is fully qualified domain name. */ isFqdn?: boolean; } /** - * @interface - * An interface representing SkuInfos. * Collection of SKU information. - * */ export interface SkuInfos { /** - * @member {string} [resourceType] Resource type that this SKU applies to. + * Resource type that this SKU applies to. */ resourceType?: string; /** - * @member {GlobalCsmSkuDescription[]} [skus] List of SKUs the subscription - * is able to use. + * List of SKUs the subscription is able to use. */ skus?: GlobalCsmSkuDescription[]; } /** - * @interface - * An interface representing SourceControl. * The source control OAuth token. - * - * @extends ProxyOnlyResource */ export interface SourceControl extends ProxyOnlyResource { /** - * @member {string} [token] OAuth access token. + * OAuth access token. */ token?: string; /** - * @member {string} [tokenSecret] OAuth access token secret. + * OAuth access token secret. */ tokenSecret?: string; /** - * @member {string} [refreshToken] OAuth refresh token. + * OAuth refresh token. */ refreshToken?: string; /** - * @member {Date} [expirationTime] OAuth token expiration. + * OAuth token expiration. */ expirationTime?: Date; } /** - * @interface - * An interface representing ValidateRequest. + * Container settings validation request context + */ +export interface ValidateContainerSettingsRequest { + /** + * Base URL of the container registry + */ + baseUrl?: string; + /** + * Username for to access the container registry + */ + username?: string; + /** + * Password for to access the container registry + */ + password?: string; + /** + * Repository name (image name) + */ + repository?: string; + /** + * Image tag + */ + tag?: string; + /** + * Platform (windows or linux) + */ + platform?: string; +} + +/** * Resource validation request content. - * */ export interface ValidateRequest { /** - * @member {string} name Resource name to verify. + * Resource name to verify. */ name: string; /** - * @member {ValidateResourceTypes} type Resource type used for verification. - * Possible values include: 'ServerFarm', 'Site' + * Resource type used for verification. Possible values include: 'ServerFarm', 'Site' */ type: ValidateResourceTypes; /** - * @member {string} location Expected location of the resource. + * Expected location of the resource. */ location: string; /** - * @member {string} [serverFarmId] ARM resource ID of an App Service plan - * that would host the app. + * ARM resource ID of an App Service plan that would host the app. */ serverFarmId?: string; /** - * @member {string} [skuName] Name of the target SKU for the App Service - * plan. + * Name of the target SKU for the App Service plan. */ skuName?: string; /** - * @member {boolean} [needLinuxWorkers] true if App Service plan - * is for Linux workers; otherwise, false. + * true if App Service plan is for Linux workers; otherwise, false. */ needLinuxWorkers?: boolean; /** - * @member {boolean} [isSpot] true if App Service plan is for - * Spot instances; otherwise, false. + * true if App Service plan is for Spot instances; otherwise, false. */ isSpot?: boolean; /** - * @member {number} [capacity] Target capacity of the App Service plan - * (number of VM's). + * Target capacity of the App Service plan (number of VMs). */ capacity?: number; /** - * @member {string} [hostingEnvironment] Name of App Service Environment - * where app or App Service plan should be created. + * Name of App Service Environment where app or App Service plan should be created. */ hostingEnvironment?: string; /** - * @member {boolean} [isXenon] true if App Service plan is - * running as a windows container + * true if App Service plan is running as a windows container */ isXenon?: boolean; } /** - * @interface - * An interface representing ValidateResponseError. * Error details for when validation fails. - * */ export interface ValidateResponseError { /** - * @member {string} [code] Validation error code. + * Validation error code. */ code?: string; /** - * @member {string} [message] Validation error message. + * Validation error message. */ message?: string; } /** - * @interface - * An interface representing ValidateResponse. * Describes the result of resource validation. - * */ export interface ValidateResponse { /** - * @member {string} [status] Result of validation. + * Result of validation. */ status?: string; /** - * @member {ValidateResponseError} [error] Error details for the case when - * validation fails. + * Error details for the case when validation fails. */ error?: ValidateResponseError; } /** - * @interface - * An interface representing VnetParameters. * The required set of inputs to validate a VNET - * - * @extends ProxyOnlyResource */ export interface VnetParameters extends ProxyOnlyResource { /** - * @member {string} [vnetResourceGroup] The Resource Group of the VNET to be - * validated + * The Resource Group of the VNET to be validated */ vnetResourceGroup?: string; /** - * @member {string} [vnetName] The name of the VNET to be validated + * The name of the VNET to be validated */ vnetName?: string; /** - * @member {string} [vnetSubnetName] The subnet name to be validated + * The subnet name to be validated */ vnetSubnetName?: string; } /** - * @interface - * An interface representing VnetValidationTestFailure. * A class that describes a test that failed during NSG and UDR validation. - * - * @extends ProxyOnlyResource */ export interface VnetValidationTestFailure extends ProxyOnlyResource { /** - * @member {string} [testName] The name of the test that failed. + * The name of the test that failed. */ testName?: string; /** - * @member {string} [details] The details of what caused the failure, e.g. - * the blocking rule name, etc. + * The details of what caused the failure, e.g. the blocking rule name, etc. */ details?: string; } /** - * @interface - * An interface representing VnetValidationFailureDetails. * A class that describes the reason for a validation failure. - * - * @extends ProxyOnlyResource */ export interface VnetValidationFailureDetails extends ProxyOnlyResource { /** - * @member {boolean} [failed] A flag describing whether or not validation - * failed. + * A flag describing whether or not validation failed. */ failed?: boolean; /** - * @member {VnetValidationTestFailure[]} [failedTests] A list of tests that - * failed in the validation. + * A list of tests that failed in the validation. */ failedTests?: VnetValidationTestFailure[]; } /** - * @interface - * An interface representing FileSystemApplicationLogsConfig. * Application logs to file system configuration. - * */ export interface FileSystemApplicationLogsConfig { /** - * @member {LogLevel} [level] Log level. Possible values include: 'Off', - * 'Verbose', 'Information', 'Warning', 'Error'. Default value: 'Off' . + * Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error'. + * Default value: 'Off'. */ level?: LogLevel; } /** - * @interface - * An interface representing AzureTableStorageApplicationLogsConfig. * Application logs to Azure table storage configuration. - * */ export interface AzureTableStorageApplicationLogsConfig { /** - * @member {LogLevel} [level] Log level. Possible values include: 'Off', - * 'Verbose', 'Information', 'Warning', 'Error' + * Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error' */ level?: LogLevel; /** - * @member {string} sasUrl SAS URL to an Azure table with add/query/delete - * permissions. + * SAS URL to an Azure table with add/query/delete permissions. */ sasUrl: string; } /** - * @interface - * An interface representing AzureBlobStorageApplicationLogsConfig. * Application logs azure blob storage configuration. - * */ export interface AzureBlobStorageApplicationLogsConfig { /** - * @member {LogLevel} [level] Log level. Possible values include: 'Off', - * 'Verbose', 'Information', 'Warning', 'Error' + * Log level. Possible values include: 'Off', 'Verbose', 'Information', 'Warning', 'Error' */ level?: LogLevel; /** - * @member {string} [sasUrl] SAS url to a azure blob container with - * read/write/list/delete permissions. + * SAS url to a azure blob container with read/write/list/delete permissions. */ sasUrl?: string; /** - * @member {number} [retentionInDays] Retention in days. + * Retention in days. * Remove blobs older than X days. * 0 or lower means no retention. */ @@ -5503,1799 +4477,1449 @@ export interface AzureBlobStorageApplicationLogsConfig { } /** - * @interface - * An interface representing ApplicationLogsConfig. * Application logs configuration. - * */ export interface ApplicationLogsConfig { /** - * @member {FileSystemApplicationLogsConfig} [fileSystem] Application logs to - * file system configuration. + * Application logs to file system configuration. */ fileSystem?: FileSystemApplicationLogsConfig; /** - * @member {AzureTableStorageApplicationLogsConfig} [azureTableStorage] * Application logs to azure table storage configuration. */ azureTableStorage?: AzureTableStorageApplicationLogsConfig; /** - * @member {AzureBlobStorageApplicationLogsConfig} [azureBlobStorage] * Application logs to blob storage configuration. */ azureBlobStorage?: AzureBlobStorageApplicationLogsConfig; } /** - * @interface - * An interface representing AzureBlobStorageHttpLogsConfig. * Http logs to azure blob storage configuration. - * */ export interface AzureBlobStorageHttpLogsConfig { /** - * @member {string} [sasUrl] SAS url to a azure blob container with - * read/write/list/delete permissions. + * SAS url to a azure blob container with read/write/list/delete permissions. */ sasUrl?: string; /** - * @member {number} [retentionInDays] Retention in days. + * Retention in days. * Remove blobs older than X days. * 0 or lower means no retention. */ retentionInDays?: number; /** - * @member {boolean} [enabled] True if configuration is enabled, false if it - * is disabled and null if configuration is not set. + * True if configuration is enabled, false if it is disabled and null if configuration is not + * set. */ enabled?: boolean; } /** - * @interface - * An interface representing AzureStoragePropertyDictionaryResource. * AzureStorageInfo dictionary resource. - * - * @extends ProxyOnlyResource */ export interface AzureStoragePropertyDictionaryResource extends ProxyOnlyResource { /** - * @member {{ [propertyName: string]: AzureStorageInfoValue }} [properties] * Azure storage accounts. */ properties?: { [propertyName: string]: AzureStorageInfoValue }; } /** - * @interface - * An interface representing DatabaseBackupSetting. * Database backup settings. - * */ export interface DatabaseBackupSetting { /** - * @member {DatabaseType} databaseType Database type (e.g. SqlAzure / MySql). - * Possible values include: 'SqlAzure', 'MySql', 'LocalMySql', 'PostgreSql' + * Database type (e.g. SqlAzure / MySql). Possible values include: 'SqlAzure', 'MySql', + * 'LocalMySql', 'PostgreSql' */ databaseType: DatabaseType; - /** - * @member {string} [name] - */ name?: string; /** - * @member {string} [connectionStringName] Contains a connection string name - * that is linked to the SiteConfig.ConnectionStrings. + * Contains a connection string name that is linked to the SiteConfig.ConnectionStrings. * This is used during restore with overwrite connection strings options. */ connectionStringName?: string; /** - * @member {string} [connectionString] Contains a connection string to a - * database which is being backed up or restored. If the restore should - * happen to a new database, the database name inside is the new one. + * Contains a connection string to a database which is being backed up or restored. If the + * restore should happen to a new database, the database name inside is the new one. */ connectionString?: string; } /** - * @interface - * An interface representing BackupItem. * Backup description. - * - * @extends ProxyOnlyResource */ export interface BackupItem extends ProxyOnlyResource { /** - * @member {number} [backupId] Id of the backup. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Id of the backup. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly backupId?: number; /** - * @member {string} [storageAccountUrl] SAS URL for the storage account - * container which contains this backup. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * SAS URL for the storage account container which contains this backup. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly storageAccountUrl?: string; /** - * @member {string} [blobName] Name of the blob which contains data for this - * backup. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Name of the blob which contains data for this backup. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly blobName?: string; /** - * @member {string} [backupItemName] Name of this backup. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Name of this backup. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly backupItemName?: string; /** - * @member {BackupItemStatus} [status] Backup status. Possible values - * include: 'InProgress', 'Failed', 'Succeeded', 'TimedOut', 'Created', - * 'Skipped', 'PartiallySucceeded', 'DeleteInProgress', 'DeleteFailed', - * 'Deleted' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Backup status. Possible values include: 'InProgress', 'Failed', 'Succeeded', 'TimedOut', + * 'Created', 'Skipped', 'PartiallySucceeded', 'DeleteInProgress', 'DeleteFailed', 'Deleted' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly status?: BackupItemStatus; /** - * @member {number} [sizeInBytes] Size of the backup in bytes. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Size of the backup in bytes. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly sizeInBytes?: number; /** - * @member {Date} [created] Timestamp of the backup creation. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Timestamp of the backup creation. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly created?: Date; /** - * @member {string} [log] Details regarding this backup. Might contain an - * error message. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Details regarding this backup. Might contain an error message. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly log?: string; /** - * @member {DatabaseBackupSetting[]} [databases] List of databases included - * in the backup. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * List of databases included in the backup. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly databases?: DatabaseBackupSetting[]; /** - * @member {boolean} [scheduled] True if this backup has been created due to - * a schedule being triggered. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * True if this backup has been created due to a schedule being triggered. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly scheduled?: boolean; /** - * @member {Date} [lastRestoreTimeStamp] Timestamp of a last restore - * operation which used this backup. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Timestamp of a last restore operation which used this backup. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly lastRestoreTimeStamp?: Date; /** - * @member {Date} [finishedTimeStamp] Timestamp when this backup finished. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Timestamp when this backup finished. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly finishedTimeStamp?: Date; /** - * @member {string} [correlationId] Unique correlation identifier. Please use - * this along with the timestamp while communicating with Azure support. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Unique correlation identifier. Please use this along with the timestamp while communicating + * with Azure support. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly correlationId?: string; /** - * @member {number} [websiteSizeInBytes] Size of the original web app which - * has been backed up. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Size of the original web app which has been backed up. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly websiteSizeInBytes?: number; } /** - * @interface - * An interface representing BackupSchedule. - * Description of a backup schedule. Describes how often should be the backup - * performed and what should be the retention policy. - * + * Description of a backup schedule. Describes how often should be the backup performed and what + * should be the retention policy. */ export interface BackupSchedule { /** - * @member {number} frequencyInterval How often the backup should be executed - * (e.g. for weekly backup, this should be set to 7 and FrequencyUnit should - * be set to Day). Default value: 7 . + * How often the backup should be executed (e.g. for weekly backup, this should be set to 7 and + * FrequencyUnit should be set to Day). Default value: 7. */ frequencyInterval: number; /** - * @member {FrequencyUnit} frequencyUnit The unit of time for how often the - * backup should be executed (e.g. for weekly backup, this should be set to - * Day and FrequencyInterval should be set to 7). Possible values include: - * 'Day', 'Hour'. Default value: 'Day' . + * The unit of time for how often the backup should be executed (e.g. for weekly backup, this + * should be set to Day and FrequencyInterval should be set to 7). Possible values include: + * 'Day', 'Hour'. Default value: 'Day'. */ frequencyUnit: FrequencyUnit; /** - * @member {boolean} keepAtLeastOneBackup True if the retention policy should - * always keep at least one backup in the storage account, regardless how old - * it is; false otherwise. Default value: true . + * True if the retention policy should always keep at least one backup in the storage account, + * regardless how old it is; false otherwise. Default value: true. */ keepAtLeastOneBackup: boolean; /** - * @member {number} retentionPeriodInDays After how many days backups should - * be deleted. Default value: 30 . + * After how many days backups should be deleted. Default value: 30. */ retentionPeriodInDays: number; /** - * @member {Date} [startTime] When the schedule should start working. + * When the schedule should start working. */ startTime?: Date; /** - * @member {Date} [lastExecutionTime] Last time when this schedule was - * triggered. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Last time when this schedule was triggered. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly lastExecutionTime?: Date; } /** - * @interface - * An interface representing BackupRequest. * Description of a backup which will be performed. - * - * @extends ProxyOnlyResource */ export interface BackupRequest extends ProxyOnlyResource { /** - * @member {string} [backupName] Name of the backup. + * Name of the backup. */ backupName?: string; /** - * @member {boolean} [enabled] True if the backup schedule is enabled (must - * be included in that case), false if the backup schedule should be - * disabled. + * True if the backup schedule is enabled (must be included in that case), false if the backup + * schedule should be disabled. */ enabled?: boolean; /** - * @member {string} storageAccountUrl SAS URL to the container. + * SAS URL to the container. */ storageAccountUrl: string; /** - * @member {BackupSchedule} [backupSchedule] Schedule for the backup if it is - * executed periodically. + * Schedule for the backup if it is executed periodically. */ backupSchedule?: BackupSchedule; /** - * @member {DatabaseBackupSetting[]} [databases] Databases included in the - * backup. + * Databases included in the backup. */ databases?: DatabaseBackupSetting[]; } /** - * @interface - * An interface representing ConnStringValueTypePair. * Database connection string value to type pair. - * */ export interface ConnStringValueTypePair { /** - * @member {string} value Value of pair. + * Value of pair. */ value: string; /** - * @member {ConnectionStringType} type Type of database. Possible values - * include: 'MySql', 'SQLServer', 'SQLAzure', 'Custom', 'NotificationHub', - * 'ServiceBus', 'EventHub', 'ApiHub', 'DocDb', 'RedisCache', 'PostgreSQL' + * Type of database. Possible values include: 'MySql', 'SQLServer', 'SQLAzure', 'Custom', + * 'NotificationHub', 'ServiceBus', 'EventHub', 'ApiHub', 'DocDb', 'RedisCache', 'PostgreSQL' */ type: ConnectionStringType; } /** - * @interface - * An interface representing ConnectionStringDictionary. * String dictionary resource. - * - * @extends ProxyOnlyResource */ export interface ConnectionStringDictionary extends ProxyOnlyResource { /** - * @member {{ [propertyName: string]: ConnStringValueTypePair }} [properties] * Connection strings. */ properties?: { [propertyName: string]: ConnStringValueTypePair }; } /** - * @interface - * An interface representing ContinuousWebJob. * Continuous Web Job Information. - * - * @extends ProxyOnlyResource */ export interface ContinuousWebJob extends ProxyOnlyResource { /** - * @member {ContinuousWebJobStatus} [status] Job status. Possible values - * include: 'Initializing', 'Starting', 'Running', 'PendingRestart', + * Job status. Possible values include: 'Initializing', 'Starting', 'Running', 'PendingRestart', * 'Stopped' */ status?: ContinuousWebJobStatus; /** - * @member {string} [detailedStatus] Detailed status. + * Detailed status. */ detailedStatus?: string; /** - * @member {string} [logUrl] Log URL. + * Log URL. */ logUrl?: string; /** - * @member {string} [runCommand] Run command. + * Run command. */ runCommand?: string; /** - * @member {string} [url] Job URL. + * Job URL. */ url?: string; /** - * @member {string} [extraInfoUrl] Extra Info URL. + * Extra Info URL. */ extraInfoUrl?: string; /** - * @member {WebJobType} [webJobType] Job type. Possible values include: - * 'Continuous', 'Triggered' + * Job type. Possible values include: 'Continuous', 'Triggered' */ webJobType?: WebJobType; /** - * @member {string} [error] Error information. + * Error information. */ error?: string; /** - * @member {boolean} [usingSdk] Using SDK? + * Using SDK? */ usingSdk?: boolean; /** - * @member {{ [propertyName: string]: any }} [settings] Job settings. + * Job settings. */ settings?: { [propertyName: string]: any }; } /** - * @interface - * An interface representing CsmPublishingProfileOptions. * Publishing options for requested profile. - * */ export interface CsmPublishingProfileOptions { /** - * @member {PublishingProfileFormat} [format] Name of the format. Valid - * values are: + * Name of the format. Valid values are: * FileZilla3 * WebDeploy -- default * Ftp. Possible values include: 'FileZilla3', 'WebDeploy', 'Ftp' */ format?: PublishingProfileFormat; /** - * @member {boolean} [includeDisasterRecoveryEndpoints] Include the - * DisasterRecover endpoint if true + * Include the DisasterRecover endpoint if true */ includeDisasterRecoveryEndpoints?: boolean; } /** - * @interface - * An interface representing CsmSlotEntity. * Deployment slot parameters. - * */ export interface CsmSlotEntity { /** - * @member {string} targetSlot Destination deployment slot during swap - * operation. + * Destination deployment slot during swap operation. */ targetSlot: string; /** - * @member {boolean} preserveVnet true to preserve Virtual - * Network to the slot during swap; otherwise, false. + * true to preserve Virtual Network to the slot during swap; otherwise, + * false. */ preserveVnet: boolean; } /** - * @interface - * An interface representing CustomHostnameAnalysisResult. * Custom domain analysis. - * - * @extends ProxyOnlyResource */ export interface CustomHostnameAnalysisResult extends ProxyOnlyResource { /** - * @member {boolean} [isHostnameAlreadyVerified] true if - * hostname is already verified; otherwise, false. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * true if hostname is already verified; otherwise, false. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly isHostnameAlreadyVerified?: boolean; /** - * @member {DnsVerificationTestResult} [customDomainVerificationTest] DNS - * verification test result. Possible values include: 'Passed', 'Failed', - * 'Skipped' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * DNS verification test result. Possible values include: 'Passed', 'Failed', 'Skipped' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly customDomainVerificationTest?: DnsVerificationTestResult; /** - * @member {ErrorEntity} [customDomainVerificationFailureInfo] Raw failure - * information if DNS verification fails. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Raw failure information if DNS verification fails. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly customDomainVerificationFailureInfo?: ErrorEntity; /** - * @member {boolean} [hasConflictOnScaleUnit] true if there is a - * conflict on a scale unit; otherwise, false. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * true if there is a conflict on a scale unit; otherwise, false. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly hasConflictOnScaleUnit?: boolean; /** - * @member {boolean} [hasConflictAcrossSubscription] true if - * htere is a conflict across subscriptions; otherwise, false. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * true if there is a conflict across subscriptions; otherwise, false. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly hasConflictAcrossSubscription?: boolean; /** - * @member {string} [conflictingAppResourceId] Name of the conflicting app on - * scale unit if it's within the same subscription. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Name of the conflicting app on scale unit if it's within the same subscription. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly conflictingAppResourceId?: string; /** - * @member {string[]} [cNameRecords] CName records controller can see for - * this hostname. + * CName records controller can see for this hostname. */ cNameRecords?: string[]; /** - * @member {string[]} [txtRecords] TXT records controller can see for this - * hostname. + * TXT records controller can see for this hostname. */ txtRecords?: string[]; /** - * @member {string[]} [aRecords] A records controller can see for this - * hostname. + * A records controller can see for this hostname. */ aRecords?: string[]; /** - * @member {string[]} [alternateCNameRecords] Alternate CName records - * controller can see for this hostname. + * Alternate CName records controller can see for this hostname. */ alternateCNameRecords?: string[]; /** - * @member {string[]} [alternateTxtRecords] Alternate TXT records controller - * can see for this hostname. + * Alternate TXT records controller can see for this hostname. */ alternateTxtRecords?: string[]; } /** - * @interface - * An interface representing DeletedAppRestoreRequest. * Details about restoring a deleted app. - * - * @extends ProxyOnlyResource */ export interface DeletedAppRestoreRequest extends ProxyOnlyResource { /** - * @member {string} [deletedSiteId] ARM resource ID of the deleted app. - * Example: + * ARM resource ID of the deleted app. Example: * /subscriptions/{subId}/providers/Microsoft.Web/deletedSites/{deletedSiteId} */ deletedSiteId?: string; /** - * @member {boolean} [recoverConfiguration] If true, deleted site - * configuration, in addition to content, will be restored. + * If true, deleted site configuration, in addition to content, will be restored. */ recoverConfiguration?: boolean; /** - * @member {string} [snapshotTime] Point in time to restore the deleted app - * from, formatted as a DateTime string. + * Point in time to restore the deleted app from, formatted as a DateTime string. * If unspecified, default value is the time that the app was deleted. */ snapshotTime?: string; /** - * @member {boolean} [useDRSecondary] If true, the snapshot is retrieved from - * DRSecondary endpoint. + * If true, the snapshot is retrieved from DRSecondary endpoint. */ useDRSecondary?: boolean; } /** - * @interface - * An interface representing Deployment. - * User crendentials used for publishing activity. - * - * @extends ProxyOnlyResource + * User credentials used for publishing activity. */ export interface Deployment extends ProxyOnlyResource { /** - * @member {number} [status] Deployment status. + * Deployment status. */ status?: number; /** - * @member {string} [message] Details about deployment status. + * Details about deployment status. */ message?: string; /** - * @member {string} [author] Who authored the deployment. + * Who authored the deployment. */ author?: string; /** - * @member {string} [deployer] Who performed the deployment. + * Who performed the deployment. */ deployer?: string; /** - * @member {string} [authorEmail] Author email. + * Author email. */ authorEmail?: string; /** - * @member {Date} [startTime] Start time. + * Start time. */ startTime?: Date; /** - * @member {Date} [endTime] End time. + * End time. */ endTime?: Date; /** - * @member {boolean} [active] True if deployment is currently active, false - * if completed and null if not started. + * True if deployment is currently active, false if completed and null if not started. */ active?: boolean; /** - * @member {string} [details] Details on deployment. + * Details on deployment. */ details?: string; } /** - * @interface - * An interface representing EnabledConfig. * Enabled configuration. - * */ export interface EnabledConfig { /** - * @member {boolean} [enabled] True if configuration is enabled, false if it - * is disabled and null if configuration is not set. + * True if configuration is enabled, false if it is disabled and null if configuration is not + * set. */ enabled?: boolean; } /** - * @interface - * An interface representing FileSystemHttpLogsConfig. * Http logs to file system configuration. - * */ export interface FileSystemHttpLogsConfig { /** - * @member {number} [retentionInMb] Maximum size in megabytes that http log - * files can use. + * Maximum size in megabytes that http log files can use. * When reached old log files will be removed to make space for new ones. * Value can range between 25 and 100. */ retentionInMb?: number; /** - * @member {number} [retentionInDays] Retention in days. + * Retention in days. * Remove files older than X days. * 0 or lower means no retention. */ retentionInDays?: number; /** - * @member {boolean} [enabled] True if configuration is enabled, false if it - * is disabled and null if configuration is not set. + * True if configuration is enabled, false if it is disabled and null if configuration is not + * set. */ enabled?: boolean; } /** - * @interface - * An interface representing FunctionEnvelope. * Web Job Information. - * - * @extends ProxyOnlyResource */ export interface FunctionEnvelope extends ProxyOnlyResource { /** - * @member {string} [functionAppId] Function App ID. + * Function App ID. */ functionAppId?: string; /** - * @member {string} [scriptRootPathHref] Script root path URI. + * Script root path URI. */ scriptRootPathHref?: string; /** - * @member {string} [scriptHref] Script URI. + * Script URI. */ scriptHref?: string; /** - * @member {string} [configHref] Config URI. + * Config URI. */ configHref?: string; /** - * @member {string} [secretsFileHref] Secrets file URI. + * Secrets file URI. */ secretsFileHref?: string; /** - * @member {string} [href] Function URI. + * Function URI. */ href?: string; /** - * @member {any} [config] Config information. + * Config information. */ config?: any; /** - * @member {{ [propertyName: string]: string }} [files] File list. + * File list. */ files?: { [propertyName: string]: string }; /** - * @member {string} [testData] Test data used when testing via the Azure - * Portal. + * Test data used when testing via the Azure Portal. */ testData?: string; } /** - * @interface - * An interface representing FunctionSecrets. * Function secrets. - * - * @extends ProxyOnlyResource */ export interface FunctionSecrets extends ProxyOnlyResource { /** - * @member {string} [key] Secret key. + * Secret key. */ key?: string; /** - * @member {string} [triggerUrl] Trigger URL. + * Trigger URL. */ triggerUrl?: string; } /** - * @interface - * An interface representing HostNameBinding. * A hostname binding object. - * - * @extends ProxyOnlyResource */ export interface HostNameBinding extends ProxyOnlyResource { /** - * @member {string} [siteName] App Service app name. + * App Service app name. */ siteName?: string; /** - * @member {string} [domainId] Fully qualified ARM domain resource URI. + * Fully qualified ARM domain resource URI. */ domainId?: string; /** - * @member {string} [azureResourceName] Azure resource name. + * Azure resource name. */ azureResourceName?: string; /** - * @member {AzureResourceType} [azureResourceType] Azure resource type. - * Possible values include: 'Website', 'TrafficManager' + * Azure resource type. Possible values include: 'Website', 'TrafficManager' */ azureResourceType?: AzureResourceType; /** - * @member {CustomHostNameDnsRecordType} [customHostNameDnsRecordType] Custom - * DNS record type. Possible values include: 'CName', 'A' + * Custom DNS record type. Possible values include: 'CName', 'A' */ customHostNameDnsRecordType?: CustomHostNameDnsRecordType; /** - * @member {HostNameType} [hostNameType] Hostname type. Possible values - * include: 'Verified', 'Managed' + * Hostname type. Possible values include: 'Verified', 'Managed' */ hostNameType?: HostNameType; /** - * @member {SslState} [sslState] SSL type. Possible values include: - * 'Disabled', 'SniEnabled', 'IpBasedEnabled' + * SSL type. Possible values include: 'Disabled', 'SniEnabled', 'IpBasedEnabled' */ sslState?: SslState; /** - * @member {string} [thumbprint] SSL certificate thumbprint + * SSL certificate thumbprint */ thumbprint?: string; /** - * @member {string} [virtualIP] Virtual IP address assigned to the hostname - * if IP based SSL is enabled. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Virtual IP address assigned to the hostname if IP based SSL is enabled. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly virtualIP?: string; } /** - * @interface - * An interface representing HttpLogsConfig. * Http logs configuration. - * */ export interface HttpLogsConfig { /** - * @member {FileSystemHttpLogsConfig} [fileSystem] Http logs to file system - * configuration. + * Http logs to file system configuration. */ fileSystem?: FileSystemHttpLogsConfig; /** - * @member {AzureBlobStorageHttpLogsConfig} [azureBlobStorage] Http logs to - * azure blob storage configuration. + * Http logs to azure blob storage configuration. */ azureBlobStorage?: AzureBlobStorageHttpLogsConfig; } /** - * @interface - * An interface representing MSDeploy. * MSDeploy ARM PUT information - * - * @extends ProxyOnlyResource */ export interface MSDeploy extends ProxyOnlyResource { /** - * @member {string} [packageUri] Package URI + * Package URI */ packageUri?: string; /** - * @member {string} [connectionString] SQL Connection String + * SQL Connection String */ connectionString?: string; /** - * @member {string} [dbType] Database Type + * Database Type */ dbType?: string; /** - * @member {string} [setParametersXmlFileUri] URI of MSDeploy Parameters - * file. Must not be set if SetParameters is used. + * URI of MSDeploy Parameters file. Must not be set if SetParameters is used. */ setParametersXmlFileUri?: string; /** - * @member {{ [propertyName: string]: string }} [setParameters] MSDeploy - * Parameters. Must not be set if SetParametersXmlFileUri is used. + * MSDeploy Parameters. Must not be set if SetParametersXmlFileUri is used. */ setParameters?: { [propertyName: string]: string }; /** - * @member {boolean} [skipAppData] Controls whether the MSDeploy operation - * skips the App_Data directory. - * If set to true, the existing App_Data directory on the - * destination - * will not be deleted, and any App_Data directory in the source will be - * ignored. + * Controls whether the MSDeploy operation skips the App_Data directory. + * If set to true, the existing App_Data directory on the destination + * will not be deleted, and any App_Data directory in the source will be ignored. * Setting is false by default. */ skipAppData?: boolean; /** - * @member {boolean} [appOffline] Sets the AppOffline rule while the MSDeploy - * operation executes. + * Sets the AppOffline rule while the MSDeploy operation executes. * Setting is false by default. */ appOffline?: boolean; } /** - * @interface - * An interface representing MSDeployLogEntry. * MSDeploy log entry - * */ export interface MSDeployLogEntry { /** - * @member {Date} [time] Timestamp of log entry - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Timestamp of log entry + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly time?: Date; /** - * @member {MSDeployLogEntryType} [type] Log entry type. Possible values - * include: 'Message', 'Warning', 'Error' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Log entry type. Possible values include: 'Message', 'Warning', 'Error' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly type?: MSDeployLogEntryType; /** - * @member {string} [message] Log entry message - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Log entry message + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly message?: string; } /** - * @interface - * An interface representing MSDeployLog. * MSDeploy log - * - * @extends ProxyOnlyResource */ export interface MSDeployLog extends ProxyOnlyResource { /** - * @member {MSDeployLogEntry[]} [entries] List of log entry messages - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * List of log entry messages + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly entries?: MSDeployLogEntry[]; } /** - * @interface - * An interface representing MSDeployStatus. * MSDeploy ARM response - * - * @extends ProxyOnlyResource */ export interface MSDeployStatus extends ProxyOnlyResource { /** - * @member {string} [deployer] Username of deployer - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Username of deployer + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly deployer?: string; /** - * @member {MSDeployProvisioningState} [provisioningState] Provisioning - * state. Possible values include: 'accepted', 'running', 'succeeded', - * 'failed', 'canceled' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Provisioning state. Possible values include: 'accepted', 'running', 'succeeded', 'failed', + * 'canceled' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: MSDeployProvisioningState; /** - * @member {Date} [startTime] Start time of deploy operation - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Start time of deploy operation + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly startTime?: Date; /** - * @member {Date} [endTime] End time of deploy operation - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * End time of deploy operation + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly endTime?: Date; /** - * @member {boolean} [complete] Whether the deployment operation has - * completed - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Whether the deployment operation has completed + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly complete?: boolean; } /** - * @interface - * An interface representing MigrateMySqlRequest. * MySQL migration request. - * - * @extends ProxyOnlyResource */ export interface MigrateMySqlRequest extends ProxyOnlyResource { /** - * @member {string} connectionString Connection string to the remote MySQL - * database. + * Connection string to the remote MySQL database. */ connectionString: string; /** - * @member {MySqlMigrationType} migrationType The type of migration operation - * to be done. Possible values include: 'LocalToRemote', 'RemoteToLocal' + * The type of migration operation to be done. Possible values include: 'LocalToRemote', + * 'RemoteToLocal' */ migrationType: MySqlMigrationType; } /** - * @interface - * An interface representing MigrateMySqlStatus. * MySQL migration status. - * - * @extends ProxyOnlyResource */ export interface MigrateMySqlStatus extends ProxyOnlyResource { /** - * @member {OperationStatus} [migrationOperationStatus] Status of the - * migration task. Possible values include: 'InProgress', 'Failed', - * 'Succeeded', 'TimedOut', 'Created' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Status of the migration task. Possible values include: 'InProgress', 'Failed', 'Succeeded', + * 'TimedOut', 'Created' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly migrationOperationStatus?: OperationStatus; /** - * @member {string} [operationId] Operation ID for the migration task. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Operation ID for the migration task. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly operationId?: string; /** - * @member {boolean} [localMySqlEnabled] True if the web app has in app MySql - * enabled - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * True if the web app has in app MySql enabled + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly localMySqlEnabled?: boolean; } /** - * @interface - * An interface representing RelayServiceConnectionEntity. * Hybrid Connection for an App Service app. - * - * @extends ProxyOnlyResource */ export interface RelayServiceConnectionEntity extends ProxyOnlyResource { - /** - * @member {string} [entityName] - */ entityName?: string; - /** - * @member {string} [entityConnectionString] - */ entityConnectionString?: string; - /** - * @member {string} [resourceType] - */ resourceType?: string; - /** - * @member {string} [resourceConnectionString] - */ resourceConnectionString?: string; - /** - * @member {string} [hostname] - */ hostname?: string; - /** - * @member {number} [port] - */ port?: number; - /** - * @member {string} [biztalkUri] - */ biztalkUri?: string; } /** - * @interface - * An interface representing NetworkFeatures. - * Full view of network features for an app (presently VNET integration and - * Hybrid Connections). - * - * @extends ProxyOnlyResource + * Full view of network features for an app (presently VNET integration and Hybrid Connections). */ export interface NetworkFeatures extends ProxyOnlyResource { /** - * @member {string} [virtualNetworkName] The Virtual Network name. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The Virtual Network name. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly virtualNetworkName?: string; /** - * @member {VnetInfo} [virtualNetworkConnection] The Virtual Network summary - * view. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The Virtual Network summary view. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly virtualNetworkConnection?: VnetInfo; /** - * @member {RelayServiceConnectionEntity[]} [hybridConnections] The Hybrid - * Connections summary view. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The Hybrid Connections summary view. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly hybridConnections?: RelayServiceConnectionEntity[]; /** - * @member {HybridConnection[]} [hybridConnectionsV2] The Hybrid Connection - * V2 (Service Bus) view. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The Hybrid Connection V2 (Service Bus) view. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly hybridConnectionsV2?: HybridConnection[]; } /** - * @interface - * An interface representing NetworkTrace. * Network trace - * */ export interface NetworkTrace { /** - * @member {string} [path] Local file path for the captured network trace - * file. + * Local file path for the captured network trace file. */ path?: string; /** - * @member {string} [status] Current status of the network trace operation, - * same as Operation.Status (InProgress/Succeeded/Failed). + * Current status of the network trace operation, same as Operation.Status + * (InProgress/Succeeded/Failed). */ status?: string; /** - * @member {string} [message] Detailed message of a network trace operation, - * e.g. error message in case of failure. + * Detailed message of a network trace operation, e.g. error message in case of failure. */ message?: string; } /** - * @interface - * An interface representing PerfMonSample. * Performance monitor sample in a set. - * */ export interface PerfMonSample { /** - * @member {Date} [time] Point in time for which counter was measured. + * Point in time for which counter was measured. */ time?: Date; /** - * @member {string} [instanceName] Name of the server on which the - * measurement is made. + * Name of the server on which the measurement is made. */ instanceName?: string; /** - * @member {number} [value] Value of counter at a certain time. + * Value of counter at a certain time. */ value?: number; } /** - * @interface - * An interface representing PerfMonSet. * Metric information. - * */ export interface PerfMonSet { /** - * @member {string} [name] Unique key name of the counter. + * Unique key name of the counter. */ name?: string; /** - * @member {Date} [startTime] Start time of the period. + * Start time of the period. */ startTime?: Date; /** - * @member {Date} [endTime] End time of the period. + * End time of the period. */ endTime?: Date; /** - * @member {string} [timeGrain] Presented time grain. + * Presented time grain. */ timeGrain?: string; /** - * @member {PerfMonSample[]} [values] Collection of workers that are active - * during this time. + * Collection of workers that are active during this time. */ values?: PerfMonSample[]; } /** - * @interface - * An interface representing PerfMonResponse. * Performance monitor API response. - * */ export interface PerfMonResponse { /** - * @member {string} [code] The response code. + * The response code. */ code?: string; /** - * @member {string} [message] The message. + * The message. */ message?: string; /** - * @member {PerfMonSet} [data] The performance monitor counters. + * The performance monitor counters. */ data?: PerfMonSet; } /** - * @interface - * An interface representing PremierAddOn. * Premier add-on. - * - * @extends Resource */ export interface PremierAddOn extends Resource { /** - * @member {string} [sku] Premier add on SKU. + * Premier add on SKU. */ sku?: string; /** - * @member {string} [product] Premier add on Product. + * Premier add on Product. */ product?: string; /** - * @member {string} [vendor] Premier add on Vendor. + * Premier add on Vendor. */ vendor?: string; /** - * @member {string} [marketplacePublisher] Premier add on Marketplace - * publisher. + * Premier add on Marketplace publisher. */ marketplacePublisher?: string; /** - * @member {string} [marketplaceOffer] Premier add on Marketplace offer. + * Premier add on Marketplace offer. */ marketplaceOffer?: string; } /** - * @interface - * An interface representing PremierAddOnPatchResource. * ARM resource for a PremierAddOn. - * - * @extends ProxyOnlyResource */ export interface PremierAddOnPatchResource extends ProxyOnlyResource { /** - * @member {string} [sku] Premier add on SKU. + * Premier add on SKU. */ sku?: string; /** - * @member {string} [product] Premier add on Product. + * Premier add on Product. */ product?: string; /** - * @member {string} [vendor] Premier add on Vendor. + * Premier add on Vendor. */ vendor?: string; /** - * @member {string} [marketplacePublisher] Premier add on Marketplace - * publisher. + * Premier add on Marketplace publisher. */ marketplacePublisher?: string; /** - * @member {string} [marketplaceOffer] Premier add on Marketplace offer. + * Premier add on Marketplace offer. */ marketplaceOffer?: string; } /** - * @interface - * An interface representing PrivateAccessSubnet. - * Description of a Virtual Network subnet that is useable for private site - * access. - * + * Description of a Virtual Network subnet that is useable for private site access. */ export interface PrivateAccessSubnet { /** - * @member {string} [name] The name of the subnet. + * The name of the subnet. */ name?: string; /** - * @member {number} [key] The key (ID) of the subnet. + * The key (ID) of the subnet. */ key?: number; } /** - * @interface - * An interface representing PrivateAccessVirtualNetwork. * Description of a Virtual Network that is useable for private site access. - * */ export interface PrivateAccessVirtualNetwork { /** - * @member {string} [name] The name of the Virtual Network. + * The name of the Virtual Network. */ name?: string; /** - * @member {number} [key] The key (ID) of the Virtual Network. + * The key (ID) of the Virtual Network. */ key?: number; /** - * @member {string} [resourceId] The ARM uri of the Virtual Network + * The ARM uri of the Virtual Network */ resourceId?: string; /** - * @member {PrivateAccessSubnet[]} [subnets] A List of subnets that access is - * allowed to on this Virtual Network. An empty array (but not null) is - * interpreted to mean that all subnets are allowed within this Virtual - * Network. + * A List of subnets that access is allowed to on this Virtual Network. An empty array (but not + * null) is interpreted to mean that all subnets are allowed within this Virtual Network. */ subnets?: PrivateAccessSubnet[]; } /** - * @interface - * An interface representing PrivateAccess. * Description of the parameters of Private Access for a Web Site. - * - * @extends ProxyOnlyResource */ export interface PrivateAccess extends ProxyOnlyResource { /** - * @member {boolean} [enabled] Whether private access is enabled or not. + * Whether private access is enabled or not. */ enabled?: boolean; /** - * @member {PrivateAccessVirtualNetwork[]} [virtualNetworks] The Virtual - * Networks (and subnets) allowed to access the site privately. + * The Virtual Networks (and subnets) allowed to access the site privately. */ virtualNetworks?: PrivateAccessVirtualNetwork[]; } /** - * @interface - * An interface representing ProcessThreadInfo. * Process Thread Information. - * - * @extends ProxyOnlyResource */ export interface ProcessThreadInfo extends ProxyOnlyResource { /** - * @member {number} [identifier] Site extension ID. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Site extension ID. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly identifier?: number; /** - * @member {string} [href] HRef URI. + * HRef URI. */ href?: string; /** - * @member {string} [process] Process URI. + * Process URI. */ process?: string; /** - * @member {string} [startAddress] Start address. + * Start address. */ startAddress?: string; /** - * @member {number} [currentPriority] Current thread priority. + * Current thread priority. */ currentPriority?: number; /** - * @member {string} [priorityLevel] Thread priority level. + * Thread priority level. */ priorityLevel?: string; /** - * @member {number} [basePriority] Base priority. + * Base priority. */ basePriority?: number; /** - * @member {Date} [startTime] Start time. + * Start time. */ startTime?: Date; /** - * @member {string} [totalProcessorTime] Total processor time. + * Total processor time. */ totalProcessorTime?: string; /** - * @member {string} [userProcessorTime] User processor time. + * User processor time. */ userProcessorTime?: string; /** - * @member {string} [priviledgedProcessorTime] Priviledged processor time. + * Privileged processor time. */ priviledgedProcessorTime?: string; /** - * @member {string} [state] Thread state. + * Thread state. */ state?: string; /** - * @member {string} [waitReason] Wait reason. + * Wait reason. */ waitReason?: string; } /** - * @interface - * An interface representing ProcessModuleInfo. * Process Module Information. - * - * @extends ProxyOnlyResource */ export interface ProcessModuleInfo extends ProxyOnlyResource { /** - * @member {string} [baseAddress] Base address. Used as module identifier in - * ARM resource URI. + * Base address. Used as module identifier in ARM resource URI. */ baseAddress?: string; /** - * @member {string} [fileName] File name. + * File name. */ fileName?: string; /** - * @member {string} [href] HRef URI. + * HRef URI. */ href?: string; /** - * @member {string} [filePath] File path. + * File path. */ filePath?: string; /** - * @member {number} [moduleMemorySize] Module memory size. + * Module memory size. */ moduleMemorySize?: number; /** - * @member {string} [fileVersion] File version. + * File version. */ fileVersion?: string; /** - * @member {string} [fileDescription] File description. + * File description. */ fileDescription?: string; /** - * @member {string} [product] Product name. + * Product name. */ product?: string; /** - * @member {string} [productVersion] Product version. + * Product version. */ productVersion?: string; /** - * @member {boolean} [isDebug] Is debug? + * Is debug? */ isDebug?: boolean; /** - * @member {string} [language] Module language (locale). + * Module language (locale). */ language?: string; } /** - * @interface - * An interface representing ProcessInfo. * Process Information. - * - * @extends ProxyOnlyResource */ export interface ProcessInfo extends ProxyOnlyResource { /** - * @member {number} [identifier] ARM Identifier for deployment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * ARM Identifier for deployment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly identifier?: number; /** - * @member {string} [deploymentName] Deployment name. + * Deployment name. */ deploymentName?: string; /** - * @member {string} [href] HRef URI. + * HRef URI. */ href?: string; /** - * @member {string} [minidump] Minidump URI. + * Minidump URI. */ minidump?: string; /** - * @member {boolean} [isProfileRunning] Is profile running? + * Is profile running? */ isProfileRunning?: boolean; /** - * @member {boolean} [isIisProfileRunning] Is the IIS Profile running? + * Is the IIS Profile running? */ isIisProfileRunning?: boolean; /** - * @member {number} [iisProfileTimeoutInSeconds] IIS Profile timeout - * (seconds). + * IIS Profile timeout (seconds). */ iisProfileTimeoutInSeconds?: number; /** - * @member {string} [parent] Parent process. + * Parent process. */ parent?: string; /** - * @member {string[]} [children] Child process list. + * Child process list. */ children?: string[]; /** - * @member {ProcessThreadInfo[]} [threads] Thread list. + * Thread list. */ threads?: ProcessThreadInfo[]; /** - * @member {string[]} [openFileHandles] List of open files. + * List of open files. */ openFileHandles?: string[]; /** - * @member {ProcessModuleInfo[]} [modules] List of modules. + * List of modules. */ modules?: ProcessModuleInfo[]; /** - * @member {string} [fileName] File name of this process. + * File name of this process. */ fileName?: string; /** - * @member {string} [commandLine] Command line. + * Command line. */ commandLine?: string; /** - * @member {string} [userName] User name. + * User name. */ userName?: string; /** - * @member {number} [handleCount] Handle count. + * Handle count. */ handleCount?: number; /** - * @member {number} [moduleCount] Module count. + * Module count. */ moduleCount?: number; /** - * @member {number} [threadCount] Thread count. + * Thread count. */ threadCount?: number; /** - * @member {Date} [startTime] Start time. + * Start time. */ startTime?: Date; /** - * @member {string} [totalCpuTime] Total CPU time. + * Total CPU time. */ totalCpuTime?: string; /** - * @member {string} [userCpuTime] User CPU time. + * User CPU time. */ userCpuTime?: string; /** - * @member {string} [privilegedCpuTime] Privileged CPU time. + * Privileged CPU time. */ privilegedCpuTime?: string; /** - * @member {number} [workingSet] Working set. + * Working set. */ workingSet?: number; /** - * @member {number} [peakWorkingSet] Peak working set. + * Peak working set. */ peakWorkingSet?: number; /** - * @member {number} [privateMemory] Private memory size. + * Private memory size. */ privateMemory?: number; /** - * @member {number} [virtualMemory] Virtual memory size. + * Virtual memory size. */ virtualMemory?: number; /** - * @member {number} [peakVirtualMemory] Peak virtual memory usage. + * Peak virtual memory usage. */ peakVirtualMemory?: number; /** - * @member {number} [pagedSystemMemory] Paged system memory. + * Paged system memory. */ pagedSystemMemory?: number; /** - * @member {number} [nonPagedSystemMemory] Non-paged system memory. + * Non-paged system memory. */ nonPagedSystemMemory?: number; /** - * @member {number} [pagedMemory] Paged memory. + * Paged memory. */ pagedMemory?: number; /** - * @member {number} [peakPagedMemory] Peak paged memory. + * Peak paged memory. */ peakPagedMemory?: number; /** - * @member {Date} [timeStamp] Time stamp. + * Time stamp. */ timeStamp?: Date; /** - * @member {{ [propertyName: string]: string }} [environmentVariables] List - * of environment variables. + * List of environment variables. */ environmentVariables?: { [propertyName: string]: string }; /** - * @member {boolean} [isScmSite] Is this the SCM site? + * Is this the SCM site? */ isScmSite?: boolean; /** - * @member {boolean} [isWebjob] Is this a Web Job? + * Is this a Web Job? */ isWebjob?: boolean; /** - * @member {string} [description] Description of process. + * Description of process. */ description?: string; } /** - * @interface - * An interface representing PublicCertificate. * Public certificate object - * - * @extends ProxyOnlyResource */ export interface PublicCertificate extends ProxyOnlyResource { /** - * @member {Uint8Array} [blob] Public Certificate byte array + * Public Certificate byte array */ blob?: Uint8Array; /** - * @member {PublicCertificateLocation} [publicCertificateLocation] Public - * Certificate Location. Possible values include: 'CurrentUserMy', - * 'LocalMachineMy', 'Unknown' + * Public Certificate Location. Possible values include: 'CurrentUserMy', 'LocalMachineMy', + * 'Unknown' */ publicCertificateLocation?: PublicCertificateLocation; /** - * @member {string} [thumbprint] Certificate Thumbprint - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Certificate Thumbprint + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly thumbprint?: string; } /** - * @interface - * An interface representing RestoreRequest. * Description of a restore request. - * - * @extends ProxyOnlyResource */ export interface RestoreRequest extends ProxyOnlyResource { /** - * @member {string} storageAccountUrl SAS URL to the container. + * SAS URL to the container. */ storageAccountUrl: string; /** - * @member {string} [blobName] Name of a blob which contains the backup. + * Name of a blob which contains the backup. */ blobName?: string; /** - * @member {boolean} overwrite true if the restore operation can - * overwrite target app; otherwise, false. true is - * needed if trying to restore over an existing app. + * true if the restore operation can overwrite target app; otherwise, + * false. true is needed if trying to restore over an existing app. */ overwrite: boolean; /** - * @member {string} [siteName] Name of an app. + * Name of an app. */ siteName?: string; /** - * @member {DatabaseBackupSetting[]} [databases] Collection of databases - * which should be restored. This list has to match the list of databases + * Collection of databases which should be restored. This list has to match the list of databases * included in the backup. */ databases?: DatabaseBackupSetting[]; /** - * @member {boolean} [ignoreConflictingHostNames] Changes a logic when - * restoring an app with custom domains. true to remove custom + * Changes a logic when restoring an app with custom domains. true to remove custom * domains automatically. If false, custom domains are added to - * the app's object when it is being restored, but that might fail due to - * conflicts during the operation. Default value: false . + * the app's object when it is being restored, but that might fail due to conflicts during the + * operation. Default value: false. */ ignoreConflictingHostNames?: boolean; /** - * @member {boolean} [ignoreDatabases] Ignore the databases and only restore - * the site content. Default value: false . + * Ignore the databases and only restore the site content. Default value: false. */ ignoreDatabases?: boolean; /** - * @member {string} [appServicePlan] Specify app service plan that will own - * restored site. + * Specify app service plan that will own restored site. */ appServicePlan?: string; /** - * @member {BackupRestoreOperationType} [operationType] Operation type. - * Possible values include: 'Default', 'Clone', 'Relocation', 'Snapshot', - * 'CloudFS'. Default value: 'Default' . + * Operation type. Possible values include: 'Default', 'Clone', 'Relocation', 'Snapshot', + * 'CloudFS'. Default value: 'Default'. */ operationType?: BackupRestoreOperationType; /** - * @member {boolean} [adjustConnectionStrings] true if - * SiteConfig.ConnectionStrings should be set in new app; otherwise, + * true if SiteConfig.ConnectionStrings should be set in new app; otherwise, * false. */ adjustConnectionStrings?: boolean; /** - * @member {string} [hostingEnvironment] App Service Environment name, if - * needed (only when restoring an app to an App Service Environment). + * App Service Environment name, if needed (only when restoring an app to an App Service + * Environment). */ hostingEnvironment?: string; } /** - * @interface - * An interface representing SiteAuthSettings. - * Configuration settings for the Azure App Service Authentication / - * Authorization feature. - * - * @extends ProxyOnlyResource + * Configuration settings for the Azure App Service Authentication / Authorization feature. */ export interface SiteAuthSettings extends ProxyOnlyResource { /** - * @member {boolean} [enabled] true if the Authentication / - * Authorization feature is enabled for the current app; otherwise, - * false. + * true if the Authentication / Authorization feature is enabled for the current + * app; otherwise, false. */ enabled?: boolean; /** - * @member {string} [runtimeVersion] The RuntimeVersion of the Authentication - * / Authorization feature in use for the current app. - * The setting in this value can control the behavior of certain features in - * the Authentication / Authorization module. + * The RuntimeVersion of the Authentication / Authorization feature in use for the current app. + * The setting in this value can control the behavior of certain features in the Authentication / + * Authorization module. */ runtimeVersion?: string; /** - * @member {UnauthenticatedClientAction} [unauthenticatedClientAction] The - * action to take when an unauthenticated client attempts to access the app. - * Possible values include: 'RedirectToLoginPage', 'AllowAnonymous' + * The action to take when an unauthenticated client attempts to access the app. Possible values + * include: 'RedirectToLoginPage', 'AllowAnonymous' */ unauthenticatedClientAction?: UnauthenticatedClientAction; /** - * @member {boolean} [tokenStoreEnabled] true to durably store - * platform-specific security tokens that are obtained during login flows; - * otherwise, false. + * true to durably store platform-specific security tokens that are obtained during + * login flows; otherwise, false. * The default is false. */ tokenStoreEnabled?: boolean; /** - * @member {string[]} [allowedExternalRedirectUrls] External URLs that can be - * redirected to as part of logging in or logging out of the app. Note that - * the query string part of the URL is ignored. - * This is an advanced setting typically only needed by Windows Store - * application backends. + * External URLs that can be redirected to as part of logging in or logging out of the app. Note + * that the query string part of the URL is ignored. + * This is an advanced setting typically only needed by Windows Store application backends. * Note that URLs within the current domain are always implicitly allowed. */ allowedExternalRedirectUrls?: string[]; /** - * @member {BuiltInAuthenticationProvider} [defaultProvider] The default - * authentication provider to use when multiple providers are configured. - * This setting is only needed if multiple providers are configured and the - * unauthenticated client - * action is set to "RedirectToLoginPage". Possible values include: - * 'AzureActiveDirectory', 'Facebook', 'Google', 'MicrosoftAccount', - * 'Twitter' + * The default authentication provider to use when multiple providers are configured. + * This setting is only needed if multiple providers are configured and the unauthenticated + * client + * action is set to "RedirectToLoginPage". Possible values include: 'AzureActiveDirectory', + * 'Facebook', 'Google', 'MicrosoftAccount', 'Twitter' */ defaultProvider?: BuiltInAuthenticationProvider; /** - * @member {number} [tokenRefreshExtensionHours] The number of hours after - * session token expiration that a session token can be used to + * The number of hours after session token expiration that a session token can be used to * call the token refresh API. The default is 72 hours. */ tokenRefreshExtensionHours?: number; /** - * @member {string} [clientId] The Client ID of this relying party - * application, known as the client_id. - * This setting is required for enabling OpenID Connection authentication - * with Azure Active Directory or + * The Client ID of this relying party application, known as the client_id. + * This setting is required for enabling OpenID Connection authentication with Azure Active + * Directory or * other 3rd party OpenID Connect providers. - * More information on OpenID Connect: - * http://openid.net/specs/openid-connect-core-1_0.html + * More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html */ clientId?: string; /** - * @member {string} [clientSecret] The Client Secret of this relying party - * application (in Azure Active Directory, this is also referred to as the - * Key). - * This setting is optional. If no client secret is configured, the OpenID - * Connect implicit auth flow is used to authenticate end users. - * Otherwise, the OpenID Connect Authorization Code Flow is used to - * authenticate end users. - * More information on OpenID Connect: - * http://openid.net/specs/openid-connect-core-1_0.html + * The Client Secret of this relying party application (in Azure Active Directory, this is also + * referred to as the Key). + * This setting is optional. If no client secret is configured, the OpenID Connect implicit auth + * flow is used to authenticate end users. + * Otherwise, the OpenID Connect Authorization Code Flow is used to authenticate end users. + * More information on OpenID Connect: http://openid.net/specs/openid-connect-core-1_0.html */ clientSecret?: string; /** - * @member {string} [issuer] The OpenID Connect Issuer URI that represents - * the entity which issues access tokens for this application. - * When using Azure Active Directory, this value is the URI of the directory - * tenant, e.g. https://sts.windows.net/{tenant-guid}/. + * An alternative to the client secret, that is the thumbprint of a certificate used for signing + * purposes. This property acts as + * a replacement for the Client Secret. It is also optional. + */ + clientSecretCertificateThumbprint?: string; + /** + * The OpenID Connect Issuer URI that represents the entity which issues access tokens for this + * application. + * When using Azure Active Directory, this value is the URI of the directory tenant, e.g. + * https://sts.windows.net/{tenant-guid}/. * This URI is a case-sensitive identifier for the token issuer. * More information on OpenID Connect Discovery: * http://openid.net/specs/openid-connect-discovery-1_0.html */ issuer?: string; /** - * @member {boolean} [validateIssuer] Gets a value indicating whether the - * issuer should be a valid HTTPS url and be validated as such. + * Gets a value indicating whether the issuer should be a valid HTTPS url and be validated as + * such. */ validateIssuer?: boolean; /** - * @member {string[]} [allowedAudiences] Allowed audience values to consider - * when validating JWTs issued by - * Azure Active Directory. Note that the ClientID value is - * always considered an + * Allowed audience values to consider when validating JWTs issued by + * Azure Active Directory. Note that the ClientID value is always considered an * allowed audience, regardless of this setting. */ allowedAudiences?: string[]; /** - * @member {string[]} [additionalLoginParams] Login parameters to send to the - * OpenID Connect authorization endpoint when + * Login parameters to send to the OpenID Connect authorization endpoint when * a user logs in. Each parameter must be in the form "key=value". */ additionalLoginParams?: string[]; /** - * @member {string} [googleClientId] The OpenID Connect Client ID for the - * Google web application. + * The OpenID Connect Client ID for the Google web application. * This setting is required for enabling Google Sign-In. - * Google Sign-In documentation: - * https://developers.google.com/identity/sign-in/web/ + * Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/ */ googleClientId?: string; /** - * @member {string} [googleClientSecret] The client secret associated with - * the Google web application. + * The client secret associated with the Google web application. * This setting is required for enabling Google Sign-In. - * Google Sign-In documentation: - * https://developers.google.com/identity/sign-in/web/ + * Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/ */ googleClientSecret?: string; /** - * @member {string[]} [googleOAuthScopes] The OAuth 2.0 scopes that will be - * requested as part of Google Sign-In authentication. - * This setting is optional. If not specified, "openid", "profile", and - * "email" are used as default scopes. - * Google Sign-In documentation: - * https://developers.google.com/identity/sign-in/web/ + * The OAuth 2.0 scopes that will be requested as part of Google Sign-In authentication. + * This setting is optional. If not specified, "openid", "profile", and "email" are used as + * default scopes. + * Google Sign-In documentation: https://developers.google.com/identity/sign-in/web/ */ googleOAuthScopes?: string[]; /** - * @member {string} [facebookAppId] The App ID of the Facebook app used for - * login. + * The App ID of the Facebook app used for login. * This setting is required for enabling Facebook Login. - * Facebook Login documentation: - * https://developers.facebook.com/docs/facebook-login + * Facebook Login documentation: https://developers.facebook.com/docs/facebook-login */ facebookAppId?: string; /** - * @member {string} [facebookAppSecret] The App Secret of the Facebook app - * used for Facebook Login. + * The App Secret of the Facebook app used for Facebook Login. * This setting is required for enabling Facebook Login. - * Facebook Login documentation: - * https://developers.facebook.com/docs/facebook-login + * Facebook Login documentation: https://developers.facebook.com/docs/facebook-login */ facebookAppSecret?: string; /** - * @member {string[]} [facebookOAuthScopes] The OAuth 2.0 scopes that will be - * requested as part of Facebook Login authentication. + * The OAuth 2.0 scopes that will be requested as part of Facebook Login authentication. * This setting is optional. - * Facebook Login documentation: - * https://developers.facebook.com/docs/facebook-login + * Facebook Login documentation: https://developers.facebook.com/docs/facebook-login */ facebookOAuthScopes?: string[]; /** - * @member {string} [twitterConsumerKey] The OAuth 1.0a consumer key of the - * Twitter application used for sign-in. + * The OAuth 1.0a consumer key of the Twitter application used for sign-in. * This setting is required for enabling Twitter Sign-In. * Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in */ twitterConsumerKey?: string; /** - * @member {string} [twitterConsumerSecret] The OAuth 1.0a consumer secret of - * the Twitter application used for sign-in. + * The OAuth 1.0a consumer secret of the Twitter application used for sign-in. * This setting is required for enabling Twitter Sign-In. * Twitter Sign-In documentation: https://dev.twitter.com/web/sign-in */ twitterConsumerSecret?: string; /** - * @member {string} [microsoftAccountClientId] The OAuth 2.0 client ID that - * was created for the app used for authentication. + * The OAuth 2.0 client ID that was created for the app used for authentication. * This setting is required for enabling Microsoft Account authentication. - * Microsoft Account OAuth documentation: - * https://dev.onedrive.com/auth/msa_oauth.htm + * Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm */ microsoftAccountClientId?: string; /** - * @member {string} [microsoftAccountClientSecret] The OAuth 2.0 client - * secret that was created for the app used for authentication. + * The OAuth 2.0 client secret that was created for the app used for authentication. * This setting is required for enabling Microsoft Account authentication. - * Microsoft Account OAuth documentation: - * https://dev.onedrive.com/auth/msa_oauth.htm + * Microsoft Account OAuth documentation: https://dev.onedrive.com/auth/msa_oauth.htm */ microsoftAccountClientSecret?: string; /** - * @member {string[]} [microsoftAccountOAuthScopes] The OAuth 2.0 scopes that - * will be requested as part of Microsoft Account authentication. - * This setting is optional. If not specified, "wl.basic" is used as the - * default scope. + * The OAuth 2.0 scopes that will be requested as part of Microsoft Account authentication. + * This setting is optional. If not specified, "wl.basic" is used as the default scope. * Microsoft Account Scopes and permissions documentation: * https://msdn.microsoft.com/en-us/library/dn631845.aspx */ @@ -7303,830 +5927,707 @@ export interface SiteAuthSettings extends ProxyOnlyResource { } /** - * @interface - * An interface representing SiteCloneabilityCriterion. * An app cloneability criterion. - * */ export interface SiteCloneabilityCriterion { /** - * @member {string} [name] Name of criterion. + * Name of criterion. */ name?: string; /** - * @member {string} [description] Description of criterion. + * Description of criterion. */ description?: string; } /** - * @interface - * An interface representing SiteCloneability. * Represents whether or not an app is cloneable. - * */ export interface SiteCloneability { /** - * @member {CloneAbilityResult} [result] Name of app. Possible values - * include: 'Cloneable', 'PartiallyCloneable', 'NotCloneable' + * Name of app. Possible values include: 'Cloneable', 'PartiallyCloneable', 'NotCloneable' */ result?: CloneAbilityResult; /** - * @member {SiteCloneabilityCriterion[]} [blockingFeatures] List of features - * enabled on app that prevent cloning. + * List of features enabled on app that prevent cloning. */ blockingFeatures?: SiteCloneabilityCriterion[]; /** - * @member {SiteCloneabilityCriterion[]} [unsupportedFeatures] List of - * features enabled on app that are non-blocking but cannot be cloned. The - * app can still be cloned + * List of features enabled on app that are non-blocking but cannot be cloned. The app can still + * be cloned * but the features in this list will not be set up on cloned app. */ unsupportedFeatures?: SiteCloneabilityCriterion[]; /** - * @member {SiteCloneabilityCriterion[]} [blockingCharacteristics] List of - * blocking application characteristics. + * List of blocking application characteristics. */ blockingCharacteristics?: SiteCloneabilityCriterion[]; } /** - * @interface - * An interface representing SiteConfigResource. * Web app configuration ARM resource. - * - * @extends ProxyOnlyResource */ export interface SiteConfigResource extends ProxyOnlyResource { /** - * @member {number} [numberOfWorkers] Number of workers. + * Number of workers. */ numberOfWorkers?: number; /** - * @member {string[]} [defaultDocuments] Default documents. + * Default documents. */ defaultDocuments?: string[]; /** - * @member {string} [netFrameworkVersion] .NET Framework version. Default - * value: 'v4.6' . + * .NET Framework version. Default value: 'v4.6'. */ netFrameworkVersion?: string; /** - * @member {string} [phpVersion] Version of PHP. + * Version of PHP. */ phpVersion?: string; /** - * @member {string} [pythonVersion] Version of Python. + * Version of Python. */ pythonVersion?: string; /** - * @member {string} [nodeVersion] Version of Node.js. + * Version of Node.js. */ nodeVersion?: string; /** - * @member {string} [linuxFxVersion] Linux App Framework and version + * Linux App Framework and version */ linuxFxVersion?: string; /** - * @member {string} [windowsFxVersion] Xenon App Framework and version + * Xenon App Framework and version */ windowsFxVersion?: string; /** - * @member {boolean} [requestTracingEnabled] true if request - * tracing is enabled; otherwise, false. + * true if request tracing is enabled; otherwise, false. */ requestTracingEnabled?: boolean; /** - * @member {Date} [requestTracingExpirationTime] Request tracing expiration - * time. + * Request tracing expiration time. */ requestTracingExpirationTime?: Date; /** - * @member {boolean} [remoteDebuggingEnabled] true if remote - * debugging is enabled; otherwise, false. + * true if remote debugging is enabled; otherwise, false. */ remoteDebuggingEnabled?: boolean; /** - * @member {string} [remoteDebuggingVersion] Remote debugging version. + * Remote debugging version. */ remoteDebuggingVersion?: string; /** - * @member {boolean} [httpLoggingEnabled] true if HTTP logging - * is enabled; otherwise, false. + * true if HTTP logging is enabled; otherwise, false. */ httpLoggingEnabled?: boolean; /** - * @member {number} [logsDirectorySizeLimit] HTTP logs directory size limit. + * HTTP logs directory size limit. */ logsDirectorySizeLimit?: number; /** - * @member {boolean} [detailedErrorLoggingEnabled] true if - * detailed error logging is enabled; otherwise, false. + * true if detailed error logging is enabled; otherwise, false. */ detailedErrorLoggingEnabled?: boolean; /** - * @member {string} [publishingUsername] Publishing user name. + * Publishing user name. */ publishingUsername?: string; /** - * @member {NameValuePair[]} [appSettings] Application settings. + * Application settings. */ appSettings?: NameValuePair[]; /** - * @member {{ [propertyName: string]: AzureStorageInfoValue }} - * [azureStorageAccounts] User-provided Azure storage accounts. + * User-provided Azure storage accounts. */ azureStorageAccounts?: { [propertyName: string]: AzureStorageInfoValue }; /** - * @member {ConnStringInfo[]} [connectionStrings] Connection strings. + * Connection strings. */ connectionStrings?: ConnStringInfo[]; /** - * @member {SiteMachineKey} [machineKey] Site MachineKey. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Site MachineKey. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly machineKey?: SiteMachineKey; /** - * @member {HandlerMapping[]} [handlerMappings] Handler mappings. + * Handler mappings. */ handlerMappings?: HandlerMapping[]; /** - * @member {string} [documentRoot] Document root. + * Document root. */ documentRoot?: string; /** - * @member {ScmType} [scmType] SCM type. Possible values include: 'None', - * 'Dropbox', 'Tfs', 'LocalGit', 'GitHub', 'CodePlexGit', 'CodePlexHg', - * 'BitbucketGit', 'BitbucketHg', 'ExternalGit', 'ExternalHg', 'OneDrive', - * 'VSO' + * SCM type. Possible values include: 'None', 'Dropbox', 'Tfs', 'LocalGit', 'GitHub', + * 'CodePlexGit', 'CodePlexHg', 'BitbucketGit', 'BitbucketHg', 'ExternalGit', 'ExternalHg', + * 'OneDrive', 'VSO' */ scmType?: ScmType; /** - * @member {boolean} [use32BitWorkerProcess] true to use 32-bit - * worker process; otherwise, false. + * true to use 32-bit worker process; otherwise, false. */ use32BitWorkerProcess?: boolean; /** - * @member {boolean} [webSocketsEnabled] true if WebSocket is - * enabled; otherwise, false. + * true if WebSocket is enabled; otherwise, false. */ webSocketsEnabled?: boolean; /** - * @member {boolean} [alwaysOn] true if Always On is enabled; - * otherwise, false. + * true if Always On is enabled; otherwise, false. */ alwaysOn?: boolean; /** - * @member {string} [javaVersion] Java version. + * Java version. */ javaVersion?: string; /** - * @member {string} [javaContainer] Java container. + * Java container. */ javaContainer?: string; /** - * @member {string} [javaContainerVersion] Java container version. + * Java container version. */ javaContainerVersion?: string; /** - * @member {string} [appCommandLine] App command line to launch. + * App command line to launch. */ appCommandLine?: string; /** - * @member {ManagedPipelineMode} [managedPipelineMode] Managed pipeline mode. - * Possible values include: 'Integrated', 'Classic' + * Managed pipeline mode. Possible values include: 'Integrated', 'Classic' */ managedPipelineMode?: ManagedPipelineMode; /** - * @member {VirtualApplication[]} [virtualApplications] Virtual applications. + * Virtual applications. */ virtualApplications?: VirtualApplication[]; /** - * @member {SiteLoadBalancing} [loadBalancing] Site load balancing. Possible - * values include: 'WeightedRoundRobin', 'LeastRequests', + * Site load balancing. Possible values include: 'WeightedRoundRobin', 'LeastRequests', * 'LeastResponseTime', 'WeightedTotalTraffic', 'RequestHash' */ loadBalancing?: SiteLoadBalancing; /** - * @member {Experiments} [experiments] This is work around for polymophic - * types. + * This is work around for polymorphic types. */ experiments?: Experiments; /** - * @member {SiteLimits} [limits] Site limits. + * Site limits. */ limits?: SiteLimits; /** - * @member {boolean} [autoHealEnabled] true if Auto Heal is - * enabled; otherwise, false. + * true if Auto Heal is enabled; otherwise, false. */ autoHealEnabled?: boolean; /** - * @member {AutoHealRules} [autoHealRules] Auto Heal rules. + * Auto Heal rules. */ autoHealRules?: AutoHealRules; /** - * @member {string} [tracingOptions] Tracing options. + * Tracing options. */ tracingOptions?: string; /** - * @member {string} [vnetName] Virtual Network name. + * Virtual Network name. */ vnetName?: string; /** - * @member {CorsSettings} [cors] Cross-Origin Resource Sharing (CORS) - * settings. + * Cross-Origin Resource Sharing (CORS) settings. */ cors?: CorsSettings; /** - * @member {PushSettings} [push] Push endpoint settings. + * Push endpoint settings. */ push?: PushSettings; /** - * @member {ApiDefinitionInfo} [apiDefinition] Information about the formal - * API definition for the app. + * Information about the formal API definition for the app. */ apiDefinition?: ApiDefinitionInfo; /** - * @member {string} [autoSwapSlotName] Auto-swap slot name. + * Auto-swap slot name. */ autoSwapSlotName?: string; /** - * @member {boolean} [localMySqlEnabled] true to enable local - * MySQL; otherwise, false. Default value: false . + * true to enable local MySQL; otherwise, false. Default value: false. */ localMySqlEnabled?: boolean; /** - * @member {number} [managedServiceIdentityId] Managed Service Identity Id + * Managed Service Identity Id */ managedServiceIdentityId?: number; /** - * @member {number} [xManagedServiceIdentityId] Explicit Managed Service - * Identity Id + * Explicit Managed Service Identity Id */ xManagedServiceIdentityId?: number; /** - * @member {IpSecurityRestriction[]} [ipSecurityRestrictions] IP security - * restrictions. + * IP security restrictions for main. */ ipSecurityRestrictions?: IpSecurityRestriction[]; /** - * @member {boolean} [http20Enabled] Http20Enabled: configures a web site to - * allow clients to connect over http2.0. Default value: true . + * IP security restrictions for scm. + */ + scmIpSecurityRestrictions?: IpSecurityRestriction[]; + /** + * IP security restrictions for scm to use main. + */ + scmIpSecurityRestrictionsUseMain?: boolean; + /** + * Http20Enabled: configures a web site to allow clients to connect over http2.0. Default value: + * true. */ http20Enabled?: boolean; /** - * @member {SupportedTlsVersions} [minTlsVersion] MinTlsVersion: configures - * the minimum version of TLS required for SSL requests. Possible values - * include: '1.0', '1.1', '1.2' + * MinTlsVersion: configures the minimum version of TLS required for SSL requests. Possible + * values include: '1.0', '1.1', '1.2' */ minTlsVersion?: SupportedTlsVersions; /** - * @member {FtpsState} [ftpsState] State of FTP / FTPS service. Possible - * values include: 'AllAllowed', 'FtpsOnly', 'Disabled' + * State of FTP / FTPS service. Possible values include: 'AllAllowed', 'FtpsOnly', 'Disabled' */ ftpsState?: FtpsState; /** - * @member {number} [reservedInstanceCount] Number of reserved instances. + * Number of reserved instances. * This setting only applies to the Consumption Plan */ reservedInstanceCount?: number; } /** - * @interface - * An interface representing SiteConfigurationSnapshotInfo. * A snapshot of a web app configuration. - * - * @extends ProxyOnlyResource */ export interface SiteConfigurationSnapshotInfo extends ProxyOnlyResource { /** - * @member {Date} [time] The time the snapshot was taken. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The time the snapshot was taken. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly time?: Date; /** - * @member {number} [snapshotId] The id of the snapshot - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The id of the snapshot + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly snapshotId?: number; } /** - * @interface - * An interface representing SiteExtensionInfo. * Site Extension Information. - * - * @extends ProxyOnlyResource */ export interface SiteExtensionInfo extends ProxyOnlyResource { /** - * @member {string} [extensionId] Site extension ID. + * Site extension ID. */ extensionId?: string; - /** - * @member {string} [title] - */ title?: string; /** - * @member {SiteExtensionType} [extensionType] Site extension type. Possible - * values include: 'Gallery', 'WebRoot' + * Site extension type. Possible values include: 'Gallery', 'WebRoot' */ extensionType?: SiteExtensionType; /** - * @member {string} [summary] Summary description. + * Summary description. */ summary?: string; /** - * @member {string} [description] Detailed description. + * Detailed description. */ description?: string; /** - * @member {string} [version] Version information. + * Version information. */ version?: string; /** - * @member {string} [extensionUrl] Extension URL. + * Extension URL. */ extensionUrl?: string; /** - * @member {string} [projectUrl] Project URL. + * Project URL. */ projectUrl?: string; /** - * @member {string} [iconUrl] Icon URL. + * Icon URL. */ iconUrl?: string; /** - * @member {string} [licenseUrl] License URL. + * License URL. */ licenseUrl?: string; /** - * @member {string} [feedUrl] Feed URL. + * Feed URL. */ feedUrl?: string; /** - * @member {string[]} [authors] List of authors. + * List of authors. */ authors?: string[]; /** - * @member {string} [installerCommandLineParams] Installer command line - * parameters. + * Installer command line parameters. */ installerCommandLineParams?: string; /** - * @member {Date} [publishedDateTime] Published timestamp. + * Published timestamp. */ publishedDateTime?: Date; /** - * @member {number} [downloadCount] Count of downloads. + * Count of downloads. */ downloadCount?: number; /** - * @member {boolean} [localIsLatestVersion] true if the local - * version is the latest version; false otherwise. + * true if the local version is the latest version; false otherwise. */ localIsLatestVersion?: boolean; /** - * @member {string} [localPath] Local path. + * Local path. */ localPath?: string; /** - * @member {Date} [installedDateTime] Installed timestamp. + * Installed timestamp. */ installedDateTime?: Date; /** - * @member {string} [provisioningState] Provisioning state. + * Provisioning state. */ provisioningState?: string; /** - * @member {string} [comment] Site Extension comment. + * Site Extension comment. */ comment?: string; } /** - * @interface - * An interface representing SiteInstance. * Instance of an app. - * - * @extends ProxyOnlyResource */ export interface SiteInstance extends ProxyOnlyResource { /** - * @member {string} [siteInstanceName] Name of instance. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Name of instance. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly siteInstanceName?: string; } /** - * @interface - * An interface representing SiteLogsConfig. * Configuration of App Service site logs. - * - * @extends ProxyOnlyResource */ export interface SiteLogsConfig extends ProxyOnlyResource { /** - * @member {ApplicationLogsConfig} [applicationLogs] Application logs - * configuration. + * Application logs configuration. */ applicationLogs?: ApplicationLogsConfig; /** - * @member {HttpLogsConfig} [httpLogs] HTTP logs configuration. + * HTTP logs configuration. */ httpLogs?: HttpLogsConfig; /** - * @member {EnabledConfig} [failedRequestsTracing] Failed requests tracing - * configuration. + * Failed requests tracing configuration. */ failedRequestsTracing?: EnabledConfig; /** - * @member {EnabledConfig} [detailedErrorMessages] Detailed error messages - * configuration. + * Detailed error messages configuration. */ detailedErrorMessages?: EnabledConfig; } /** - * @interface - * An interface representing SitePatchResource. * ARM resource for a site. - * - * @extends ProxyOnlyResource */ export interface SitePatchResource extends ProxyOnlyResource { /** - * @member {string} [state] Current state of the app. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Current state of the app. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly state?: string; /** - * @member {string[]} [hostNames] Hostnames associated with the app. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Hostnames associated with the app. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly hostNames?: string[]; /** - * @member {string} [repositorySiteName] Name of the repository site. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Name of the repository site. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly repositorySiteName?: string; /** - * @member {UsageState} [usageState] State indicating whether the app has - * exceeded its quota usage. Read-only. Possible values include: 'Normal', - * 'Exceeded' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * State indicating whether the app has exceeded its quota usage. Read-only. Possible values + * include: 'Normal', 'Exceeded' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly usageState?: UsageState; /** - * @member {boolean} [enabled] true if the app is enabled; - * otherwise, false. Setting this value to false disables the - * app (takes the app offline). + * true if the app is enabled; otherwise, false. Setting this value to + * false disables the app (takes the app offline). */ enabled?: boolean; /** - * @member {string[]} [enabledHostNames] Enabled hostnames for the - * app.Hostnames need to be assigned (see HostNames) AND enabled. Otherwise, + * Enabled hostnames for the app.Hostnames need to be assigned (see HostNames) AND enabled. + * Otherwise, * the app is not served on those hostnames. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly enabledHostNames?: string[]; /** - * @member {SiteAvailabilityState} [availabilityState] Management information - * availability state for the app. Possible values include: 'Normal', + * Management information availability state for the app. Possible values include: 'Normal', * 'Limited', 'DisasterRecoveryMode' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly availabilityState?: SiteAvailabilityState; /** - * @member {HostNameSslState[]} [hostNameSslStates] Hostname SSL states are - * used to manage the SSL bindings for app's hostnames. + * Hostname SSL states are used to manage the SSL bindings for app's hostnames. */ hostNameSslStates?: HostNameSslState[]; /** - * @member {string} [serverFarmId] Resource ID of the associated App Service - * plan, formatted as: + * Resource ID of the associated App Service plan, formatted as: * "/subscriptions/{subscriptionID}/resourceGroups/{groupName}/providers/Microsoft.Web/serverfarms/{appServicePlanName}". */ serverFarmId?: string; /** - * @member {boolean} [reserved] true if reserved; otherwise, - * false. Default value: false . + * true if reserved; otherwise, false. Default value: false. */ reserved?: boolean; /** - * @member {boolean} [isXenon] Obsolete: Hyper-V sandbox. Default value: - * false . + * Obsolete: Hyper-V sandbox. Default value: false. */ isXenon?: boolean; /** - * @member {boolean} [hyperV] Hyper-V sandbox. Default value: false . + * Hyper-V sandbox. Default value: false. */ hyperV?: boolean; /** - * @member {Date} [lastModifiedTimeUtc] Last time the app was modified, in - * UTC. Read-only. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Last time the app was modified, in UTC. Read-only. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly lastModifiedTimeUtc?: Date; /** - * @member {SiteConfig} [siteConfig] Configuration of the app. + * Configuration of the app. */ siteConfig?: SiteConfig; /** - * @member {string[]} [trafficManagerHostNames] Azure Traffic Manager - * hostnames associated with the app. Read-only. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Azure Traffic Manager hostnames associated with the app. Read-only. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly trafficManagerHostNames?: string[]; /** - * @member {boolean} [scmSiteAlsoStopped] true to stop SCM - * (KUDU) site when the app is stopped; otherwise, false. The - * default is false. Default value: false . + * true to stop SCM (KUDU) site when the app is stopped; otherwise, + * false. The default is false. Default value: false. */ scmSiteAlsoStopped?: boolean; /** - * @member {string} [targetSwapSlot] Specifies which deployment slot this app - * will swap into. Read-only. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Specifies which deployment slot this app will swap into. Read-only. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly targetSwapSlot?: string; /** - * @member {HostingEnvironmentProfile} [hostingEnvironmentProfile] App - * Service Environment to use for the app. + * App Service Environment to use for the app. */ hostingEnvironmentProfile?: HostingEnvironmentProfile; /** - * @member {boolean} [clientAffinityEnabled] true to enable - * client affinity; false to stop sending session affinity - * cookies, which route client requests in the same session to the same - * instance. Default is true. + * true to enable client affinity; false to stop sending session + * affinity cookies, which route client requests in the same session to the same instance. + * Default is true. */ clientAffinityEnabled?: boolean; /** - * @member {boolean} [clientCertEnabled] true to enable client - * certificate authentication (TLS mutual authentication); otherwise, - * false. Default is false. + * true to enable client certificate authentication (TLS mutual authentication); + * otherwise, false. Default is false. */ clientCertEnabled?: boolean; /** - * @member {boolean} [hostNamesDisabled] true to disable the - * public hostnames of the app; otherwise, false. - * If true, the app is only accessible via API management - * process. + * client certificate authentication comma-separated exclusion paths + */ + clientCertExclusionPaths?: string; + /** + * true to disable the public hostnames of the app; otherwise, false. + * If true, the app is only accessible via API management process. */ hostNamesDisabled?: boolean; /** - * @member {string} [outboundIpAddresses] List of IP addresses that the app - * uses for outbound connections (e.g. database access). Includes VIPs from - * tenants that site can be hosted with current settings. Read-only. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * List of IP addresses that the app uses for outbound connections (e.g. database access). + * Includes VIPs from tenants that site can be hosted with current settings. Read-only. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly outboundIpAddresses?: string; /** - * @member {string} [possibleOutboundIpAddresses] List of IP addresses that - * the app uses for outbound connections (e.g. database access). Includes - * VIPs from all tenants. Read-only. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * List of IP addresses that the app uses for outbound connections (e.g. database access). + * Includes VIPs from all tenants. Read-only. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly possibleOutboundIpAddresses?: string; /** - * @member {number} [containerSize] Size of the function container. + * Size of the function container. */ containerSize?: number; /** - * @member {number} [dailyMemoryTimeQuota] Maximum allowed daily memory-time - * quota (applicable on dynamic apps only). + * Maximum allowed daily memory-time quota (applicable on dynamic apps only). */ dailyMemoryTimeQuota?: number; /** - * @member {Date} [suspendedTill] App suspended till in case memory-time - * quota is exceeded. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * App suspended till in case memory-time quota is exceeded. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly suspendedTill?: Date; /** - * @member {number} [maxNumberOfWorkers] Maximum number of workers. + * Maximum number of workers. * This only applies to Functions container. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly maxNumberOfWorkers?: number; /** - * @member {CloningInfo} [cloningInfo] If specified during app creation, the - * app is cloned from a source app. + * If specified during app creation, the app is cloned from a source app. */ cloningInfo?: CloningInfo; /** - * @member {string} [resourceGroup] Name of the resource group the app - * belongs to. Read-only. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Name of the resource group the app belongs to. Read-only. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly resourceGroup?: string; /** - * @member {boolean} [isDefaultContainer] true if the app is a - * default container; otherwise, false. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * true if the app is a default container; otherwise, false. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly isDefaultContainer?: boolean; /** - * @member {string} [defaultHostName] Default hostname of the app. Read-only. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Default hostname of the app. Read-only. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly defaultHostName?: string; /** - * @member {SlotSwapStatus} [slotSwapStatus] Status of the last deployment - * slot swap operation. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Status of the last deployment slot swap operation. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly slotSwapStatus?: SlotSwapStatus; /** - * @member {boolean} [httpsOnly] HttpsOnly: configures a web site to accept - * only https requests. Issues redirect for + * HttpsOnly: configures a web site to accept only https requests. Issues redirect for * http requests */ httpsOnly?: boolean; + /** + * Site redundancy mode. Possible values include: 'None', 'Manual', 'Failover', 'ActiveActive', + * 'GeoRedundant' + */ + redundancyMode?: RedundancyMode; + /** + * Specifies an operation id if this site has a pending operation. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly inProgressOperationId?: string; + /** + * GeoDistributions for this site + */ + geoDistributions?: GeoDistribution[]; + identity?: ManagedServiceIdentity; } /** - * @interface - * An interface representing SitePhpErrorLogFlag. * Used for getting PHP error logging flag. - * - * @extends ProxyOnlyResource */ export interface SitePhpErrorLogFlag extends ProxyOnlyResource { /** - * @member {string} [localLogErrors] Local log_errors setting. + * Local log_errors setting. */ localLogErrors?: string; /** - * @member {string} [masterLogErrors] Master log_errors setting. + * Master log_errors setting. */ masterLogErrors?: string; /** - * @member {string} [localLogErrorsMaxLength] Local log_errors_max_len - * setting. + * Local log_errors_max_len setting. */ localLogErrorsMaxLength?: string; /** - * @member {string} [masterLogErrorsMaxLength] Master log_errors_max_len - * setting. + * Master log_errors_max_len setting. */ masterLogErrorsMaxLength?: string; } /** - * @interface - * An interface representing SiteSourceControl. * Source control configuration for an app. - * - * @extends ProxyOnlyResource */ export interface SiteSourceControl extends ProxyOnlyResource { /** - * @member {string} [repoUrl] Repository or source control URL. + * Repository or source control URL. */ repoUrl?: string; /** - * @member {string} [branch] Name of branch to use for deployment. + * Name of branch to use for deployment. */ branch?: string; /** - * @member {boolean} [isManualIntegration] true to limit to - * manual integration; false to enable continuous integration - * (which configures webhooks into online repos like GitHub). + * true to limit to manual integration; false to enable continuous + * integration (which configures webhooks into online repos like GitHub). */ isManualIntegration?: boolean; /** - * @member {boolean} [deploymentRollbackEnabled] true to enable - * deployment rollback; otherwise, false. + * true to enable deployment rollback; otherwise, false. */ deploymentRollbackEnabled?: boolean; /** - * @member {boolean} [isMercurial] true for a Mercurial - * repository; false for a Git repository. + * true for a Mercurial repository; false for a Git repository. */ isMercurial?: boolean; } /** - * @interface - * An interface representing SlotConfigNamesResource. * Slot Config names azure resource. - * - * @extends ProxyOnlyResource */ export interface SlotConfigNamesResource extends ProxyOnlyResource { /** - * @member {string[]} [connectionStringNames] List of connection string - * names. + * List of connection string names. */ connectionStringNames?: string[]; /** - * @member {string[]} [appSettingNames] List of application settings names. + * List of application settings names. */ appSettingNames?: string[]; /** - * @member {string[]} [azureStorageConfigNames] List of external Azure - * storage account identifiers. + * List of external Azure storage account identifiers. */ azureStorageConfigNames?: string[]; } /** - * @interface - * An interface representing SlotDifference. * A setting difference between two deployment slots of an app. - * - * @extends ProxyOnlyResource */ export interface SlotDifference extends ProxyOnlyResource { /** - * @member {string} [level] Level of the difference: Information, Warning or - * Error. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Level of the difference: Information, Warning or Error. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly level?: string; /** - * @member {string} [settingType] The type of the setting: General, - * AppSetting or ConnectionString. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The type of the setting: General, AppSetting or ConnectionString. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly settingType?: string; /** - * @member {string} [diffRule] Rule that describes how to process the setting - * difference during a slot swap. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Rule that describes how to process the setting difference during a slot swap. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly diffRule?: string; /** - * @member {string} [settingName] Name of the setting. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Name of the setting. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly settingName?: string; /** - * @member {string} [valueInCurrentSlot] Value of the setting in the current - * slot. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Value of the setting in the current slot. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly valueInCurrentSlot?: string; /** - * @member {string} [valueInTargetSlot] Value of the setting in the target - * slot. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Value of the setting in the target slot. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly valueInTargetSlot?: string; /** - * @member {string} [description] Description of the setting difference. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Description of the setting difference. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly description?: string; } /** - * @interface - * An interface representing SnapshotRecoverySource. * Specifies the web app that snapshot contents will be retrieved from. - * */ export interface SnapshotRecoverySource { /** - * @member {string} [location] Geographical location of the source web app, - * e.g. SouthEastAsia, SouthCentralUS + * Geographical location of the source web app, e.g. SouthEastAsia, SouthCentralUS */ location?: string; /** - * @member {string} [id] ARM resource ID of the source app. + * ARM resource ID of the source app. * /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName} * for production slots and * /subscriptions/{subId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/slots/{slotName} @@ -8136,2067 +6637,1708 @@ export interface SnapshotRecoverySource { } /** - * @interface - * An interface representing SnapshotRestoreRequest. * Details about app recovery operation. - * - * @extends ProxyOnlyResource */ export interface SnapshotRestoreRequest extends ProxyOnlyResource { /** - * @member {string} [snapshotTime] Point in time in which the app restore - * should be done, formatted as a DateTime string. + * Point in time in which the app restore should be done, formatted as a DateTime string. */ snapshotTime?: string; /** - * @member {SnapshotRecoverySource} [recoverySource] Optional. Specifies the - * web app that snapshot contents will be retrieved from. + * Optional. Specifies the web app that snapshot contents will be retrieved from. * If empty, the targeted web app will be used as the source. */ recoverySource?: SnapshotRecoverySource; /** - * @member {boolean} overwrite If true the restore operation can - * overwrite source app; otherwise, false. + * If true the restore operation can overwrite source app; otherwise, + * false. */ overwrite: boolean; /** - * @member {boolean} [recoverConfiguration] If true, site configuration, in - * addition to content, will be reverted. + * If true, site configuration, in addition to content, will be reverted. */ recoverConfiguration?: boolean; /** - * @member {boolean} [ignoreConflictingHostNames] If true, custom hostname - * conflicts will be ignored when recovering to a target web app. + * If true, custom hostname conflicts will be ignored when recovering to a target web app. * This setting is only necessary when RecoverConfiguration is enabled. */ ignoreConflictingHostNames?: boolean; /** - * @member {boolean} [useDRSecondary] If true, the snapshot is retrieved from - * DRSecondary endpoint. + * If true, the snapshot is retrieved from DRSecondary endpoint. */ useDRSecondary?: boolean; } /** - * @interface - * An interface representing StorageMigrationOptions. * Options for app content migration. - * - * @extends ProxyOnlyResource */ export interface StorageMigrationOptions extends ProxyOnlyResource { /** - * @member {string} azurefilesConnectionString AzureFiles connection string. + * AzureFiles connection string. */ azurefilesConnectionString: string; /** - * @member {string} azurefilesShare AzureFiles share. + * AzureFiles share. */ azurefilesShare: string; /** - * @member {boolean} [switchSiteAfterMigration] trueif the app - * should be switched over; otherwise, false. Default value: - * false . + * trueif the app should be switched over; otherwise, false. Default + * value: false. */ switchSiteAfterMigration?: boolean; /** - * @member {boolean} [blockWriteAccessToSite] true if the app - * should be read only during copy operation; otherwise, false. - * Default value: false . + * true if the app should be read only during copy operation; otherwise, + * false. Default value: false. */ blockWriteAccessToSite?: boolean; } /** - * @interface - * An interface representing StorageMigrationResponse. * Response for a migration of app content request. - * - * @extends ProxyOnlyResource */ export interface StorageMigrationResponse extends ProxyOnlyResource { /** - * @member {string} [operationId] When server starts the migration process, - * it will return an operation ID identifying that particular migration - * operation. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * When server starts the migration process, it will return an operation ID identifying that + * particular migration operation. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly operationId?: string; } /** - * @interface - * An interface representing StringDictionary. * String dictionary resource. - * - * @extends ProxyOnlyResource */ export interface StringDictionary extends ProxyOnlyResource { /** - * @member {{ [propertyName: string]: string }} [properties] Settings. + * Settings. */ properties?: { [propertyName: string]: string }; } /** - * @interface - * An interface representing SwiftVirtualNetwork. - * Swift Virtual Network Contract. This is used to enable the new Swift way of - * doing virtual network integration. - * - * @extends ProxyOnlyResource + * Swift Virtual Network Contract. This is used to enable the new Swift way of doing virtual + * network integration. */ export interface SwiftVirtualNetwork extends ProxyOnlyResource { /** - * @member {string} [subnetResourceId] The Virtual Network subnet's resource - * ID. This is the subnet that this Web App will join. This subnet must have - * a delegation to Microsoft.Web/serverFarms defined first. + * The Virtual Network subnet's resource ID. This is the subnet that this Web App will join. This + * subnet must have a delegation to Microsoft.Web/serverFarms defined first. */ subnetResourceId?: string; /** - * @member {boolean} [swiftSupported] A flag that specifies if the scale unit - * this Web App is on supports Swift integration. + * A flag that specifies if the scale unit this Web App is on supports Swift integration. */ swiftSupported?: boolean; } /** - * @interface - * An interface representing TriggeredJobRun. * Triggered Web Job Run Information. - * - * @extends ProxyOnlyResource */ export interface TriggeredJobRun extends ProxyOnlyResource { /** - * @member {string} [webJobId] Job ID. + * Job ID. */ webJobId?: string; /** - * @member {string} [webJobName] Job name. + * Job name. */ webJobName?: string; /** - * @member {TriggeredWebJobStatus} [status] Job status. Possible values - * include: 'Success', 'Failed', 'Error' + * Job status. Possible values include: 'Success', 'Failed', 'Error' */ status?: TriggeredWebJobStatus; /** - * @member {Date} [startTime] Start time. + * Start time. */ startTime?: Date; /** - * @member {Date} [endTime] End time. + * End time. */ endTime?: Date; /** - * @member {string} [duration] Job duration. + * Job duration. */ duration?: string; /** - * @member {string} [outputUrl] Output URL. + * Output URL. */ outputUrl?: string; /** - * @member {string} [errorUrl] Error URL. + * Error URL. */ errorUrl?: string; /** - * @member {string} [url] Job URL. + * Job URL. */ url?: string; /** - * @member {string} [jobName] Job name. + * Job name. */ jobName?: string; /** - * @member {string} [trigger] Job trigger. + * Job trigger. */ trigger?: string; } /** - * @interface - * An interface representing TriggeredJobHistory. - * Triggered Web Job History. List of Triggered Web Job Run Information - * elements. - * - * @extends ProxyOnlyResource + * Triggered Web Job History. List of Triggered Web Job Run Information elements. */ export interface TriggeredJobHistory extends ProxyOnlyResource { /** - * @member {TriggeredJobRun[]} [runs] List of triggered web job runs. + * List of triggered web job runs. */ runs?: TriggeredJobRun[]; } /** - * @interface - * An interface representing TriggeredWebJob. * Triggered Web Job Information. - * - * @extends ProxyOnlyResource */ export interface TriggeredWebJob extends ProxyOnlyResource { /** - * @member {TriggeredJobRun} [latestRun] Latest job run information. + * Latest job run information. */ latestRun?: TriggeredJobRun; /** - * @member {string} [historyUrl] History URL. + * History URL. */ historyUrl?: string; /** - * @member {string} [schedulerLogsUrl] Scheduler Logs URL. + * Scheduler Logs URL. */ schedulerLogsUrl?: string; /** - * @member {string} [runCommand] Run command. + * Run command. */ runCommand?: string; /** - * @member {string} [url] Job URL. + * Job URL. */ url?: string; /** - * @member {string} [extraInfoUrl] Extra Info URL. + * Extra Info URL. */ extraInfoUrl?: string; /** - * @member {WebJobType} [webJobType] Job type. Possible values include: - * 'Continuous', 'Triggered' + * Job type. Possible values include: 'Continuous', 'Triggered' */ webJobType?: WebJobType; /** - * @member {string} [error] Error information. + * Error information. */ error?: string; /** - * @member {boolean} [usingSdk] Using SDK? + * Using SDK? */ usingSdk?: boolean; /** - * @member {{ [propertyName: string]: any }} [settings] Job settings. + * Job settings. */ settings?: { [propertyName: string]: any }; } /** - * @interface - * An interface representing WebJob. * Web Job Information. - * - * @extends ProxyOnlyResource */ export interface WebJob extends ProxyOnlyResource { /** - * @member {string} [runCommand] Run command. + * Run command. */ runCommand?: string; /** - * @member {string} [url] Job URL. + * Job URL. */ url?: string; /** - * @member {string} [extraInfoUrl] Extra Info URL. + * Extra Info URL. */ extraInfoUrl?: string; /** - * @member {WebJobType} [webJobType] Job type. Possible values include: - * 'Continuous', 'Triggered' + * Job type. Possible values include: 'Continuous', 'Triggered' */ webJobType?: WebJobType; /** - * @member {string} [error] Error information. + * Error information. */ error?: string; /** - * @member {boolean} [usingSdk] Using SDK? + * Using SDK? */ usingSdk?: boolean; /** - * @member {{ [propertyName: string]: any }} [settings] Job settings. + * Job settings. */ settings?: { [propertyName: string]: any }; } /** - * @interface - * An interface representing AddressResponse. * Describes main public IP address and any extra virtual IPs. - * */ export interface AddressResponse { /** - * @member {string} [serviceIpAddress] Main public virtual IP. + * Main public virtual IP. */ serviceIpAddress?: string; /** - * @member {string} [internalIpAddress] Virtual Network internal IP address - * of the App Service Environment if it is in internal load-balancing mode. + * Virtual Network internal IP address of the App Service Environment if it is in internal + * load-balancing mode. */ internalIpAddress?: string; /** - * @member {string[]} [outboundIpAddresses] IP addresses appearing on - * outbound connections. + * IP addresses appearing on outbound connections. */ outboundIpAddresses?: string[]; /** - * @member {VirtualIPMapping[]} [vipMappings] Additional virtual IPs. + * Additional virtual IPs. */ vipMappings?: VirtualIPMapping[]; } /** - * @interface - * An interface representing AppServiceEnvironmentResource. * App Service Environment ARM resource. - * - * @extends Resource */ export interface AppServiceEnvironmentResource extends Resource { /** - * @member {string} appServiceEnvironmentResourceName Name of the App Service - * Environment. + * Name of the App Service Environment. */ appServiceEnvironmentResourceName: string; /** - * @member {string} appServiceEnvironmentResourceLocation Location of the App - * Service Environment, e.g. "West US". + * Location of the App Service Environment, e.g. "West US". */ appServiceEnvironmentResourceLocation: string; /** - * @member {ProvisioningState} [provisioningState] Provisioning state of the - * App Service Environment. Possible values include: 'Succeeded', 'Failed', - * 'Canceled', 'InProgress', 'Deleting' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Provisioning state of the App Service Environment. Possible values include: 'Succeeded', + * 'Failed', 'Canceled', 'InProgress', 'Deleting' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: ProvisioningState; /** - * @member {HostingEnvironmentStatus} [status] Current status of the App - * Service Environment. Possible values include: 'Preparing', 'Ready', + * Current status of the App Service Environment. Possible values include: 'Preparing', 'Ready', * 'Scaling', 'Deleting' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly status?: HostingEnvironmentStatus; /** - * @member {string} [vnetName] Name of the Virtual Network for the App - * Service Environment. + * Name of the Virtual Network for the App Service Environment. */ vnetName?: string; /** - * @member {string} [vnetResourceGroupName] Resource group of the Virtual - * Network. + * Resource group of the Virtual Network. */ vnetResourceGroupName?: string; /** - * @member {string} [vnetSubnetName] Subnet of the Virtual Network. + * Subnet of the Virtual Network. */ vnetSubnetName?: string; /** - * @member {VirtualNetworkProfile} virtualNetwork Description of the Virtual - * Network. + * Description of the Virtual Network. */ virtualNetwork: VirtualNetworkProfile; /** - * @member {InternalLoadBalancingMode} [internalLoadBalancingMode] Specifies - * which endpoints to serve internally in the Virtual Network for the App - * Service Environment. Possible values include: 'None', 'Web', 'Publishing' + * Specifies which endpoints to serve internally in the Virtual Network for the App Service + * Environment. Possible values include: 'None', 'Web', 'Publishing' */ internalLoadBalancingMode?: InternalLoadBalancingMode; /** - * @member {string} [multiSize] Front-end VM size, e.g. "Medium", "Large". + * Front-end VM size, e.g. "Medium", "Large". */ multiSize?: string; /** - * @member {number} [multiRoleCount] Number of front-end instances. + * Number of front-end instances. */ multiRoleCount?: number; /** - * @member {WorkerPool[]} workerPools Description of worker pools with worker - * size IDs, VM sizes, and number of workers in each pool. + * Description of worker pools with worker size IDs, VM sizes, and number of workers in each + * pool. */ workerPools: WorkerPool[]; /** - * @member {number} [ipsslAddressCount] Number of IP SSL addresses reserved - * for the App Service Environment. + * Number of IP SSL addresses reserved for the App Service Environment. */ ipsslAddressCount?: number; /** - * @member {string} [databaseEdition] Edition of the metadata database for - * the App Service Environment, e.g. "Standard". - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Edition of the metadata database for the App Service Environment, e.g. "Standard". + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly databaseEdition?: string; /** - * @member {string} [databaseServiceObjective] Service objective of the - * metadata database for the App Service Environment, e.g. "S0". - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Service objective of the metadata database for the App Service Environment, e.g. "S0". + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly databaseServiceObjective?: string; /** - * @member {number} [upgradeDomains] Number of upgrade domains of the App - * Service Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Number of upgrade domains of the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly upgradeDomains?: number; /** - * @member {string} [subscriptionId] Subscription of the App Service - * Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Subscription of the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly subscriptionId?: string; /** - * @member {string} [dnsSuffix] DNS suffix of the App Service Environment. + * DNS suffix of the App Service Environment. */ dnsSuffix?: string; /** - * @member {string} [lastAction] Last deployment action on the App Service - * Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Last deployment action on the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly lastAction?: string; /** - * @member {string} [lastActionResult] Result of the last deployment action - * on the App Service Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Result of the last deployment action on the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly lastActionResult?: string; /** - * @member {string} [allowedMultiSizes] List of comma separated strings - * describing which VM sizes are allowed for front-ends. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * List of comma separated strings describing which VM sizes are allowed for front-ends. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly allowedMultiSizes?: string; /** - * @member {string} [allowedWorkerSizes] List of comma separated strings - * describing which VM sizes are allowed for workers. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * List of comma separated strings describing which VM sizes are allowed for workers. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly allowedWorkerSizes?: string; /** - * @member {number} [maximumNumberOfMachines] Maximum number of VMs in the - * App Service Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Maximum number of VMs in the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly maximumNumberOfMachines?: number; /** - * @member {VirtualIPMapping[]} [vipMappings] Description of IP SSL mapping - * for the App Service Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Description of IP SSL mapping for the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly vipMappings?: VirtualIPMapping[]; /** - * @member {StampCapacity[]} [environmentCapacities] Current total, used, and - * available worker capacities. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Current total, used, and available worker capacities. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly environmentCapacities?: StampCapacity[]; /** - * @member {NetworkAccessControlEntry[]} [networkAccessControlList] Access - * control list for controlling traffic to the App Service Environment. + * Access control list for controlling traffic to the App Service Environment. */ networkAccessControlList?: NetworkAccessControlEntry[]; /** - * @member {boolean} [environmentIsHealthy] True/false indicating whether the - * App Service Environment is healthy. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * True/false indicating whether the App Service Environment is healthy. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly environmentIsHealthy?: boolean; /** - * @member {string} [environmentStatus] Detailed message about with results - * of the last check of the App Service Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Detailed message about with results of the last check of the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly environmentStatus?: string; /** - * @member {string} [resourceGroup] Resource group of the App Service - * Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Resource group of the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly resourceGroup?: string; /** - * @member {number} [frontEndScaleFactor] Scale factor for front-ends. + * Scale factor for front-ends. */ frontEndScaleFactor?: number; /** - * @member {number} [defaultFrontEndScaleFactor] Default Scale Factor for - * FrontEnds. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Default Scale Factor for FrontEnds. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly defaultFrontEndScaleFactor?: number; /** - * @member {string} [apiManagementAccountId] API Management Account - * associated with the App Service Environment. + * API Management Account associated with the App Service Environment. */ apiManagementAccountId?: string; /** - * @member {boolean} [suspended] true if the App Service - * Environment is suspended; otherwise, false. The environment - * can be suspended, e.g. when the management endpoint is no longer available + * true if the App Service Environment is suspended; otherwise, false. + * The environment can be suspended, e.g. when the management endpoint is no longer available * (most likely because NSG blocked the incoming traffic). */ suspended?: boolean; /** - * @member {boolean} [dynamicCacheEnabled] True/false indicating whether the - * App Service Environment is suspended. The environment can be suspended - * e.g. when the management endpoint is no longer available + * True/false indicating whether the App Service Environment is suspended. The environment can be + * suspended e.g. when the management endpoint is no longer available * (most likely because NSG blocked the incoming traffic). */ dynamicCacheEnabled?: boolean; /** - * @member {NameValuePair[]} [clusterSettings] Custom settings for changing - * the behavior of the App Service Environment. + * Custom settings for changing the behavior of the App Service Environment. */ clusterSettings?: NameValuePair[]; /** - * @member {string[]} [userWhitelistedIpRanges] User added ip ranges to - * whitelist on ASE db + * User added ip ranges to whitelist on ASE db */ userWhitelistedIpRanges?: string[]; /** - * @member {boolean} [hasLinuxWorkers] Flag that displays whether an ASE has - * linux workers or not + * Flag that displays whether an ASE has linux workers or not */ hasLinuxWorkers?: boolean; /** - * @member {string} [sslCertKeyVaultId] Key Vault ID for ILB App Service - * Environment default SSL certificate + * Key Vault ID for ILB App Service Environment default SSL certificate */ sslCertKeyVaultId?: string; /** - * @member {string} [sslCertKeyVaultSecretName] Key Vault Secret Name for ILB - * App Service Environment default SSL certificate + * Key Vault Secret Name for ILB App Service Environment default SSL certificate */ sslCertKeyVaultSecretName?: string; } /** - * @interface - * An interface representing AppServiceEnvironmentPatchResource. - * ARM resource for a app service enviroment. - * - * @extends ProxyOnlyResource + * ARM resource for a app service environment. */ export interface AppServiceEnvironmentPatchResource extends ProxyOnlyResource { /** - * @member {string} appServiceEnvironmentPatchResourceName Name of the App - * Service Environment. + * Name of the App Service Environment. */ appServiceEnvironmentPatchResourceName: string; /** - * @member {string} location Location of the App Service Environment, e.g. - * "West US". + * Location of the App Service Environment, e.g. "West US". */ location: string; /** - * @member {ProvisioningState} [provisioningState] Provisioning state of the - * App Service Environment. Possible values include: 'Succeeded', 'Failed', - * 'Canceled', 'InProgress', 'Deleting' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Provisioning state of the App Service Environment. Possible values include: 'Succeeded', + * 'Failed', 'Canceled', 'InProgress', 'Deleting' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: ProvisioningState; /** - * @member {HostingEnvironmentStatus} [status] Current status of the App - * Service Environment. Possible values include: 'Preparing', 'Ready', + * Current status of the App Service Environment. Possible values include: 'Preparing', 'Ready', * 'Scaling', 'Deleting' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly status?: HostingEnvironmentStatus; /** - * @member {string} [vnetName] Name of the Virtual Network for the App - * Service Environment. + * Name of the Virtual Network for the App Service Environment. */ vnetName?: string; /** - * @member {string} [vnetResourceGroupName] Resource group of the Virtual - * Network. + * Resource group of the Virtual Network. */ vnetResourceGroupName?: string; /** - * @member {string} [vnetSubnetName] Subnet of the Virtual Network. + * Subnet of the Virtual Network. */ vnetSubnetName?: string; /** - * @member {VirtualNetworkProfile} virtualNetwork Description of the Virtual - * Network. + * Description of the Virtual Network. */ virtualNetwork: VirtualNetworkProfile; /** - * @member {InternalLoadBalancingMode} [internalLoadBalancingMode] Specifies - * which endpoints to serve internally in the Virtual Network for the App - * Service Environment. Possible values include: 'None', 'Web', 'Publishing' + * Specifies which endpoints to serve internally in the Virtual Network for the App Service + * Environment. Possible values include: 'None', 'Web', 'Publishing' */ internalLoadBalancingMode?: InternalLoadBalancingMode; /** - * @member {string} [multiSize] Front-end VM size, e.g. "Medium", "Large". + * Front-end VM size, e.g. "Medium", "Large". */ multiSize?: string; /** - * @member {number} [multiRoleCount] Number of front-end instances. + * Number of front-end instances. */ multiRoleCount?: number; /** - * @member {WorkerPool[]} workerPools Description of worker pools with worker - * size IDs, VM sizes, and number of workers in each pool. + * Description of worker pools with worker size IDs, VM sizes, and number of workers in each + * pool. */ workerPools: WorkerPool[]; /** - * @member {number} [ipsslAddressCount] Number of IP SSL addresses reserved - * for the App Service Environment. + * Number of IP SSL addresses reserved for the App Service Environment. */ ipsslAddressCount?: number; /** - * @member {string} [databaseEdition] Edition of the metadata database for - * the App Service Environment, e.g. "Standard". - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Edition of the metadata database for the App Service Environment, e.g. "Standard". + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly databaseEdition?: string; /** - * @member {string} [databaseServiceObjective] Service objective of the - * metadata database for the App Service Environment, e.g. "S0". - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Service objective of the metadata database for the App Service Environment, e.g. "S0". + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly databaseServiceObjective?: string; /** - * @member {number} [upgradeDomains] Number of upgrade domains of the App - * Service Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Number of upgrade domains of the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly upgradeDomains?: number; /** - * @member {string} [subscriptionId] Subscription of the App Service - * Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Subscription of the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly subscriptionId?: string; /** - * @member {string} [dnsSuffix] DNS suffix of the App Service Environment. + * DNS suffix of the App Service Environment. */ dnsSuffix?: string; /** - * @member {string} [lastAction] Last deployment action on the App Service - * Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Last deployment action on the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly lastAction?: string; /** - * @member {string} [lastActionResult] Result of the last deployment action - * on the App Service Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Result of the last deployment action on the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly lastActionResult?: string; /** - * @member {string} [allowedMultiSizes] List of comma separated strings - * describing which VM sizes are allowed for front-ends. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * List of comma separated strings describing which VM sizes are allowed for front-ends. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly allowedMultiSizes?: string; /** - * @member {string} [allowedWorkerSizes] List of comma separated strings - * describing which VM sizes are allowed for workers. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * List of comma separated strings describing which VM sizes are allowed for workers. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly allowedWorkerSizes?: string; /** - * @member {number} [maximumNumberOfMachines] Maximum number of VMs in the - * App Service Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Maximum number of VMs in the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly maximumNumberOfMachines?: number; /** - * @member {VirtualIPMapping[]} [vipMappings] Description of IP SSL mapping - * for the App Service Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Description of IP SSL mapping for the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly vipMappings?: VirtualIPMapping[]; /** - * @member {StampCapacity[]} [environmentCapacities] Current total, used, and - * available worker capacities. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Current total, used, and available worker capacities. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly environmentCapacities?: StampCapacity[]; /** - * @member {NetworkAccessControlEntry[]} [networkAccessControlList] Access - * control list for controlling traffic to the App Service Environment. + * Access control list for controlling traffic to the App Service Environment. */ networkAccessControlList?: NetworkAccessControlEntry[]; /** - * @member {boolean} [environmentIsHealthy] True/false indicating whether the - * App Service Environment is healthy. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * True/false indicating whether the App Service Environment is healthy. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly environmentIsHealthy?: boolean; /** - * @member {string} [environmentStatus] Detailed message about with results - * of the last check of the App Service Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Detailed message about with results of the last check of the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly environmentStatus?: string; /** - * @member {string} [resourceGroup] Resource group of the App Service - * Environment. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Resource group of the App Service Environment. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly resourceGroup?: string; /** - * @member {number} [frontEndScaleFactor] Scale factor for front-ends. + * Scale factor for front-ends. */ frontEndScaleFactor?: number; /** - * @member {number} [defaultFrontEndScaleFactor] Default Scale Factor for - * FrontEnds. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Default Scale Factor for FrontEnds. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly defaultFrontEndScaleFactor?: number; /** - * @member {string} [apiManagementAccountId] API Management Account - * associated with the App Service Environment. + * API Management Account associated with the App Service Environment. */ apiManagementAccountId?: string; /** - * @member {boolean} [suspended] true if the App Service - * Environment is suspended; otherwise, false. The environment - * can be suspended, e.g. when the management endpoint is no longer available + * true if the App Service Environment is suspended; otherwise, false. + * The environment can be suspended, e.g. when the management endpoint is no longer available * (most likely because NSG blocked the incoming traffic). */ suspended?: boolean; /** - * @member {boolean} [dynamicCacheEnabled] True/false indicating whether the - * App Service Environment is suspended. The environment can be suspended - * e.g. when the management endpoint is no longer available + * True/false indicating whether the App Service Environment is suspended. The environment can be + * suspended e.g. when the management endpoint is no longer available * (most likely because NSG blocked the incoming traffic). */ dynamicCacheEnabled?: boolean; /** - * @member {NameValuePair[]} [clusterSettings] Custom settings for changing - * the behavior of the App Service Environment. + * Custom settings for changing the behavior of the App Service Environment. */ clusterSettings?: NameValuePair[]; /** - * @member {string[]} [userWhitelistedIpRanges] User added ip ranges to - * whitelist on ASE db + * User added ip ranges to whitelist on ASE db */ userWhitelistedIpRanges?: string[]; /** - * @member {boolean} [hasLinuxWorkers] Flag that displays whether an ASE has - * linux workers or not + * Flag that displays whether an ASE has linux workers or not */ hasLinuxWorkers?: boolean; /** - * @member {string} [sslCertKeyVaultId] Key Vault ID for ILB App Service - * Environment default SSL certificate + * Key Vault ID for ILB App Service Environment default SSL certificate */ sslCertKeyVaultId?: string; /** - * @member {string} [sslCertKeyVaultSecretName] Key Vault Secret Name for ILB - * App Service Environment default SSL certificate + * Key Vault Secret Name for ILB App Service Environment default SSL certificate */ sslCertKeyVaultSecretName?: string; } /** - * @interface - * An interface representing HostingEnvironmentDiagnostics. + * Current TCP connectivity information from the App Service Environment to a single endpoint. + */ +export interface EndpointDetail { + /** + * An IP Address that Domain Name currently resolves to. + */ + ipAddress?: string; + /** + * The port an endpoint is connected to. + */ + port?: number; + /** + * The time in milliseconds it takes for a TCP connection to be created from the App Service + * Environment to this IpAddress at this Port. + */ + latency?: number; + /** + * Whether it is possible to create a TCP connection from the App Service Environment to this + * IpAddress at this Port. + */ + isAccessable?: boolean; +} + +/** + * A domain name that a service is reached at, including details of the current connection status. + */ +export interface EndpointDependency { + /** + * The domain name of the dependency. + */ + domainName?: string; + /** + * The IP Addresses and Ports used when connecting to DomainName. + */ + endpointDetails?: EndpointDetail[]; +} + +/** * Diagnostics for an App Service Environment. - * */ export interface HostingEnvironmentDiagnostics { /** - * @member {string} [name] Name/identifier of the diagnostics. + * Name/identifier of the diagnostics. */ name?: string; /** - * @member {string} [diagnosicsOutput] Diagnostics output. + * Diagnostics output. */ diagnosicsOutput?: string; } /** - * @interface - * An interface representing MetricAvailabilily. + * The IP Addresses and Ports that require inbound network access to and within the subnet of the + * App Service Environment. + */ +export interface InboundEnvironmentEndpoint { + /** + * Short text describing the purpose of the network traffic. + */ + description?: string; + /** + * The IP addresses that network traffic will originate from in cidr notation. + */ + endpoints?: string[]; + /** + * The ports that network traffic will arrive to the App Service Environment at. + */ + ports?: string[]; +} + +/** * Metric availability and retention. - * */ export interface MetricAvailabilily { /** - * @member {string} [timeGrain] Time grain. + * Time grain. */ timeGrain?: string; /** - * @member {string} [retention] Retention period for the current time grain. + * Retention period for the current time grain. */ retention?: string; } /** - * @interface - * An interface representing MetricDefinition. * Metadata for a metric. - * - * @extends ProxyOnlyResource */ export interface MetricDefinition extends ProxyOnlyResource { /** - * @member {string} [unit] Unit of the metric. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Unit of the metric. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly unit?: string; /** - * @member {string} [primaryAggregationType] Primary aggregation type. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Primary aggregation type. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly primaryAggregationType?: string; /** - * @member {MetricAvailabilily[]} [metricAvailabilities] List of time grains - * supported for the metric together with retention period. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * List of time grains supported for the metric together with retention period. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly metricAvailabilities?: MetricAvailabilily[]; /** - * @member {string} [displayName] Friendly name shown in the UI. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Friendly name shown in the UI. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly displayName?: string; } /** - * @interface - * An interface representing SkuInfo. + * Endpoints accessed for a common purpose that the App Service Environment requires outbound + * network access to. + */ +export interface OutboundEnvironmentEndpoint { + /** + * The type of service accessed by the App Service Environment, e.g., Azure Storage, Azure SQL + * Database, and Azure Active Directory. + */ + category?: string; + /** + * The endpoints that the App Service Environment reaches the service at. + */ + endpoints?: EndpointDependency[]; +} + +/** * SKU discovery information. - * */ export interface SkuInfo { /** - * @member {string} [resourceType] Resource type that this SKU applies to. + * Resource type that this SKU applies to. */ resourceType?: string; /** - * @member {SkuDescription} [sku] Name and tier of the SKU. + * Name and tier of the SKU. */ sku?: SkuDescription; /** - * @member {SkuCapacity} [capacity] Min, max, and default scale values of the - * SKU. + * Min, max, and default scale values of the SKU. */ capacity?: SkuCapacity; } /** - * @interface - * An interface representing Usage. * Usage of the quota resource. - * - * @extends ProxyOnlyResource */ export interface Usage extends ProxyOnlyResource { /** - * @member {string} [displayName] Friendly name shown in the UI. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Friendly name shown in the UI. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly displayName?: string; /** - * @member {string} [resourceName] Name of the quota resource. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Name of the quota resource. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly resourceName?: string; /** - * @member {string} [unit] Units of measurement for the quota resource. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Units of measurement for the quota resource. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly unit?: string; /** - * @member {number} [currentValue] The current value of the resource counter. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The current value of the resource counter. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly currentValue?: number; /** - * @member {number} [limit] The resource limit. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The resource limit. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly limit?: number; /** - * @member {Date} [nextResetTime] Next reset time for the resource counter. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Next reset time for the resource counter. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextResetTime?: Date; /** - * @member {ComputeModeOptions} [computeMode] Compute mode used for this - * usage. Possible values include: 'Shared', 'Dedicated', 'Dynamic' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Compute mode used for this usage. Possible values include: 'Shared', 'Dedicated', 'Dynamic' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly computeMode?: ComputeModeOptions; /** - * @member {string} [siteMode] Site mode used for this usage. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Site mode used for this usage. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly siteMode?: string; } /** - * @interface - * An interface representing WorkerPoolResource. * Worker pool of an App Service Environment ARM resource. - * - * @extends ProxyOnlyResource */ export interface WorkerPoolResource extends ProxyOnlyResource { /** - * @member {number} [workerSizeId] Worker size ID for referencing this worker - * pool. + * Worker size ID for referencing this worker pool. */ workerSizeId?: number; /** - * @member {ComputeModeOptions} [computeMode] Shared or dedicated app - * hosting. Possible values include: 'Shared', 'Dedicated', 'Dynamic' + * Shared or dedicated app hosting. Possible values include: 'Shared', 'Dedicated', 'Dynamic' */ computeMode?: ComputeModeOptions; /** - * @member {string} [workerSize] VM size of the worker pool instances. + * VM size of the worker pool instances. */ workerSize?: string; /** - * @member {number} [workerCount] Number of instances in the worker pool. + * Number of instances in the worker pool. */ workerCount?: number; /** - * @member {string[]} [instanceNames] Names of all instances in the worker - * pool (read only). - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Names of all instances in the worker pool (read only). + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly instanceNames?: string[]; - /** - * @member {SkuDescription} [sku] - */ sku?: SkuDescription; } /** - * @interface - * An interface representing AppServicePlanPatchResource. * ARM resource for a app service plan. - * - * @extends ProxyOnlyResource */ export interface AppServicePlanPatchResource extends ProxyOnlyResource { /** - * @member {string} [workerTierName] Target worker tier assigned to the App - * Service plan. + * Target worker tier assigned to the App Service plan. */ workerTierName?: string; /** - * @member {StatusOptions} [status] App Service plan status. Possible values - * include: 'Ready', 'Pending', 'Creating' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * App Service plan status. Possible values include: 'Ready', 'Pending', 'Creating' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly status?: StatusOptions; /** - * @member {string} [subscription] App Service plan subscription. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * App Service plan subscription. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly subscription?: string; /** - * @member {string} [adminSiteName] App Service plan administration site. - */ - adminSiteName?: string; - /** - * @member {HostingEnvironmentProfile} [hostingEnvironmentProfile] - * Specification for the App Service Environment to use for the App Service - * plan. + * Specification for the App Service Environment to use for the App Service plan. */ hostingEnvironmentProfile?: HostingEnvironmentProfile; /** - * @member {number} [maximumNumberOfWorkers] Maximum number of instances that - * can be assigned to this App Service plan. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Maximum number of instances that can be assigned to this App Service plan. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly maximumNumberOfWorkers?: number; /** - * @member {string} [geoRegion] Geographical location for the App Service - * plan. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Geographical location for the App Service plan. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly geoRegion?: string; /** - * @member {boolean} [perSiteScaling] If true, apps assigned to - * this App Service plan can be scaled independently. - * If false, apps assigned to this App Service plan will scale - * to all instances of the plan. Default value: false . + * If true, apps assigned to this App Service plan can be scaled independently. + * If false, apps assigned to this App Service plan will scale to all instances of + * the plan. Default value: false. */ perSiteScaling?: boolean; /** - * @member {number} [maximumElasticWorkerCount] Maximum number of total - * workers allowed for this ElasticScaleEnabled App Service Plan + * Maximum number of total workers allowed for this ElasticScaleEnabled App Service Plan */ maximumElasticWorkerCount?: number; /** - * @member {number} [numberOfSites] Number of apps assigned to this App - * Service plan. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Number of apps assigned to this App Service plan. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly numberOfSites?: number; /** - * @member {boolean} [isSpot] If true, this App Service Plan - * owns spot instances. + * If true, this App Service Plan owns spot instances. */ isSpot?: boolean; /** - * @member {Date} [spotExpirationTime] The time when the server farm expires. - * Valid only if it is a spot server farm. + * The time when the server farm expires. Valid only if it is a spot server farm. */ spotExpirationTime?: Date; /** - * @member {Date} [freeOfferExpirationTime] The time when the server farm - * free offer expires. + * The time when the server farm free offer expires. */ freeOfferExpirationTime?: Date; /** - * @member {string} [resourceGroup] Resource group of the App Service plan. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Resource group of the App Service plan. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly resourceGroup?: string; /** - * @member {boolean} [reserved] If Linux app service plan true, - * false otherwise. Default value: false . + * If Linux app service plan true, false otherwise. Default value: + * false. */ reserved?: boolean; /** - * @member {boolean} [isXenon] Obsolete: If Hyper-V container app service - * plan true, false otherwise. Default value: false - * . + * Obsolete: If Hyper-V container app service plan true, false + * otherwise. Default value: false. */ isXenon?: boolean; /** - * @member {boolean} [hyperV] If Hyper-V container app service plan - * true, false otherwise. Default value: false . + * If Hyper-V container app service plan true, false otherwise. Default + * value: false. */ hyperV?: boolean; /** - * @member {number} [targetWorkerCount] Scaling worker count. + * Scaling worker count. */ targetWorkerCount?: number; /** - * @member {number} [targetWorkerSizeId] Scaling worker size ID. + * Scaling worker size ID. */ targetWorkerSizeId?: number; /** - * @member {ProvisioningState} [provisioningState] Provisioning state of the - * App Service Environment. Possible values include: 'Succeeded', 'Failed', - * 'Canceled', 'InProgress', 'Deleting' - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Provisioning state of the App Service Environment. Possible values include: 'Succeeded', + * 'Failed', 'Canceled', 'InProgress', 'Deleting' + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly provisioningState?: ProvisioningState; } /** - * @interface - * An interface representing HybridConnectionLimits. - * Hybrid Connection limits contract. This is used to return the plan limits of - * Hybrid Connections. - * - * @extends ProxyOnlyResource + * Hybrid Connection limits contract. This is used to return the plan limits of Hybrid Connections. */ export interface HybridConnectionLimits extends ProxyOnlyResource { /** - * @member {number} [current] The current number of Hybrid Connections. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The current number of Hybrid Connections. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly current?: number; /** - * @member {number} [maximum] The maximum number of Hybrid Connections - * allowed. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * The maximum number of Hybrid Connections allowed. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly maximum?: number; } /** - * @interface - * An interface representing ResourceHealthMetadata. * Used for getting ResourceHealthCheck settings. - * - * @extends ProxyOnlyResource */ export interface ResourceHealthMetadata extends ProxyOnlyResource { /** - * @member {string} [category] The category that the resource matches in the - * RHC Policy File + * The category that the resource matches in the RHC Policy File */ category?: string; /** - * @member {boolean} [signalAvailability] Is there a health signal for the - * resource + * Is there a health signal for the resource */ signalAvailability?: boolean; } /** - * @interface - * An interface representing AppServiceCertificateOrdersResendRequestEmailsOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface AppServiceCertificateOrdersResendRequestEmailsOptionalParams extends msRest.RequestOptionsBase { /** - * @member {string} [name] Name of the object. + * Name of the object. */ name?: string; } /** - * @interface - * An interface representing DomainsCheckAvailabilityOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface DomainsCheckAvailabilityOptionalParams extends msRest.RequestOptionsBase { /** - * @member {string} [name] Name of the object. + * Name of the object. */ name?: string; } /** - * @interface - * An interface representing DomainsDeleteMethodOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface DomainsDeleteMethodOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [forceHardDeleteDomain] Specify true to - * delete the domain immediately. The default is false which - * deletes the domain after 24 hours. + * Specify true to delete the domain immediately. The default is false + * which deletes the domain after 24 hours. */ forceHardDeleteDomain?: boolean; } /** - * @interface - * An interface representing DiagnosticsGetHostingEnvironmentDetectorResponseOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface DiagnosticsGetHostingEnvironmentDetectorResponseOptionalParams extends msRest.RequestOptionsBase { /** - * @member {Date} [startTime] Start Time + * Start Time */ startTime?: Date; /** - * @member {Date} [endTime] End Time + * End Time */ endTime?: Date; /** - * @member {string} [timeGrain] Time Grain + * Time Grain */ timeGrain?: string; } /** - * @interface - * An interface representing DiagnosticsGetSiteDetectorResponseOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface DiagnosticsGetSiteDetectorResponseOptionalParams extends msRest.RequestOptionsBase { /** - * @member {Date} [startTime] Start Time + * Start Time */ startTime?: Date; /** - * @member {Date} [endTime] End Time + * End Time */ endTime?: Date; /** - * @member {string} [timeGrain] Time Grain + * Time Grain */ timeGrain?: string; } /** - * @interface - * An interface representing DiagnosticsExecuteSiteAnalysisOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface DiagnosticsExecuteSiteAnalysisOptionalParams extends msRest.RequestOptionsBase { /** - * @member {Date} [startTime] Start Time + * Start Time */ startTime?: Date; /** - * @member {Date} [endTime] End Time + * End Time */ endTime?: Date; /** - * @member {string} [timeGrain] Time Grain + * Time Grain */ timeGrain?: string; } /** - * @interface - * An interface representing DiagnosticsExecuteSiteDetectorOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface DiagnosticsExecuteSiteDetectorOptionalParams extends msRest.RequestOptionsBase { /** - * @member {Date} [startTime] Start Time + * Start Time */ startTime?: Date; /** - * @member {Date} [endTime] End Time + * End Time */ endTime?: Date; /** - * @member {string} [timeGrain] Time Grain + * Time Grain */ timeGrain?: string; } /** - * @interface - * An interface representing DiagnosticsGetSiteDetectorResponseSlotOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface DiagnosticsGetSiteDetectorResponseSlotOptionalParams extends msRest.RequestOptionsBase { /** - * @member {Date} [startTime] Start Time + * Start Time */ startTime?: Date; /** - * @member {Date} [endTime] End Time + * End Time */ endTime?: Date; /** - * @member {string} [timeGrain] Time Grain + * Time Grain */ timeGrain?: string; } /** - * @interface - * An interface representing DiagnosticsExecuteSiteAnalysisSlotOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface DiagnosticsExecuteSiteAnalysisSlotOptionalParams extends msRest.RequestOptionsBase { /** - * @member {Date} [startTime] Start Time + * Start Time */ startTime?: Date; /** - * @member {Date} [endTime] End Time + * End Time */ endTime?: Date; /** - * @member {string} [timeGrain] Time Grain + * Time Grain */ timeGrain?: string; } /** - * @interface - * An interface representing DiagnosticsExecuteSiteDetectorSlotOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface DiagnosticsExecuteSiteDetectorSlotOptionalParams extends msRest.RequestOptionsBase { /** - * @member {Date} [startTime] Start Time + * Start Time */ startTime?: Date; /** - * @member {Date} [endTime] End Time + * End Time */ endTime?: Date; /** - * @member {string} [timeGrain] Time Grain + * Time Grain */ timeGrain?: string; } /** - * @interface - * An interface representing ProviderGetAvailableStacksOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface ProviderGetAvailableStacksOptionalParams extends msRest.RequestOptionsBase { /** - * @member {OsTypeSelected} [osTypeSelected] Possible values include: - * 'Windows', 'Linux', 'WindowsFunctions', 'LinuxFunctions' + * Possible values include: 'Windows', 'Linux', 'WindowsFunctions', 'LinuxFunctions' */ osTypeSelected?: OsTypeSelected; } /** - * @interface - * An interface representing ProviderGetAvailableStacksOnPremOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface ProviderGetAvailableStacksOnPremOptionalParams extends msRest.RequestOptionsBase { /** - * @member {OsTypeSelected1} [osTypeSelected] Possible values include: - * 'Windows', 'Linux', 'WindowsFunctions', 'LinuxFunctions' + * Possible values include: 'Windows', 'Linux', 'WindowsFunctions', 'LinuxFunctions' */ osTypeSelected?: OsTypeSelected1; } /** - * @interface - * An interface representing RecommendationsListOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface RecommendationsListOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [featured] Specify true to return only the - * most critical recommendations. The default is false, which - * returns all recommendations. + * Specify true to return only the most critical recommendations. The default is + * false, which returns all recommendations. */ featured?: boolean; /** - * @member {string} [filter] Filter is specified by using OData syntax. - * Example: $filter=channel eq 'Api' or channel eq 'Notification' and - * startTime eq 2014-01-01T00:00:00Z and endTime eq 2014-12-31T23:59:59Z and + * Filter is specified by using OData syntax. Example: $filter=channel eq 'Api' or channel eq + * 'Notification' and startTime eq 2014-01-01T00:00:00Z and endTime eq 2014-12-31T23:59:59Z and * timeGrain eq duration'[PT1H|PT1M|P1D] */ filter?: string; } /** - * @interface - * An interface representing RecommendationsListHistoryForWebAppOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase + */ +export interface RecommendationsListHistoryForHostingEnvironmentOptionalParams extends msRest.RequestOptionsBase { + /** + * Specify false to return all recommendations. The default is true, + * which returns only expired recommendations. + */ + expiredOnly?: boolean; + /** + * Filter is specified by using OData syntax. Example: $filter=channel eq 'Api' or channel eq + * 'Notification' and startTime eq 2014-01-01T00:00:00Z and endTime eq 2014-12-31T23:59:59Z and + * timeGrain eq duration'[PT1H|PT1M|P1D] + */ + filter?: string; +} + +/** + * Optional Parameters. + */ +export interface RecommendationsListRecommendedRulesForHostingEnvironmentOptionalParams extends msRest.RequestOptionsBase { + /** + * Specify true to return only the most critical recommendations. The default is + * false, which returns all recommendations. + */ + featured?: boolean; + /** + * Return only channels specified in the filter. Filter is specified by using OData syntax. + * Example: $filter=channel eq 'Api' or channel eq 'Notification' + */ + filter?: string; +} + +/** + * Optional Parameters. + */ +export interface RecommendationsGetRuleDetailsByHostingEnvironmentOptionalParams extends msRest.RequestOptionsBase { + /** + * Specify true to update the last-seen timestamp of the recommendation object. + */ + updateSeen?: boolean; + /** + * The GUID of the recommendation object if you query an expired one. You don't need to specify + * it to query an active entry. + */ + recommendationId?: string; +} + +/** + * Optional Parameters. */ export interface RecommendationsListHistoryForWebAppOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [expiredOnly] Specify false to return all - * recommendations. The default is true, which returns only - * expired recommendations. + * Specify false to return all recommendations. The default is true, + * which returns only expired recommendations. */ expiredOnly?: boolean; /** - * @member {string} [filter] Filter is specified by using OData syntax. - * Example: $filter=channel eq 'Api' or channel eq 'Notification' and - * startTime eq 2014-01-01T00:00:00Z and endTime eq 2014-12-31T23:59:59Z and + * Filter is specified by using OData syntax. Example: $filter=channel eq 'Api' or channel eq + * 'Notification' and startTime eq 2014-01-01T00:00:00Z and endTime eq 2014-12-31T23:59:59Z and * timeGrain eq duration'[PT1H|PT1M|P1D] */ filter?: string; } /** - * @interface - * An interface representing RecommendationsListRecommendedRulesForWebAppOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface RecommendationsListRecommendedRulesForWebAppOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [featured] Specify true to return only the - * most critical recommendations. The default is false, which - * returns all recommendations. + * Specify true to return only the most critical recommendations. The default is + * false, which returns all recommendations. */ featured?: boolean; /** - * @member {string} [filter] Return only channels specified in the filter. - * Filter is specified by using OData syntax. Example: $filter=channel eq - * 'Api' or channel eq 'Notification' + * Return only channels specified in the filter. Filter is specified by using OData syntax. + * Example: $filter=channel eq 'Api' or channel eq 'Notification' */ filter?: string; } /** - * @interface - * An interface representing RecommendationsGetRuleDetailsByWebAppOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface RecommendationsGetRuleDetailsByWebAppOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [updateSeen] Specify true to update the - * last-seen timestamp of the recommendation object. + * Specify true to update the last-seen timestamp of the recommendation object. */ updateSeen?: boolean; /** - * @member {string} [recommendationId] The GUID of the recommedation object - * if you query an expired one. You don't need to specify it to query an - * active entry. + * The GUID of the recommendation object if you query an expired one. You don't need to specify + * it to query an active entry. */ recommendationId?: string; } /** - * @interface - * An interface representing WebSiteManagementClientListBillingMetersOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebSiteManagementClientListBillingMetersOptionalParams extends msRest.RequestOptionsBase { /** - * @member {string} [billingLocation] Azure Location of billable resource + * Azure Location of billable resource */ billingLocation?: string; /** - * @member {string} [osType] App Service OS type meters used for + * App Service OS type meters used for */ osType?: string; } /** - * @interface - * An interface representing WebSiteManagementClientCheckNameAvailabilityOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebSiteManagementClientCheckNameAvailabilityOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [isFqdn] Is fully qualified domain name. + * Is fully qualified domain name. */ isFqdn?: boolean; } /** - * @interface - * An interface representing WebSiteManagementClientListGeoRegionsOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebSiteManagementClientListGeoRegionsOptionalParams extends msRest.RequestOptionsBase { /** - * @member {SkuName} [sku] Name of SKU used to filter the regions. Possible - * values include: 'Free', 'Shared', 'Basic', 'Standard', 'Premium', - * 'Dynamic', 'Isolated', 'PremiumV2', 'ElasticPremium', 'ElasticIsolated' + * Name of SKU used to filter the regions. Possible values include: 'Free', 'Shared', 'Basic', + * 'Standard', 'Premium', 'Dynamic', 'Isolated', 'PremiumV2', 'ElasticPremium', 'ElasticIsolated' */ sku?: SkuName; /** - * @member {boolean} [linuxWorkersEnabled] Specify true if you - * want to filter to only regions that support Linux workers. + * Specify true if you want to filter to only regions that support Linux workers. */ linuxWorkersEnabled?: boolean; /** - * @member {boolean} [xenonWorkersEnabled] Specify true if you - * want to filter to only regions that support Xenon workers. + * Specify true if you want to filter to only regions that support Xenon workers. */ xenonWorkersEnabled?: boolean; /** - * @member {boolean} [linuxDynamicWorkersEnabled] Specify true - * if you want to filter to only regions that support Linux Consumption + * Specify true if you want to filter to only regions that support Linux Consumption * Workers. */ linuxDynamicWorkersEnabled?: boolean; } /** - * @interface - * An interface representing WebSiteManagementClientListSiteIdentifiersAssignedToHostNameOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebSiteManagementClientListSiteIdentifiersAssignedToHostNameOptionalParams extends msRest.RequestOptionsBase { /** - * @member {string} [name] Name of the object. + * Name of the object. */ name?: string; } /** - * @interface - * An interface representing WebAppsListByResourceGroupOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsListByResourceGroupOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [includeSlots] Specify true to include - * deployment slots in results. The default is false, which only gives you - * the production slot of all apps. + * Specify true to include deployment slots in results. The default is false, + * which only gives you the production slot of all apps. */ includeSlots?: boolean; } /** - * @interface - * An interface representing WebAppsDeleteMethodOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsDeleteMethodOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [deleteMetrics] If true, web app metrics are also - * deleted. + * If true, web app metrics are also deleted. */ deleteMetrics?: boolean; /** - * @member {boolean} [deleteEmptyServerFarm] Specify true if the App Service - * plan will be empty after app deletion and you want to delete the empty App - * Service plan. By default, the empty App Service plan is not deleted. + * Specify true if the App Service plan will be empty after app deletion and you want to delete + * the empty App Service plan. By default, the empty App Service plan is not deleted. */ deleteEmptyServerFarm?: boolean; } /** - * @interface - * An interface representing WebAppsAnalyzeCustomHostnameOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsAnalyzeCustomHostnameOptionalParams extends msRest.RequestOptionsBase { /** - * @member {string} [hostName] Custom hostname. + * Custom hostname. */ hostName?: string; } /** - * @interface - * An interface representing WebAppsListMetricsOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsListMetricsOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [details] Specify "true" to include metric details in - * the response. It is "false" by default. + * Specify "true" to include metric details in the response. It is "false" by default. */ details?: boolean; /** - * @member {string} [filter] Return only metrics specified in the filter - * (using OData syntax). For example: $filter=(name.value eq 'Metric1' or - * name.value eq 'Metric2') and startTime eq 2014-01-01T00:00:00Z and endTime - * eq 2014-12-31T23:59:59Z and timeGrain eq duration'[Hour|Minute|Day]'. + * Return only metrics specified in the filter (using OData syntax). For example: + * $filter=(name.value eq 'Metric1' or name.value eq 'Metric2') and startTime eq + * 2014-01-01T00:00:00Z and endTime eq 2014-12-31T23:59:59Z and timeGrain eq + * duration'[Hour|Minute|Day]'. */ filter?: string; } /** - * @interface - * An interface representing WebAppsStartWebSiteNetworkTraceOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsStartWebSiteNetworkTraceOptionalParams extends msRest.RequestOptionsBase { /** - * @member {number} [durationInSeconds] The duration to keep capturing in - * seconds. + * The duration to keep capturing in seconds. */ durationInSeconds?: number; /** - * @member {number} [maxFrameLength] The maximum frame length in bytes - * (Optional). + * The maximum frame length in bytes (Optional). */ maxFrameLength?: number; /** - * @member {string} [sasUrl] The Blob URL to store capture file. + * The Blob URL to store capture file. */ sasUrl?: string; } /** - * @interface - * An interface representing WebAppsStartWebSiteNetworkTraceOperationOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsStartWebSiteNetworkTraceOperationOptionalParams extends msRest.RequestOptionsBase { /** - * @member {number} [durationInSeconds] The duration to keep capturing in - * seconds. + * The duration to keep capturing in seconds. */ durationInSeconds?: number; /** - * @member {number} [maxFrameLength] The maximum frame length in bytes - * (Optional). + * The maximum frame length in bytes (Optional). */ maxFrameLength?: number; /** - * @member {string} [sasUrl] The Blob URL to store capture file. + * The Blob URL to store capture file. */ sasUrl?: string; } /** - * @interface - * An interface representing WebAppsListPerfMonCountersOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsListPerfMonCountersOptionalParams extends msRest.RequestOptionsBase { /** - * @member {string} [filter] Return only usages/metrics specified in the - * filter. Filter conforms to odata syntax. Example: $filter=(startTime eq - * 2014-01-01T00:00:00Z and endTime eq 2014-12-31T23:59:59Z and timeGrain eq - * duration'[Hour|Minute|Day]'. + * Return only usages/metrics specified in the filter. Filter conforms to odata syntax. Example: + * $filter=(startTime eq 2014-01-01T00:00:00Z and endTime eq 2014-12-31T23:59:59Z and timeGrain + * eq duration'[Hour|Minute|Day]'. */ filter?: string; } /** - * @interface - * An interface representing WebAppsRestartOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsRestartOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [softRestart] Specify true to apply the configuration - * settings and restarts the app only if necessary. By default, the API - * always restarts and reprovisions the app. + * Specify true to apply the configuration settings and restarts the app only if necessary. By + * default, the API always restarts and reprovisions the app. */ softRestart?: boolean; /** - * @member {boolean} [synchronous] Specify true to block until the app is - * restarted. By default, it is set to false, and the API responds - * immediately (asynchronous). + * Specify true to block until the app is restarted. By default, it is set to false, and the API + * responds immediately (asynchronous). */ synchronous?: boolean; } /** - * @interface - * An interface representing WebAppsDeleteSlotOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsDeleteSlotOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [deleteMetrics] If true, web app metrics are also - * deleted. + * If true, web app metrics are also deleted. */ deleteMetrics?: boolean; /** - * @member {boolean} [deleteEmptyServerFarm] Specify true if the App Service - * plan will be empty after app deletion and you want to delete the empty App - * Service plan. By default, the empty App Service plan is not deleted. + * Specify true if the App Service plan will be empty after app deletion and you want to delete + * the empty App Service plan. By default, the empty App Service plan is not deleted. */ deleteEmptyServerFarm?: boolean; } /** - * @interface - * An interface representing WebAppsAnalyzeCustomHostnameSlotOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsAnalyzeCustomHostnameSlotOptionalParams extends msRest.RequestOptionsBase { /** - * @member {string} [hostName] Custom hostname. + * Custom hostname. */ hostName?: string; } /** - * @interface - * An interface representing WebAppsListMetricsSlotOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsListMetricsSlotOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [details] Specify "true" to include metric details in - * the response. It is "false" by default. + * Specify "true" to include metric details in the response. It is "false" by default. */ details?: boolean; /** - * @member {string} [filter] Return only metrics specified in the filter - * (using OData syntax). For example: $filter=(name.value eq 'Metric1' or - * name.value eq 'Metric2') and startTime eq 2014-01-01T00:00:00Z and endTime - * eq 2014-12-31T23:59:59Z and timeGrain eq duration'[Hour|Minute|Day]'. + * Return only metrics specified in the filter (using OData syntax). For example: + * $filter=(name.value eq 'Metric1' or name.value eq 'Metric2') and startTime eq + * 2014-01-01T00:00:00Z and endTime eq 2014-12-31T23:59:59Z and timeGrain eq + * duration'[Hour|Minute|Day]'. */ filter?: string; } /** - * @interface - * An interface representing WebAppsStartWebSiteNetworkTraceSlotOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsStartWebSiteNetworkTraceSlotOptionalParams extends msRest.RequestOptionsBase { /** - * @member {number} [durationInSeconds] The duration to keep capturing in - * seconds. + * The duration to keep capturing in seconds. */ durationInSeconds?: number; /** - * @member {number} [maxFrameLength] The maximum frame length in bytes - * (Optional). + * The maximum frame length in bytes (Optional). */ maxFrameLength?: number; /** - * @member {string} [sasUrl] The Blob URL to store capture file. + * The Blob URL to store capture file. */ sasUrl?: string; } /** - * @interface - * An interface representing WebAppsStartWebSiteNetworkTraceOperationSlotOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsStartWebSiteNetworkTraceOperationSlotOptionalParams extends msRest.RequestOptionsBase { /** - * @member {number} [durationInSeconds] The duration to keep capturing in - * seconds. + * The duration to keep capturing in seconds. */ durationInSeconds?: number; /** - * @member {number} [maxFrameLength] The maximum frame length in bytes - * (Optional). + * The maximum frame length in bytes (Optional). */ maxFrameLength?: number; /** - * @member {string} [sasUrl] The Blob URL to store capture file. + * The Blob URL to store capture file. */ sasUrl?: string; } /** - * @interface - * An interface representing WebAppsListPerfMonCountersSlotOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsListPerfMonCountersSlotOptionalParams extends msRest.RequestOptionsBase { /** - * @member {string} [filter] Return only usages/metrics specified in the - * filter. Filter conforms to odata syntax. Example: $filter=(startTime eq - * 2014-01-01T00:00:00Z and endTime eq 2014-12-31T23:59:59Z and timeGrain eq - * duration'[Hour|Minute|Day]'. + * Return only usages/metrics specified in the filter. Filter conforms to odata syntax. Example: + * $filter=(startTime eq 2014-01-01T00:00:00Z and endTime eq 2014-12-31T23:59:59Z and timeGrain + * eq duration'[Hour|Minute|Day]'. */ filter?: string; } /** - * @interface - * An interface representing WebAppsRestartSlotOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsRestartSlotOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [softRestart] Specify true to apply the configuration - * settings and restarts the app only if necessary. By default, the API - * always restarts and reprovisions the app. + * Specify true to apply the configuration settings and restarts the app only if necessary. By + * default, the API always restarts and reprovisions the app. */ softRestart?: boolean; /** - * @member {boolean} [synchronous] Specify true to block until the app is - * restarted. By default, it is set to false, and the API responds - * immediately (asynchronous). + * Specify true to block until the app is restarted. By default, it is set to false, and the API + * responds immediately (asynchronous). */ synchronous?: boolean; } /** - * @interface - * An interface representing WebAppsStartNetworkTraceSlotOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsStartNetworkTraceSlotOptionalParams extends msRest.RequestOptionsBase { /** - * @member {number} [durationInSeconds] The duration to keep capturing in - * seconds. + * The duration to keep capturing in seconds. */ durationInSeconds?: number; /** - * @member {number} [maxFrameLength] The maximum frame length in bytes - * (Optional). + * The maximum frame length in bytes (Optional). */ maxFrameLength?: number; /** - * @member {string} [sasUrl] The Blob URL to store capture file. + * The Blob URL to store capture file. */ sasUrl?: string; } /** - * @interface - * An interface representing WebAppsListUsagesSlotOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsListUsagesSlotOptionalParams extends msRest.RequestOptionsBase { /** - * @member {string} [filter] Return only information specified in the filter - * (using OData syntax). For example: $filter=(name.value eq 'Metric1' or - * name.value eq 'Metric2') and startTime eq 2014-01-01T00:00:00Z and endTime - * eq 2014-12-31T23:59:59Z and timeGrain eq duration'[Hour|Minute|Day]'. + * Return only information specified in the filter (using OData syntax). For example: + * $filter=(name.value eq 'Metric1' or name.value eq 'Metric2') and startTime eq + * 2014-01-01T00:00:00Z and endTime eq 2014-12-31T23:59:59Z and timeGrain eq + * duration'[Hour|Minute|Day]'. */ filter?: string; } /** - * @interface - * An interface representing WebAppsStartNetworkTraceOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsStartNetworkTraceOptionalParams extends msRest.RequestOptionsBase { /** - * @member {number} [durationInSeconds] The duration to keep capturing in - * seconds. + * The duration to keep capturing in seconds. */ durationInSeconds?: number; /** - * @member {number} [maxFrameLength] The maximum frame length in bytes - * (Optional). + * The maximum frame length in bytes (Optional). */ maxFrameLength?: number; /** - * @member {string} [sasUrl] The Blob URL to store capture file. + * The Blob URL to store capture file. */ sasUrl?: string; } /** - * @interface - * An interface representing WebAppsListUsagesOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsListUsagesOptionalParams extends msRest.RequestOptionsBase { /** - * @member {string} [filter] Return only information specified in the filter - * (using OData syntax). For example: $filter=(name.value eq 'Metric1' or - * name.value eq 'Metric2') and startTime eq 2014-01-01T00:00:00Z and endTime - * eq 2014-12-31T23:59:59Z and timeGrain eq duration'[Hour|Minute|Day]'. + * Return only information specified in the filter (using OData syntax). For example: + * $filter=(name.value eq 'Metric1' or name.value eq 'Metric2') and startTime eq + * 2014-01-01T00:00:00Z and endTime eq 2014-12-31T23:59:59Z and timeGrain eq + * duration'[Hour|Minute|Day]'. */ filter?: string; } /** - * @interface - * An interface representing WebAppsBeginStartWebSiteNetworkTraceOperationOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsBeginStartWebSiteNetworkTraceOperationOptionalParams extends msRest.RequestOptionsBase { /** - * @member {number} [durationInSeconds] The duration to keep capturing in - * seconds. + * The duration to keep capturing in seconds. */ durationInSeconds?: number; /** - * @member {number} [maxFrameLength] The maximum frame length in bytes - * (Optional). + * The maximum frame length in bytes (Optional). */ maxFrameLength?: number; /** - * @member {string} [sasUrl] The Blob URL to store capture file. + * The Blob URL to store capture file. */ sasUrl?: string; } /** - * @interface - * An interface representing WebAppsBeginStartWebSiteNetworkTraceOperationSlotOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsBeginStartWebSiteNetworkTraceOperationSlotOptionalParams extends msRest.RequestOptionsBase { /** - * @member {number} [durationInSeconds] The duration to keep capturing in - * seconds. + * The duration to keep capturing in seconds. */ durationInSeconds?: number; /** - * @member {number} [maxFrameLength] The maximum frame length in bytes - * (Optional). + * The maximum frame length in bytes (Optional). */ maxFrameLength?: number; /** - * @member {string} [sasUrl] The Blob URL to store capture file. + * The Blob URL to store capture file. */ sasUrl?: string; } /** - * @interface - * An interface representing WebAppsBeginStartNetworkTraceSlotOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsBeginStartNetworkTraceSlotOptionalParams extends msRest.RequestOptionsBase { /** - * @member {number} [durationInSeconds] The duration to keep capturing in - * seconds. + * The duration to keep capturing in seconds. */ durationInSeconds?: number; /** - * @member {number} [maxFrameLength] The maximum frame length in bytes - * (Optional). + * The maximum frame length in bytes (Optional). */ maxFrameLength?: number; /** - * @member {string} [sasUrl] The Blob URL to store capture file. + * The Blob URL to store capture file. */ sasUrl?: string; } /** - * @interface - * An interface representing WebAppsBeginStartNetworkTraceOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface WebAppsBeginStartNetworkTraceOptionalParams extends msRest.RequestOptionsBase { /** - * @member {number} [durationInSeconds] The duration to keep capturing in - * seconds. + * The duration to keep capturing in seconds. */ durationInSeconds?: number; /** - * @member {number} [maxFrameLength] The maximum frame length in bytes - * (Optional). + * The maximum frame length in bytes (Optional). */ maxFrameLength?: number; /** - * @member {string} [sasUrl] The Blob URL to store capture file. + * The Blob URL to store capture file. */ sasUrl?: string; } /** - * @interface - * An interface representing AppServiceEnvironmentsDeleteMethodOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface AppServiceEnvironmentsDeleteMethodOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [forceDelete] Specify true to force the - * deletion even if the App Service Environment contains resources. The - * default is false. + * Specify true to force the deletion even if the App Service Environment contains + * resources. The default is false. */ forceDelete?: boolean; } /** - * @interface - * An interface representing AppServiceEnvironmentsListMetricsOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface AppServiceEnvironmentsListMetricsOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [details] Specify true to include instance - * details. The default is false. + * Specify true to include instance details. The default is false. */ details?: boolean; /** - * @member {string} [filter] Return only usages/metrics specified in the - * filter. Filter conforms to odata syntax. Example: $filter=(name.value eq - * 'Metric1' or name.value eq 'Metric2') and startTime eq + * Return only usages/metrics specified in the filter. Filter conforms to odata syntax. Example: + * $filter=(name.value eq 'Metric1' or name.value eq 'Metric2') and startTime eq * 2014-01-01T00:00:00Z and endTime eq 2014-12-31T23:59:59Z and timeGrain eq * duration'[Hour|Minute|Day]'. */ @@ -10204,49 +8346,38 @@ export interface AppServiceEnvironmentsListMetricsOptionalParams extends msRest. } /** - * @interface - * An interface representing AppServiceEnvironmentsListMultiRolePoolInstanceMetricsOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface AppServiceEnvironmentsListMultiRolePoolInstanceMetricsOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [details] Specify true to include instance - * details. The default is false. + * Specify true to include instance details. The default is false. */ details?: boolean; } /** - * @interface - * An interface representing AppServiceEnvironmentsListMultiRoleMetricsOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface AppServiceEnvironmentsListMultiRoleMetricsOptionalParams extends msRest.RequestOptionsBase { /** - * @member {string} [startTime] Beginning time of the metrics query. + * Beginning time of the metrics query. */ startTime?: string; /** - * @member {string} [endTime] End time of the metrics query. + * End time of the metrics query. */ endTime?: string; /** - * @member {string} [timeGrain] Time granularity of the metrics query. + * Time granularity of the metrics query. */ timeGrain?: string; /** - * @member {boolean} [details] Specify true to include instance - * details. The default is false. + * Specify true to include instance details. The default is false. */ details?: boolean; /** - * @member {string} [filter] Return only usages/metrics specified in the - * filter. Filter conforms to odata syntax. Example: $filter=(name.value eq - * 'Metric1' or name.value eq 'Metric2') and startTime eq + * Return only usages/metrics specified in the filter. Filter conforms to odata syntax. Example: + * $filter=(name.value eq 'Metric1' or name.value eq 'Metric2') and startTime eq * 2014-01-01T00:00:00Z and endTime eq 2014-12-31T23:59:59Z and timeGrain eq * duration'[Hour|Minute|Day]'. */ @@ -10254,32 +8385,22 @@ export interface AppServiceEnvironmentsListMultiRoleMetricsOptionalParams extend } /** - * @interface - * An interface representing AppServiceEnvironmentsListWebAppsOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface AppServiceEnvironmentsListWebAppsOptionalParams extends msRest.RequestOptionsBase { /** - * @member {string} [propertiesToInclude] Comma separated list of app - * properties to include. + * Comma separated list of app properties to include. */ propertiesToInclude?: string; } /** - * @interface - * An interface representing AppServiceEnvironmentsListUsagesOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface AppServiceEnvironmentsListUsagesOptionalParams extends msRest.RequestOptionsBase { /** - * @member {string} [filter] Return only usages/metrics specified in the - * filter. Filter conforms to odata syntax. Example: $filter=(name.value eq - * 'Metric1' or name.value eq 'Metric2') and startTime eq + * Return only usages/metrics specified in the filter. Filter conforms to odata syntax. Example: + * $filter=(name.value eq 'Metric1' or name.value eq 'Metric2') and startTime eq * 2014-01-01T00:00:00Z and endTime eq 2014-12-31T23:59:59Z and timeGrain eq * duration'[Hour|Minute|Day]'. */ @@ -10287,22 +8408,16 @@ export interface AppServiceEnvironmentsListUsagesOptionalParams extends msRest.R } /** - * @interface - * An interface representing AppServiceEnvironmentsListWorkerPoolInstanceMetricsOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface AppServiceEnvironmentsListWorkerPoolInstanceMetricsOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [details] Specify true to include instance - * details. The default is false. + * Specify true to include instance details. The default is false. */ details?: boolean; /** - * @member {string} [filter] Return only usages/metrics specified in the - * filter. Filter conforms to odata syntax. Example: $filter=(name.value eq - * 'Metric1' or name.value eq 'Metric2') and startTime eq + * Return only usages/metrics specified in the filter. Filter conforms to odata syntax. Example: + * $filter=(name.value eq 'Metric1' or name.value eq 'Metric2') and startTime eq * 2014-01-01T00:00:00Z and endTime eq 2014-12-31T23:59:59Z and timeGrain eq * duration'[Hour|Minute|Day]'. */ @@ -10310,22 +8425,16 @@ export interface AppServiceEnvironmentsListWorkerPoolInstanceMetricsOptionalPara } /** - * @interface - * An interface representing AppServiceEnvironmentsListWebWorkerMetricsOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface AppServiceEnvironmentsListWebWorkerMetricsOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [details] Specify true to include instance - * details. The default is false. + * Specify true to include instance details. The default is false. */ details?: boolean; /** - * @member {string} [filter] Return only usages/metrics specified in the - * filter. Filter conforms to odata syntax. Example: $filter=(name.value eq - * 'Metric1' or name.value eq 'Metric2') and startTime eq + * Return only usages/metrics specified in the filter. Filter conforms to odata syntax. Example: + * $filter=(name.value eq 'Metric1' or name.value eq 'Metric2') and startTime eq * 2014-01-01T00:00:00Z and endTime eq 2014-12-31T23:59:59Z and timeGrain eq * duration'[Hour|Minute|Day]'. */ @@ -10333,55 +8442,39 @@ export interface AppServiceEnvironmentsListWebWorkerMetricsOptionalParams extend } /** - * @interface - * An interface representing AppServiceEnvironmentsBeginDeleteMethodOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface AppServiceEnvironmentsBeginDeleteMethodOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [forceDelete] Specify true to force the - * deletion even if the App Service Environment contains resources. The - * default is false. + * Specify true to force the deletion even if the App Service Environment contains + * resources. The default is false. */ forceDelete?: boolean; } /** - * @interface - * An interface representing AppServicePlansListOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface AppServicePlansListOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [detailed] Specify true to return all App - * Service plan properties. The default is false, which returns - * a subset of the properties. + * Specify true to return all App Service plan properties. The default is + * false, which returns a subset of the properties. * Retrieval of all properties may increase the API latency. */ detailed?: boolean; } /** - * @interface - * An interface representing AppServicePlansListMetricsOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface AppServicePlansListMetricsOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [details] Specify true to include instance - * details. The default is false. + * Specify true to include instance details. The default is false. */ details?: boolean; /** - * @member {string} [filter] Return only usages/metrics specified in the - * filter. Filter conforms to odata syntax. Example: $filter=(name.value eq - * 'Metric1' or name.value eq 'Metric2') and startTime eq + * Return only usages/metrics specified in the filter. Filter conforms to odata syntax. Example: + * $filter=(name.value eq 'Metric1' or name.value eq 'Metric2') and startTime eq * 2014-01-01T00:00:00Z and endTime eq 2014-12-31T23:59:59Z and timeGrain eq * duration'[Hour|Minute|Day]'. */ @@ -10389,923 +8482,766 @@ export interface AppServicePlansListMetricsOptionalParams extends msRest.Request } /** - * @interface - * An interface representing AppServicePlansRestartWebAppsOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface AppServicePlansRestartWebAppsOptionalParams extends msRest.RequestOptionsBase { /** - * @member {boolean} [softRestart] Specify true to performa a - * soft restart, applies the configuration settings and restarts the apps if - * necessary. The default is false, which always restarts and + * Specify true to perform a soft restart, applies the configuration settings and + * restarts the apps if necessary. The default is false, which always restarts and * reprovisions the apps */ softRestart?: boolean; } /** - * @interface - * An interface representing AppServicePlansListWebAppsOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface AppServicePlansListWebAppsOptionalParams extends msRest.RequestOptionsBase { /** - * @member {string} [skipToken] Skip to a web app in the list of webapps - * associated with app service plan. If specified, the resulting list will - * contain web apps starting from (including) the skipToken. Otherwise, the + * Skip to a web app in the list of webapps associated with app service plan. If specified, the + * resulting list will contain web apps starting from (including) the skipToken. Otherwise, the * resulting list contains web apps from the start of the list */ skipToken?: string; /** - * @member {string} [filter] Supported filter: $filter=state eq running. - * Returns only web apps that are currently running + * Supported filter: $filter=state eq running. Returns only web apps that are currently running */ filter?: string; /** - * @member {string} [top] List page size. If specified, results are paged. + * List page size. If specified, results are paged. */ top?: string; } /** - * @interface - * An interface representing AppServicePlansListUsagesOptionalParams. * Optional Parameters. - * - * @extends RequestOptionsBase */ export interface AppServicePlansListUsagesOptionalParams extends msRest.RequestOptionsBase { /** - * @member {string} [filter] Return only usages/metrics specified in the - * filter. Filter conforms to odata syntax. Example: $filter=(name.value eq - * 'Metric1' or name.value eq 'Metric2'). + * Return only usages/metrics specified in the filter. Filter conforms to odata syntax. Example: + * $filter=(name.value eq 'Metric1' or name.value eq 'Metric2'). */ filter?: string; } /** - * @interface * An interface representing WebSiteManagementClientOptions. - * @extends AzureServiceClientOptions */ export interface WebSiteManagementClientOptions extends AzureServiceClientOptions { - /** - * @member {string} [baseUri] - */ baseUri?: string; } - /** * @interface - * An interface representing the AppServiceCertificateOrderCollection. - * Collection of certitificate orders. - * + * Collection of certificate orders. * @extends Array */ export interface AppServiceCertificateOrderCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the AppServiceCertificateCollection. - * Collection of certitificateorder certificates. - * + * Collection of certificate order certificates. * @extends Array */ export interface AppServiceCertificateCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the CsmOperationCollection. * Collection of Azure resource manager operation metadata. - * * @extends Array */ export interface CsmOperationCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the DomainCollection. * Collection of domains. - * * @extends Array */ export interface DomainCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the NameIdentifierCollection. * Collection of domain name identifiers. - * * @extends Array */ export interface NameIdentifierCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the DomainOwnershipIdentifierCollection. * Collection of domain ownership identifiers. - * * @extends Array */ export interface DomainOwnershipIdentifierCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the TopLevelDomainCollection. * Collection of Top-level domains. - * * @extends Array */ export interface TopLevelDomainCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the TldLegalAgreementCollection. * Collection of top-level domain legal agreements. - * * @extends Array */ export interface TldLegalAgreementCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the CertificateCollection. * Collection of certificates. - * * @extends Array */ export interface CertificateCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the DeletedWebAppCollection. * Collection of deleted apps. - * * @extends Array */ export interface DeletedWebAppCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the DetectorResponseCollection. * Collection of detector responses - * * @extends Array */ export interface DetectorResponseCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the DiagnosticCategoryCollection. * Collection of Diagnostic Categories - * * @extends Array */ export interface DiagnosticCategoryCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the DiagnosticAnalysisCollection. * Collection of Diagnostic Analyses - * * @extends Array */ export interface DiagnosticAnalysisCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the DiagnosticDetectorCollection. * Collection of Diagnostic Detectors - * * @extends Array */ export interface DiagnosticDetectorCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the ApplicationStackCollection. * Collection of Application Stacks - * * @extends Array */ export interface ApplicationStackCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the RecommendationCollection. * Collection of recommendations. - * * @extends Array */ export interface RecommendationCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the SourceControlCollection. * Collection of source controls. - * * @extends Array */ export interface SourceControlCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the BillingMeterCollection. * Collection of Billing Meters - * * @extends Array */ export interface BillingMeterCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the GeoRegionCollection. * Collection of geographical regions. - * * @extends Array */ export interface GeoRegionCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the IdentifierCollection. * Collection of identifiers. - * * @extends Array */ export interface IdentifierCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the PremierAddOnOfferCollection. * Collection of premier add-on offers. - * * @extends Array */ export interface PremierAddOnOfferCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the WebAppCollection. * Collection of App Service apps. - * * @extends Array */ export interface WebAppCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the BackupItemCollection. * Collection of backup items. - * * @extends Array */ export interface BackupItemCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the SiteConfigResourceCollection. * Collection of site configurations. - * * @extends Array */ export interface SiteConfigResourceCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the SiteConfigurationSnapshotInfoCollection. - * Collection of metadata for the app configuration snapshots that can be - * restored. - * + * Collection of metadata for the app configuration snapshots that can be restored. * @extends Array */ export interface SiteConfigurationSnapshotInfoCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the ContinuousWebJobCollection. * Collection of Kudu continuous web job information elements. - * * @extends Array */ export interface ContinuousWebJobCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the DeploymentCollection. * Collection of app deployments. - * * @extends Array */ export interface DeploymentCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the FunctionEnvelopeCollection. * Collection of Kudu function information elements. - * * @extends Array */ export interface FunctionEnvelopeCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the HostNameBindingCollection. * Collection of hostname bindings. - * * @extends Array */ export interface HostNameBindingCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the WebAppInstanceCollection. * Collection of app instances. - * * @extends Array */ export interface WebAppInstanceCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the ProcessInfoCollection. * Collection of Kudu process information elements. - * * @extends Array */ export interface ProcessInfoCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the ProcessModuleInfoCollection. * Collection of Kudu thread information elements. - * * @extends Array */ export interface ProcessModuleInfoCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the ProcessThreadInfoCollection. * Collection of Kudu thread information elements. - * * @extends Array */ export interface ProcessThreadInfoCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the ResourceMetricDefinitionCollection. * Collection of metric definitions. - * * @extends Array */ export interface ResourceMetricDefinitionCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the ResourceMetricCollection. * Collection of metric responses. - * * @extends Array */ export interface ResourceMetricCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the PerfMonCounterCollection. * Collection of performance monitor counters. - * * @extends Array */ export interface PerfMonCounterCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the PublicCertificateCollection. * Collection of public certificates - * * @extends Array */ export interface PublicCertificateCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the SiteExtensionInfoCollection. * Collection of Kudu site extension information elements. - * * @extends Array */ export interface SiteExtensionInfoCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the SlotDifferenceCollection. * Collection of slot differences. - * * @extends Array */ export interface SlotDifferenceCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the SnapshotCollection. - * Collection of snapshots which can be used to revert an app to a previous - * time. - * + * Collection of snapshots which can be used to revert an app to a previous time. * @extends Array */ export interface SnapshotCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the TriggeredWebJobCollection. * Collection of Kudu continuous web job information elements. - * * @extends Array */ export interface TriggeredWebJobCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the TriggeredJobHistoryCollection. * Collection of Kudu continuous web job information elements. - * * @extends Array */ export interface TriggeredJobHistoryCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the CsmUsageQuotaCollection. * Collection of CSM usage quotas. - * * @extends Array */ export interface CsmUsageQuotaCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the WebJobCollection. * Collection of Kudu web job information elements. - * * @extends Array */ export interface WebJobCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the AppServiceEnvironmentCollection. * Collection of App Service Environments. - * * @extends Array */ export interface AppServiceEnvironmentCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the StampCapacityCollection. * Collection of stamp capacities. - * * @extends Array */ export interface StampCapacityCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly nextLink?: string; +} + +/** + * @interface + * Collection of Inbound Environment Endpoints + * @extends Array + */ +export interface InboundEnvironmentEndpointCollection extends Array { + /** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the WorkerPoolCollection. * Collection of worker pools. - * * @extends Array */ export interface WorkerPoolCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the SkuInfoCollection. * Collection of SKU information. - * * @extends Array */ export interface SkuInfoCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the UsageCollection. * Collection of usages. - * * @extends Array */ export interface UsageCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly nextLink?: string; +} + +/** + * @interface + * Collection of Outbound Environment Endpoints + * @extends Array + */ +export interface OutboundEnvironmentEndpointCollection extends Array { + /** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the AppServicePlanCollection. * Collection of App Service plans. - * * @extends Array */ export interface AppServicePlanCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the ResourceCollection. * Collection of resources. - * * @extends Array */ export interface ResourceCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the HybridConnectionCollection. * Collection of hostname bindings. - * * @extends Array */ export interface HybridConnectionCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } /** * @interface - * An interface representing the ResourceHealthMetadataCollection. * Collection of resource health metadata. - * * @extends Array */ export interface ResourceHealthMetadataCollection extends Array { /** - * @member {string} [nextLink] Link to next page of resources. - * **NOTE: This property will not be serialized. It can only be populated by - * the server.** + * Link to next page of resources. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ readonly nextLink?: string; } @@ -11367,11 +9303,12 @@ export type RouteType = 'DEFAULT' | 'INHERITED' | 'STATIC'; /** * Defines values for ManagedServiceIdentityType. - * Possible values include: 'SystemAssigned', 'UserAssigned' + * Possible values include: 'SystemAssigned', 'UserAssigned', 'SystemAssigned, UserAssigned', + * 'None' * @readonly * @enum {string} */ -export type ManagedServiceIdentityType = 'SystemAssigned' | 'UserAssigned'; +export type ManagedServiceIdentityType = 'SystemAssigned' | 'UserAssigned' | 'SystemAssigned, UserAssigned' | 'None'; /** * Defines values for IpFilterTag. @@ -11488,6 +9425,14 @@ export type UsageState = 'Normal' | 'Exceeded'; */ export type SiteAvailabilityState = 'Normal' | 'Limited' | 'DisasterRecoveryMode'; +/** + * Defines values for RedundancyMode. + * Possible values include: 'None', 'Manual', 'Failover', 'ActiveActive', 'GeoRedundant' + * @readonly + * @enum {string} + */ +export type RedundancyMode = 'None' | 'Manual' | 'Failover' | 'ActiveActive' | 'GeoRedundant'; + /** * Defines values for StatusOptions. * Possible values include: 'Ready', 'Pending', 'Creating' @@ -11860,6 +9805,7 @@ export type AppServiceCertificateOrdersListResponse = AppServiceCertificateOrder * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -11879,6 +9825,7 @@ export type AppServiceCertificateOrdersListByResourceGroupResponse = AppServiceC * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -11898,6 +9845,7 @@ export type AppServiceCertificateOrdersGetResponse = AppServiceCertificateOrder * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -11917,6 +9865,7 @@ export type AppServiceCertificateOrdersCreateOrUpdateResponse = AppServiceCertif * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -11936,6 +9885,7 @@ export type AppServiceCertificateOrdersUpdateResponse = AppServiceCertificateOrd * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -11955,6 +9905,7 @@ export type AppServiceCertificateOrdersListCertificatesResponse = AppServiceCert * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -11974,6 +9925,7 @@ export type AppServiceCertificateOrdersGetCertificateResponse = AppServiceCertif * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -11993,6 +9945,7 @@ export type AppServiceCertificateOrdersCreateOrUpdateCertificateResponse = AppSe * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12012,6 +9965,7 @@ export type AppServiceCertificateOrdersUpdateCertificateResponse = AppServiceCer * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12031,6 +9985,7 @@ export type AppServiceCertificateOrdersRetrieveSiteSealResponse = SiteSeal & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12050,6 +10005,7 @@ export type AppServiceCertificateOrdersRetrieveCertificateActionsResponse = Arra * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12069,6 +10025,7 @@ export type AppServiceCertificateOrdersRetrieveCertificateEmailHistoryResponse = * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12088,6 +10045,7 @@ export type AppServiceCertificateOrdersBeginCreateOrUpdateResponse = AppServiceC * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12107,6 +10065,7 @@ export type AppServiceCertificateOrdersBeginCreateOrUpdateCertificateResponse = * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12126,6 +10085,7 @@ export type AppServiceCertificateOrdersListNextResponse = AppServiceCertificateO * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12145,6 +10105,7 @@ export type AppServiceCertificateOrdersListByResourceGroupNextResponse = AppServ * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12164,6 +10125,7 @@ export type AppServiceCertificateOrdersListCertificatesNextResponse = AppService * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12183,6 +10145,7 @@ export type CertificateRegistrationProviderListOperationsResponse = CsmOperation * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12202,6 +10165,7 @@ export type CertificateRegistrationProviderListOperationsNextResponse = CsmOpera * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12221,6 +10185,7 @@ export type DomainsCheckAvailabilityResponse = DomainAvailablilityCheckResult & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12240,6 +10205,7 @@ export type DomainsListResponse = DomainCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12259,6 +10225,7 @@ export type DomainsGetControlCenterSsoRequestResponse = DomainControlCenterSsoRe * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12278,6 +10245,7 @@ export type DomainsListRecommendationsResponse = NameIdentifierCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12297,6 +10265,7 @@ export type DomainsListByResourceGroupResponse = DomainCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12316,6 +10285,7 @@ export type DomainsGetResponse = Domain & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12335,6 +10305,7 @@ export type DomainsCreateOrUpdateResponse = Domain & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12354,6 +10325,7 @@ export type DomainsUpdateResponse = Domain & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12373,6 +10345,7 @@ export type DomainsListOwnershipIdentifiersResponse = DomainOwnershipIdentifierC * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12392,6 +10365,7 @@ export type DomainsGetOwnershipIdentifierResponse = DomainOwnershipIdentifier & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12411,6 +10385,7 @@ export type DomainsCreateOrUpdateOwnershipIdentifierResponse = DomainOwnershipId * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12430,6 +10405,7 @@ export type DomainsUpdateOwnershipIdentifierResponse = DomainOwnershipIdentifier * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12449,6 +10425,7 @@ export type DomainsBeginCreateOrUpdateResponse = Domain & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12468,6 +10445,7 @@ export type DomainsListNextResponse = DomainCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12487,6 +10465,7 @@ export type DomainsListRecommendationsNextResponse = NameIdentifierCollection & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12506,6 +10485,7 @@ export type DomainsListByResourceGroupNextResponse = DomainCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12525,6 +10505,7 @@ export type DomainsListOwnershipIdentifiersNextResponse = DomainOwnershipIdentif * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12544,6 +10525,7 @@ export type TopLevelDomainsListResponse = TopLevelDomainCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12563,6 +10545,7 @@ export type TopLevelDomainsGetResponse = TopLevelDomain & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12582,6 +10565,7 @@ export type TopLevelDomainsListAgreementsResponse = TldLegalAgreementCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12601,6 +10585,7 @@ export type TopLevelDomainsListNextResponse = TopLevelDomainCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12620,6 +10605,7 @@ export type TopLevelDomainsListAgreementsNextResponse = TldLegalAgreementCollect * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12639,6 +10625,7 @@ export type DomainRegistrationProviderListOperationsResponse = CsmOperationColle * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12658,6 +10645,7 @@ export type DomainRegistrationProviderListOperationsNextResponse = CsmOperationC * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12677,6 +10665,7 @@ export type CertificatesListResponse = CertificateCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12696,6 +10685,7 @@ export type CertificatesListByResourceGroupResponse = CertificateCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12715,6 +10705,7 @@ export type CertificatesGetResponse = Certificate & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12734,6 +10725,7 @@ export type CertificatesCreateOrUpdateResponse = Certificate & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12753,6 +10745,7 @@ export type CertificatesUpdateResponse = Certificate & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12772,6 +10765,7 @@ export type CertificatesListNextResponse = CertificateCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12791,6 +10785,7 @@ export type CertificatesListByResourceGroupNextResponse = CertificateCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12810,6 +10805,27 @@ export type DeletedWebAppsListResponse = DeletedWebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: DeletedWebAppCollection; + }; +}; + +/** + * Contains response data for the listByLocation operation. + */ +export type DeletedWebAppsListByLocationResponse = DeletedWebAppCollection & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12817,6 +10833,26 @@ export type DeletedWebAppsListResponse = DeletedWebAppCollection & { }; }; +/** + * Contains response data for the getDeletedWebAppByLocation operation. + */ +export type DeletedWebAppsGetDeletedWebAppByLocationResponse = DeletedSite & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: DeletedSite; + }; +}; + /** * Contains response data for the listNext operation. */ @@ -12829,6 +10865,27 @@ export type DeletedWebAppsListNextResponse = DeletedWebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: DeletedWebAppCollection; + }; +}; + +/** + * Contains response data for the listByLocationNext operation. + */ +export type DeletedWebAppsListByLocationNextResponse = DeletedWebAppCollection & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12848,6 +10905,7 @@ export type DiagnosticsListHostingEnvironmentDetectorResponsesResponse = Detecto * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12867,6 +10925,7 @@ export type DiagnosticsGetHostingEnvironmentDetectorResponseResponse = DetectorR * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12886,6 +10945,7 @@ export type DiagnosticsListSiteDetectorResponsesResponse = DetectorResponseColle * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12905,6 +10965,7 @@ export type DiagnosticsGetSiteDetectorResponseResponse = DetectorResponse & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12924,6 +10985,7 @@ export type DiagnosticsListSiteDiagnosticCategoriesResponse = DiagnosticCategory * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12943,6 +11005,7 @@ export type DiagnosticsGetSiteDiagnosticCategoryResponse = DiagnosticCategory & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12962,6 +11025,7 @@ export type DiagnosticsListSiteAnalysesResponse = DiagnosticAnalysisCollection & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -12981,6 +11045,7 @@ export type DiagnosticsGetSiteAnalysisResponse = DiagnosticAnalysis & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13000,6 +11065,7 @@ export type DiagnosticsExecuteSiteAnalysisResponse = DiagnosticAnalysis & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13019,6 +11085,7 @@ export type DiagnosticsListSiteDetectorsResponse = DiagnosticDetectorCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13038,6 +11105,7 @@ export type DiagnosticsGetSiteDetectorResponse = DiagnosticDetectorCollection & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13057,6 +11125,7 @@ export type DiagnosticsExecuteSiteDetectorResponse = DiagnosticDetectorResponse * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13076,6 +11145,7 @@ export type DiagnosticsListSiteDetectorResponsesSlotResponse = DetectorResponseC * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13095,6 +11165,7 @@ export type DiagnosticsGetSiteDetectorResponseSlotResponse = DetectorResponse & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13114,6 +11185,7 @@ export type DiagnosticsListSiteDiagnosticCategoriesSlotResponse = DiagnosticCate * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13133,6 +11205,7 @@ export type DiagnosticsGetSiteDiagnosticCategorySlotResponse = DiagnosticCategor * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13152,6 +11225,7 @@ export type DiagnosticsListSiteAnalysesSlotResponse = DiagnosticAnalysisCollecti * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13171,6 +11245,7 @@ export type DiagnosticsGetSiteAnalysisSlotResponse = DiagnosticAnalysis & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13190,6 +11265,7 @@ export type DiagnosticsExecuteSiteAnalysisSlotResponse = DiagnosticAnalysis & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13209,6 +11285,7 @@ export type DiagnosticsListSiteDetectorsSlotResponse = DiagnosticDetectorCollect * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13228,6 +11305,7 @@ export type DiagnosticsGetSiteDetectorSlotResponse = DiagnosticDetectorCollectio * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13247,6 +11325,7 @@ export type DiagnosticsExecuteSiteDetectorSlotResponse = DiagnosticDetectorRespo * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13266,6 +11345,7 @@ export type DiagnosticsListHostingEnvironmentDetectorResponsesNextResponse = Det * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13285,6 +11365,7 @@ export type DiagnosticsListSiteDetectorResponsesNextResponse = DetectorResponseC * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13304,6 +11385,7 @@ export type DiagnosticsListSiteDiagnosticCategoriesNextResponse = DiagnosticCate * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13323,6 +11405,7 @@ export type DiagnosticsListSiteAnalysesNextResponse = DiagnosticAnalysisCollecti * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13342,6 +11425,7 @@ export type DiagnosticsListSiteDetectorsNextResponse = DiagnosticDetectorCollect * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13361,6 +11445,7 @@ export type DiagnosticsGetSiteDetectorNextResponse = DiagnosticDetectorCollectio * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13380,6 +11465,7 @@ export type DiagnosticsListSiteDetectorResponsesSlotNextResponse = DetectorRespo * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13399,6 +11485,7 @@ export type DiagnosticsListSiteDiagnosticCategoriesSlotNextResponse = Diagnostic * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13418,6 +11505,7 @@ export type DiagnosticsListSiteAnalysesSlotNextResponse = DiagnosticAnalysisColl * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13437,6 +11525,7 @@ export type DiagnosticsListSiteDetectorsSlotNextResponse = DiagnosticDetectorCol * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13456,6 +11545,7 @@ export type DiagnosticsGetSiteDetectorSlotNextResponse = DiagnosticDetectorColle * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13475,6 +11565,7 @@ export type ProviderGetAvailableStacksResponse = ApplicationStackCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13494,6 +11585,7 @@ export type ProviderListOperationsResponse = CsmOperationCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13513,6 +11605,7 @@ export type ProviderGetAvailableStacksOnPremResponse = ApplicationStackCollectio * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13532,6 +11625,7 @@ export type ProviderGetAvailableStacksNextResponse = ApplicationStackCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13551,6 +11645,7 @@ export type ProviderListOperationsNextResponse = CsmOperationCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13570,6 +11665,7 @@ export type ProviderGetAvailableStacksOnPremNextResponse = ApplicationStackColle * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13589,6 +11685,47 @@ export type RecommendationsListResponse = RecommendationCollection & { * The response body as text (string format) */ bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: RecommendationCollection; + }; +}; + +/** + * Contains response data for the listHistoryForHostingEnvironment operation. + */ +export type RecommendationsListHistoryForHostingEnvironmentResponse = RecommendationCollection & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: RecommendationCollection; + }; +}; + +/** + * Contains response data for the listRecommendedRulesForHostingEnvironment operation. + */ +export type RecommendationsListRecommendedRulesForHostingEnvironmentResponse = RecommendationCollection & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13596,6 +11733,26 @@ export type RecommendationsListResponse = RecommendationCollection & { }; }; +/** + * Contains response data for the getRuleDetailsByHostingEnvironment operation. + */ +export type RecommendationsGetRuleDetailsByHostingEnvironmentResponse = RecommendationRule & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: RecommendationRule; + }; +}; + /** * Contains response data for the listHistoryForWebApp operation. */ @@ -13608,6 +11765,7 @@ export type RecommendationsListHistoryForWebAppResponse = RecommendationCollecti * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13627,6 +11785,7 @@ export type RecommendationsListRecommendedRulesForWebAppResponse = Recommendatio * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13646,6 +11805,7 @@ export type RecommendationsGetRuleDetailsByWebAppResponse = RecommendationRule & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13665,6 +11825,47 @@ export type RecommendationsListNextResponse = RecommendationCollection & { * The response body as text (string format) */ bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: RecommendationCollection; + }; +}; + +/** + * Contains response data for the listHistoryForHostingEnvironmentNext operation. + */ +export type RecommendationsListHistoryForHostingEnvironmentNextResponse = RecommendationCollection & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: RecommendationCollection; + }; +}; + +/** + * Contains response data for the listRecommendedRulesForHostingEnvironmentNext operation. + */ +export type RecommendationsListRecommendedRulesForHostingEnvironmentNextResponse = RecommendationCollection & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13684,6 +11885,7 @@ export type RecommendationsListHistoryForWebAppNextResponse = RecommendationColl * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13703,6 +11905,7 @@ export type RecommendationsListRecommendedRulesForWebAppNextResponse = Recommend * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13722,6 +11925,7 @@ export type GetPublishingUserResponse = User & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13741,6 +11945,7 @@ export type UpdatePublishingUserResponse = User & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13760,6 +11965,7 @@ export type ListSourceControlsResponse = SourceControlCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13779,6 +11985,7 @@ export type GetSourceControlResponse = SourceControl & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13798,6 +12005,7 @@ export type UpdateSourceControlResponse = SourceControl & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13817,6 +12025,7 @@ export type ListBillingMetersResponse = BillingMeterCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13836,6 +12045,7 @@ export type CheckNameAvailabilityResponse = ResourceNameAvailability & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13855,6 +12065,7 @@ export type GetSubscriptionDeploymentLocationsResponse = DeploymentLocations & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13874,6 +12085,7 @@ export type ListGeoRegionsResponse = GeoRegionCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13893,6 +12105,7 @@ export type ListSiteIdentifiersAssignedToHostNameResponse = IdentifierCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13912,6 +12125,7 @@ export type ListPremierAddOnOffersResponse = PremierAddOnOfferCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13931,6 +12145,7 @@ export type ListSkusResponse = SkuInfos & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13950,6 +12165,7 @@ export type VerifyHostingEnvironmentVnetResponse = VnetValidationFailureDetails * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13969,6 +12185,7 @@ export type ValidateResponse2 = ValidateResponse & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -13976,6 +12193,31 @@ export type ValidateResponse2 = ValidateResponse & { }; }; +/** + * Contains response data for the validateContainerSettings operation. + */ +export type ValidateContainerSettingsResponse = { + /** + * The parsed response body. + */ + body: any; + + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: any; + }; +}; + /** * Contains response data for the listSourceControlsNext operation. */ @@ -13988,6 +12230,7 @@ export type ListSourceControlsNextResponse = SourceControlCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14007,6 +12250,7 @@ export type ListBillingMetersNextResponse = BillingMeterCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14026,6 +12270,7 @@ export type ListGeoRegionsNextResponse = GeoRegionCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14045,6 +12290,7 @@ export type ListSiteIdentifiersAssignedToHostNameNextResponse = IdentifierCollec * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14064,6 +12310,7 @@ export type ListPremierAddOnOffersNextResponse = PremierAddOnOfferCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14083,6 +12330,7 @@ export type WebAppsListResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14102,6 +12350,7 @@ export type WebAppsListByResourceGroupResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14121,6 +12370,7 @@ export type WebAppsGetResponse = Site & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14140,6 +12390,7 @@ export type WebAppsCreateOrUpdateResponse = Site & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14159,6 +12410,7 @@ export type WebAppsUpdateResponse = Site & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14178,6 +12430,7 @@ export type WebAppsAnalyzeCustomHostnameResponse = CustomHostnameAnalysisResult * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14197,6 +12450,7 @@ export type WebAppsBackupResponse = BackupItem & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14216,6 +12470,7 @@ export type WebAppsListBackupsResponse = BackupItemCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14235,6 +12490,7 @@ export type WebAppsGetBackupStatusResponse = BackupItem & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14254,6 +12510,7 @@ export type WebAppsListBackupStatusSecretsResponse = BackupItem & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14273,6 +12530,7 @@ export type WebAppsListConfigurationsResponse = SiteConfigResourceCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14292,6 +12550,7 @@ export type WebAppsUpdateApplicationSettingsResponse = StringDictionary & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14311,6 +12570,7 @@ export type WebAppsListApplicationSettingsResponse = StringDictionary & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14330,6 +12590,7 @@ export type WebAppsUpdateAuthSettingsResponse = SiteAuthSettings & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14349,6 +12610,7 @@ export type WebAppsGetAuthSettingsResponse = SiteAuthSettings & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14368,6 +12630,7 @@ export type WebAppsUpdateAzureStorageAccountsResponse = AzureStoragePropertyDict * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14387,6 +12650,7 @@ export type WebAppsListAzureStorageAccountsResponse = AzureStoragePropertyDictio * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14406,6 +12670,7 @@ export type WebAppsUpdateBackupConfigurationResponse = BackupRequest & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14425,6 +12690,7 @@ export type WebAppsGetBackupConfigurationResponse = BackupRequest & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14444,6 +12710,7 @@ export type WebAppsUpdateConnectionStringsResponse = ConnectionStringDictionary * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14463,6 +12730,7 @@ export type WebAppsListConnectionStringsResponse = ConnectionStringDictionary & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14482,6 +12750,7 @@ export type WebAppsGetDiagnosticLogsConfigurationResponse = SiteLogsConfig & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14501,6 +12770,7 @@ export type WebAppsUpdateDiagnosticLogsConfigResponse = SiteLogsConfig & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14520,6 +12790,7 @@ export type WebAppsUpdateMetadataResponse = StringDictionary & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14539,6 +12810,7 @@ export type WebAppsListMetadataResponse = StringDictionary & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14558,74 +12830,18 @@ export type WebAppsListPublishingCredentialsResponse = User & { * The response body as text (string format) */ bodyAsText: string; - /** - * The response body as parsed JSON or XML - */ - parsedBody: User; - }; -}; - -/** - * Contains response data for the updateSitePushSettings operation. - */ -export type WebAppsUpdateSitePushSettingsResponse = PushSettings & { - /** - * The underlying HTTP response. - */ - _response: msRest.HttpResponse & { - /** - * The response body as text (string format) - */ - bodyAsText: string; - /** - * The response body as parsed JSON or XML - */ - parsedBody: PushSettings; - }; -}; - -/** - * Contains response data for the listSitePushSettings operation. - */ -export type WebAppsListSitePushSettingsResponse = PushSettings & { - /** - * The underlying HTTP response. - */ - _response: msRest.HttpResponse & { - /** - * The response body as text (string format) - */ - bodyAsText: string; - /** - * The response body as parsed JSON or XML - */ - parsedBody: PushSettings; - }; -}; -/** - * Contains response data for the listSlotConfigurationNames operation. - */ -export type WebAppsListSlotConfigurationNamesResponse = SlotConfigNamesResource & { - /** - * The underlying HTTP response. - */ - _response: msRest.HttpResponse & { - /** - * The response body as text (string format) - */ - bodyAsText: string; /** * The response body as parsed JSON or XML */ - parsedBody: SlotConfigNamesResource; + parsedBody: User; }; }; /** - * Contains response data for the updateSlotConfigurationNames operation. + * Contains response data for the updateSitePushSettings operation. */ -export type WebAppsUpdateSlotConfigurationNamesResponse = SlotConfigNamesResource & { +export type WebAppsUpdateSitePushSettingsResponse = PushSettings & { /** * The underlying HTTP response. */ @@ -14634,17 +12850,18 @@ export type WebAppsUpdateSlotConfigurationNamesResponse = SlotConfigNamesResourc * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ - parsedBody: SlotConfigNamesResource; + parsedBody: PushSettings; }; }; /** - * Contains response data for the getSwiftVirtualNetworkConnection operation. + * Contains response data for the listSitePushSettings operation. */ -export type WebAppsGetSwiftVirtualNetworkConnectionResponse = SwiftVirtualNetwork & { +export type WebAppsListSitePushSettingsResponse = PushSettings & { /** * The underlying HTTP response. */ @@ -14653,17 +12870,18 @@ export type WebAppsGetSwiftVirtualNetworkConnectionResponse = SwiftVirtualNetwor * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ - parsedBody: SwiftVirtualNetwork; + parsedBody: PushSettings; }; }; /** - * Contains response data for the createOrUpdateSwiftVirtualNetworkConnection operation. + * Contains response data for the listSlotConfigurationNames operation. */ -export type WebAppsCreateOrUpdateSwiftVirtualNetworkConnectionResponse = SwiftVirtualNetwork & { +export type WebAppsListSlotConfigurationNamesResponse = SlotConfigNamesResource & { /** * The underlying HTTP response. */ @@ -14672,17 +12890,18 @@ export type WebAppsCreateOrUpdateSwiftVirtualNetworkConnectionResponse = SwiftVi * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ - parsedBody: SwiftVirtualNetwork; + parsedBody: SlotConfigNamesResource; }; }; /** - * Contains response data for the updateSwiftVirtualNetworkConnection operation. + * Contains response data for the updateSlotConfigurationNames operation. */ -export type WebAppsUpdateSwiftVirtualNetworkConnectionResponse = SwiftVirtualNetwork & { +export type WebAppsUpdateSlotConfigurationNamesResponse = SlotConfigNamesResource & { /** * The underlying HTTP response. */ @@ -14691,10 +12910,11 @@ export type WebAppsUpdateSwiftVirtualNetworkConnectionResponse = SwiftVirtualNet * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ - parsedBody: SwiftVirtualNetwork; + parsedBody: SlotConfigNamesResource; }; }; @@ -14710,6 +12930,7 @@ export type WebAppsGetConfigurationResponse = SiteConfigResource & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14729,6 +12950,7 @@ export type WebAppsCreateOrUpdateConfigurationResponse = SiteConfigResource & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14748,6 +12970,7 @@ export type WebAppsUpdateConfigurationResponse = SiteConfigResource & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14767,6 +12990,7 @@ export type WebAppsListConfigurationSnapshotInfoResponse = SiteConfigurationSnap * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14786,6 +13010,7 @@ export type WebAppsGetConfigurationSnapshotResponse = SiteConfigResource & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14804,6 +13029,7 @@ export type WebAppsGetWebSiteContainerLogsResponse = { * Always undefined in node.js. */ blobBody?: Promise; + /** * NODEJS ONLY * @@ -14811,6 +13037,7 @@ export type WebAppsGetWebSiteContainerLogsResponse = { * Always undefined in the browser. */ readableStreamBody?: NodeJS.ReadableStream; + /** * The underlying HTTP response. */ @@ -14828,6 +13055,7 @@ export type WebAppsGetContainerLogsZipResponse = { * Always undefined in node.js. */ blobBody?: Promise; + /** * NODEJS ONLY * @@ -14835,6 +13063,7 @@ export type WebAppsGetContainerLogsZipResponse = { * Always undefined in the browser. */ readableStreamBody?: NodeJS.ReadableStream; + /** * The underlying HTTP response. */ @@ -14853,6 +13082,7 @@ export type WebAppsListContinuousWebJobsResponse = ContinuousWebJobCollection & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14872,6 +13102,7 @@ export type WebAppsGetContinuousWebJobResponse = ContinuousWebJob & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14891,6 +13122,7 @@ export type WebAppsListDeploymentsResponse = DeploymentCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14910,6 +13142,7 @@ export type WebAppsGetDeploymentResponse = Deployment & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14929,6 +13162,7 @@ export type WebAppsCreateDeploymentResponse = Deployment & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14948,6 +13182,7 @@ export type WebAppsListDeploymentLogResponse = Deployment & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14967,6 +13202,7 @@ export type WebAppsDiscoverBackupResponse = RestoreRequest & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -14986,6 +13222,7 @@ export type WebAppsListDomainOwnershipIdentifiersResponse = IdentifierCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15005,6 +13242,7 @@ export type WebAppsGetDomainOwnershipIdentifierResponse = Identifier & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15024,6 +13262,7 @@ export type WebAppsCreateOrUpdateDomainOwnershipIdentifierResponse = Identifier * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15043,6 +13282,7 @@ export type WebAppsUpdateDomainOwnershipIdentifierResponse = Identifier & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15062,6 +13302,7 @@ export type WebAppsGetMSDeployStatusResponse = MSDeployStatus & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15081,6 +13322,7 @@ export type WebAppsCreateMSDeployOperationResponse = MSDeployStatus & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15100,6 +13342,7 @@ export type WebAppsGetMSDeployLogResponse = MSDeployLog & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15119,6 +13362,7 @@ export type WebAppsListFunctionsResponse = FunctionEnvelopeCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15134,6 +13378,7 @@ export type WebAppsGetFunctionsAdminTokenResponse = { * The parsed response body. */ body: string; + /** * The underlying HTTP response. */ @@ -15142,6 +13387,7 @@ export type WebAppsGetFunctionsAdminTokenResponse = { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15161,6 +13407,7 @@ export type WebAppsGetFunctionResponse = FunctionEnvelope & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15180,6 +13427,7 @@ export type WebAppsCreateFunctionResponse = FunctionEnvelope & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15199,6 +13447,7 @@ export type WebAppsListFunctionSecretsResponse = FunctionSecrets & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15218,6 +13467,7 @@ export type WebAppsListHostNameBindingsResponse = HostNameBindingCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15237,6 +13487,7 @@ export type WebAppsGetHostNameBindingResponse = HostNameBinding & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15256,6 +13507,7 @@ export type WebAppsCreateOrUpdateHostNameBindingResponse = HostNameBinding & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15275,6 +13527,7 @@ export type WebAppsGetHybridConnectionResponse = HybridConnection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15294,6 +13547,7 @@ export type WebAppsCreateOrUpdateHybridConnectionResponse = HybridConnection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15313,6 +13567,7 @@ export type WebAppsUpdateHybridConnectionResponse = HybridConnection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15332,6 +13587,7 @@ export type WebAppsListHybridConnectionKeysResponse = HybridConnectionKey & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15351,6 +13607,7 @@ export type WebAppsListHybridConnectionsResponse = HybridConnection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15370,6 +13627,7 @@ export type WebAppsListRelayServiceConnectionsResponse = RelayServiceConnectionE * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15389,6 +13647,7 @@ export type WebAppsGetRelayServiceConnectionResponse = RelayServiceConnectionEnt * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15408,6 +13667,7 @@ export type WebAppsCreateOrUpdateRelayServiceConnectionResponse = RelayServiceCo * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15427,6 +13687,7 @@ export type WebAppsUpdateRelayServiceConnectionResponse = RelayServiceConnection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15446,6 +13707,7 @@ export type WebAppsListInstanceIdentifiersResponse = WebAppInstanceCollection & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15465,6 +13727,7 @@ export type WebAppsGetInstanceMsDeployStatusResponse = MSDeployStatus & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15484,6 +13747,7 @@ export type WebAppsCreateInstanceMSDeployOperationResponse = MSDeployStatus & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15503,6 +13767,7 @@ export type WebAppsGetInstanceMSDeployLogResponse = MSDeployLog & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15522,6 +13787,7 @@ export type WebAppsListInstanceProcessesResponse = ProcessInfoCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15541,6 +13807,7 @@ export type WebAppsGetInstanceProcessResponse = ProcessInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15559,6 +13826,7 @@ export type WebAppsGetInstanceProcessDumpResponse = { * Always undefined in node.js. */ blobBody?: Promise; + /** * NODEJS ONLY * @@ -15566,6 +13834,7 @@ export type WebAppsGetInstanceProcessDumpResponse = { * Always undefined in the browser. */ readableStreamBody?: NodeJS.ReadableStream; + /** * The underlying HTTP response. */ @@ -15584,6 +13853,7 @@ export type WebAppsListInstanceProcessModulesResponse = ProcessModuleInfoCollect * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15603,6 +13873,7 @@ export type WebAppsGetInstanceProcessModuleResponse = ProcessModuleInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15622,6 +13893,7 @@ export type WebAppsListInstanceProcessThreadsResponse = ProcessThreadInfoCollect * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15641,6 +13913,7 @@ export type WebAppsGetInstanceProcessThreadResponse = ProcessThreadInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15660,6 +13933,7 @@ export type WebAppsIsCloneableResponse = SiteCloneability & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15679,6 +13953,7 @@ export type WebAppsListSyncFunctionTriggersResponse = FunctionSecrets & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15698,6 +13973,7 @@ export type WebAppsListMetricDefinitionsResponse = ResourceMetricDefinitionColle * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15717,6 +13993,7 @@ export type WebAppsListMetricsResponse = ResourceMetricCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15736,6 +14013,7 @@ export type WebAppsMigrateStorageResponse = StorageMigrationResponse & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15755,6 +14033,7 @@ export type WebAppsMigrateMySqlResponse = Operation & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15774,6 +14053,7 @@ export type WebAppsGetMigrateMySqlStatusResponse = MigrateMySqlStatus & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15781,6 +14061,66 @@ export type WebAppsGetMigrateMySqlStatusResponse = MigrateMySqlStatus & { }; }; +/** + * Contains response data for the getSwiftVirtualNetworkConnection operation. + */ +export type WebAppsGetSwiftVirtualNetworkConnectionResponse = SwiftVirtualNetwork & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: SwiftVirtualNetwork; + }; +}; + +/** + * Contains response data for the createOrUpdateSwiftVirtualNetworkConnection operation. + */ +export type WebAppsCreateOrUpdateSwiftVirtualNetworkConnectionResponse = SwiftVirtualNetwork & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: SwiftVirtualNetwork; + }; +}; + +/** + * Contains response data for the updateSwiftVirtualNetworkConnection operation. + */ +export type WebAppsUpdateSwiftVirtualNetworkConnectionResponse = SwiftVirtualNetwork & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: SwiftVirtualNetwork; + }; +}; + /** * Contains response data for the listNetworkFeatures operation. */ @@ -15793,6 +14133,7 @@ export type WebAppsListNetworkFeaturesResponse = NetworkFeatures & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15812,6 +14153,7 @@ export type WebAppsGetNetworkTraceOperationResponse = Array & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15827,6 +14169,7 @@ export type WebAppsStartWebSiteNetworkTraceResponse = { * The parsed response body. */ body: string; + /** * The underlying HTTP response. */ @@ -15835,6 +14178,7 @@ export type WebAppsStartWebSiteNetworkTraceResponse = { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15854,6 +14198,7 @@ export type WebAppsStartWebSiteNetworkTraceOperationResponse = Array & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15892,6 +14238,7 @@ export type WebAppsGetNetworkTraceOperationV2Response = Array & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15911,6 +14258,7 @@ export type WebAppsGetNetworkTracesV2Response = Array & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15930,6 +14278,7 @@ export type WebAppsListPerfMonCountersResponse = PerfMonCounterCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15949,6 +14298,7 @@ export type WebAppsGetSitePhpErrorLogFlagResponse = SitePhpErrorLogFlag & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15968,6 +14318,7 @@ export type WebAppsListPremierAddOnsResponse = PremierAddOn & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -15987,6 +14338,7 @@ export type WebAppsGetPremierAddOnResponse = PremierAddOn & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16006,6 +14358,7 @@ export type WebAppsAddPremierAddOnResponse = PremierAddOn & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16025,6 +14378,7 @@ export type WebAppsUpdatePremierAddOnResponse = PremierAddOn & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16044,6 +14398,7 @@ export type WebAppsGetPrivateAccessResponse = PrivateAccess & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16063,6 +14418,7 @@ export type WebAppsPutPrivateAccessVnetResponse = PrivateAccess & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16082,6 +14438,7 @@ export type WebAppsListProcessesResponse = ProcessInfoCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16101,6 +14458,7 @@ export type WebAppsGetProcessResponse = ProcessInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16119,6 +14477,7 @@ export type WebAppsGetProcessDumpResponse = { * Always undefined in node.js. */ blobBody?: Promise; + /** * NODEJS ONLY * @@ -16126,6 +14485,7 @@ export type WebAppsGetProcessDumpResponse = { * Always undefined in the browser. */ readableStreamBody?: NodeJS.ReadableStream; + /** * The underlying HTTP response. */ @@ -16144,6 +14504,7 @@ export type WebAppsListProcessModulesResponse = ProcessModuleInfoCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16163,6 +14524,7 @@ export type WebAppsGetProcessModuleResponse = ProcessModuleInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16182,6 +14544,7 @@ export type WebAppsListProcessThreadsResponse = ProcessThreadInfoCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16201,6 +14564,7 @@ export type WebAppsGetProcessThreadResponse = ProcessThreadInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16220,6 +14584,7 @@ export type WebAppsListPublicCertificatesResponse = PublicCertificateCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16239,6 +14604,7 @@ export type WebAppsGetPublicCertificateResponse = PublicCertificate & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16258,6 +14624,7 @@ export type WebAppsCreateOrUpdatePublicCertificateResponse = PublicCertificate & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16276,6 +14643,7 @@ export type WebAppsListPublishingProfileXmlWithSecretsResponse = { * Always undefined in node.js. */ blobBody?: Promise; + /** * NODEJS ONLY * @@ -16283,6 +14651,7 @@ export type WebAppsListPublishingProfileXmlWithSecretsResponse = { * Always undefined in the browser. */ readableStreamBody?: NodeJS.ReadableStream; + /** * The underlying HTTP response. */ @@ -16301,6 +14670,7 @@ export type WebAppsListSiteExtensionsResponse = SiteExtensionInfoCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16320,6 +14690,7 @@ export type WebAppsGetSiteExtensionResponse = SiteExtensionInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16339,6 +14710,7 @@ export type WebAppsInstallSiteExtensionResponse = SiteExtensionInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16358,6 +14730,7 @@ export type WebAppsListSlotsResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16377,6 +14750,7 @@ export type WebAppsGetSlotResponse = Site & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16396,6 +14770,7 @@ export type WebAppsCreateOrUpdateSlotResponse = Site & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16415,6 +14790,7 @@ export type WebAppsUpdateSlotResponse = Site & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16434,6 +14810,7 @@ export type WebAppsAnalyzeCustomHostnameSlotResponse = CustomHostnameAnalysisRes * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16453,6 +14830,7 @@ export type WebAppsBackupSlotResponse = BackupItem & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16472,6 +14850,7 @@ export type WebAppsListBackupsSlotResponse = BackupItemCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16491,6 +14870,7 @@ export type WebAppsGetBackupStatusSlotResponse = BackupItem & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16510,6 +14890,7 @@ export type WebAppsListBackupStatusSecretsSlotResponse = BackupItem & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16529,6 +14910,7 @@ export type WebAppsListConfigurationsSlotResponse = SiteConfigResourceCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16548,6 +14930,7 @@ export type WebAppsUpdateApplicationSettingsSlotResponse = StringDictionary & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16567,6 +14950,7 @@ export type WebAppsListApplicationSettingsSlotResponse = StringDictionary & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16586,6 +14970,7 @@ export type WebAppsUpdateAuthSettingsSlotResponse = SiteAuthSettings & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16605,6 +14990,7 @@ export type WebAppsGetAuthSettingsSlotResponse = SiteAuthSettings & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16624,6 +15010,7 @@ export type WebAppsUpdateAzureStorageAccountsSlotResponse = AzureStorageProperty * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16643,6 +15030,7 @@ export type WebAppsListAzureStorageAccountsSlotResponse = AzureStoragePropertyDi * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16662,6 +15050,7 @@ export type WebAppsUpdateBackupConfigurationSlotResponse = BackupRequest & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16681,6 +15070,7 @@ export type WebAppsGetBackupConfigurationSlotResponse = BackupRequest & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16691,64 +15081,7 @@ export type WebAppsGetBackupConfigurationSlotResponse = BackupRequest & { /** * Contains response data for the updateConnectionStringsSlot operation. */ -export type WebAppsUpdateConnectionStringsSlotResponse = ConnectionStringDictionary & { - /** - * The underlying HTTP response. - */ - _response: msRest.HttpResponse & { - /** - * The response body as text (string format) - */ - bodyAsText: string; - /** - * The response body as parsed JSON or XML - */ - parsedBody: ConnectionStringDictionary; - }; -}; - -/** - * Contains response data for the listConnectionStringsSlot operation. - */ -export type WebAppsListConnectionStringsSlotResponse = ConnectionStringDictionary & { - /** - * The underlying HTTP response. - */ - _response: msRest.HttpResponse & { - /** - * The response body as text (string format) - */ - bodyAsText: string; - /** - * The response body as parsed JSON or XML - */ - parsedBody: ConnectionStringDictionary; - }; -}; - -/** - * Contains response data for the getDiagnosticLogsConfigurationSlot operation. - */ -export type WebAppsGetDiagnosticLogsConfigurationSlotResponse = SiteLogsConfig & { - /** - * The underlying HTTP response. - */ - _response: msRest.HttpResponse & { - /** - * The response body as text (string format) - */ - bodyAsText: string; - /** - * The response body as parsed JSON or XML - */ - parsedBody: SiteLogsConfig; - }; -}; - -/** - * Contains response data for the updateDiagnosticLogsConfigSlot operation. - */ -export type WebAppsUpdateDiagnosticLogsConfigSlotResponse = SiteLogsConfig & { +export type WebAppsUpdateConnectionStringsSlotResponse = ConnectionStringDictionary & { /** * The underlying HTTP response. */ @@ -16757,17 +15090,18 @@ export type WebAppsUpdateDiagnosticLogsConfigSlotResponse = SiteLogsConfig & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ - parsedBody: SiteLogsConfig; + parsedBody: ConnectionStringDictionary; }; }; /** - * Contains response data for the updateMetadataSlot operation. + * Contains response data for the listConnectionStringsSlot operation. */ -export type WebAppsUpdateMetadataSlotResponse = StringDictionary & { +export type WebAppsListConnectionStringsSlotResponse = ConnectionStringDictionary & { /** * The underlying HTTP response. */ @@ -16776,17 +15110,18 @@ export type WebAppsUpdateMetadataSlotResponse = StringDictionary & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ - parsedBody: StringDictionary; + parsedBody: ConnectionStringDictionary; }; }; /** - * Contains response data for the listMetadataSlot operation. + * Contains response data for the getDiagnosticLogsConfigurationSlot operation. */ -export type WebAppsListMetadataSlotResponse = StringDictionary & { +export type WebAppsGetDiagnosticLogsConfigurationSlotResponse = SiteLogsConfig & { /** * The underlying HTTP response. */ @@ -16795,17 +15130,18 @@ export type WebAppsListMetadataSlotResponse = StringDictionary & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ - parsedBody: StringDictionary; + parsedBody: SiteLogsConfig; }; }; /** - * Contains response data for the listPublishingCredentialsSlot operation. + * Contains response data for the updateDiagnosticLogsConfigSlot operation. */ -export type WebAppsListPublishingCredentialsSlotResponse = User & { +export type WebAppsUpdateDiagnosticLogsConfigSlotResponse = SiteLogsConfig & { /** * The underlying HTTP response. */ @@ -16814,17 +15150,18 @@ export type WebAppsListPublishingCredentialsSlotResponse = User & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ - parsedBody: User; + parsedBody: SiteLogsConfig; }; }; /** - * Contains response data for the updateSitePushSettingsSlot operation. + * Contains response data for the updateMetadataSlot operation. */ -export type WebAppsUpdateSitePushSettingsSlotResponse = PushSettings & { +export type WebAppsUpdateMetadataSlotResponse = StringDictionary & { /** * The underlying HTTP response. */ @@ -16833,17 +15170,18 @@ export type WebAppsUpdateSitePushSettingsSlotResponse = PushSettings & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ - parsedBody: PushSettings; + parsedBody: StringDictionary; }; }; /** - * Contains response data for the listSitePushSettingsSlot operation. + * Contains response data for the listMetadataSlot operation. */ -export type WebAppsListSitePushSettingsSlotResponse = PushSettings & { +export type WebAppsListMetadataSlotResponse = StringDictionary & { /** * The underlying HTTP response. */ @@ -16852,17 +15190,18 @@ export type WebAppsListSitePushSettingsSlotResponse = PushSettings & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ - parsedBody: PushSettings; + parsedBody: StringDictionary; }; }; /** - * Contains response data for the getSwiftVirtualNetworkConnectionSlot operation. + * Contains response data for the listPublishingCredentialsSlot operation. */ -export type WebAppsGetSwiftVirtualNetworkConnectionSlotResponse = SwiftVirtualNetwork & { +export type WebAppsListPublishingCredentialsSlotResponse = User & { /** * The underlying HTTP response. */ @@ -16871,17 +15210,18 @@ export type WebAppsGetSwiftVirtualNetworkConnectionSlotResponse = SwiftVirtualNe * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ - parsedBody: SwiftVirtualNetwork; + parsedBody: User; }; }; /** - * Contains response data for the createOrUpdateSwiftVirtualNetworkConnectionSlot operation. + * Contains response data for the updateSitePushSettingsSlot operation. */ -export type WebAppsCreateOrUpdateSwiftVirtualNetworkConnectionSlotResponse = SwiftVirtualNetwork & { +export type WebAppsUpdateSitePushSettingsSlotResponse = PushSettings & { /** * The underlying HTTP response. */ @@ -16890,17 +15230,18 @@ export type WebAppsCreateOrUpdateSwiftVirtualNetworkConnectionSlotResponse = Swi * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ - parsedBody: SwiftVirtualNetwork; + parsedBody: PushSettings; }; }; /** - * Contains response data for the updateSwiftVirtualNetworkConnectionSlot operation. + * Contains response data for the listSitePushSettingsSlot operation. */ -export type WebAppsUpdateSwiftVirtualNetworkConnectionSlotResponse = SwiftVirtualNetwork & { +export type WebAppsListSitePushSettingsSlotResponse = PushSettings & { /** * The underlying HTTP response. */ @@ -16909,10 +15250,11 @@ export type WebAppsUpdateSwiftVirtualNetworkConnectionSlotResponse = SwiftVirtua * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ - parsedBody: SwiftVirtualNetwork; + parsedBody: PushSettings; }; }; @@ -16928,6 +15270,7 @@ export type WebAppsGetConfigurationSlotResponse = SiteConfigResource & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16947,6 +15290,7 @@ export type WebAppsCreateOrUpdateConfigurationSlotResponse = SiteConfigResource * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16966,6 +15310,7 @@ export type WebAppsUpdateConfigurationSlotResponse = SiteConfigResource & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -16985,6 +15330,7 @@ export type WebAppsListConfigurationSnapshotInfoSlotResponse = SiteConfiguration * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17004,6 +15350,7 @@ export type WebAppsGetConfigurationSnapshotSlotResponse = SiteConfigResource & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17022,6 +15369,7 @@ export type WebAppsGetWebSiteContainerLogsSlotResponse = { * Always undefined in node.js. */ blobBody?: Promise; + /** * NODEJS ONLY * @@ -17029,6 +15377,7 @@ export type WebAppsGetWebSiteContainerLogsSlotResponse = { * Always undefined in the browser. */ readableStreamBody?: NodeJS.ReadableStream; + /** * The underlying HTTP response. */ @@ -17046,6 +15395,7 @@ export type WebAppsGetContainerLogsZipSlotResponse = { * Always undefined in node.js. */ blobBody?: Promise; + /** * NODEJS ONLY * @@ -17053,6 +15403,7 @@ export type WebAppsGetContainerLogsZipSlotResponse = { * Always undefined in the browser. */ readableStreamBody?: NodeJS.ReadableStream; + /** * The underlying HTTP response. */ @@ -17071,6 +15422,7 @@ export type WebAppsListContinuousWebJobsSlotResponse = ContinuousWebJobCollectio * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17090,6 +15442,7 @@ export type WebAppsGetContinuousWebJobSlotResponse = ContinuousWebJob & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17109,6 +15462,7 @@ export type WebAppsListDeploymentsSlotResponse = DeploymentCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17128,6 +15482,7 @@ export type WebAppsGetDeploymentSlotResponse = Deployment & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17147,6 +15502,7 @@ export type WebAppsCreateDeploymentSlotResponse = Deployment & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17166,6 +15522,7 @@ export type WebAppsListDeploymentLogSlotResponse = Deployment & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17185,6 +15542,7 @@ export type WebAppsDiscoverBackupSlotResponse = RestoreRequest & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17204,6 +15562,7 @@ export type WebAppsListDomainOwnershipIdentifiersSlotResponse = IdentifierCollec * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17223,6 +15582,7 @@ export type WebAppsGetDomainOwnershipIdentifierSlotResponse = Identifier & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17242,6 +15602,7 @@ export type WebAppsCreateOrUpdateDomainOwnershipIdentifierSlotResponse = Identif * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17261,6 +15622,7 @@ export type WebAppsUpdateDomainOwnershipIdentifierSlotResponse = Identifier & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17280,6 +15642,7 @@ export type WebAppsGetMSDeployStatusSlotResponse = MSDeployStatus & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17299,6 +15662,7 @@ export type WebAppsCreateMSDeployOperationSlotResponse = MSDeployStatus & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17318,6 +15682,7 @@ export type WebAppsGetMSDeployLogSlotResponse = MSDeployLog & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17337,6 +15702,7 @@ export type WebAppsListInstanceFunctionsSlotResponse = FunctionEnvelopeCollectio * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17352,6 +15718,7 @@ export type WebAppsGetFunctionsAdminTokenSlotResponse = { * The parsed response body. */ body: string; + /** * The underlying HTTP response. */ @@ -17360,6 +15727,7 @@ export type WebAppsGetFunctionsAdminTokenSlotResponse = { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17379,6 +15747,7 @@ export type WebAppsGetInstanceFunctionSlotResponse = FunctionEnvelope & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17398,6 +15767,7 @@ export type WebAppsCreateInstanceFunctionSlotResponse = FunctionEnvelope & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17417,6 +15787,7 @@ export type WebAppsListFunctionSecretsSlotResponse = FunctionSecrets & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17436,6 +15807,7 @@ export type WebAppsListHostNameBindingsSlotResponse = HostNameBindingCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17455,6 +15827,7 @@ export type WebAppsGetHostNameBindingSlotResponse = HostNameBinding & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17474,6 +15847,7 @@ export type WebAppsCreateOrUpdateHostNameBindingSlotResponse = HostNameBinding & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17493,6 +15867,7 @@ export type WebAppsGetHybridConnectionSlotResponse = HybridConnection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17512,6 +15887,7 @@ export type WebAppsCreateOrUpdateHybridConnectionSlotResponse = HybridConnection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17531,6 +15907,7 @@ export type WebAppsUpdateHybridConnectionSlotResponse = HybridConnection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17550,6 +15927,7 @@ export type WebAppsListHybridConnectionKeysSlotResponse = HybridConnectionKey & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17569,6 +15947,7 @@ export type WebAppsListHybridConnectionsSlotResponse = HybridConnection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17588,6 +15967,7 @@ export type WebAppsListRelayServiceConnectionsSlotResponse = RelayServiceConnect * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17607,6 +15987,7 @@ export type WebAppsGetRelayServiceConnectionSlotResponse = RelayServiceConnectio * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17626,6 +16007,7 @@ export type WebAppsCreateOrUpdateRelayServiceConnectionSlotResponse = RelayServi * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17645,6 +16027,7 @@ export type WebAppsUpdateRelayServiceConnectionSlotResponse = RelayServiceConnec * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17664,6 +16047,7 @@ export type WebAppsListInstanceIdentifiersSlotResponse = WebAppInstanceCollectio * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17683,6 +16067,7 @@ export type WebAppsGetInstanceMsDeployStatusSlotResponse = MSDeployStatus & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17702,6 +16087,7 @@ export type WebAppsCreateInstanceMSDeployOperationSlotResponse = MSDeployStatus * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17721,6 +16107,7 @@ export type WebAppsGetInstanceMSDeployLogSlotResponse = MSDeployLog & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17740,6 +16127,7 @@ export type WebAppsListInstanceProcessesSlotResponse = ProcessInfoCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17759,6 +16147,7 @@ export type WebAppsGetInstanceProcessSlotResponse = ProcessInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17777,6 +16166,7 @@ export type WebAppsGetInstanceProcessDumpSlotResponse = { * Always undefined in node.js. */ blobBody?: Promise; + /** * NODEJS ONLY * @@ -17784,6 +16174,7 @@ export type WebAppsGetInstanceProcessDumpSlotResponse = { * Always undefined in the browser. */ readableStreamBody?: NodeJS.ReadableStream; + /** * The underlying HTTP response. */ @@ -17802,6 +16193,7 @@ export type WebAppsListInstanceProcessModulesSlotResponse = ProcessModuleInfoCol * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17821,6 +16213,7 @@ export type WebAppsGetInstanceProcessModuleSlotResponse = ProcessModuleInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17840,6 +16233,7 @@ export type WebAppsListInstanceProcessThreadsSlotResponse = ProcessThreadInfoCol * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17859,6 +16253,7 @@ export type WebAppsGetInstanceProcessThreadSlotResponse = ProcessThreadInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17878,6 +16273,7 @@ export type WebAppsIsCloneableSlotResponse = SiteCloneability & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17897,6 +16293,7 @@ export type WebAppsListSyncFunctionTriggersSlotResponse = FunctionSecrets & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17916,6 +16313,7 @@ export type WebAppsListMetricDefinitionsSlotResponse = ResourceMetricDefinitionC * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17935,6 +16333,7 @@ export type WebAppsListMetricsSlotResponse = ResourceMetricCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17954,6 +16353,7 @@ export type WebAppsGetMigrateMySqlStatusSlotResponse = MigrateMySqlStatus & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17961,6 +16361,66 @@ export type WebAppsGetMigrateMySqlStatusSlotResponse = MigrateMySqlStatus & { }; }; +/** + * Contains response data for the getSwiftVirtualNetworkConnectionSlot operation. + */ +export type WebAppsGetSwiftVirtualNetworkConnectionSlotResponse = SwiftVirtualNetwork & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: SwiftVirtualNetwork; + }; +}; + +/** + * Contains response data for the createOrUpdateSwiftVirtualNetworkConnectionSlot operation. + */ +export type WebAppsCreateOrUpdateSwiftVirtualNetworkConnectionSlotResponse = SwiftVirtualNetwork & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: SwiftVirtualNetwork; + }; +}; + +/** + * Contains response data for the updateSwiftVirtualNetworkConnectionSlot operation. + */ +export type WebAppsUpdateSwiftVirtualNetworkConnectionSlotResponse = SwiftVirtualNetwork & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: SwiftVirtualNetwork; + }; +}; + /** * Contains response data for the listNetworkFeaturesSlot operation. */ @@ -17973,6 +16433,7 @@ export type WebAppsListNetworkFeaturesSlotResponse = NetworkFeatures & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -17992,6 +16453,7 @@ export type WebAppsGetNetworkTraceOperationSlotResponse = Array & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18007,6 +16469,7 @@ export type WebAppsStartWebSiteNetworkTraceSlotResponse = { * The parsed response body. */ body: string; + /** * The underlying HTTP response. */ @@ -18015,6 +16478,7 @@ export type WebAppsStartWebSiteNetworkTraceSlotResponse = { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18034,6 +16498,7 @@ export type WebAppsStartWebSiteNetworkTraceOperationSlotResponse = Array & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18072,6 +16538,7 @@ export type WebAppsGetNetworkTraceOperationSlotV2Response = Array * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18091,6 +16558,7 @@ export type WebAppsGetNetworkTracesSlotV2Response = Array & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18110,6 +16578,7 @@ export type WebAppsListPerfMonCountersSlotResponse = PerfMonCounterCollection & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18129,6 +16598,7 @@ export type WebAppsGetSitePhpErrorLogFlagSlotResponse = SitePhpErrorLogFlag & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18148,6 +16618,7 @@ export type WebAppsListPremierAddOnsSlotResponse = PremierAddOn & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18167,6 +16638,7 @@ export type WebAppsGetPremierAddOnSlotResponse = PremierAddOn & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18186,6 +16658,7 @@ export type WebAppsAddPremierAddOnSlotResponse = PremierAddOn & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18205,6 +16678,7 @@ export type WebAppsUpdatePremierAddOnSlotResponse = PremierAddOn & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18224,6 +16698,7 @@ export type WebAppsGetPrivateAccessSlotResponse = PrivateAccess & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18243,6 +16718,7 @@ export type WebAppsPutPrivateAccessVnetSlotResponse = PrivateAccess & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18262,6 +16738,7 @@ export type WebAppsListProcessesSlotResponse = ProcessInfoCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18281,6 +16758,7 @@ export type WebAppsGetProcessSlotResponse = ProcessInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18299,6 +16777,7 @@ export type WebAppsGetProcessDumpSlotResponse = { * Always undefined in node.js. */ blobBody?: Promise; + /** * NODEJS ONLY * @@ -18306,6 +16785,7 @@ export type WebAppsGetProcessDumpSlotResponse = { * Always undefined in the browser. */ readableStreamBody?: NodeJS.ReadableStream; + /** * The underlying HTTP response. */ @@ -18324,6 +16804,7 @@ export type WebAppsListProcessModulesSlotResponse = ProcessModuleInfoCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18343,6 +16824,7 @@ export type WebAppsGetProcessModuleSlotResponse = ProcessModuleInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18362,6 +16844,7 @@ export type WebAppsListProcessThreadsSlotResponse = ProcessThreadInfoCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18381,6 +16864,7 @@ export type WebAppsGetProcessThreadSlotResponse = ProcessThreadInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18400,6 +16884,7 @@ export type WebAppsListPublicCertificatesSlotResponse = PublicCertificateCollect * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18419,6 +16904,7 @@ export type WebAppsGetPublicCertificateSlotResponse = PublicCertificate & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18438,6 +16924,7 @@ export type WebAppsCreateOrUpdatePublicCertificateSlotResponse = PublicCertifica * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18456,6 +16943,7 @@ export type WebAppsListPublishingProfileXmlWithSecretsSlotResponse = { * Always undefined in node.js. */ blobBody?: Promise; + /** * NODEJS ONLY * @@ -18463,6 +16951,7 @@ export type WebAppsListPublishingProfileXmlWithSecretsSlotResponse = { * Always undefined in the browser. */ readableStreamBody?: NodeJS.ReadableStream; + /** * The underlying HTTP response. */ @@ -18481,6 +16970,7 @@ export type WebAppsListSiteExtensionsSlotResponse = SiteExtensionInfoCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18500,6 +16990,7 @@ export type WebAppsGetSiteExtensionSlotResponse = SiteExtensionInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18519,6 +17010,7 @@ export type WebAppsInstallSiteExtensionSlotResponse = SiteExtensionInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18538,6 +17030,7 @@ export type WebAppsListSlotDifferencesSlotResponse = SlotDifferenceCollection & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18557,6 +17050,7 @@ export type WebAppsListSnapshotsSlotResponse = SnapshotCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18576,6 +17070,7 @@ export type WebAppsListSnapshotsFromDRSecondarySlotResponse = SnapshotCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18595,6 +17090,7 @@ export type WebAppsGetSourceControlSlotResponse = SiteSourceControl & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18614,6 +17110,7 @@ export type WebAppsCreateOrUpdateSourceControlSlotResponse = SiteSourceControl & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18633,6 +17130,7 @@ export type WebAppsUpdateSourceControlSlotResponse = SiteSourceControl & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18652,6 +17150,7 @@ export type WebAppsStartNetworkTraceSlotResponse = Array & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18671,6 +17170,7 @@ export type WebAppsListTriggeredWebJobsSlotResponse = TriggeredWebJobCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18690,6 +17190,7 @@ export type WebAppsGetTriggeredWebJobSlotResponse = TriggeredWebJob & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18709,6 +17210,7 @@ export type WebAppsListTriggeredWebJobHistorySlotResponse = TriggeredJobHistoryC * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18728,6 +17230,7 @@ export type WebAppsGetTriggeredWebJobHistorySlotResponse = TriggeredJobHistory & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18747,6 +17250,7 @@ export type WebAppsListUsagesSlotResponse = CsmUsageQuotaCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18766,6 +17270,7 @@ export type WebAppsListVnetConnectionsSlotResponse = Array & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18785,6 +17290,7 @@ export type WebAppsGetVnetConnectionSlotResponse = VnetInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18804,6 +17310,7 @@ export type WebAppsCreateOrUpdateVnetConnectionSlotResponse = VnetInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18823,6 +17330,7 @@ export type WebAppsUpdateVnetConnectionSlotResponse = VnetInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18842,6 +17350,7 @@ export type WebAppsGetVnetConnectionGatewaySlotResponse = VnetGateway & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18861,6 +17370,7 @@ export type WebAppsCreateOrUpdateVnetConnectionGatewaySlotResponse = VnetGateway * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18880,6 +17390,7 @@ export type WebAppsUpdateVnetConnectionGatewaySlotResponse = VnetGateway & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18899,6 +17410,7 @@ export type WebAppsListWebJobsSlotResponse = WebJobCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18918,6 +17430,7 @@ export type WebAppsGetWebJobSlotResponse = WebJob & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18937,6 +17450,7 @@ export type WebAppsListSlotDifferencesFromProductionResponse = SlotDifferenceCol * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18956,6 +17470,7 @@ export type WebAppsListSnapshotsResponse = SnapshotCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18975,6 +17490,7 @@ export type WebAppsListSnapshotsFromDRSecondaryResponse = SnapshotCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -18994,6 +17510,7 @@ export type WebAppsGetSourceControlResponse = SiteSourceControl & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19013,6 +17530,7 @@ export type WebAppsCreateOrUpdateSourceControlResponse = SiteSourceControl & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19032,6 +17550,7 @@ export type WebAppsUpdateSourceControlResponse = SiteSourceControl & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19051,6 +17570,7 @@ export type WebAppsStartNetworkTraceResponse = Array & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19070,6 +17590,7 @@ export type WebAppsListTriggeredWebJobsResponse = TriggeredWebJobCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19089,6 +17610,7 @@ export type WebAppsGetTriggeredWebJobResponse = TriggeredWebJob & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19108,6 +17630,7 @@ export type WebAppsListTriggeredWebJobHistoryResponse = TriggeredJobHistoryColle * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19127,6 +17650,7 @@ export type WebAppsGetTriggeredWebJobHistoryResponse = TriggeredJobHistory & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19146,6 +17670,7 @@ export type WebAppsListUsagesResponse = CsmUsageQuotaCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19165,6 +17690,7 @@ export type WebAppsListVnetConnectionsResponse = Array & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19184,6 +17710,7 @@ export type WebAppsGetVnetConnectionResponse = VnetInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19203,6 +17730,7 @@ export type WebAppsCreateOrUpdateVnetConnectionResponse = VnetInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19222,6 +17750,7 @@ export type WebAppsUpdateVnetConnectionResponse = VnetInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19241,6 +17770,7 @@ export type WebAppsGetVnetConnectionGatewayResponse = VnetGateway & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19260,6 +17790,7 @@ export type WebAppsCreateOrUpdateVnetConnectionGatewayResponse = VnetGateway & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19279,6 +17810,7 @@ export type WebAppsUpdateVnetConnectionGatewayResponse = VnetGateway & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19298,6 +17830,7 @@ export type WebAppsListWebJobsResponse = WebJobCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19317,6 +17850,7 @@ export type WebAppsGetWebJobResponse = WebJob & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19336,6 +17870,7 @@ export type WebAppsBeginCreateOrUpdateResponse = Site & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19355,6 +17890,7 @@ export type WebAppsBeginListPublishingCredentialsResponse = User & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19374,6 +17910,7 @@ export type WebAppsBeginCreateMSDeployOperationResponse = MSDeployStatus & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19393,6 +17930,7 @@ export type WebAppsBeginCreateFunctionResponse = FunctionEnvelope & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19412,6 +17950,7 @@ export type WebAppsBeginCreateInstanceMSDeployOperationResponse = MSDeployStatus * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19431,6 +17970,7 @@ export type WebAppsBeginMigrateStorageResponse = StorageMigrationResponse & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19450,6 +17990,7 @@ export type WebAppsBeginMigrateMySqlResponse = Operation & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19469,6 +18010,7 @@ export type WebAppsBeginStartWebSiteNetworkTraceOperationResponse = Array & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19678,6 +18230,7 @@ export type WebAppsBeginCreateOrUpdateSourceControlResponse = SiteSourceControl * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19697,6 +18250,7 @@ export type WebAppsBeginStartNetworkTraceResponse = Array & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19716,6 +18270,7 @@ export type WebAppsListNextResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19735,6 +18290,7 @@ export type WebAppsListByResourceGroupNextResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19754,6 +18310,7 @@ export type WebAppsListBackupsNextResponse = BackupItemCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19773,6 +18330,7 @@ export type WebAppsListConfigurationsNextResponse = SiteConfigResourceCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19792,6 +18350,7 @@ export type WebAppsListConfigurationSnapshotInfoNextResponse = SiteConfiguration * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19811,6 +18370,7 @@ export type WebAppsListContinuousWebJobsNextResponse = ContinuousWebJobCollectio * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19830,6 +18390,7 @@ export type WebAppsListDeploymentsNextResponse = DeploymentCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19849,6 +18410,7 @@ export type WebAppsListDomainOwnershipIdentifiersNextResponse = IdentifierCollec * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19868,6 +18430,7 @@ export type WebAppsListFunctionsNextResponse = FunctionEnvelopeCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19887,6 +18450,7 @@ export type WebAppsListHostNameBindingsNextResponse = HostNameBindingCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19906,6 +18470,7 @@ export type WebAppsListInstanceIdentifiersNextResponse = WebAppInstanceCollectio * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19925,6 +18490,7 @@ export type WebAppsListInstanceProcessesNextResponse = ProcessInfoCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19944,6 +18510,7 @@ export type WebAppsListInstanceProcessModulesNextResponse = ProcessModuleInfoCol * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19963,6 +18530,7 @@ export type WebAppsListInstanceProcessThreadsNextResponse = ProcessThreadInfoCol * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -19982,6 +18550,7 @@ export type WebAppsListMetricDefinitionsNextResponse = ResourceMetricDefinitionC * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20001,6 +18570,7 @@ export type WebAppsListMetricsNextResponse = ResourceMetricCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20020,6 +18590,7 @@ export type WebAppsListPerfMonCountersNextResponse = PerfMonCounterCollection & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20039,6 +18610,7 @@ export type WebAppsListProcessesNextResponse = ProcessInfoCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20058,6 +18630,7 @@ export type WebAppsListProcessModulesNextResponse = ProcessModuleInfoCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20077,6 +18650,7 @@ export type WebAppsListProcessThreadsNextResponse = ProcessThreadInfoCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20096,6 +18670,7 @@ export type WebAppsListPublicCertificatesNextResponse = PublicCertificateCollect * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20115,6 +18690,7 @@ export type WebAppsListSiteExtensionsNextResponse = SiteExtensionInfoCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20134,6 +18710,7 @@ export type WebAppsListSlotsNextResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20153,6 +18730,7 @@ export type WebAppsListBackupsSlotNextResponse = BackupItemCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20172,6 +18750,7 @@ export type WebAppsListConfigurationsSlotNextResponse = SiteConfigResourceCollec * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20191,6 +18770,7 @@ export type WebAppsListConfigurationSnapshotInfoSlotNextResponse = SiteConfigura * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20210,6 +18790,7 @@ export type WebAppsListContinuousWebJobsSlotNextResponse = ContinuousWebJobColle * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20229,6 +18810,7 @@ export type WebAppsListDeploymentsSlotNextResponse = DeploymentCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20248,6 +18830,7 @@ export type WebAppsListDomainOwnershipIdentifiersSlotNextResponse = IdentifierCo * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20267,6 +18850,7 @@ export type WebAppsListInstanceFunctionsSlotNextResponse = FunctionEnvelopeColle * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20286,6 +18870,7 @@ export type WebAppsListHostNameBindingsSlotNextResponse = HostNameBindingCollect * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20305,6 +18890,7 @@ export type WebAppsListInstanceIdentifiersSlotNextResponse = WebAppInstanceColle * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20324,6 +18910,7 @@ export type WebAppsListInstanceProcessesSlotNextResponse = ProcessInfoCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20343,6 +18930,7 @@ export type WebAppsListInstanceProcessModulesSlotNextResponse = ProcessModuleInf * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20362,6 +18950,7 @@ export type WebAppsListInstanceProcessThreadsSlotNextResponse = ProcessThreadInf * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20381,6 +18970,7 @@ export type WebAppsListMetricDefinitionsSlotNextResponse = ResourceMetricDefinit * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20400,6 +18990,7 @@ export type WebAppsListMetricsSlotNextResponse = ResourceMetricCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20419,6 +19010,7 @@ export type WebAppsListPerfMonCountersSlotNextResponse = PerfMonCounterCollectio * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20438,6 +19030,7 @@ export type WebAppsListProcessesSlotNextResponse = ProcessInfoCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20457,6 +19050,7 @@ export type WebAppsListProcessModulesSlotNextResponse = ProcessModuleInfoCollect * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20476,6 +19070,7 @@ export type WebAppsListProcessThreadsSlotNextResponse = ProcessThreadInfoCollect * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20495,6 +19090,7 @@ export type WebAppsListPublicCertificatesSlotNextResponse = PublicCertificateCol * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20514,6 +19110,7 @@ export type WebAppsListSiteExtensionsSlotNextResponse = SiteExtensionInfoCollect * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20533,6 +19130,7 @@ export type WebAppsListSlotDifferencesSlotNextResponse = SlotDifferenceCollectio * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20552,6 +19150,7 @@ export type WebAppsListSnapshotsSlotNextResponse = SnapshotCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20571,6 +19170,7 @@ export type WebAppsListSnapshotsFromDRSecondarySlotNextResponse = SnapshotCollec * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20590,6 +19190,7 @@ export type WebAppsListTriggeredWebJobsSlotNextResponse = TriggeredWebJobCollect * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20609,6 +19210,7 @@ export type WebAppsListTriggeredWebJobHistorySlotNextResponse = TriggeredJobHist * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20628,6 +19230,7 @@ export type WebAppsListUsagesSlotNextResponse = CsmUsageQuotaCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20647,6 +19250,7 @@ export type WebAppsListWebJobsSlotNextResponse = WebJobCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20666,6 +19270,7 @@ export type WebAppsListSlotDifferencesFromProductionNextResponse = SlotDifferenc * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20685,6 +19290,7 @@ export type WebAppsListSnapshotsNextResponse = SnapshotCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20704,6 +19310,7 @@ export type WebAppsListSnapshotsFromDRSecondaryNextResponse = SnapshotCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20723,6 +19330,7 @@ export type WebAppsListTriggeredWebJobsNextResponse = TriggeredWebJobCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20742,6 +19350,7 @@ export type WebAppsListTriggeredWebJobHistoryNextResponse = TriggeredJobHistoryC * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20761,6 +19370,7 @@ export type WebAppsListUsagesNextResponse = CsmUsageQuotaCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20780,6 +19390,7 @@ export type WebAppsListWebJobsNextResponse = WebJobCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20799,6 +19410,7 @@ export type AppServiceEnvironmentsListResponse = AppServiceEnvironmentCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20818,6 +19430,7 @@ export type AppServiceEnvironmentsListByResourceGroupResponse = AppServiceEnviro * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20837,6 +19450,7 @@ export type AppServiceEnvironmentsGetResponse = AppServiceEnvironmentResource & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20856,6 +19470,7 @@ export type AppServiceEnvironmentsCreateOrUpdateResponse = AppServiceEnvironment * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20875,6 +19490,7 @@ export type AppServiceEnvironmentsUpdateResponse = AppServiceEnvironmentResource * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20894,6 +19510,7 @@ export type AppServiceEnvironmentsListCapacitiesResponse = StampCapacityCollecti * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20913,6 +19530,7 @@ export type AppServiceEnvironmentsListVipsResponse = AddressResponse & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20932,6 +19550,7 @@ export type AppServiceEnvironmentsChangeVnetResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -20951,6 +19570,7 @@ export type AppServiceEnvironmentsListDiagnosticsResponse = Array & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21224,6 +19878,26 @@ export type AppServiceEnvironmentsListOperationsResponse = Array & { }; }; +/** + * Contains response data for the getOutboundNetworkDependenciesEndpoints operation. + */ +export type AppServiceEnvironmentsGetOutboundNetworkDependenciesEndpointsResponse = OutboundEnvironmentEndpointCollection & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: OutboundEnvironmentEndpointCollection; + }; +}; + /** * Contains response data for the resume operation. */ @@ -21236,6 +19910,7 @@ export type AppServiceEnvironmentsResumeResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21255,6 +19930,7 @@ export type AppServiceEnvironmentsListAppServicePlansResponse = AppServicePlanCo * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21274,6 +19950,7 @@ export type AppServiceEnvironmentsListWebAppsResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21293,6 +19970,7 @@ export type AppServiceEnvironmentsSuspendResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21312,6 +19990,7 @@ export type AppServiceEnvironmentsListUsagesResponse = CsmUsageQuotaCollection & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21331,6 +20010,7 @@ export type AppServiceEnvironmentsListWorkerPoolsResponse = WorkerPoolCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21350,6 +20030,7 @@ export type AppServiceEnvironmentsGetWorkerPoolResponse = WorkerPoolResource & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21369,6 +20050,7 @@ export type AppServiceEnvironmentsCreateOrUpdateWorkerPoolResponse = WorkerPoolR * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21388,6 +20070,7 @@ export type AppServiceEnvironmentsUpdateWorkerPoolResponse = WorkerPoolResource * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21407,6 +20090,7 @@ export type AppServiceEnvironmentsListWorkerPoolInstanceMetricDefinitionsRespons * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21426,6 +20110,7 @@ export type AppServiceEnvironmentsListWorkerPoolInstanceMetricsResponse = Resour * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21445,6 +20130,7 @@ export type AppServiceEnvironmentsListWebWorkerMetricDefinitionsResponse = Resou * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21464,6 +20150,7 @@ export type AppServiceEnvironmentsListWebWorkerMetricsResponse = ResourceMetricC * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21483,6 +20170,7 @@ export type AppServiceEnvironmentsListWorkerPoolSkusResponse = SkuInfoCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21502,6 +20190,7 @@ export type AppServiceEnvironmentsListWebWorkerUsagesResponse = UsageCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21521,6 +20210,7 @@ export type AppServiceEnvironmentsBeginCreateOrUpdateResponse = AppServiceEnviro * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21540,6 +20230,7 @@ export type AppServiceEnvironmentsBeginChangeVnetResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21559,6 +20250,7 @@ export type AppServiceEnvironmentsBeginCreateOrUpdateMultiRolePoolResponse = Wor * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21578,6 +20270,7 @@ export type AppServiceEnvironmentsBeginResumeResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21597,6 +20290,7 @@ export type AppServiceEnvironmentsBeginSuspendResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21616,6 +20310,7 @@ export type AppServiceEnvironmentsBeginCreateOrUpdateWorkerPoolResponse = Worker * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21635,6 +20330,7 @@ export type AppServiceEnvironmentsListNextResponse = AppServiceEnvironmentCollec * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21654,6 +20350,7 @@ export type AppServiceEnvironmentsListByResourceGroupNextResponse = AppServiceEn * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21673,6 +20370,7 @@ export type AppServiceEnvironmentsListCapacitiesNextResponse = StampCapacityColl * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21692,6 +20390,7 @@ export type AppServiceEnvironmentsChangeVnetNextResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21699,6 +20398,26 @@ export type AppServiceEnvironmentsChangeVnetNextResponse = WebAppCollection & { }; }; +/** + * Contains response data for the getInboundNetworkDependenciesEndpointsNext operation. + */ +export type AppServiceEnvironmentsGetInboundNetworkDependenciesEndpointsNextResponse = InboundEnvironmentEndpointCollection & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: InboundEnvironmentEndpointCollection; + }; +}; + /** * Contains response data for the listMetricsNext operation. */ @@ -21711,6 +20430,7 @@ export type AppServiceEnvironmentsListMetricsNextResponse = ResourceMetricCollec * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21730,6 +20450,7 @@ export type AppServiceEnvironmentsListMultiRolePoolsNextResponse = WorkerPoolCol * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21749,6 +20470,7 @@ export type AppServiceEnvironmentsListMultiRolePoolInstanceMetricDefinitionsNext * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21768,6 +20490,7 @@ export type AppServiceEnvironmentsListMultiRolePoolInstanceMetricsNextResponse = * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21787,6 +20510,7 @@ export type AppServiceEnvironmentsListMultiRoleMetricDefinitionsNextResponse = R * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21806,6 +20530,7 @@ export type AppServiceEnvironmentsListMultiRoleMetricsNextResponse = ResourceMet * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21825,6 +20550,7 @@ export type AppServiceEnvironmentsListMultiRolePoolSkusNextResponse = SkuInfoCol * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21844,6 +20570,7 @@ export type AppServiceEnvironmentsListMultiRoleUsagesNextResponse = UsageCollect * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21851,6 +20578,26 @@ export type AppServiceEnvironmentsListMultiRoleUsagesNextResponse = UsageCollect }; }; +/** + * Contains response data for the getOutboundNetworkDependenciesEndpointsNext operation. + */ +export type AppServiceEnvironmentsGetOutboundNetworkDependenciesEndpointsNextResponse = OutboundEnvironmentEndpointCollection & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: OutboundEnvironmentEndpointCollection; + }; +}; + /** * Contains response data for the resumeNext operation. */ @@ -21863,6 +20610,7 @@ export type AppServiceEnvironmentsResumeNextResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21882,6 +20630,7 @@ export type AppServiceEnvironmentsListAppServicePlansNextResponse = AppServicePl * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21901,6 +20650,7 @@ export type AppServiceEnvironmentsListWebAppsNextResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21920,6 +20670,7 @@ export type AppServiceEnvironmentsSuspendNextResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21939,6 +20690,7 @@ export type AppServiceEnvironmentsListUsagesNextResponse = CsmUsageQuotaCollecti * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21958,6 +20710,7 @@ export type AppServiceEnvironmentsListWorkerPoolsNextResponse = WorkerPoolCollec * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21977,6 +20730,7 @@ export type AppServiceEnvironmentsListWorkerPoolInstanceMetricDefinitionsNextRes * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -21996,6 +20750,7 @@ export type AppServiceEnvironmentsListWorkerPoolInstanceMetricsNextResponse = Re * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22015,6 +20770,7 @@ export type AppServiceEnvironmentsListWebWorkerMetricDefinitionsNextResponse = R * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22034,6 +20790,7 @@ export type AppServiceEnvironmentsListWebWorkerMetricsNextResponse = ResourceMet * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22053,6 +20810,7 @@ export type AppServiceEnvironmentsListWorkerPoolSkusNextResponse = SkuInfoCollec * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22072,6 +20830,7 @@ export type AppServiceEnvironmentsListWebWorkerUsagesNextResponse = UsageCollect * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22091,6 +20850,7 @@ export type AppServiceEnvironmentsBeginChangeVnetNextResponse = WebAppCollection * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22110,6 +20870,7 @@ export type AppServiceEnvironmentsBeginResumeNextResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22129,6 +20890,7 @@ export type AppServiceEnvironmentsBeginSuspendNextResponse = WebAppCollection & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22148,6 +20910,7 @@ export type AppServicePlansListResponse = AppServicePlanCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22167,6 +20930,7 @@ export type AppServicePlansListByResourceGroupResponse = AppServicePlanCollectio * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22186,6 +20950,7 @@ export type AppServicePlansGetResponse = AppServicePlan & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22205,6 +20970,7 @@ export type AppServicePlansCreateOrUpdateResponse = AppServicePlan & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22224,6 +20990,7 @@ export type AppServicePlansUpdateResponse = AppServicePlan & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22243,6 +21010,7 @@ export type AppServicePlansListCapabilitiesResponse = Array & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22262,6 +21030,7 @@ export type AppServicePlansGetHybridConnectionResponse = HybridConnection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22281,6 +21050,7 @@ export type AppServicePlansListHybridConnectionKeysResponse = HybridConnectionKe * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22300,6 +21070,7 @@ export type AppServicePlansListWebAppsByHybridConnectionResponse = ResourceColle * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22319,6 +21090,7 @@ export type AppServicePlansGetHybridConnectionPlanLimitResponse = HybridConnecti * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22338,6 +21110,7 @@ export type AppServicePlansListHybridConnectionsResponse = HybridConnectionColle * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22357,6 +21130,7 @@ export type AppServicePlansListMetricDefintionsResponse = ResourceMetricDefiniti * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22376,6 +21150,7 @@ export type AppServicePlansListMetricsResponse = ResourceMetricCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22395,6 +21170,7 @@ export type AppServicePlansListWebAppsResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22410,6 +21186,7 @@ export type AppServicePlansGetServerFarmSkusResponse = { * The parsed response body. */ body: any; + /** * The underlying HTTP response. */ @@ -22418,6 +21195,7 @@ export type AppServicePlansGetServerFarmSkusResponse = { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22437,6 +21215,7 @@ export type AppServicePlansListUsagesResponse = CsmUsageQuotaCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22456,6 +21235,7 @@ export type AppServicePlansListVnetsResponse = Array & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22475,6 +21255,7 @@ export type AppServicePlansGetVnetFromServerFarmResponse = VnetInfo & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22494,6 +21275,7 @@ export type AppServicePlansGetVnetGatewayResponse = VnetGateway & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22513,6 +21295,7 @@ export type AppServicePlansUpdateVnetGatewayResponse = VnetGateway & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22532,6 +21315,7 @@ export type AppServicePlansListRoutesForVnetResponse = Array & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22551,6 +21335,7 @@ export type AppServicePlansGetRouteForVnetResponse = Array & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22570,6 +21355,7 @@ export type AppServicePlansCreateOrUpdateVnetRouteResponse = VnetRoute & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22589,6 +21375,7 @@ export type AppServicePlansUpdateVnetRouteResponse = VnetRoute & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22608,6 +21395,7 @@ export type AppServicePlansBeginCreateOrUpdateResponse = AppServicePlan & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22627,6 +21415,7 @@ export type AppServicePlansListNextResponse = AppServicePlanCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22646,6 +21435,7 @@ export type AppServicePlansListByResourceGroupNextResponse = AppServicePlanColle * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22665,6 +21455,7 @@ export type AppServicePlansListWebAppsByHybridConnectionNextResponse = ResourceC * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22684,6 +21475,7 @@ export type AppServicePlansListHybridConnectionsNextResponse = HybridConnectionC * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22703,6 +21495,7 @@ export type AppServicePlansListMetricDefintionsNextResponse = ResourceMetricDefi * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22722,6 +21515,7 @@ export type AppServicePlansListMetricsNextResponse = ResourceMetricCollection & * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22741,6 +21535,7 @@ export type AppServicePlansListWebAppsNextResponse = WebAppCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22760,6 +21555,7 @@ export type AppServicePlansListUsagesNextResponse = CsmUsageQuotaCollection & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22779,6 +21575,7 @@ export type ResourceHealthMetadataListResponse = ResourceHealthMetadataCollectio * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22798,6 +21595,7 @@ export type ResourceHealthMetadataListByResourceGroupResponse = ResourceHealthMe * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22817,6 +21615,7 @@ export type ResourceHealthMetadataListBySiteResponse = ResourceHealthMetadataCol * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22836,6 +21635,7 @@ export type ResourceHealthMetadataGetBySiteResponse = ResourceHealthMetadata & { * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22855,6 +21655,7 @@ export type ResourceHealthMetadataListBySiteSlotResponse = ResourceHealthMetadat * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22874,6 +21675,7 @@ export type ResourceHealthMetadataGetBySiteSlotResponse = ResourceHealthMetadata * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22893,6 +21695,7 @@ export type ResourceHealthMetadataListNextResponse = ResourceHealthMetadataColle * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22912,6 +21715,7 @@ export type ResourceHealthMetadataListByResourceGroupNextResponse = ResourceHeal * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22931,6 +21735,7 @@ export type ResourceHealthMetadataListBySiteNextResponse = ResourceHealthMetadat * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ @@ -22950,6 +21755,7 @@ export type ResourceHealthMetadataListBySiteSlotNextResponse = ResourceHealthMet * The response body as text (string format) */ bodyAsText: string; + /** * The response body as parsed JSON or XML */ diff --git a/sdk/appservice/arm-appservice/src/models/mappers.ts b/sdk/appservice/arm-appservice/src/models/mappers.ts index e0c921ebb902..449de0b5f0d0 100644 --- a/sdk/appservice/arm-appservice/src/models/mappers.ts +++ b/sdk/appservice/arm-appservice/src/models/mappers.ts @@ -1,11 +1,9 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ import { CloudErrorMapper, BaseResourceMapper } from "@azure/ms-rest-azure-js"; @@ -890,7 +888,7 @@ export const VnetInfo: msRest.CompositeMapper = { certBlob: { serializedName: "properties.certBlob", type: { - name: "ByteArray" + name: "String" } }, routes: { @@ -918,6 +916,12 @@ export const VnetInfo: msRest.CompositeMapper = { type: { name: "String" } + }, + isSwift: { + serializedName: "properties.isSwift", + type: { + name: "Boolean" + } } } } @@ -1292,6 +1296,30 @@ export const DeletedSite: msRest.CompositeMapper = { } }; +export const ManagedServiceIdentityUserAssignedIdentitiesValue: msRest.CompositeMapper = { + serializedName: "ManagedServiceIdentity_userAssignedIdentitiesValue", + type: { + name: "Composite", + className: "ManagedServiceIdentityUserAssignedIdentitiesValue", + modelProperties: { + principalId: { + readOnly: true, + serializedName: "principalId", + type: { + name: "String" + } + }, + clientId: { + readOnly: true, + serializedName: "clientId", + type: { + name: "String" + } + } + } + } +}; + export const ManagedServiceIdentity: msRest.CompositeMapper = { serializedName: "ManagedServiceIdentity", type: { @@ -1318,13 +1346,14 @@ export const ManagedServiceIdentity: msRest.CompositeMapper = { name: "String" } }, - identityIds: { - serializedName: "identityIds", + userAssignedIdentities: { + serializedName: "userAssignedIdentities", type: { - name: "Sequence", - element: { + name: "Dictionary", + value: { type: { - name: "String" + name: "Composite", + className: "ManagedServiceIdentityUserAssignedIdentitiesValue" } } } @@ -1333,6 +1362,28 @@ export const ManagedServiceIdentity: msRest.CompositeMapper = { } }; +export const GeoDistribution: msRest.CompositeMapper = { + serializedName: "GeoDistribution", + type: { + name: "Composite", + className: "GeoDistribution", + modelProperties: { + location: { + serializedName: "location", + type: { + name: "String" + } + }, + numberOfWorkers: { + serializedName: "numberOfWorkers", + type: { + name: "Number" + } + } + } + } +}; + export const SlotSwapStatus: msRest.CompositeMapper = { serializedName: "SlotSwapStatus", type: { @@ -1401,6 +1452,12 @@ export const CloningInfo: msRest.CompositeMapper = { name: "String" } }, + sourceWebAppLocation: { + serializedName: "sourceWebAppLocation", + type: { + name: "String" + } + }, hostingEnvironment: { serializedName: "hostingEnvironment", type: { @@ -1477,7 +1534,6 @@ export const IpSecurityRestriction: msRest.CompositeMapper = { className: "IpSecurityRestriction", modelProperties: { ipAddress: { - required: true, serializedName: "ipAddress", type: { name: "String" @@ -1489,6 +1545,24 @@ export const IpSecurityRestriction: msRest.CompositeMapper = { name: "String" } }, + vnetSubnetResourceId: { + serializedName: "vnetSubnetResourceId", + type: { + name: "String" + } + }, + vnetTrafficTag: { + serializedName: "vnetTrafficTag", + type: { + name: "Number" + } + }, + subnetTrafficTag: { + serializedName: "subnetTrafficTag", + type: { + name: "Number" + } + }, action: { serializedName: "action", type: { @@ -1559,6 +1633,12 @@ export const CorsSettings: msRest.CompositeMapper = { } } } + }, + supportCredentials: { + serializedName: "supportCredentials", + type: { + name: "Boolean" + } } } } @@ -2477,6 +2557,24 @@ export const SiteConfig: msRest.CompositeMapper = { } } }, + scmIpSecurityRestrictions: { + serializedName: "scmIpSecurityRestrictions", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "IpSecurityRestriction" + } + } + } + }, + scmIpSecurityRestrictionsUseMain: { + serializedName: "scmIpSecurityRestrictionsUseMain", + type: { + name: "Boolean" + } + }, http20Enabled: { serializedName: "http20Enabled", defaultValue: true, @@ -2737,6 +2835,12 @@ export const Site: msRest.CompositeMapper = { name: "Boolean" } }, + clientCertExclusionPaths: { + serializedName: "properties.clientCertExclusionPaths", + type: { + name: "String" + } + }, hostNamesDisabled: { serializedName: "properties.hostNamesDisabled", type: { @@ -2825,6 +2929,38 @@ export const Site: msRest.CompositeMapper = { name: "Boolean" } }, + redundancyMode: { + serializedName: "properties.redundancyMode", + type: { + name: "Enum", + allowedValues: [ + "None", + "Manual", + "Failover", + "ActiveActive", + "GeoRedundant" + ] + } + }, + inProgressOperationId: { + readOnly: true, + serializedName: "properties.inProgressOperationId", + type: { + name: "Uuid" + } + }, + geoDistributions: { + serializedName: "properties.geoDistributions", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "GeoDistribution" + } + } + } + }, identity: { serializedName: "identity", type: { @@ -3000,12 +3136,6 @@ export const AppServicePlan: msRest.CompositeMapper = { name: "String" } }, - adminSiteName: { - serializedName: "properties.adminSiteName", - type: { - name: "String" - } - }, hostingEnvironmentProfile: { serializedName: "properties.hostingEnvironmentProfile", type: { @@ -6494,6 +6624,12 @@ export const StackMinorVersion: msRest.CompositeMapper = { type: { name: "Boolean" } + }, + isRemoteDebuggingEnabled: { + serializedName: "isRemoteDebuggingEnabled", + type: { + name: "Boolean" + } } } } @@ -6534,6 +6670,12 @@ export const StackMajorVersion: msRest.CompositeMapper = { } } } + }, + applicationInsights: { + serializedName: "applicationInsights", + type: { + name: "Boolean" + } } } } @@ -7308,6 +7450,52 @@ export const SourceControl: msRest.CompositeMapper = { } }; +export const ValidateContainerSettingsRequest: msRest.CompositeMapper = { + serializedName: "ValidateContainerSettingsRequest", + type: { + name: "Composite", + className: "ValidateContainerSettingsRequest", + modelProperties: { + baseUrl: { + serializedName: "baseUrl", + type: { + name: "String" + } + }, + username: { + serializedName: "username", + type: { + name: "String" + } + }, + password: { + serializedName: "password", + type: { + name: "String" + } + }, + repository: { + serializedName: "repository", + type: { + name: "String" + } + }, + tag: { + serializedName: "tag", + type: { + name: "String" + } + }, + platform: { + serializedName: "platform", + type: { + name: "String" + } + } + } + } +}; + export const ValidateRequest: msRest.CompositeMapper = { serializedName: "ValidateRequest", type: { @@ -9883,6 +10071,12 @@ export const SiteAuthSettings: msRest.CompositeMapper = { name: "String" } }, + clientSecretCertificateThumbprint: { + serializedName: "properties.clientSecretCertificateThumbprint", + type: { + name: "String" + } + }, issuer: { serializedName: "properties.issuer", type: { @@ -10432,6 +10626,24 @@ export const SiteConfigResource: msRest.CompositeMapper = { } } }, + scmIpSecurityRestrictions: { + serializedName: "properties.scmIpSecurityRestrictions", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "IpSecurityRestriction" + } + } + } + }, + scmIpSecurityRestrictionsUseMain: { + serializedName: "properties.scmIpSecurityRestrictionsUseMain", + type: { + name: "Boolean" + } + }, http20Enabled: { serializedName: "properties.http20Enabled", defaultValue: true, @@ -10859,6 +11071,12 @@ export const SitePatchResource: msRest.CompositeMapper = { name: "Boolean" } }, + clientCertExclusionPaths: { + serializedName: "properties.clientCertExclusionPaths", + type: { + name: "String" + } + }, hostNamesDisabled: { serializedName: "properties.hostNamesDisabled", type: { @@ -10946,6 +11164,45 @@ export const SitePatchResource: msRest.CompositeMapper = { type: { name: "Boolean" } + }, + redundancyMode: { + serializedName: "properties.redundancyMode", + type: { + name: "Enum", + allowedValues: [ + "None", + "Manual", + "Failover", + "ActiveActive", + "GeoRedundant" + ] + } + }, + inProgressOperationId: { + readOnly: true, + serializedName: "properties.inProgressOperationId", + type: { + name: "Uuid" + } + }, + geoDistributions: { + serializedName: "properties.geoDistributions", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "GeoDistribution" + } + } + } + }, + identity: { + serializedName: "identity", + type: { + name: "Composite", + className: "ManagedServiceIdentity" + } } } } @@ -12237,6 +12494,68 @@ export const AppServiceEnvironmentPatchResource: msRest.CompositeMapper = { } }; +export const EndpointDetail: msRest.CompositeMapper = { + serializedName: "EndpointDetail", + type: { + name: "Composite", + className: "EndpointDetail", + modelProperties: { + ipAddress: { + serializedName: "ipAddress", + type: { + name: "String" + } + }, + port: { + serializedName: "port", + type: { + name: "Number" + } + }, + latency: { + serializedName: "latency", + type: { + name: "Number" + } + }, + isAccessable: { + serializedName: "isAccessable", + type: { + name: "Boolean" + } + } + } + } +}; + +export const EndpointDependency: msRest.CompositeMapper = { + serializedName: "EndpointDependency", + type: { + name: "Composite", + className: "EndpointDependency", + modelProperties: { + domainName: { + serializedName: "domainName", + type: { + name: "String" + } + }, + endpointDetails: { + serializedName: "endpointDetails", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "EndpointDetail" + } + } + } + } + } + } +}; + export const HostingEnvironmentDiagnostics: msRest.CompositeMapper = { serializedName: "HostingEnvironmentDiagnostics", type: { @@ -12259,6 +12578,44 @@ export const HostingEnvironmentDiagnostics: msRest.CompositeMapper = { } }; +export const InboundEnvironmentEndpoint: msRest.CompositeMapper = { + serializedName: "InboundEnvironmentEndpoint", + type: { + name: "Composite", + className: "InboundEnvironmentEndpoint", + modelProperties: { + description: { + serializedName: "description", + type: { + name: "String" + } + }, + endpoints: { + serializedName: "endpoints", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + }, + ports: { + serializedName: "ports", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + } + } + } +}; + export const MetricAvailabilily: msRest.CompositeMapper = { serializedName: "MetricAvailabilily", type: { @@ -12326,6 +12683,34 @@ export const MetricDefinition: msRest.CompositeMapper = { } }; +export const OutboundEnvironmentEndpoint: msRest.CompositeMapper = { + serializedName: "OutboundEnvironmentEndpoint", + type: { + name: "Composite", + className: "OutboundEnvironmentEndpoint", + modelProperties: { + category: { + serializedName: "category", + type: { + name: "String" + } + }, + endpoints: { + serializedName: "endpoints", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "EndpointDependency" + } + } + } + } + } + } +}; + export const SkuInfo: msRest.CompositeMapper = { serializedName: "SkuInfo", type: { @@ -12519,12 +12904,6 @@ export const AppServicePlanPatchResource: msRest.CompositeMapper = { name: "String" } }, - adminSiteName: { - serializedName: "properties.adminSiteName", - type: { - name: "String" - } - }, hostingEnvironmentProfile: { serializedName: "properties.hostingEnvironmentProfile", type: { @@ -14070,6 +14449,36 @@ export const StampCapacityCollection: msRest.CompositeMapper = { } }; +export const InboundEnvironmentEndpointCollection: msRest.CompositeMapper = { + serializedName: "InboundEnvironmentEndpointCollection", + type: { + name: "Composite", + className: "InboundEnvironmentEndpointCollection", + modelProperties: { + value: { + required: true, + serializedName: "", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "InboundEnvironmentEndpoint" + } + } + } + }, + nextLink: { + readOnly: true, + serializedName: "nextLink", + type: { + name: "String" + } + } + } + } +}; + export const WorkerPoolCollection: msRest.CompositeMapper = { serializedName: "WorkerPoolCollection", type: { @@ -14160,6 +14569,36 @@ export const UsageCollection: msRest.CompositeMapper = { } }; +export const OutboundEnvironmentEndpointCollection: msRest.CompositeMapper = { + serializedName: "OutboundEnvironmentEndpointCollection", + type: { + name: "Composite", + className: "OutboundEnvironmentEndpointCollection", + modelProperties: { + value: { + required: true, + serializedName: "", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "OutboundEnvironmentEndpoint" + } + } + } + }, + nextLink: { + readOnly: true, + serializedName: "nextLink", + type: { + name: "String" + } + } + } + } +}; + export const AppServicePlanCollection: msRest.CompositeMapper = { serializedName: "AppServicePlanCollection", type: { diff --git a/sdk/appservice/arm-appservice/src/models/parameters.ts b/sdk/appservice/arm-appservice/src/models/parameters.ts index 7b5adf0135d2..3fb453654c0d 100644 --- a/sdk/appservice/arm-appservice/src/models/parameters.ts +++ b/sdk/appservice/arm-appservice/src/models/parameters.ts @@ -30,11 +30,25 @@ export const analysisName: msRest.OperationURLParameter = { } } }; -export const apiVersion: msRest.OperationQueryParameter = { +export const apiVersion0: msRest.OperationQueryParameter = { parameterPath: "apiVersion", mapper: { required: true, + isConstant: true, serializedName: "api-version", + defaultValue: '2018-02-01', + type: { + name: "String" + } + } +}; +export const apiVersion1: msRest.OperationQueryParameter = { + parameterPath: "apiVersion", + mapper: { + required: true, + isConstant: true, + serializedName: "api-version", + defaultValue: '2018-11-01', type: { name: "String" } @@ -82,6 +96,16 @@ export const certificateOrderName: msRest.OperationURLParameter = { } } }; +export const deletedSiteId: msRest.OperationURLParameter = { + parameterPath: "deletedSiteId", + mapper: { + required: true, + serializedName: "deletedSiteId", + type: { + name: "String" + } + } +}; export const deleteEmptyServerFarm: msRest.OperationQueryParameter = { parameterPath: [ "options", @@ -239,6 +263,16 @@ export const entityName: msRest.OperationURLParameter = { } } }; +export const environmentName: msRest.OperationQueryParameter = { + parameterPath: "environmentName", + mapper: { + required: true, + serializedName: "environmentName", + type: { + name: "String" + } + } +}; export const expiredOnly: msRest.OperationQueryParameter = { parameterPath: [ "options", @@ -320,6 +354,16 @@ export const gatewayName: msRest.OperationURLParameter = { } } }; +export const hostingEnvironmentName: msRest.OperationURLParameter = { + parameterPath: "hostingEnvironmentName", + mapper: { + required: true, + serializedName: "hostingEnvironmentName", + type: { + name: "String" + } + } +}; export const hostName0: msRest.OperationQueryParameter = { parameterPath: [ "options", @@ -408,6 +452,16 @@ export const linuxWorkersEnabled: msRest.OperationQueryParameter = { } } }; +export const location: msRest.OperationURLParameter = { + parameterPath: "location", + mapper: { + required: true, + serializedName: "location", + type: { + name: "String" + } + } +}; export const maxFrameLength: msRest.OperationQueryParameter = { parameterPath: [ "options", diff --git a/sdk/appservice/arm-appservice/src/models/providerMappers.ts b/sdk/appservice/arm-appservice/src/models/providerMappers.ts index a3d5f113d841..df3c3c5e4191 100644 --- a/sdk/appservice/arm-appservice/src/models/providerMappers.ts +++ b/sdk/appservice/arm-appservice/src/models/providerMappers.ts @@ -1,29 +1,26 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ export { - ApplicationStackCollection, ApplicationStack, - StackMajorVersion, - StackMinorVersion, - DefaultErrorResponse, - DefaultErrorResponseError, - DefaultErrorResponseErrorDetailsItem, + ApplicationStackCollection, CsmOperationCollection, CsmOperationDescription, - CsmOperationDisplay, CsmOperationDescriptionProperties, - ServiceSpecification, - MetricSpecification, + CsmOperationDisplay, + DefaultErrorResponse, + DefaultErrorResponseError, + DefaultErrorResponseErrorDetailsItem, Dimension, + LogSpecification, MetricAvailability, - LogSpecification + MetricSpecification, + ServiceSpecification, + StackMajorVersion, + StackMinorVersion } from "../models/mappers"; - diff --git a/sdk/appservice/arm-appservice/src/models/recommendationsMappers.ts b/sdk/appservice/arm-appservice/src/models/recommendationsMappers.ts index ac07a32771f9..49e7f6629f6e 100644 --- a/sdk/appservice/arm-appservice/src/models/recommendationsMappers.ts +++ b/sdk/appservice/arm-appservice/src/models/recommendationsMappers.ts @@ -1,188 +1,187 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ export { - RecommendationCollection, - Recommendation, - ProxyOnlyResource, - BaseResource, - DefaultErrorResponse, - DefaultErrorResponseError, - DefaultErrorResponseErrorDetailsItem, - CloudError, - RecommendationRule, - AppServiceCertificateOrderPatchResource, - AppServiceCertificate, - CertificateDetails, - AppServiceCertificatePatchResource, - CertificateEmail, - CertificateOrderAction, - ReissueCertificateOrderRequest, - RenewCertificateOrderRequest, - VnetRoute, - VnetInfo, - VnetGateway, - User, - Snapshot, - ResourceMetricDefinition, - ResourceMetricAvailability, - PushSettings, - Identifier, - HybridConnectionKey, - HybridConnection, - DeletedSite, - Resource, - Domain, - Contact, - Address, - HostName, - DomainPurchaseConsent, - DomainOwnershipIdentifier, - DomainPatchResource, - TopLevelDomain, - Certificate, - HostingEnvironmentProfile, - CertificatePatchResource, - DetectorDefinition, - AnalysisDefinition, - DetectorResponse, - DetectorInfo, - DiagnosticData, - DataTableResponseObject, - DataTableResponseColumn, - Rendering, - DiagnosticAnalysis, AbnormalTimePeriod, - DetectorAbnormalTimePeriod, - NameValuePair, - Solution, + Address, AnalysisData, - DiagnosticMetricSet, - DiagnosticMetricSample, - ResponseMetaData, - DataSource, - DiagnosticCategory, - DiagnosticDetectorResponse, - BillingMeter, - GeoRegion, - PremierAddOnOffer, - SourceControl, - VnetParameters, - VnetValidationTestFailure, - VnetValidationFailureDetails, - AzureStoragePropertyDictionaryResource, + AnalysisDefinition, + ApiDefinitionInfo, + ApplicationLogsConfig, + AppServiceCertificate, + AppServiceCertificateOrder, + AppServiceCertificateOrderPatchResource, + AppServiceCertificatePatchResource, + AppServiceCertificateResource, + AppServiceEnvironmentPatchResource, + AppServiceEnvironmentResource, + AppServicePlan, + AppServicePlanPatchResource, + AutoHealActions, + AutoHealCustomAction, + AutoHealRules, + AutoHealTriggers, + AzureBlobStorageApplicationLogsConfig, + AzureBlobStorageHttpLogsConfig, AzureStorageInfoValue, + AzureStoragePropertyDictionaryResource, + AzureTableStorageApplicationLogsConfig, BackupItem, - DatabaseBackupSetting, BackupRequest, BackupSchedule, + BaseResource, + BillingMeter, + Capability, + Certificate, + CertificateDetails, + CertificateEmail, + CertificateOrderAction, + CertificatePatchResource, + CloningInfo, + CloudError, ConnectionStringDictionary, + ConnStringInfo, ConnStringValueTypePair, + Contact, ContinuousWebJob, + CorsSettings, CustomHostnameAnalysisResult, - ErrorEntity, + DatabaseBackupSetting, + DataSource, + DataTableResponseColumn, + DataTableResponseObject, + DefaultErrorResponse, + DefaultErrorResponseError, + DefaultErrorResponseErrorDetailsItem, DeletedAppRestoreRequest, + DeletedSite, Deployment, + DetectorAbnormalTimePeriod, + DetectorDefinition, + DetectorInfo, + DetectorResponse, + DiagnosticAnalysis, + DiagnosticCategory, + DiagnosticData, + DiagnosticDetectorResponse, + DiagnosticMetricSample, + DiagnosticMetricSet, + Domain, + DomainOwnershipIdentifier, + DomainPatchResource, + DomainPurchaseConsent, + EnabledConfig, + ErrorEntity, + Experiments, + FileSystemApplicationLogsConfig, + FileSystemHttpLogsConfig, FunctionEnvelope, FunctionSecrets, + GeoDistribution, + GeoRegion, + HandlerMapping, + HostingEnvironmentProfile, + HostName, HostNameBinding, + HostNameSslState, + HttpLogsConfig, + HybridConnection, + HybridConnectionKey, + HybridConnectionLimits, + Identifier, + IpSecurityRestriction, + ManagedServiceIdentity, + ManagedServiceIdentityUserAssignedIdentitiesValue, + MetricAvailabilily, + MetricDefinition, + MigrateMySqlRequest, + MigrateMySqlStatus, MSDeploy, MSDeployLog, MSDeployLogEntry, MSDeployStatus, - MigrateMySqlRequest, - MigrateMySqlStatus, - RelayServiceConnectionEntity, + NameValuePair, + NetworkAccessControlEntry, NetworkFeatures, PremierAddOn, + PremierAddOnOffer, PremierAddOnPatchResource, PrivateAccess, - PrivateAccessVirtualNetwork, PrivateAccessSubnet, - ProcessThreadInfo, - ProcessModuleInfo, + PrivateAccessVirtualNetwork, ProcessInfo, + ProcessModuleInfo, + ProcessThreadInfo, + ProxyOnlyResource, PublicCertificate, + PushSettings, + RampUpRule, + Recommendation, + RecommendationCollection, + RecommendationRule, + ReissueCertificateOrderRequest, + RelayServiceConnectionEntity, + Rendering, + RenewCertificateOrderRequest, + RequestsBasedTrigger, + Resource, + ResourceHealthMetadata, + ResourceMetricAvailability, + ResourceMetricDefinition, + ResponseMetaData, RestoreRequest, + Site, SiteAuthSettings, + SiteConfig, SiteConfigResource, - ConnStringInfo, - SiteMachineKey, - HandlerMapping, - VirtualApplication, - VirtualDirectory, - Experiments, - RampUpRule, - SiteLimits, - AutoHealRules, - AutoHealTriggers, - RequestsBasedTrigger, - StatusCodesBasedTrigger, - SlowRequestsBasedTrigger, - AutoHealActions, - AutoHealCustomAction, - CorsSettings, - ApiDefinitionInfo, - IpSecurityRestriction, SiteConfigurationSnapshotInfo, SiteExtensionInfo, SiteInstance, + SiteLimits, SiteLogsConfig, - ApplicationLogsConfig, - FileSystemApplicationLogsConfig, - AzureTableStorageApplicationLogsConfig, - AzureBlobStorageApplicationLogsConfig, - HttpLogsConfig, - FileSystemHttpLogsConfig, - AzureBlobStorageHttpLogsConfig, - EnabledConfig, + SiteMachineKey, SitePatchResource, - HostNameSslState, - SiteConfig, - CloningInfo, - SlotSwapStatus, SitePhpErrorLogFlag, SiteSourceControl, + SkuCapacity, + SkuDescription, SlotConfigNamesResource, SlotDifference, - SnapshotRestoreRequest, + SlotSwapStatus, + SlowRequestsBasedTrigger, + Snapshot, SnapshotRecoverySource, + SnapshotRestoreRequest, + Solution, + SourceControl, + StampCapacity, + StatusCodesBasedTrigger, StorageMigrationOptions, StorageMigrationResponse, StringDictionary, SwiftVirtualNetwork, - TriggeredJobRun, + TopLevelDomain, TriggeredJobHistory, + TriggeredJobRun, TriggeredWebJob, - WebJob, - AppServiceEnvironmentResource, + Usage, + User, + VirtualApplication, + VirtualDirectory, + VirtualIPMapping, VirtualNetworkProfile, + VnetGateway, + VnetInfo, + VnetParameters, + VnetRoute, + VnetValidationFailureDetails, + VnetValidationTestFailure, + WebJob, WorkerPool, - VirtualIPMapping, - StampCapacity, - NetworkAccessControlEntry, - AppServiceEnvironmentPatchResource, - MetricDefinition, - MetricAvailabilily, - Usage, - WorkerPoolResource, - SkuDescription, - SkuCapacity, - Capability, - AppServicePlanPatchResource, - HybridConnectionLimits, - ResourceHealthMetadata, - AppServiceCertificateResource, - AppServiceCertificateOrder, - Site, - ManagedServiceIdentity, - AppServicePlan + WorkerPoolResource } from "../models/mappers"; - diff --git a/sdk/appservice/arm-appservice/src/models/resourceHealthMetadataOperationsMappers.ts b/sdk/appservice/arm-appservice/src/models/resourceHealthMetadataOperationsMappers.ts index a9f5a0fc2c7a..b532d5c57eee 100644 --- a/sdk/appservice/arm-appservice/src/models/resourceHealthMetadataOperationsMappers.ts +++ b/sdk/appservice/arm-appservice/src/models/resourceHealthMetadataOperationsMappers.ts @@ -1,187 +1,186 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ export { - ResourceHealthMetadataCollection, - ResourceHealthMetadata, - ProxyOnlyResource, - BaseResource, - DefaultErrorResponse, - DefaultErrorResponseError, - DefaultErrorResponseErrorDetailsItem, - AppServiceCertificateOrderPatchResource, - AppServiceCertificate, - CertificateDetails, - AppServiceCertificatePatchResource, - CertificateEmail, - CertificateOrderAction, - ReissueCertificateOrderRequest, - RenewCertificateOrderRequest, - VnetRoute, - VnetInfo, - VnetGateway, - User, - Snapshot, - ResourceMetricDefinition, - ResourceMetricAvailability, - PushSettings, - Identifier, - HybridConnectionKey, - HybridConnection, - DeletedSite, - Resource, - Domain, - Contact, - Address, - HostName, - DomainPurchaseConsent, - DomainOwnershipIdentifier, - DomainPatchResource, - TopLevelDomain, - Certificate, - HostingEnvironmentProfile, - CertificatePatchResource, - DetectorDefinition, - AnalysisDefinition, - DetectorResponse, - DetectorInfo, - DiagnosticData, - DataTableResponseObject, - DataTableResponseColumn, - Rendering, - DiagnosticAnalysis, AbnormalTimePeriod, - DetectorAbnormalTimePeriod, - NameValuePair, - Solution, + Address, AnalysisData, - DiagnosticMetricSet, - DiagnosticMetricSample, - ResponseMetaData, - DataSource, - DiagnosticCategory, - DiagnosticDetectorResponse, - Recommendation, - RecommendationRule, - BillingMeter, - GeoRegion, - PremierAddOnOffer, - SourceControl, - VnetParameters, - VnetValidationTestFailure, - VnetValidationFailureDetails, - AzureStoragePropertyDictionaryResource, + AnalysisDefinition, + ApiDefinitionInfo, + ApplicationLogsConfig, + AppServiceCertificate, + AppServiceCertificateOrder, + AppServiceCertificateOrderPatchResource, + AppServiceCertificatePatchResource, + AppServiceCertificateResource, + AppServiceEnvironmentPatchResource, + AppServiceEnvironmentResource, + AppServicePlan, + AppServicePlanPatchResource, + AutoHealActions, + AutoHealCustomAction, + AutoHealRules, + AutoHealTriggers, + AzureBlobStorageApplicationLogsConfig, + AzureBlobStorageHttpLogsConfig, AzureStorageInfoValue, + AzureStoragePropertyDictionaryResource, + AzureTableStorageApplicationLogsConfig, BackupItem, - DatabaseBackupSetting, BackupRequest, BackupSchedule, + BaseResource, + BillingMeter, + Capability, + Certificate, + CertificateDetails, + CertificateEmail, + CertificateOrderAction, + CertificatePatchResource, + CloningInfo, ConnectionStringDictionary, + ConnStringInfo, ConnStringValueTypePair, + Contact, ContinuousWebJob, + CorsSettings, CustomHostnameAnalysisResult, - ErrorEntity, + DatabaseBackupSetting, + DataSource, + DataTableResponseColumn, + DataTableResponseObject, + DefaultErrorResponse, + DefaultErrorResponseError, + DefaultErrorResponseErrorDetailsItem, DeletedAppRestoreRequest, + DeletedSite, Deployment, + DetectorAbnormalTimePeriod, + DetectorDefinition, + DetectorInfo, + DetectorResponse, + DiagnosticAnalysis, + DiagnosticCategory, + DiagnosticData, + DiagnosticDetectorResponse, + DiagnosticMetricSample, + DiagnosticMetricSet, + Domain, + DomainOwnershipIdentifier, + DomainPatchResource, + DomainPurchaseConsent, + EnabledConfig, + ErrorEntity, + Experiments, + FileSystemApplicationLogsConfig, + FileSystemHttpLogsConfig, FunctionEnvelope, FunctionSecrets, + GeoDistribution, + GeoRegion, + HandlerMapping, + HostingEnvironmentProfile, + HostName, HostNameBinding, + HostNameSslState, + HttpLogsConfig, + HybridConnection, + HybridConnectionKey, + HybridConnectionLimits, + Identifier, + IpSecurityRestriction, + ManagedServiceIdentity, + ManagedServiceIdentityUserAssignedIdentitiesValue, + MetricAvailabilily, + MetricDefinition, + MigrateMySqlRequest, + MigrateMySqlStatus, MSDeploy, MSDeployLog, MSDeployLogEntry, MSDeployStatus, - MigrateMySqlRequest, - MigrateMySqlStatus, - RelayServiceConnectionEntity, + NameValuePair, + NetworkAccessControlEntry, NetworkFeatures, PremierAddOn, + PremierAddOnOffer, PremierAddOnPatchResource, PrivateAccess, - PrivateAccessVirtualNetwork, PrivateAccessSubnet, - ProcessThreadInfo, - ProcessModuleInfo, + PrivateAccessVirtualNetwork, ProcessInfo, + ProcessModuleInfo, + ProcessThreadInfo, + ProxyOnlyResource, PublicCertificate, + PushSettings, + RampUpRule, + Recommendation, + RecommendationRule, + ReissueCertificateOrderRequest, + RelayServiceConnectionEntity, + Rendering, + RenewCertificateOrderRequest, + RequestsBasedTrigger, + Resource, + ResourceHealthMetadata, + ResourceHealthMetadataCollection, + ResourceMetricAvailability, + ResourceMetricDefinition, + ResponseMetaData, RestoreRequest, + Site, SiteAuthSettings, + SiteConfig, SiteConfigResource, - ConnStringInfo, - SiteMachineKey, - HandlerMapping, - VirtualApplication, - VirtualDirectory, - Experiments, - RampUpRule, - SiteLimits, - AutoHealRules, - AutoHealTriggers, - RequestsBasedTrigger, - StatusCodesBasedTrigger, - SlowRequestsBasedTrigger, - AutoHealActions, - AutoHealCustomAction, - CorsSettings, - ApiDefinitionInfo, - IpSecurityRestriction, SiteConfigurationSnapshotInfo, SiteExtensionInfo, SiteInstance, + SiteLimits, SiteLogsConfig, - ApplicationLogsConfig, - FileSystemApplicationLogsConfig, - AzureTableStorageApplicationLogsConfig, - AzureBlobStorageApplicationLogsConfig, - HttpLogsConfig, - FileSystemHttpLogsConfig, - AzureBlobStorageHttpLogsConfig, - EnabledConfig, + SiteMachineKey, SitePatchResource, - HostNameSslState, - SiteConfig, - CloningInfo, - SlotSwapStatus, SitePhpErrorLogFlag, SiteSourceControl, + SkuCapacity, + SkuDescription, SlotConfigNamesResource, SlotDifference, - SnapshotRestoreRequest, + SlotSwapStatus, + SlowRequestsBasedTrigger, + Snapshot, SnapshotRecoverySource, + SnapshotRestoreRequest, + Solution, + SourceControl, + StampCapacity, + StatusCodesBasedTrigger, StorageMigrationOptions, StorageMigrationResponse, StringDictionary, SwiftVirtualNetwork, - TriggeredJobRun, + TopLevelDomain, TriggeredJobHistory, + TriggeredJobRun, TriggeredWebJob, - WebJob, - AppServiceEnvironmentResource, + Usage, + User, + VirtualApplication, + VirtualDirectory, + VirtualIPMapping, VirtualNetworkProfile, + VnetGateway, + VnetInfo, + VnetParameters, + VnetRoute, + VnetValidationFailureDetails, + VnetValidationTestFailure, + WebJob, WorkerPool, - VirtualIPMapping, - StampCapacity, - NetworkAccessControlEntry, - AppServiceEnvironmentPatchResource, - MetricDefinition, - MetricAvailabilily, - Usage, - WorkerPoolResource, - SkuDescription, - SkuCapacity, - Capability, - AppServicePlanPatchResource, - HybridConnectionLimits, - AppServiceCertificateResource, - AppServiceCertificateOrder, - Site, - ManagedServiceIdentity, - AppServicePlan + WorkerPoolResource } from "../models/mappers"; - diff --git a/sdk/appservice/arm-appservice/src/models/topLevelDomainsMappers.ts b/sdk/appservice/arm-appservice/src/models/topLevelDomainsMappers.ts index 93e1ea3fcdb3..a61da031afe3 100644 --- a/sdk/appservice/arm-appservice/src/models/topLevelDomainsMappers.ts +++ b/sdk/appservice/arm-appservice/src/models/topLevelDomainsMappers.ts @@ -1,190 +1,189 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ export { - TopLevelDomainCollection, - TopLevelDomain, - ProxyOnlyResource, - BaseResource, - DefaultErrorResponse, - DefaultErrorResponseError, - DefaultErrorResponseErrorDetailsItem, - TopLevelDomainAgreementOption, - TldLegalAgreementCollection, - TldLegalAgreement, - AppServiceCertificateOrderPatchResource, - AppServiceCertificate, - CertificateDetails, - AppServiceCertificatePatchResource, - CertificateEmail, - CertificateOrderAction, - ReissueCertificateOrderRequest, - RenewCertificateOrderRequest, - VnetRoute, - VnetInfo, - VnetGateway, - User, - Snapshot, - ResourceMetricDefinition, - ResourceMetricAvailability, - PushSettings, - Identifier, - HybridConnectionKey, - HybridConnection, - DeletedSite, - Resource, - Domain, - Contact, - Address, - HostName, - DomainPurchaseConsent, - DomainOwnershipIdentifier, - DomainPatchResource, - Certificate, - HostingEnvironmentProfile, - CertificatePatchResource, - DetectorDefinition, - AnalysisDefinition, - DetectorResponse, - DetectorInfo, - DiagnosticData, - DataTableResponseObject, - DataTableResponseColumn, - Rendering, - DiagnosticAnalysis, AbnormalTimePeriod, - DetectorAbnormalTimePeriod, - NameValuePair, - Solution, + Address, AnalysisData, - DiagnosticMetricSet, - DiagnosticMetricSample, - ResponseMetaData, - DataSource, - DiagnosticCategory, - DiagnosticDetectorResponse, - Recommendation, - RecommendationRule, - BillingMeter, - GeoRegion, - PremierAddOnOffer, - SourceControl, - VnetParameters, - VnetValidationTestFailure, - VnetValidationFailureDetails, - AzureStoragePropertyDictionaryResource, + AnalysisDefinition, + ApiDefinitionInfo, + ApplicationLogsConfig, + AppServiceCertificate, + AppServiceCertificateOrder, + AppServiceCertificateOrderPatchResource, + AppServiceCertificatePatchResource, + AppServiceCertificateResource, + AppServiceEnvironmentPatchResource, + AppServiceEnvironmentResource, + AppServicePlan, + AppServicePlanPatchResource, + AutoHealActions, + AutoHealCustomAction, + AutoHealRules, + AutoHealTriggers, + AzureBlobStorageApplicationLogsConfig, + AzureBlobStorageHttpLogsConfig, AzureStorageInfoValue, + AzureStoragePropertyDictionaryResource, + AzureTableStorageApplicationLogsConfig, BackupItem, - DatabaseBackupSetting, BackupRequest, BackupSchedule, + BaseResource, + BillingMeter, + Capability, + Certificate, + CertificateDetails, + CertificateEmail, + CertificateOrderAction, + CertificatePatchResource, + CloningInfo, ConnectionStringDictionary, + ConnStringInfo, ConnStringValueTypePair, + Contact, ContinuousWebJob, + CorsSettings, CustomHostnameAnalysisResult, - ErrorEntity, + DatabaseBackupSetting, + DataSource, + DataTableResponseColumn, + DataTableResponseObject, + DefaultErrorResponse, + DefaultErrorResponseError, + DefaultErrorResponseErrorDetailsItem, DeletedAppRestoreRequest, + DeletedSite, Deployment, + DetectorAbnormalTimePeriod, + DetectorDefinition, + DetectorInfo, + DetectorResponse, + DiagnosticAnalysis, + DiagnosticCategory, + DiagnosticData, + DiagnosticDetectorResponse, + DiagnosticMetricSample, + DiagnosticMetricSet, + Domain, + DomainOwnershipIdentifier, + DomainPatchResource, + DomainPurchaseConsent, + EnabledConfig, + ErrorEntity, + Experiments, + FileSystemApplicationLogsConfig, + FileSystemHttpLogsConfig, FunctionEnvelope, FunctionSecrets, + GeoDistribution, + GeoRegion, + HandlerMapping, + HostingEnvironmentProfile, + HostName, HostNameBinding, + HostNameSslState, + HttpLogsConfig, + HybridConnection, + HybridConnectionKey, + HybridConnectionLimits, + Identifier, + IpSecurityRestriction, + ManagedServiceIdentity, + ManagedServiceIdentityUserAssignedIdentitiesValue, + MetricAvailabilily, + MetricDefinition, + MigrateMySqlRequest, + MigrateMySqlStatus, MSDeploy, MSDeployLog, MSDeployLogEntry, MSDeployStatus, - MigrateMySqlRequest, - MigrateMySqlStatus, - RelayServiceConnectionEntity, + NameValuePair, + NetworkAccessControlEntry, NetworkFeatures, PremierAddOn, + PremierAddOnOffer, PremierAddOnPatchResource, PrivateAccess, - PrivateAccessVirtualNetwork, PrivateAccessSubnet, - ProcessThreadInfo, - ProcessModuleInfo, + PrivateAccessVirtualNetwork, ProcessInfo, + ProcessModuleInfo, + ProcessThreadInfo, + ProxyOnlyResource, PublicCertificate, + PushSettings, + RampUpRule, + Recommendation, + RecommendationRule, + ReissueCertificateOrderRequest, + RelayServiceConnectionEntity, + Rendering, + RenewCertificateOrderRequest, + RequestsBasedTrigger, + Resource, + ResourceHealthMetadata, + ResourceMetricAvailability, + ResourceMetricDefinition, + ResponseMetaData, RestoreRequest, + Site, SiteAuthSettings, + SiteConfig, SiteConfigResource, - ConnStringInfo, - SiteMachineKey, - HandlerMapping, - VirtualApplication, - VirtualDirectory, - Experiments, - RampUpRule, - SiteLimits, - AutoHealRules, - AutoHealTriggers, - RequestsBasedTrigger, - StatusCodesBasedTrigger, - SlowRequestsBasedTrigger, - AutoHealActions, - AutoHealCustomAction, - CorsSettings, - ApiDefinitionInfo, - IpSecurityRestriction, SiteConfigurationSnapshotInfo, SiteExtensionInfo, SiteInstance, + SiteLimits, SiteLogsConfig, - ApplicationLogsConfig, - FileSystemApplicationLogsConfig, - AzureTableStorageApplicationLogsConfig, - AzureBlobStorageApplicationLogsConfig, - HttpLogsConfig, - FileSystemHttpLogsConfig, - AzureBlobStorageHttpLogsConfig, - EnabledConfig, + SiteMachineKey, SitePatchResource, - HostNameSslState, - SiteConfig, - CloningInfo, - SlotSwapStatus, SitePhpErrorLogFlag, SiteSourceControl, + SkuCapacity, + SkuDescription, SlotConfigNamesResource, SlotDifference, - SnapshotRestoreRequest, + SlotSwapStatus, + SlowRequestsBasedTrigger, + Snapshot, SnapshotRecoverySource, + SnapshotRestoreRequest, + Solution, + SourceControl, + StampCapacity, + StatusCodesBasedTrigger, StorageMigrationOptions, StorageMigrationResponse, StringDictionary, SwiftVirtualNetwork, - TriggeredJobRun, + TldLegalAgreement, + TldLegalAgreementCollection, + TopLevelDomain, + TopLevelDomainAgreementOption, + TopLevelDomainCollection, TriggeredJobHistory, + TriggeredJobRun, TriggeredWebJob, - WebJob, - AppServiceEnvironmentResource, + Usage, + User, + VirtualApplication, + VirtualDirectory, + VirtualIPMapping, VirtualNetworkProfile, + VnetGateway, + VnetInfo, + VnetParameters, + VnetRoute, + VnetValidationFailureDetails, + VnetValidationTestFailure, + WebJob, WorkerPool, - VirtualIPMapping, - StampCapacity, - NetworkAccessControlEntry, - AppServiceEnvironmentPatchResource, - MetricDefinition, - MetricAvailabilily, - Usage, - WorkerPoolResource, - SkuDescription, - SkuCapacity, - Capability, - AppServicePlanPatchResource, - HybridConnectionLimits, - ResourceHealthMetadata, - AppServiceCertificateResource, - AppServiceCertificateOrder, - Site, - ManagedServiceIdentity, - AppServicePlan + WorkerPoolResource } from "../models/mappers"; - diff --git a/sdk/appservice/arm-appservice/src/models/webAppsMappers.ts b/sdk/appservice/arm-appservice/src/models/webAppsMappers.ts index 440413d19429..591aa103580f 100644 --- a/sdk/appservice/arm-appservice/src/models/webAppsMappers.ts +++ b/sdk/appservice/arm-appservice/src/models/webAppsMappers.ts @@ -1,226 +1,225 @@ /* * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. + * Licensed under the MIT License. See License.txt in the project root for license information. * * Code generated by Microsoft (R) AutoRest Code Generator. - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. */ export { - WebAppCollection, - Site, - Resource, - BaseResource, - HostNameSslState, - SiteConfig, - NameValuePair, - AzureStorageInfoValue, - ConnStringInfo, - SiteMachineKey, - HandlerMapping, - VirtualApplication, - VirtualDirectory, - Experiments, - RampUpRule, - SiteLimits, - AutoHealRules, - AutoHealTriggers, - RequestsBasedTrigger, - StatusCodesBasedTrigger, - SlowRequestsBasedTrigger, + AbnormalTimePeriod, + Address, + AnalysisData, + AnalysisDefinition, + ApiDefinitionInfo, + ApplicationLogsConfig, + AppServiceCertificate, + AppServiceCertificateOrder, + AppServiceCertificateOrderPatchResource, + AppServiceCertificatePatchResource, + AppServiceCertificateResource, + AppServiceEnvironmentPatchResource, + AppServiceEnvironmentResource, + AppServicePlan, + AppServicePlanPatchResource, AutoHealActions, AutoHealCustomAction, - CorsSettings, - PushSettings, - ProxyOnlyResource, - ApiDefinitionInfo, - IpSecurityRestriction, - HostingEnvironmentProfile, + AutoHealRules, + AutoHealTriggers, + AzureBlobStorageApplicationLogsConfig, + AzureBlobStorageHttpLogsConfig, + AzureStorageInfoValue, + AzureStoragePropertyDictionaryResource, + AzureTableStorageApplicationLogsConfig, + BackupItem, + BackupItemCollection, + BackupRequest, + BackupSchedule, + BaseResource, + BillingMeter, + Capability, + Certificate, + CertificateDetails, + CertificateEmail, + CertificateOrderAction, + CertificatePatchResource, CloningInfo, - SlotSwapStatus, - ManagedServiceIdentity, + CloudError, + ConnectionStringDictionary, + ConnStringInfo, + ConnStringValueTypePair, + Contact, + ContinuousWebJob, + ContinuousWebJobCollection, + CorsSettings, + CsmPublishingProfileOptions, + CsmSlotEntity, + CsmUsageQuota, + CsmUsageQuotaCollection, + CustomHostnameAnalysisResult, + DatabaseBackupSetting, + DataSource, + DataTableResponseColumn, + DataTableResponseObject, DefaultErrorResponse, DefaultErrorResponseError, DefaultErrorResponseErrorDetailsItem, - CloudError, - SitePatchResource, - CustomHostnameAnalysisResult, + DeletedAppRestoreRequest, + DeletedSite, + Deployment, + DeploymentCollection, + DetectorAbnormalTimePeriod, + DetectorDefinition, + DetectorInfo, + DetectorResponse, + DiagnosticAnalysis, + DiagnosticCategory, + DiagnosticData, + DiagnosticDetectorResponse, + DiagnosticMetricSample, + DiagnosticMetricSet, + Domain, + DomainOwnershipIdentifier, + DomainPatchResource, + DomainPurchaseConsent, + EnabledConfig, ErrorEntity, - CsmSlotEntity, - BackupRequest, - BackupSchedule, - DatabaseBackupSetting, - BackupItem, - BackupItemCollection, - RestoreRequest, - SiteConfigResourceCollection, - SiteConfigResource, - StringDictionary, - SiteAuthSettings, - AzureStoragePropertyDictionaryResource, - ConnectionStringDictionary, - ConnStringValueTypePair, - SiteLogsConfig, - ApplicationLogsConfig, + Experiments, FileSystemApplicationLogsConfig, - AzureTableStorageApplicationLogsConfig, - AzureBlobStorageApplicationLogsConfig, - HttpLogsConfig, FileSystemHttpLogsConfig, - AzureBlobStorageHttpLogsConfig, - EnabledConfig, - User, - SlotConfigNamesResource, - SwiftVirtualNetwork, - SiteConfigurationSnapshotInfoCollection, - SiteConfigurationSnapshotInfo, - ContinuousWebJobCollection, - ContinuousWebJob, - DeploymentCollection, - Deployment, - IdentifierCollection, - Identifier, - MSDeployStatus, - MSDeploy, - MSDeployLog, - MSDeployLogEntry, - FunctionEnvelopeCollection, FunctionEnvelope, + FunctionEnvelopeCollection, FunctionSecrets, - HostNameBindingCollection, + GeoDistribution, + GeoRegion, + HandlerMapping, + HostingEnvironmentProfile, + HostName, HostNameBinding, + HostNameBindingCollection, + HostNameSslState, + HttpLogsConfig, HybridConnection, HybridConnectionKey, - RelayServiceConnectionEntity, - WebAppInstanceCollection, - SiteInstance, - ProcessInfoCollection, - ProcessInfo, - ProcessThreadInfo, - ProcessModuleInfo, - ProcessModuleInfoCollection, - ProcessThreadInfoCollection, - SiteCloneability, - SiteCloneabilityCriterion, - ResourceMetricDefinitionCollection, - ResourceMetricDefinition, - ResourceMetricAvailability, - ResourceMetricCollection, - ResourceMetric, - ResourceMetricName, - ResourceMetricValue, - ResourceMetricProperty, - StorageMigrationOptions, - StorageMigrationResponse, + HybridConnectionLimits, + Identifier, + IdentifierCollection, + IpSecurityRestriction, + LocalizableString, + ManagedServiceIdentity, + ManagedServiceIdentityUserAssignedIdentitiesValue, + MetricAvailabilily, + MetricDefinition, MigrateMySqlRequest, - Operation, MigrateMySqlStatus, + MSDeploy, + MSDeployLog, + MSDeployLogEntry, + MSDeployStatus, + NameValuePair, + NetworkAccessControlEntry, NetworkFeatures, - VnetInfo, - VnetRoute, NetworkTrace, + Operation, PerfMonCounterCollection, PerfMonResponse, - PerfMonSet, PerfMonSample, - SitePhpErrorLogFlag, + PerfMonSet, PremierAddOn, + PremierAddOnOffer, PremierAddOnPatchResource, PrivateAccess, - PrivateAccessVirtualNetwork, PrivateAccessSubnet, - PublicCertificateCollection, + PrivateAccessVirtualNetwork, + ProcessInfo, + ProcessInfoCollection, + ProcessModuleInfo, + ProcessModuleInfoCollection, + ProcessThreadInfo, + ProcessThreadInfoCollection, + ProxyOnlyResource, PublicCertificate, - CsmPublishingProfileOptions, - DeletedAppRestoreRequest, - SnapshotRestoreRequest, - SnapshotRecoverySource, - SiteExtensionInfoCollection, - SiteExtensionInfo, - SlotDifferenceCollection, - SlotDifference, - SnapshotCollection, - Snapshot, - SiteSourceControl, - TriggeredWebJobCollection, - TriggeredWebJob, - TriggeredJobRun, - TriggeredJobHistoryCollection, - TriggeredJobHistory, - CsmUsageQuotaCollection, - CsmUsageQuota, - LocalizableString, - VnetGateway, - WebJobCollection, - WebJob, - AppServiceCertificateResource, - AppServiceCertificateOrder, - AppServiceCertificate, - CertificateDetails, - AppServiceCertificateOrderPatchResource, - AppServiceCertificatePatchResource, - CertificateEmail, - CertificateOrderAction, + PublicCertificateCollection, + PushSettings, + RampUpRule, + Recommendation, + RecommendationRule, ReissueCertificateOrderRequest, + RelayServiceConnectionEntity, + Rendering, RenewCertificateOrderRequest, - DeletedSite, - AppServicePlan, - SkuDescription, + RequestsBasedTrigger, + Resource, + ResourceHealthMetadata, + ResourceMetric, + ResourceMetricAvailability, + ResourceMetricCollection, + ResourceMetricDefinition, + ResourceMetricDefinitionCollection, + ResourceMetricName, + ResourceMetricProperty, + ResourceMetricValue, + ResponseMetaData, + RestoreRequest, + Site, + SiteAuthSettings, + SiteCloneability, + SiteCloneabilityCriterion, + SiteConfig, + SiteConfigResource, + SiteConfigResourceCollection, + SiteConfigurationSnapshotInfo, + SiteConfigurationSnapshotInfoCollection, + SiteExtensionInfo, + SiteExtensionInfoCollection, + SiteInstance, + SiteLimits, + SiteLogsConfig, + SiteMachineKey, + SitePatchResource, + SitePhpErrorLogFlag, + SiteSourceControl, SkuCapacity, - Capability, - Domain, - Contact, - Address, - HostName, - DomainPurchaseConsent, - DomainOwnershipIdentifier, - DomainPatchResource, - TopLevelDomain, - Certificate, - CertificatePatchResource, - DetectorDefinition, - AnalysisDefinition, - DetectorResponse, - DetectorInfo, - DiagnosticData, - DataTableResponseObject, - DataTableResponseColumn, - Rendering, - DiagnosticAnalysis, - AbnormalTimePeriod, - DetectorAbnormalTimePeriod, + SkuDescription, + SlotConfigNamesResource, + SlotDifference, + SlotDifferenceCollection, + SlotSwapStatus, + SlowRequestsBasedTrigger, + Snapshot, + SnapshotCollection, + SnapshotRecoverySource, + SnapshotRestoreRequest, Solution, - AnalysisData, - DiagnosticMetricSet, - DiagnosticMetricSample, - ResponseMetaData, - DataSource, - DiagnosticCategory, - DiagnosticDetectorResponse, - Recommendation, - RecommendationRule, - BillingMeter, - GeoRegion, - PremierAddOnOffer, SourceControl, + StampCapacity, + StatusCodesBasedTrigger, + StorageMigrationOptions, + StorageMigrationResponse, + StringDictionary, + SwiftVirtualNetwork, + TopLevelDomain, + TriggeredJobHistory, + TriggeredJobHistoryCollection, + TriggeredJobRun, + TriggeredWebJob, + TriggeredWebJobCollection, + Usage, + User, + VirtualApplication, + VirtualDirectory, + VirtualIPMapping, + VirtualNetworkProfile, + VnetGateway, + VnetInfo, VnetParameters, - VnetValidationTestFailure, + VnetRoute, VnetValidationFailureDetails, - AppServiceEnvironmentResource, - VirtualNetworkProfile, + VnetValidationTestFailure, + WebAppCollection, + WebAppInstanceCollection, + WebJob, + WebJobCollection, WorkerPool, - VirtualIPMapping, - StampCapacity, - NetworkAccessControlEntry, - AppServiceEnvironmentPatchResource, - MetricDefinition, - MetricAvailabilily, - Usage, - WorkerPoolResource, - AppServicePlanPatchResource, - HybridConnectionLimits, - ResourceHealthMetadata + WorkerPoolResource } from "../models/mappers"; - diff --git a/sdk/appservice/arm-appservice/src/operations/appServiceCertificateOrders.ts b/sdk/appservice/arm-appservice/src/operations/appServiceCertificateOrders.ts index 3d61dc35b767..e9a7367da772 100644 --- a/sdk/appservice/arm-appservice/src/operations/appServiceCertificateOrders.ts +++ b/sdk/appservice/arm-appservice/src/operations/appServiceCertificateOrders.ts @@ -148,7 +148,7 @@ export class AppServiceCertificateOrders { * @summary Create or update a certificate purchase order. * @param resourceGroupName Name of the resource group to which the resource belongs. * @param certificateOrderName Name of the certificate order. - * @param certificateDistinguishedName Distinguished name to to use for the certificate order. + * @param certificateDistinguishedName Distinguished name to use for the certificate order. * @param [options] The optional parameters * @returns Promise */ @@ -195,7 +195,7 @@ export class AppServiceCertificateOrders { * @summary Create or update a certificate purchase order. * @param resourceGroupName Name of the resource group to which the resource belongs. * @param certificateOrderName Name of the certificate order. - * @param certificateDistinguishedName Distinguished name to to use for the certificate order. + * @param certificateDistinguishedName Distinguished name to use for the certificate order. * @param [options] The optional parameters * @returns Promise */ @@ -203,14 +203,14 @@ export class AppServiceCertificateOrders { /** * @param resourceGroupName Name of the resource group to which the resource belongs. * @param certificateOrderName Name of the certificate order. - * @param certificateDistinguishedName Distinguished name to to use for the certificate order. + * @param certificateDistinguishedName Distinguished name to use for the certificate order. * @param callback The callback */ update(resourceGroupName: string, certificateOrderName: string, certificateDistinguishedName: Models.AppServiceCertificateOrderPatchResource, callback: msRest.ServiceCallback): void; /** * @param resourceGroupName Name of the resource group to which the resource belongs. * @param certificateOrderName Name of the certificate order. - * @param certificateDistinguishedName Distinguished name to to use for the certificate order. + * @param certificateDistinguishedName Distinguished name to use for the certificate order. * @param options The optional parameters * @param callback The callback */ @@ -671,7 +671,7 @@ export class AppServiceCertificateOrders { * @summary Create or update a certificate purchase order. * @param resourceGroupName Name of the resource group to which the resource belongs. * @param certificateOrderName Name of the certificate order. - * @param certificateDistinguishedName Distinguished name to to use for the certificate order. + * @param certificateDistinguishedName Distinguished name to use for the certificate order. * @param [options] The optional parameters * @returns Promise */ @@ -807,7 +807,7 @@ const listOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -830,7 +830,7 @@ const validatePurchaseInformationOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -859,7 +859,7 @@ const listByResourceGroupOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -884,7 +884,7 @@ const getOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -909,7 +909,7 @@ const deleteMethodOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -933,7 +933,7 @@ const updateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -968,7 +968,7 @@ const listCertificatesOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -994,7 +994,7 @@ const getCertificateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1020,7 +1020,7 @@ const deleteCertificateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1045,7 +1045,7 @@ const updateCertificateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1080,7 +1080,7 @@ const reissueOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1110,7 +1110,7 @@ const renewOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1140,7 +1140,7 @@ const resendEmailOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1163,7 +1163,7 @@ const resendRequestEmailsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1198,7 +1198,7 @@ const retrieveSiteSealOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1230,7 +1230,7 @@ const verifyDomainOwnershipOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1253,7 +1253,7 @@ const retrieveCertificateActionsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1289,7 +1289,7 @@ const retrieveCertificateEmailHistoryOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1325,7 +1325,7 @@ const beginCreateOrUpdateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1361,7 +1361,7 @@ const beginCreateOrUpdateCertificateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage diff --git a/sdk/appservice/arm-appservice/src/operations/appServiceEnvironments.ts b/sdk/appservice/arm-appservice/src/operations/appServiceEnvironments.ts index 6ef2e6b3466b..2eb2f7a4d07e 100644 --- a/sdk/appservice/arm-appservice/src/operations/appServiceEnvironments.ts +++ b/sdk/appservice/arm-appservice/src/operations/appServiceEnvironments.ts @@ -328,6 +328,39 @@ export class AppServiceEnvironments { callback) as Promise; } + /** + * Get the network endpoints of all inbound dependencies of an App Service Environment. + * @summary Get the network endpoints of all inbound dependencies of an App Service Environment. + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the App Service Environment. + * @param [options] The optional parameters + * @returns Promise + */ + getInboundNetworkDependenciesEndpoints(resourceGroupName: string, name: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the App Service Environment. + * @param callback The callback + */ + getInboundNetworkDependenciesEndpoints(resourceGroupName: string, name: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the App Service Environment. + * @param options The optional parameters + * @param callback The callback + */ + getInboundNetworkDependenciesEndpoints(resourceGroupName: string, name: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + getInboundNetworkDependenciesEndpoints(resourceGroupName: string, name: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + name, + options + }, + getInboundNetworkDependenciesEndpointsOperationSpec, + callback) as Promise; + } + /** * Get global metric definitions of an App Service Environment. * @summary Get global metric definitions of an App Service Environment. @@ -753,6 +786,39 @@ export class AppServiceEnvironments { callback) as Promise; } + /** + * Get the network endpoints of all outbound dependencies of an App Service Environment. + * @summary Get the network endpoints of all outbound dependencies of an App Service Environment. + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the App Service Environment. + * @param [options] The optional parameters + * @returns Promise + */ + getOutboundNetworkDependenciesEndpoints(resourceGroupName: string, name: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the App Service Environment. + * @param callback The callback + */ + getOutboundNetworkDependenciesEndpoints(resourceGroupName: string, name: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the App Service Environment. + * @param options The optional parameters + * @param callback The callback + */ + getOutboundNetworkDependenciesEndpoints(resourceGroupName: string, name: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + getOutboundNetworkDependenciesEndpoints(resourceGroupName: string, name: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + name, + options + }, + getOutboundNetworkDependenciesEndpointsOperationSpec, + callback) as Promise; + } + /** * Reboot all machines in an App Service Environment. * @summary Reboot all machines in an App Service Environment. @@ -1510,6 +1576,36 @@ export class AppServiceEnvironments { .then(lroPoller => lroPoller.pollUntilFinished()) as Promise; } + /** + * Get the network endpoints of all inbound dependencies of an App Service Environment. + * @summary Get the network endpoints of all inbound dependencies of an App Service Environment. + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param [options] The optional parameters + * @returns + * Promise + */ + getInboundNetworkDependenciesEndpointsNext(nextPageLink: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param callback The callback + */ + getInboundNetworkDependenciesEndpointsNext(nextPageLink: string, callback: msRest.ServiceCallback): void; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param options The optional parameters + * @param callback The callback + */ + getInboundNetworkDependenciesEndpointsNext(nextPageLink: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + getInboundNetworkDependenciesEndpointsNext(nextPageLink: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + nextPageLink, + options + }, + getInboundNetworkDependenciesEndpointsNextOperationSpec, + callback) as Promise; + } + /** * Get global metrics of an App Service Environment. * @summary Get global metrics of an App Service Environment. @@ -1745,6 +1841,36 @@ export class AppServiceEnvironments { callback) as Promise; } + /** + * Get the network endpoints of all outbound dependencies of an App Service Environment. + * @summary Get the network endpoints of all outbound dependencies of an App Service Environment. + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param [options] The optional parameters + * @returns + * Promise + */ + getOutboundNetworkDependenciesEndpointsNext(nextPageLink: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param callback The callback + */ + getOutboundNetworkDependenciesEndpointsNext(nextPageLink: string, callback: msRest.ServiceCallback): void; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param options The optional parameters + * @param callback The callback + */ + getOutboundNetworkDependenciesEndpointsNext(nextPageLink: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + getOutboundNetworkDependenciesEndpointsNext(nextPageLink: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + nextPageLink, + options + }, + getOutboundNetworkDependenciesEndpointsNextOperationSpec, + callback) as Promise; + } + /** * Resume an App Service Environment. * @summary Resume an App Service Environment. @@ -2122,7 +2248,7 @@ const listOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2146,7 +2272,7 @@ const listByResourceGroupOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2171,7 +2297,7 @@ const getOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2196,7 +2322,7 @@ const updateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2234,7 +2360,7 @@ const listCapacitiesOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2259,7 +2385,7 @@ const listVipsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2284,7 +2410,7 @@ const listDiagnosticsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2321,7 +2447,7 @@ const getDiagnosticsItemOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2337,6 +2463,31 @@ const getDiagnosticsItemOperationSpec: msRest.OperationSpec = { serializer }; +const getInboundNetworkDependenciesEndpointsOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/inboundNetworkDependenciesEndpoints", + urlParameters: [ + Parameters.resourceGroupName, + Parameters.name, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion0 + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.InboundEnvironmentEndpointCollection + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; + const listMetricDefinitionsOperationSpec: msRest.OperationSpec = { httpMethod: "GET", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/metricdefinitions", @@ -2346,7 +2497,7 @@ const listMetricDefinitionsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2373,7 +2524,7 @@ const listMetricsOperationSpec: msRest.OperationSpec = { queryParameters: [ Parameters.details, Parameters.filter, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2398,7 +2549,7 @@ const listMultiRolePoolsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2423,7 +2574,7 @@ const getMultiRolePoolOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2448,7 +2599,7 @@ const updateMultiRolePoolOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2487,7 +2638,7 @@ const listMultiRolePoolInstanceMetricDefinitionsOperationSpec: msRest.OperationS Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2514,7 +2665,7 @@ const listMultiRolePoolInstanceMetricsOperationSpec: msRest.OperationSpec = { ], queryParameters: [ Parameters.details, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2539,7 +2690,7 @@ const listMultiRoleMetricDefinitionsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2569,7 +2720,7 @@ const listMultiRoleMetricsOperationSpec: msRest.OperationSpec = { Parameters.timeGrain1, Parameters.details, Parameters.filter, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2594,7 +2745,7 @@ const listMultiRolePoolSkusOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2619,7 +2770,7 @@ const listMultiRoleUsagesOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2644,7 +2795,7 @@ const listOperationsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2671,6 +2822,31 @@ const listOperationsOperationSpec: msRest.OperationSpec = { serializer }; +const getOutboundNetworkDependenciesEndpointsOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/outboundNetworkDependenciesEndpoints", + urlParameters: [ + Parameters.resourceGroupName, + Parameters.name, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion0 + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.OutboundEnvironmentEndpointCollection + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; + const rebootOperationSpec: msRest.OperationSpec = { httpMethod: "POST", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{name}/reboot", @@ -2680,7 +2856,7 @@ const rebootOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2706,7 +2882,7 @@ const listAppServicePlansOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2732,7 +2908,7 @@ const listWebAppsOperationSpec: msRest.OperationSpec = { ], queryParameters: [ Parameters.propertiesToInclude, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2758,7 +2934,7 @@ const listUsagesOperationSpec: msRest.OperationSpec = { ], queryParameters: [ Parameters.filter, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2783,7 +2959,7 @@ const listWorkerPoolsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2809,7 +2985,7 @@ const getWorkerPoolOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2835,7 +3011,7 @@ const updateWorkerPoolOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2875,7 +3051,7 @@ const listWorkerPoolInstanceMetricDefinitionsOperationSpec: msRest.OperationSpec Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2904,7 +3080,7 @@ const listWorkerPoolInstanceMetricsOperationSpec: msRest.OperationSpec = { queryParameters: [ Parameters.details, Parameters.filter, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2930,7 +3106,7 @@ const listWebWorkerMetricDefinitionsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2958,7 +3134,7 @@ const listWebWorkerMetricsOperationSpec: msRest.OperationSpec = { queryParameters: [ Parameters.details, Parameters.filter, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2984,7 +3160,7 @@ const listWorkerPoolSkusOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -3010,7 +3186,7 @@ const listWebWorkerUsagesOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -3035,7 +3211,7 @@ const beginCreateOrUpdateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -3074,7 +3250,7 @@ const beginDeleteMethodOperationSpec: msRest.OperationSpec = { ], queryParameters: [ Parameters.forceDelete, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -3101,7 +3277,7 @@ const beginChangeVnetOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -3136,7 +3312,7 @@ const beginCreateOrUpdateMultiRolePoolOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -3174,7 +3350,7 @@ const beginResumeOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -3202,7 +3378,7 @@ const beginSuspendOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -3231,7 +3407,7 @@ const beginCreateOrUpdateWorkerPoolOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -3323,6 +3499,27 @@ const listCapacitiesNextOperationSpec: msRest.OperationSpec = { serializer }; +const getInboundNetworkDependenciesEndpointsNextOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + baseUrl: "https://management.azure.com", + path: "{nextLink}", + urlParameters: [ + Parameters.nextPageLink + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.InboundEnvironmentEndpointCollection + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; + const listMetricsNextOperationSpec: msRest.OperationSpec = { httpMethod: "GET", baseUrl: "https://management.azure.com", @@ -3491,6 +3688,27 @@ const listMultiRoleUsagesNextOperationSpec: msRest.OperationSpec = { serializer }; +const getOutboundNetworkDependenciesEndpointsNextOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + baseUrl: "https://management.azure.com", + path: "{nextLink}", + urlParameters: [ + Parameters.nextPageLink + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.OutboundEnvironmentEndpointCollection + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; + const listAppServicePlansNextOperationSpec: msRest.OperationSpec = { httpMethod: "GET", baseUrl: "https://management.azure.com", diff --git a/sdk/appservice/arm-appservice/src/operations/appServicePlans.ts b/sdk/appservice/arm-appservice/src/operations/appServicePlans.ts index cadb33d90582..d0f96fbc2a56 100644 --- a/sdk/appservice/arm-appservice/src/operations/appServicePlans.ts +++ b/sdk/appservice/arm-appservice/src/operations/appServicePlans.ts @@ -28,8 +28,8 @@ export class AppServicePlans { } /** - * Get all App Service plans for a subcription. - * @summary Get all App Service plans for a subcription. + * Get all App Service plans for a subscription. + * @summary Get all App Service plans for a subscription. * @param [options] The optional parameters * @returns Promise */ @@ -495,8 +495,8 @@ export class AppServicePlans { } /** - * Get metrics for an App Serice plan. - * @summary Get metrics for an App Serice plan. + * Get metrics for an App Service plan. + * @summary Get metrics for an App Service plan. * @param resourceGroupName Name of the resource group to which the resource belongs. * @param name Name of the App Service plan. * @param [options] The optional parameters @@ -594,8 +594,8 @@ export class AppServicePlans { } /** - * Gets all selectable sku's for a given App Service Plan - * @summary Gets all selectable sku's for a given App Service Plan + * Gets all selectable SKUs for a given App Service Plan + * @summary Gets all selectable SKUs for a given App Service Plan * @param resourceGroupName Name of the resource group to which the resource belongs. * @param name Name of App Service Plan * @param [options] The optional parameters @@ -1083,8 +1083,8 @@ export class AppServicePlans { } /** - * Get all App Service plans for a subcription. - * @summary Get all App Service plans for a subcription. + * Get all App Service plans for a subscription. + * @summary Get all App Service plans for a subscription. * @param nextPageLink The NextLink from the previous successful call to List operation. * @param [options] The optional parameters * @returns Promise @@ -1228,8 +1228,8 @@ export class AppServicePlans { } /** - * Get metrics for an App Serice plan. - * @summary Get metrics for an App Serice plan. + * Get metrics for an App Service plan. + * @summary Get metrics for an App Service plan. * @param nextPageLink The NextLink from the previous successful call to List operation. * @param [options] The optional parameters * @returns Promise @@ -1325,7 +1325,7 @@ const listOperationSpec: msRest.OperationSpec = { ], queryParameters: [ Parameters.detailed, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1349,7 +1349,7 @@ const listByResourceGroupOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1374,7 +1374,7 @@ const getOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1400,7 +1400,7 @@ const deleteMethodOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1424,7 +1424,7 @@ const updateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1459,7 +1459,7 @@ const listCapabilitiesOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1497,7 +1497,7 @@ const getHybridConnectionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1524,7 +1524,7 @@ const deleteHybridConnectionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1550,7 +1550,7 @@ const listHybridConnectionKeysOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1577,7 +1577,7 @@ const listWebAppsByHybridConnectionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1602,7 +1602,7 @@ const getHybridConnectionPlanLimitOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1627,7 +1627,7 @@ const listHybridConnectionsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1652,7 +1652,7 @@ const listMetricDefintionsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1679,7 +1679,7 @@ const listMetricsOperationSpec: msRest.OperationSpec = { queryParameters: [ Parameters.details, Parameters.filter, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1705,7 +1705,7 @@ const restartWebAppsOperationSpec: msRest.OperationSpec = { ], queryParameters: [ Parameters.softRestart, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1731,7 +1731,7 @@ const listWebAppsOperationSpec: msRest.OperationSpec = { Parameters.skipToken, Parameters.filter, Parameters.top, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1756,7 +1756,7 @@ const getServerFarmSkusOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1787,7 +1787,7 @@ const listUsagesOperationSpec: msRest.OperationSpec = { ], queryParameters: [ Parameters.filter, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1812,7 +1812,7 @@ const listVnetsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1849,7 +1849,7 @@ const getVnetFromServerFarmOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1877,7 +1877,7 @@ const getVnetGatewayOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1904,7 +1904,7 @@ const updateVnetGatewayOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1937,7 +1937,7 @@ const listRoutesForVnetOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1975,7 +1975,7 @@ const getRouteForVnetOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2014,7 +2014,7 @@ const createOrUpdateVnetRouteOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2050,7 +2050,7 @@ const deleteVnetRouteOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2076,7 +2076,7 @@ const updateVnetRouteOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2111,7 +2111,7 @@ const rebootWorkerOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2134,7 +2134,7 @@ const beginCreateOrUpdateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -2150,6 +2150,9 @@ const beginCreateOrUpdateOperationSpec: msRest.OperationSpec = { 200: { bodyMapper: Mappers.AppServicePlan }, + 201: { + bodyMapper: Mappers.AppServicePlan + }, 202: { bodyMapper: Mappers.AppServicePlan }, diff --git a/sdk/appservice/arm-appservice/src/operations/certificateRegistrationProvider.ts b/sdk/appservice/arm-appservice/src/operations/certificateRegistrationProvider.ts index cdd2530fab05..28ca85e9cd8f 100644 --- a/sdk/appservice/arm-appservice/src/operations/certificateRegistrationProvider.ts +++ b/sdk/appservice/arm-appservice/src/operations/certificateRegistrationProvider.ts @@ -91,7 +91,7 @@ const listOperationsOperationSpec: msRest.OperationSpec = { httpMethod: "GET", path: "providers/Microsoft.CertificateRegistration/operations", queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage diff --git a/sdk/appservice/arm-appservice/src/operations/certificates.ts b/sdk/appservice/arm-appservice/src/operations/certificates.ts index 91bf1c0b54c5..3d0775ead591 100644 --- a/sdk/appservice/arm-appservice/src/operations/certificates.ts +++ b/sdk/appservice/arm-appservice/src/operations/certificates.ts @@ -288,7 +288,7 @@ const listOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -312,7 +312,7 @@ const listByResourceGroupOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -337,7 +337,7 @@ const getOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -362,7 +362,7 @@ const createOrUpdateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -394,7 +394,7 @@ const deleteMethodOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -418,7 +418,7 @@ const updateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage diff --git a/sdk/appservice/arm-appservice/src/operations/deletedWebApps.ts b/sdk/appservice/arm-appservice/src/operations/deletedWebApps.ts index 777a9794c949..54b67b2bce77 100644 --- a/sdk/appservice/arm-appservice/src/operations/deletedWebApps.ts +++ b/sdk/appservice/arm-appservice/src/operations/deletedWebApps.ts @@ -51,6 +51,68 @@ export class DeletedWebApps { callback) as Promise; } + /** + * Get all deleted apps for a subscription at location + * @summary Get all deleted apps for a subscription at location + * @param location + * @param [options] The optional parameters + * @returns Promise + */ + listByLocation(location: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param location + * @param callback The callback + */ + listByLocation(location: string, callback: msRest.ServiceCallback): void; + /** + * @param location + * @param options The optional parameters + * @param callback The callback + */ + listByLocation(location: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + listByLocation(location: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + location, + options + }, + listByLocationOperationSpec, + callback) as Promise; + } + + /** + * Get deleted app for a subscription at location. + * @summary Get deleted app for a subscription at location. + * @param location + * @param deletedSiteId The numeric ID of the deleted app, e.g. 12345 + * @param [options] The optional parameters + * @returns Promise + */ + getDeletedWebAppByLocation(location: string, deletedSiteId: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param location + * @param deletedSiteId The numeric ID of the deleted app, e.g. 12345 + * @param callback The callback + */ + getDeletedWebAppByLocation(location: string, deletedSiteId: string, callback: msRest.ServiceCallback): void; + /** + * @param location + * @param deletedSiteId The numeric ID of the deleted app, e.g. 12345 + * @param options The optional parameters + * @param callback The callback + */ + getDeletedWebAppByLocation(location: string, deletedSiteId: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + getDeletedWebAppByLocation(location: string, deletedSiteId: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + location, + deletedSiteId, + options + }, + getDeletedWebAppByLocationOperationSpec, + callback) as Promise; + } + /** * Get all deleted apps for a subscription. * @summary Get all deleted apps for a subscription. @@ -79,6 +141,35 @@ export class DeletedWebApps { listNextOperationSpec, callback) as Promise; } + + /** + * Get all deleted apps for a subscription at location + * @summary Get all deleted apps for a subscription at location + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param [options] The optional parameters + * @returns Promise + */ + listByLocationNext(nextPageLink: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param callback The callback + */ + listByLocationNext(nextPageLink: string, callback: msRest.ServiceCallback): void; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param options The optional parameters + * @param callback The callback + */ + listByLocationNext(nextPageLink: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + listByLocationNext(nextPageLink: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + nextPageLink, + options + }, + listByLocationNextOperationSpec, + callback) as Promise; + } } // Operation Specifications @@ -90,7 +181,7 @@ const listOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -106,6 +197,55 @@ const listOperationSpec: msRest.OperationSpec = { serializer }; +const listByLocationOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + path: "subscriptions/{subscriptionId}/providers/Microsoft.Web/locations/{location}/deletedSites", + urlParameters: [ + Parameters.location, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion0 + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.DeletedWebAppCollection + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; + +const getDeletedWebAppByLocationOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + path: "subscriptions/{subscriptionId}/providers/Microsoft.Web/locations/{location}/deletedSites/{deletedSiteId}", + urlParameters: [ + Parameters.location, + Parameters.deletedSiteId, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion0 + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.DeletedSite + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; + const listNextOperationSpec: msRest.OperationSpec = { httpMethod: "GET", baseUrl: "https://management.azure.com", @@ -126,3 +266,24 @@ const listNextOperationSpec: msRest.OperationSpec = { }, serializer }; + +const listByLocationNextOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + baseUrl: "https://management.azure.com", + path: "{nextLink}", + urlParameters: [ + Parameters.nextPageLink + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.DeletedWebAppCollection + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; diff --git a/sdk/appservice/arm-appservice/src/operations/diagnostics.ts b/sdk/appservice/arm-appservice/src/operations/diagnostics.ts index b71d497c0403..ee77c5b57f9a 100644 --- a/sdk/appservice/arm-appservice/src/operations/diagnostics.ts +++ b/sdk/appservice/arm-appservice/src/operations/diagnostics.ts @@ -1223,7 +1223,7 @@ const listHostingEnvironmentDetectorResponsesOperationSpec: msRest.OperationSpec Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1252,7 +1252,7 @@ const getHostingEnvironmentDetectorResponseOperationSpec: msRest.OperationSpec = Parameters.startTime0, Parameters.endTime0, Parameters.timeGrain0, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1277,7 +1277,7 @@ const listSiteDetectorResponsesOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1306,7 +1306,7 @@ const getSiteDetectorResponseOperationSpec: msRest.OperationSpec = { Parameters.startTime0, Parameters.endTime0, Parameters.timeGrain0, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1331,7 +1331,7 @@ const listSiteDiagnosticCategoriesOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1357,7 +1357,7 @@ const getSiteDiagnosticCategoryOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1383,7 +1383,7 @@ const listSiteAnalysesOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1410,7 +1410,7 @@ const getSiteAnalysisOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1440,7 +1440,7 @@ const executeSiteAnalysisOperationSpec: msRest.OperationSpec = { Parameters.startTime0, Parameters.endTime0, Parameters.timeGrain0, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1466,7 +1466,7 @@ const listSiteDetectorsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1493,7 +1493,7 @@ const getSiteDetectorOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1523,7 +1523,7 @@ const executeSiteDetectorOperationSpec: msRest.OperationSpec = { Parameters.startTime0, Parameters.endTime0, Parameters.timeGrain0, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1549,7 +1549,7 @@ const listSiteDetectorResponsesSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1579,7 +1579,7 @@ const getSiteDetectorResponseSlotOperationSpec: msRest.OperationSpec = { Parameters.startTime0, Parameters.endTime0, Parameters.timeGrain0, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1605,7 +1605,7 @@ const listSiteDiagnosticCategoriesSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1632,7 +1632,7 @@ const getSiteDiagnosticCategorySlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1659,7 +1659,7 @@ const listSiteAnalysesSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1687,7 +1687,7 @@ const getSiteAnalysisSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1718,7 +1718,7 @@ const executeSiteAnalysisSlotOperationSpec: msRest.OperationSpec = { Parameters.startTime0, Parameters.endTime0, Parameters.timeGrain0, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1745,7 +1745,7 @@ const listSiteDetectorsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1773,7 +1773,7 @@ const getSiteDetectorSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1804,7 +1804,7 @@ const executeSiteDetectorSlotOperationSpec: msRest.OperationSpec = { Parameters.startTime0, Parameters.endTime0, Parameters.timeGrain0, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage diff --git a/sdk/appservice/arm-appservice/src/operations/domainRegistrationProvider.ts b/sdk/appservice/arm-appservice/src/operations/domainRegistrationProvider.ts index 188617096177..fc1b5433983c 100644 --- a/sdk/appservice/arm-appservice/src/operations/domainRegistrationProvider.ts +++ b/sdk/appservice/arm-appservice/src/operations/domainRegistrationProvider.ts @@ -91,7 +91,7 @@ const listOperationsOperationSpec: msRest.OperationSpec = { httpMethod: "GET", path: "providers/Microsoft.DomainRegistration/operations", queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage diff --git a/sdk/appservice/arm-appservice/src/operations/domains.ts b/sdk/appservice/arm-appservice/src/operations/domains.ts index 161e0de6b541..77b03f13b655 100644 --- a/sdk/appservice/arm-appservice/src/operations/domains.ts +++ b/sdk/appservice/arm-appservice/src/operations/domains.ts @@ -650,7 +650,7 @@ const checkAvailabilityOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -685,7 +685,7 @@ const listOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -708,7 +708,7 @@ const getControlCenterSsoRequestOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -731,7 +731,7 @@ const listRecommendationsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -762,7 +762,7 @@ const listByResourceGroupOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -787,7 +787,7 @@ const getOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -813,7 +813,7 @@ const deleteMethodOperationSpec: msRest.OperationSpec = { ], queryParameters: [ Parameters.forceHardDeleteDomain, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -837,7 +837,7 @@ const updateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -872,7 +872,7 @@ const listOwnershipIdentifiersOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -898,7 +898,7 @@ const getOwnershipIdentifierOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -924,7 +924,7 @@ const createOrUpdateOwnershipIdentifierOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -957,7 +957,7 @@ const deleteOwnershipIdentifierOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -982,7 +982,7 @@ const updateOwnershipIdentifierOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1014,7 +1014,7 @@ const renewOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1041,7 +1041,7 @@ const beginCreateOrUpdateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage diff --git a/sdk/appservice/arm-appservice/src/operations/provider.ts b/sdk/appservice/arm-appservice/src/operations/provider.ts index 9d215720c1b2..267de5aeb2c5 100644 --- a/sdk/appservice/arm-appservice/src/operations/provider.ts +++ b/sdk/appservice/arm-appservice/src/operations/provider.ts @@ -200,7 +200,7 @@ const getAvailableStacksOperationSpec: msRest.OperationSpec = { path: "providers/Microsoft.Web/availableStacks", queryParameters: [ Parameters.osTypeSelected, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -220,7 +220,7 @@ const listOperationsOperationSpec: msRest.OperationSpec = { httpMethod: "GET", path: "providers/Microsoft.Web/operations", queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -244,7 +244,7 @@ const getAvailableStacksOnPremOperationSpec: msRest.OperationSpec = { ], queryParameters: [ Parameters.osTypeSelected, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage diff --git a/sdk/appservice/arm-appservice/src/operations/recommendations.ts b/sdk/appservice/arm-appservice/src/operations/recommendations.ts index c9ae65cc04d4..7279c96d263e 100644 --- a/sdk/appservice/arm-appservice/src/operations/recommendations.ts +++ b/sdk/appservice/arm-appservice/src/operations/recommendations.ts @@ -105,6 +105,224 @@ export class Recommendations { callback); } + /** + * Get past recommendations for an app, optionally specified by the time range. + * @summary Get past recommendations for an app, optionally specified by the time range. + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param hostingEnvironmentName Name of the hosting environment. + * @param [options] The optional parameters + * @returns Promise + */ + listHistoryForHostingEnvironment(resourceGroupName: string, hostingEnvironmentName: string, options?: Models.RecommendationsListHistoryForHostingEnvironmentOptionalParams): Promise; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param hostingEnvironmentName Name of the hosting environment. + * @param callback The callback + */ + listHistoryForHostingEnvironment(resourceGroupName: string, hostingEnvironmentName: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param hostingEnvironmentName Name of the hosting environment. + * @param options The optional parameters + * @param callback The callback + */ + listHistoryForHostingEnvironment(resourceGroupName: string, hostingEnvironmentName: string, options: Models.RecommendationsListHistoryForHostingEnvironmentOptionalParams, callback: msRest.ServiceCallback): void; + listHistoryForHostingEnvironment(resourceGroupName: string, hostingEnvironmentName: string, options?: Models.RecommendationsListHistoryForHostingEnvironmentOptionalParams | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + hostingEnvironmentName, + options + }, + listHistoryForHostingEnvironmentOperationSpec, + callback) as Promise; + } + + /** + * Get all recommendations for an app. + * @summary Get all recommendations for an app. + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param hostingEnvironmentName Name of the app. + * @param [options] The optional parameters + * @returns Promise + */ + listRecommendedRulesForHostingEnvironment(resourceGroupName: string, hostingEnvironmentName: string, options?: Models.RecommendationsListRecommendedRulesForHostingEnvironmentOptionalParams): Promise; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param hostingEnvironmentName Name of the app. + * @param callback The callback + */ + listRecommendedRulesForHostingEnvironment(resourceGroupName: string, hostingEnvironmentName: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param hostingEnvironmentName Name of the app. + * @param options The optional parameters + * @param callback The callback + */ + listRecommendedRulesForHostingEnvironment(resourceGroupName: string, hostingEnvironmentName: string, options: Models.RecommendationsListRecommendedRulesForHostingEnvironmentOptionalParams, callback: msRest.ServiceCallback): void; + listRecommendedRulesForHostingEnvironment(resourceGroupName: string, hostingEnvironmentName: string, options?: Models.RecommendationsListRecommendedRulesForHostingEnvironmentOptionalParams | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + hostingEnvironmentName, + options + }, + listRecommendedRulesForHostingEnvironmentOperationSpec, + callback) as Promise; + } + + /** + * Disable all recommendations for an app. + * @summary Disable all recommendations for an app. + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param environmentName Name of the app. + * @param hostingEnvironmentName + * @param [options] The optional parameters + * @returns Promise + */ + disableAllForHostingEnvironment(resourceGroupName: string, environmentName: string, hostingEnvironmentName: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param environmentName Name of the app. + * @param hostingEnvironmentName + * @param callback The callback + */ + disableAllForHostingEnvironment(resourceGroupName: string, environmentName: string, hostingEnvironmentName: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param environmentName Name of the app. + * @param hostingEnvironmentName + * @param options The optional parameters + * @param callback The callback + */ + disableAllForHostingEnvironment(resourceGroupName: string, environmentName: string, hostingEnvironmentName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + disableAllForHostingEnvironment(resourceGroupName: string, environmentName: string, hostingEnvironmentName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + environmentName, + hostingEnvironmentName, + options + }, + disableAllForHostingEnvironmentOperationSpec, + callback); + } + + /** + * Reset all recommendation opt-out settings for an app. + * @summary Reset all recommendation opt-out settings for an app. + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param environmentName Name of the app. + * @param hostingEnvironmentName + * @param [options] The optional parameters + * @returns Promise + */ + resetAllFiltersForHostingEnvironment(resourceGroupName: string, environmentName: string, hostingEnvironmentName: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param environmentName Name of the app. + * @param hostingEnvironmentName + * @param callback The callback + */ + resetAllFiltersForHostingEnvironment(resourceGroupName: string, environmentName: string, hostingEnvironmentName: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param environmentName Name of the app. + * @param hostingEnvironmentName + * @param options The optional parameters + * @param callback The callback + */ + resetAllFiltersForHostingEnvironment(resourceGroupName: string, environmentName: string, hostingEnvironmentName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + resetAllFiltersForHostingEnvironment(resourceGroupName: string, environmentName: string, hostingEnvironmentName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + environmentName, + hostingEnvironmentName, + options + }, + resetAllFiltersForHostingEnvironmentOperationSpec, + callback); + } + + /** + * Get a recommendation rule for an app. + * @summary Get a recommendation rule for an app. + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param hostingEnvironmentName Name of the hosting environment. + * @param name Name of the recommendation. + * @param [options] The optional parameters + * @returns Promise + */ + getRuleDetailsByHostingEnvironment(resourceGroupName: string, hostingEnvironmentName: string, name: string, options?: Models.RecommendationsGetRuleDetailsByHostingEnvironmentOptionalParams): Promise; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param hostingEnvironmentName Name of the hosting environment. + * @param name Name of the recommendation. + * @param callback The callback + */ + getRuleDetailsByHostingEnvironment(resourceGroupName: string, hostingEnvironmentName: string, name: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param hostingEnvironmentName Name of the hosting environment. + * @param name Name of the recommendation. + * @param options The optional parameters + * @param callback The callback + */ + getRuleDetailsByHostingEnvironment(resourceGroupName: string, hostingEnvironmentName: string, name: string, options: Models.RecommendationsGetRuleDetailsByHostingEnvironmentOptionalParams, callback: msRest.ServiceCallback): void; + getRuleDetailsByHostingEnvironment(resourceGroupName: string, hostingEnvironmentName: string, name: string, options?: Models.RecommendationsGetRuleDetailsByHostingEnvironmentOptionalParams | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + hostingEnvironmentName, + name, + options + }, + getRuleDetailsByHostingEnvironmentOperationSpec, + callback) as Promise; + } + + /** + * Disables the specific rule for a web site permanently. + * @summary Disables the specific rule for a web site permanently. + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param environmentName Site name + * @param name Rule name + * @param hostingEnvironmentName + * @param [options] The optional parameters + * @returns Promise + */ + disableRecommendationForHostingEnvironment(resourceGroupName: string, environmentName: string, name: string, hostingEnvironmentName: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param environmentName Site name + * @param name Rule name + * @param hostingEnvironmentName + * @param callback The callback + */ + disableRecommendationForHostingEnvironment(resourceGroupName: string, environmentName: string, name: string, hostingEnvironmentName: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param environmentName Site name + * @param name Rule name + * @param hostingEnvironmentName + * @param options The optional parameters + * @param callback The callback + */ + disableRecommendationForHostingEnvironment(resourceGroupName: string, environmentName: string, name: string, hostingEnvironmentName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + disableRecommendationForHostingEnvironment(resourceGroupName: string, environmentName: string, name: string, hostingEnvironmentName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + environmentName, + name, + hostingEnvironmentName, + options + }, + disableRecommendationForHostingEnvironmentOperationSpec, + callback); + } + /** * Get past recommendations for an app, optionally specified by the time range. * @summary Get past recommendations for an app, optionally specified by the time range. @@ -340,6 +558,64 @@ export class Recommendations { callback) as Promise; } + /** + * Get past recommendations for an app, optionally specified by the time range. + * @summary Get past recommendations for an app, optionally specified by the time range. + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param [options] The optional parameters + * @returns Promise + */ + listHistoryForHostingEnvironmentNext(nextPageLink: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param callback The callback + */ + listHistoryForHostingEnvironmentNext(nextPageLink: string, callback: msRest.ServiceCallback): void; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param options The optional parameters + * @param callback The callback + */ + listHistoryForHostingEnvironmentNext(nextPageLink: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + listHistoryForHostingEnvironmentNext(nextPageLink: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + nextPageLink, + options + }, + listHistoryForHostingEnvironmentNextOperationSpec, + callback) as Promise; + } + + /** + * Get all recommendations for an app. + * @summary Get all recommendations for an app. + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param [options] The optional parameters + * @returns Promise + */ + listRecommendedRulesForHostingEnvironmentNext(nextPageLink: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param callback The callback + */ + listRecommendedRulesForHostingEnvironmentNext(nextPageLink: string, callback: msRest.ServiceCallback): void; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param options The optional parameters + * @param callback The callback + */ + listRecommendedRulesForHostingEnvironmentNext(nextPageLink: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + listRecommendedRulesForHostingEnvironmentNext(nextPageLink: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + nextPageLink, + options + }, + listRecommendedRulesForHostingEnvironmentNextOperationSpec, + callback) as Promise; + } + /** * Get past recommendations for an app, optionally specified by the time range. * @summary Get past recommendations for an app, optionally specified by the time range. @@ -410,7 +686,7 @@ const listOperationSpec: msRest.OperationSpec = { queryParameters: [ Parameters.featured, Parameters.filter, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -433,7 +709,7 @@ const resetAllFiltersOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -455,7 +731,162 @@ const disableRecommendationForSubscriptionOperationSpec: msRest.OperationSpec = Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: {}, + default: { + bodyMapper: Mappers.CloudError + } + }, + serializer +}; + +const listHistoryForHostingEnvironmentOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{hostingEnvironmentName}/recommendationHistory", + urlParameters: [ + Parameters.resourceGroupName, + Parameters.hostingEnvironmentName, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.expiredOnly, + Parameters.filter, + Parameters.apiVersion0 + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.RecommendationCollection + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; + +const listRecommendedRulesForHostingEnvironmentOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{hostingEnvironmentName}/recommendations", + urlParameters: [ + Parameters.resourceGroupName, + Parameters.hostingEnvironmentName, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.featured, + Parameters.filter, + Parameters.apiVersion0 + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.RecommendationCollection + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; + +const disableAllForHostingEnvironmentOperationSpec: msRest.OperationSpec = { + httpMethod: "POST", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{hostingEnvironmentName}/recommendations/disable", + urlParameters: [ + Parameters.resourceGroupName, + Parameters.hostingEnvironmentName, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.environmentName, + Parameters.apiVersion0 + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 204: {}, + default: { + bodyMapper: Mappers.CloudError + } + }, + serializer +}; + +const resetAllFiltersForHostingEnvironmentOperationSpec: msRest.OperationSpec = { + httpMethod: "POST", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{hostingEnvironmentName}/recommendations/reset", + urlParameters: [ + Parameters.resourceGroupName, + Parameters.hostingEnvironmentName, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.environmentName, + Parameters.apiVersion0 + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 204: {}, + default: { + bodyMapper: Mappers.CloudError + } + }, + serializer +}; + +const getRuleDetailsByHostingEnvironmentOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{hostingEnvironmentName}/recommendations/{name}", + urlParameters: [ + Parameters.resourceGroupName, + Parameters.hostingEnvironmentName, + Parameters.name, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.updateSeen, + Parameters.recommendationId, + Parameters.apiVersion0 + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.RecommendationRule + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; + +const disableRecommendationForHostingEnvironmentOperationSpec: msRest.OperationSpec = { + httpMethod: "POST", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/hostingEnvironments/{hostingEnvironmentName}/recommendations/{name}/disable", + urlParameters: [ + Parameters.resourceGroupName, + Parameters.name, + Parameters.hostingEnvironmentName, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.environmentName, + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -480,7 +911,7 @@ const listHistoryForWebAppOperationSpec: msRest.OperationSpec = { queryParameters: [ Parameters.expiredOnly, Parameters.filter, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -507,7 +938,7 @@ const listRecommendedRulesForWebAppOperationSpec: msRest.OperationSpec = { queryParameters: [ Parameters.featured, Parameters.filter, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -532,7 +963,7 @@ const disableAllForWebAppOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -555,7 +986,7 @@ const resetAllFiltersForWebAppOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -581,7 +1012,7 @@ const getRuleDetailsByWebAppOperationSpec: msRest.OperationSpec = { queryParameters: [ Parameters.updateSeen, Parameters.recommendationId, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -607,7 +1038,7 @@ const disableRecommendationForSiteOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -642,6 +1073,48 @@ const listNextOperationSpec: msRest.OperationSpec = { serializer }; +const listHistoryForHostingEnvironmentNextOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + baseUrl: "https://management.azure.com", + path: "{nextLink}", + urlParameters: [ + Parameters.nextPageLink + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.RecommendationCollection + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; + +const listRecommendedRulesForHostingEnvironmentNextOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + baseUrl: "https://management.azure.com", + path: "{nextLink}", + urlParameters: [ + Parameters.nextPageLink + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.RecommendationCollection + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; + const listHistoryForWebAppNextOperationSpec: msRest.OperationSpec = { httpMethod: "GET", baseUrl: "https://management.azure.com", diff --git a/sdk/appservice/arm-appservice/src/operations/resourceHealthMetadataOperations.ts b/sdk/appservice/arm-appservice/src/operations/resourceHealthMetadataOperations.ts index 292bf06a99c0..71895368464a 100644 --- a/sdk/appservice/arm-appservice/src/operations/resourceHealthMetadataOperations.ts +++ b/sdk/appservice/arm-appservice/src/operations/resourceHealthMetadataOperations.ts @@ -348,7 +348,7 @@ const listOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -372,7 +372,7 @@ const listByResourceGroupOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -397,7 +397,7 @@ const listBySiteOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -422,7 +422,7 @@ const getBySiteOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -448,7 +448,7 @@ const listBySiteSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -474,7 +474,7 @@ const getBySiteSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage diff --git a/sdk/appservice/arm-appservice/src/operations/topLevelDomains.ts b/sdk/appservice/arm-appservice/src/operations/topLevelDomains.ts index e2c0500203f8..06d4a3432f88 100644 --- a/sdk/appservice/arm-appservice/src/operations/topLevelDomains.ts +++ b/sdk/appservice/arm-appservice/src/operations/topLevelDomains.ts @@ -181,7 +181,7 @@ const listOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -205,7 +205,7 @@ const getOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -229,7 +229,7 @@ const listAgreementsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage diff --git a/sdk/appservice/arm-appservice/src/operations/webApps.ts b/sdk/appservice/arm-appservice/src/operations/webApps.ts index 5d6acb44a9c2..d10a68dfca7f 100644 --- a/sdk/appservice/arm-appservice/src/operations/webApps.ts +++ b/sdk/appservice/arm-appservice/src/operations/webApps.ts @@ -1196,158 +1196,6 @@ export class WebApps { callback) as Promise; } - /** - * Gets a Swift Virtual Network connection. - * @summary Gets a Swift Virtual Network connection. - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param [options] The optional parameters - * @returns Promise - */ - getSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, options?: msRest.RequestOptionsBase): Promise; - /** - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param callback The callback - */ - getSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, callback: msRest.ServiceCallback): void; - /** - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param options The optional parameters - * @param callback The callback - */ - getSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; - getSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { - return this.client.sendOperationRequest( - { - resourceGroupName, - name, - options - }, - getSwiftVirtualNetworkConnectionOperationSpec, - callback) as Promise; - } - - /** - * Integrates this Web App with a Virtual Network. This requires that 1) "swiftSupported" is true - * when doing a GET against this resource, and 2) that the target Subnet has already been - * delegated, and is not - * in use by another App Service Plan other than the one this App is in. - * @summary Integrates this Web App with a Virtual Network. This requires that 1) "swiftSupported" - * is true when doing a GET against this resource, and 2) that the target Subnet has already been - * delegated, and is not - * in use by another App Service Plan other than the one this App is in. - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param connectionEnvelope Properties of the Virtual Network connection. See example. - * @param [options] The optional parameters - * @returns Promise - */ - createOrUpdateSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, options?: msRest.RequestOptionsBase): Promise; - /** - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param connectionEnvelope Properties of the Virtual Network connection. See example. - * @param callback The callback - */ - createOrUpdateSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, callback: msRest.ServiceCallback): void; - /** - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param connectionEnvelope Properties of the Virtual Network connection. See example. - * @param options The optional parameters - * @param callback The callback - */ - createOrUpdateSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; - createOrUpdateSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { - return this.client.sendOperationRequest( - { - resourceGroupName, - name, - connectionEnvelope, - options - }, - createOrUpdateSwiftVirtualNetworkConnectionOperationSpec, - callback) as Promise; - } - - /** - * Deletes a Swift Virtual Network connection from an app (or deployment slot). - * @summary Deletes a Swift Virtual Network connection from an app (or deployment slot). - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param [options] The optional parameters - * @returns Promise - */ - deleteSwiftVirtualNetwork(resourceGroupName: string, name: string, options?: msRest.RequestOptionsBase): Promise; - /** - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param callback The callback - */ - deleteSwiftVirtualNetwork(resourceGroupName: string, name: string, callback: msRest.ServiceCallback): void; - /** - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param options The optional parameters - * @param callback The callback - */ - deleteSwiftVirtualNetwork(resourceGroupName: string, name: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; - deleteSwiftVirtualNetwork(resourceGroupName: string, name: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { - return this.client.sendOperationRequest( - { - resourceGroupName, - name, - options - }, - deleteSwiftVirtualNetworkOperationSpec, - callback); - } - - /** - * Integrates this Web App with a Virtual Network. This requires that 1) "swiftSupported" is true - * when doing a GET against this resource, and 2) that the target Subnet has already been - * delegated, and is not - * in use by another App Service Plan other than the one this App is in. - * @summary Integrates this Web App with a Virtual Network. This requires that 1) "swiftSupported" - * is true when doing a GET against this resource, and 2) that the target Subnet has already been - * delegated, and is not - * in use by another App Service Plan other than the one this App is in. - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param connectionEnvelope Properties of the Virtual Network connection. See example. - * @param [options] The optional parameters - * @returns Promise - */ - updateSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, options?: msRest.RequestOptionsBase): Promise; - /** - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param connectionEnvelope Properties of the Virtual Network connection. See example. - * @param callback The callback - */ - updateSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, callback: msRest.ServiceCallback): void; - /** - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param connectionEnvelope Properties of the Virtual Network connection. See example. - * @param options The optional parameters - * @param callback The callback - */ - updateSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; - updateSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { - return this.client.sendOperationRequest( - { - resourceGroupName, - name, - connectionEnvelope, - options - }, - updateSwiftVirtualNetworkConnectionOperationSpec, - callback) as Promise; - } - /** * Gets the configuration of an app, such as platform version and bitness, default documents, * virtual applications, Always On, etc. @@ -3778,6 +3626,158 @@ export class WebApps { callback) as Promise; } + /** + * Gets a Swift Virtual Network connection. + * @summary Gets a Swift Virtual Network connection. + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param [options] The optional parameters + * @returns Promise + */ + getSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param callback The callback + */ + getSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param options The optional parameters + * @param callback The callback + */ + getSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + getSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + name, + options + }, + getSwiftVirtualNetworkConnectionOperationSpec, + callback) as Promise; + } + + /** + * Integrates this Web App with a Virtual Network. This requires that 1) "swiftSupported" is true + * when doing a GET against this resource, and 2) that the target Subnet has already been + * delegated, and is not + * in use by another App Service Plan other than the one this App is in. + * @summary Integrates this Web App with a Virtual Network. This requires that 1) "swiftSupported" + * is true when doing a GET against this resource, and 2) that the target Subnet has already been + * delegated, and is not + * in use by another App Service Plan other than the one this App is in. + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param connectionEnvelope Properties of the Virtual Network connection. See example. + * @param [options] The optional parameters + * @returns Promise + */ + createOrUpdateSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param connectionEnvelope Properties of the Virtual Network connection. See example. + * @param callback The callback + */ + createOrUpdateSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param connectionEnvelope Properties of the Virtual Network connection. See example. + * @param options The optional parameters + * @param callback The callback + */ + createOrUpdateSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + createOrUpdateSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + name, + connectionEnvelope, + options + }, + createOrUpdateSwiftVirtualNetworkConnectionOperationSpec, + callback) as Promise; + } + + /** + * Deletes a Swift Virtual Network connection from an app (or deployment slot). + * @summary Deletes a Swift Virtual Network connection from an app (or deployment slot). + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param [options] The optional parameters + * @returns Promise + */ + deleteSwiftVirtualNetwork(resourceGroupName: string, name: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param callback The callback + */ + deleteSwiftVirtualNetwork(resourceGroupName: string, name: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param options The optional parameters + * @param callback The callback + */ + deleteSwiftVirtualNetwork(resourceGroupName: string, name: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + deleteSwiftVirtualNetwork(resourceGroupName: string, name: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + name, + options + }, + deleteSwiftVirtualNetworkOperationSpec, + callback); + } + + /** + * Integrates this Web App with a Virtual Network. This requires that 1) "swiftSupported" is true + * when doing a GET against this resource, and 2) that the target Subnet has already been + * delegated, and is not + * in use by another App Service Plan other than the one this App is in. + * @summary Integrates this Web App with a Virtual Network. This requires that 1) "swiftSupported" + * is true when doing a GET against this resource, and 2) that the target Subnet has already been + * delegated, and is not + * in use by another App Service Plan other than the one this App is in. + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param connectionEnvelope Properties of the Virtual Network connection. See example. + * @param [options] The optional parameters + * @returns Promise + */ + updateSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param connectionEnvelope Properties of the Virtual Network connection. See example. + * @param callback The callback + */ + updateSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param connectionEnvelope Properties of the Virtual Network connection. See example. + * @param options The optional parameters + * @param callback The callback + */ + updateSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + updateSwiftVirtualNetworkConnection(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + name, + connectionEnvelope, + options + }, + updateSwiftVirtualNetworkConnectionOperationSpec, + callback) as Promise; + } + /** * Gets all network features used by the app (or deployment slot, if specified). * @summary Gets all network features used by the app (or deployment slot, if specified). @@ -6310,274 +6310,94 @@ export class WebApps { /** * Gets the Git/FTP publishing credentials of an app. * @summary Gets the Git/FTP publishing credentials of an app. - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param slot Name of the deployment slot. If a slot is not specified, the API will get the - * publishing credentials for the production slot. - * @param [options] The optional parameters - * @returns Promise - */ - listPublishingCredentialsSlot(resourceGroupName: string, name: string, slot: string, options?: msRest.RequestOptionsBase): Promise { - return this.beginListPublishingCredentialsSlot(resourceGroupName,name,slot,options) - .then(lroPoller => lroPoller.pollUntilFinished()) as Promise; - } - - /** - * Updates the Push settings associated with web app. - * @summary Updates the Push settings associated with web app. - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of web app. - * @param pushSettings Push settings associated with web app. - * @param slot Name of web app slot. If not specified then will default to production slot. - * @param [options] The optional parameters - * @returns Promise - */ - updateSitePushSettingsSlot(resourceGroupName: string, name: string, pushSettings: Models.PushSettings, slot: string, options?: msRest.RequestOptionsBase): Promise; - /** - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of web app. - * @param pushSettings Push settings associated with web app. - * @param slot Name of web app slot. If not specified then will default to production slot. - * @param callback The callback - */ - updateSitePushSettingsSlot(resourceGroupName: string, name: string, pushSettings: Models.PushSettings, slot: string, callback: msRest.ServiceCallback): void; - /** - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of web app. - * @param pushSettings Push settings associated with web app. - * @param slot Name of web app slot. If not specified then will default to production slot. - * @param options The optional parameters - * @param callback The callback - */ - updateSitePushSettingsSlot(resourceGroupName: string, name: string, pushSettings: Models.PushSettings, slot: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; - updateSitePushSettingsSlot(resourceGroupName: string, name: string, pushSettings: Models.PushSettings, slot: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { - return this.client.sendOperationRequest( - { - resourceGroupName, - name, - pushSettings, - slot, - options - }, - updateSitePushSettingsSlotOperationSpec, - callback) as Promise; - } - - /** - * Gets the Push settings associated with web app. - * @summary Gets the Push settings associated with web app. - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of web app. - * @param slot Name of web app slot. If not specified then will default to production slot. - * @param [options] The optional parameters - * @returns Promise - */ - listSitePushSettingsSlot(resourceGroupName: string, name: string, slot: string, options?: msRest.RequestOptionsBase): Promise; - /** - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of web app. - * @param slot Name of web app slot. If not specified then will default to production slot. - * @param callback The callback - */ - listSitePushSettingsSlot(resourceGroupName: string, name: string, slot: string, callback: msRest.ServiceCallback): void; - /** - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of web app. - * @param slot Name of web app slot. If not specified then will default to production slot. - * @param options The optional parameters - * @param callback The callback - */ - listSitePushSettingsSlot(resourceGroupName: string, name: string, slot: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; - listSitePushSettingsSlot(resourceGroupName: string, name: string, slot: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { - return this.client.sendOperationRequest( - { - resourceGroupName, - name, - slot, - options - }, - listSitePushSettingsSlotOperationSpec, - callback) as Promise; - } - - /** - * Gets a Swift Virtual Network connection. - * @summary Gets a Swift Virtual Network connection. - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param slot Name of the deployment slot. If a slot is not specified, the API will get a gateway - * for the production slot's Virtual Network. - * @param [options] The optional parameters - * @returns Promise - */ - getSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, slot: string, options?: msRest.RequestOptionsBase): Promise; - /** - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param slot Name of the deployment slot. If a slot is not specified, the API will get a gateway - * for the production slot's Virtual Network. - * @param callback The callback - */ - getSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, slot: string, callback: msRest.ServiceCallback): void; - /** - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param slot Name of the deployment slot. If a slot is not specified, the API will get a gateway - * for the production slot's Virtual Network. - * @param options The optional parameters - * @param callback The callback - */ - getSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, slot: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; - getSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, slot: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { - return this.client.sendOperationRequest( - { - resourceGroupName, - name, - slot, - options - }, - getSwiftVirtualNetworkConnectionSlotOperationSpec, - callback) as Promise; - } - - /** - * Integrates this Web App with a Virtual Network. This requires that 1) "swiftSupported" is true - * when doing a GET against this resource, and 2) that the target Subnet has already been - * delegated, and is not - * in use by another App Service Plan other than the one this App is in. - * @summary Integrates this Web App with a Virtual Network. This requires that 1) "swiftSupported" - * is true when doing a GET against this resource, and 2) that the target Subnet has already been - * delegated, and is not - * in use by another App Service Plan other than the one this App is in. - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param connectionEnvelope Properties of the Virtual Network connection. See example. - * @param slot Name of the deployment slot. If a slot is not specified, the API will add or update - * connections for the production slot. - * @param [options] The optional parameters - * @returns Promise - */ - createOrUpdateSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, slot: string, options?: msRest.RequestOptionsBase): Promise; - /** - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param connectionEnvelope Properties of the Virtual Network connection. See example. - * @param slot Name of the deployment slot. If a slot is not specified, the API will add or update - * connections for the production slot. - * @param callback The callback - */ - createOrUpdateSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, slot: string, callback: msRest.ServiceCallback): void; - /** - * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param connectionEnvelope Properties of the Virtual Network connection. See example. - * @param slot Name of the deployment slot. If a slot is not specified, the API will add or update - * connections for the production slot. - * @param options The optional parameters - * @param callback The callback - */ - createOrUpdateSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, slot: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; - createOrUpdateSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, slot: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { - return this.client.sendOperationRequest( - { - resourceGroupName, - name, - connectionEnvelope, - slot, - options - }, - createOrUpdateSwiftVirtualNetworkConnectionSlotOperationSpec, - callback) as Promise; + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param slot Name of the deployment slot. If a slot is not specified, the API will get the + * publishing credentials for the production slot. + * @param [options] The optional parameters + * @returns Promise + */ + listPublishingCredentialsSlot(resourceGroupName: string, name: string, slot: string, options?: msRest.RequestOptionsBase): Promise { + return this.beginListPublishingCredentialsSlot(resourceGroupName,name,slot,options) + .then(lroPoller => lroPoller.pollUntilFinished()) as Promise; } /** - * Deletes a Swift Virtual Network connection from an app (or deployment slot). - * @summary Deletes a Swift Virtual Network connection from an app (or deployment slot). + * Updates the Push settings associated with web app. + * @summary Updates the Push settings associated with web app. * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the - * connection for the production slot. + * @param name Name of web app. + * @param pushSettings Push settings associated with web app. + * @param slot Name of web app slot. If not specified then will default to production slot. * @param [options] The optional parameters - * @returns Promise + * @returns Promise */ - deleteSwiftVirtualNetworkSlot(resourceGroupName: string, name: string, slot: string, options?: msRest.RequestOptionsBase): Promise; + updateSitePushSettingsSlot(resourceGroupName: string, name: string, pushSettings: Models.PushSettings, slot: string, options?: msRest.RequestOptionsBase): Promise; /** * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the - * connection for the production slot. + * @param name Name of web app. + * @param pushSettings Push settings associated with web app. + * @param slot Name of web app slot. If not specified then will default to production slot. * @param callback The callback */ - deleteSwiftVirtualNetworkSlot(resourceGroupName: string, name: string, slot: string, callback: msRest.ServiceCallback): void; + updateSitePushSettingsSlot(resourceGroupName: string, name: string, pushSettings: Models.PushSettings, slot: string, callback: msRest.ServiceCallback): void; /** * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the - * connection for the production slot. + * @param name Name of web app. + * @param pushSettings Push settings associated with web app. + * @param slot Name of web app slot. If not specified then will default to production slot. * @param options The optional parameters * @param callback The callback */ - deleteSwiftVirtualNetworkSlot(resourceGroupName: string, name: string, slot: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; - deleteSwiftVirtualNetworkSlot(resourceGroupName: string, name: string, slot: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + updateSitePushSettingsSlot(resourceGroupName: string, name: string, pushSettings: Models.PushSettings, slot: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + updateSitePushSettingsSlot(resourceGroupName: string, name: string, pushSettings: Models.PushSettings, slot: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { return this.client.sendOperationRequest( { resourceGroupName, name, + pushSettings, slot, options }, - deleteSwiftVirtualNetworkSlotOperationSpec, - callback); + updateSitePushSettingsSlotOperationSpec, + callback) as Promise; } /** - * Integrates this Web App with a Virtual Network. This requires that 1) "swiftSupported" is true - * when doing a GET against this resource, and 2) that the target Subnet has already been - * delegated, and is not - * in use by another App Service Plan other than the one this App is in. - * @summary Integrates this Web App with a Virtual Network. This requires that 1) "swiftSupported" - * is true when doing a GET against this resource, and 2) that the target Subnet has already been - * delegated, and is not - * in use by another App Service Plan other than the one this App is in. + * Gets the Push settings associated with web app. + * @summary Gets the Push settings associated with web app. * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param connectionEnvelope Properties of the Virtual Network connection. See example. - * @param slot Name of the deployment slot. If a slot is not specified, the API will add or update - * connections for the production slot. + * @param name Name of web app. + * @param slot Name of web app slot. If not specified then will default to production slot. * @param [options] The optional parameters - * @returns Promise + * @returns Promise */ - updateSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, slot: string, options?: msRest.RequestOptionsBase): Promise; + listSitePushSettingsSlot(resourceGroupName: string, name: string, slot: string, options?: msRest.RequestOptionsBase): Promise; /** * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param connectionEnvelope Properties of the Virtual Network connection. See example. - * @param slot Name of the deployment slot. If a slot is not specified, the API will add or update - * connections for the production slot. + * @param name Name of web app. + * @param slot Name of web app slot. If not specified then will default to production slot. * @param callback The callback */ - updateSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, slot: string, callback: msRest.ServiceCallback): void; + listSitePushSettingsSlot(resourceGroupName: string, name: string, slot: string, callback: msRest.ServiceCallback): void; /** * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of the app. - * @param connectionEnvelope Properties of the Virtual Network connection. See example. - * @param slot Name of the deployment slot. If a slot is not specified, the API will add or update - * connections for the production slot. + * @param name Name of web app. + * @param slot Name of web app slot. If not specified then will default to production slot. * @param options The optional parameters * @param callback The callback */ - updateSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, slot: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; - updateSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, slot: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + listSitePushSettingsSlot(resourceGroupName: string, name: string, slot: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + listSitePushSettingsSlot(resourceGroupName: string, name: string, slot: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { return this.client.sendOperationRequest( { resourceGroupName, name, - connectionEnvelope, slot, options }, - updateSwiftVirtualNetworkConnectionSlotOperationSpec, - callback) as Promise; + listSitePushSettingsSlotOperationSpec, + callback) as Promise; } /** @@ -9325,8 +9145,177 @@ export class WebApps { * @param options The optional parameters * @param callback The callback */ - listMetricsSlot(resourceGroupName: string, name: string, slot: string, options: Models.WebAppsListMetricsSlotOptionalParams, callback: msRest.ServiceCallback): void; - listMetricsSlot(resourceGroupName: string, name: string, slot: string, options?: Models.WebAppsListMetricsSlotOptionalParams | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + listMetricsSlot(resourceGroupName: string, name: string, slot: string, options: Models.WebAppsListMetricsSlotOptionalParams, callback: msRest.ServiceCallback): void; + listMetricsSlot(resourceGroupName: string, name: string, slot: string, options?: Models.WebAppsListMetricsSlotOptionalParams | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + name, + slot, + options + }, + listMetricsSlotOperationSpec, + callback) as Promise; + } + + /** + * Returns the status of MySql in app migration, if one is active, and whether or not MySql in app + * is enabled + * @summary Returns the status of MySql in app migration, if one is active, and whether or not + * MySql in app is enabled + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of web app. + * @param slot Name of the deployment slot. + * @param [options] The optional parameters + * @returns Promise + */ + getMigrateMySqlStatusSlot(resourceGroupName: string, name: string, slot: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of web app. + * @param slot Name of the deployment slot. + * @param callback The callback + */ + getMigrateMySqlStatusSlot(resourceGroupName: string, name: string, slot: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of web app. + * @param slot Name of the deployment slot. + * @param options The optional parameters + * @param callback The callback + */ + getMigrateMySqlStatusSlot(resourceGroupName: string, name: string, slot: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + getMigrateMySqlStatusSlot(resourceGroupName: string, name: string, slot: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + name, + slot, + options + }, + getMigrateMySqlStatusSlotOperationSpec, + callback) as Promise; + } + + /** + * Gets a Swift Virtual Network connection. + * @summary Gets a Swift Virtual Network connection. + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param slot Name of the deployment slot. If a slot is not specified, the API will get a gateway + * for the production slot's Virtual Network. + * @param [options] The optional parameters + * @returns Promise + */ + getSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, slot: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param slot Name of the deployment slot. If a slot is not specified, the API will get a gateway + * for the production slot's Virtual Network. + * @param callback The callback + */ + getSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, slot: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param slot Name of the deployment slot. If a slot is not specified, the API will get a gateway + * for the production slot's Virtual Network. + * @param options The optional parameters + * @param callback The callback + */ + getSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, slot: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + getSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, slot: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + name, + slot, + options + }, + getSwiftVirtualNetworkConnectionSlotOperationSpec, + callback) as Promise; + } + + /** + * Integrates this Web App with a Virtual Network. This requires that 1) "swiftSupported" is true + * when doing a GET against this resource, and 2) that the target Subnet has already been + * delegated, and is not + * in use by another App Service Plan other than the one this App is in. + * @summary Integrates this Web App with a Virtual Network. This requires that 1) "swiftSupported" + * is true when doing a GET against this resource, and 2) that the target Subnet has already been + * delegated, and is not + * in use by another App Service Plan other than the one this App is in. + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param connectionEnvelope Properties of the Virtual Network connection. See example. + * @param slot Name of the deployment slot. If a slot is not specified, the API will add or update + * connections for the production slot. + * @param [options] The optional parameters + * @returns Promise + */ + createOrUpdateSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, slot: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param connectionEnvelope Properties of the Virtual Network connection. See example. + * @param slot Name of the deployment slot. If a slot is not specified, the API will add or update + * connections for the production slot. + * @param callback The callback + */ + createOrUpdateSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, slot: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param connectionEnvelope Properties of the Virtual Network connection. See example. + * @param slot Name of the deployment slot. If a slot is not specified, the API will add or update + * connections for the production slot. + * @param options The optional parameters + * @param callback The callback + */ + createOrUpdateSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, slot: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + createOrUpdateSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, slot: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + name, + connectionEnvelope, + slot, + options + }, + createOrUpdateSwiftVirtualNetworkConnectionSlotOperationSpec, + callback) as Promise; + } + + /** + * Deletes a Swift Virtual Network connection from an app (or deployment slot). + * @summary Deletes a Swift Virtual Network connection from an app (or deployment slot). + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the + * connection for the production slot. + * @param [options] The optional parameters + * @returns Promise + */ + deleteSwiftVirtualNetworkSlot(resourceGroupName: string, name: string, slot: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the + * connection for the production slot. + * @param callback The callback + */ + deleteSwiftVirtualNetworkSlot(resourceGroupName: string, name: string, slot: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param name Name of the app. + * @param slot Name of the deployment slot. If a slot is not specified, the API will delete the + * connection for the production slot. + * @param options The optional parameters + * @param callback The callback + */ + deleteSwiftVirtualNetworkSlot(resourceGroupName: string, name: string, slot: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + deleteSwiftVirtualNetworkSlot(resourceGroupName: string, name: string, slot: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { return this.client.sendOperationRequest( { resourceGroupName, @@ -9334,47 +9323,58 @@ export class WebApps { slot, options }, - listMetricsSlotOperationSpec, - callback) as Promise; + deleteSwiftVirtualNetworkSlotOperationSpec, + callback); } /** - * Returns the status of MySql in app migration, if one is active, and whether or not MySql in app - * is enabled - * @summary Returns the status of MySql in app migration, if one is active, and whether or not - * MySql in app is enabled + * Integrates this Web App with a Virtual Network. This requires that 1) "swiftSupported" is true + * when doing a GET against this resource, and 2) that the target Subnet has already been + * delegated, and is not + * in use by another App Service Plan other than the one this App is in. + * @summary Integrates this Web App with a Virtual Network. This requires that 1) "swiftSupported" + * is true when doing a GET against this resource, and 2) that the target Subnet has already been + * delegated, and is not + * in use by another App Service Plan other than the one this App is in. * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of web app. - * @param slot Name of the deployment slot. + * @param name Name of the app. + * @param connectionEnvelope Properties of the Virtual Network connection. See example. + * @param slot Name of the deployment slot. If a slot is not specified, the API will add or update + * connections for the production slot. * @param [options] The optional parameters - * @returns Promise + * @returns Promise */ - getMigrateMySqlStatusSlot(resourceGroupName: string, name: string, slot: string, options?: msRest.RequestOptionsBase): Promise; + updateSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, slot: string, options?: msRest.RequestOptionsBase): Promise; /** * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of web app. - * @param slot Name of the deployment slot. + * @param name Name of the app. + * @param connectionEnvelope Properties of the Virtual Network connection. See example. + * @param slot Name of the deployment slot. If a slot is not specified, the API will add or update + * connections for the production slot. * @param callback The callback */ - getMigrateMySqlStatusSlot(resourceGroupName: string, name: string, slot: string, callback: msRest.ServiceCallback): void; + updateSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, slot: string, callback: msRest.ServiceCallback): void; /** * @param resourceGroupName Name of the resource group to which the resource belongs. - * @param name Name of web app. - * @param slot Name of the deployment slot. + * @param name Name of the app. + * @param connectionEnvelope Properties of the Virtual Network connection. See example. + * @param slot Name of the deployment slot. If a slot is not specified, the API will add or update + * connections for the production slot. * @param options The optional parameters * @param callback The callback */ - getMigrateMySqlStatusSlot(resourceGroupName: string, name: string, slot: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; - getMigrateMySqlStatusSlot(resourceGroupName: string, name: string, slot: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + updateSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, slot: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + updateSwiftVirtualNetworkConnectionSlot(resourceGroupName: string, name: string, connectionEnvelope: Models.SwiftVirtualNetwork, slot: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { return this.client.sendOperationRequest( { resourceGroupName, name, + connectionEnvelope, slot, options }, - getMigrateMySqlStatusSlotOperationSpec, - callback) as Promise; + updateSwiftVirtualNetworkConnectionSlotOperationSpec, + callback) as Promise; } /** @@ -15646,7 +15646,7 @@ const listOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -15671,7 +15671,7 @@ const listByResourceGroupOperationSpec: msRest.OperationSpec = { ], queryParameters: [ Parameters.includeSlots, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -15696,7 +15696,7 @@ const getOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -15724,7 +15724,7 @@ const deleteMethodOperationSpec: msRest.OperationSpec = { queryParameters: [ Parameters.deleteMetrics, Parameters.deleteEmptyServerFarm, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -15749,7 +15749,7 @@ const updateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -15785,7 +15785,7 @@ const analyzeCustomHostnameOperationSpec: msRest.OperationSpec = { ], queryParameters: [ Parameters.hostName0, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -15810,7 +15810,7 @@ const applySlotConfigToProductionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -15840,7 +15840,7 @@ const backupOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -15872,7 +15872,7 @@ const listBackupsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -15898,7 +15898,7 @@ const getBackupStatusOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -15924,7 +15924,7 @@ const deleteBackupOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -15949,7 +15949,7 @@ const listBackupStatusSecretsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -15981,7 +15981,7 @@ const listConfigurationsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16006,7 +16006,7 @@ const updateApplicationSettingsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16038,7 +16038,7 @@ const listApplicationSettingsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16063,7 +16063,7 @@ const updateAuthSettingsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16095,7 +16095,7 @@ const getAuthSettingsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16120,7 +16120,7 @@ const updateAzureStorageAccountsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16152,7 +16152,7 @@ const listAzureStorageAccountsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16177,7 +16177,7 @@ const updateBackupConfigurationOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16209,7 +16209,7 @@ const deleteBackupConfigurationOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16232,7 +16232,7 @@ const getBackupConfigurationOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16257,7 +16257,7 @@ const updateConnectionStringsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16289,7 +16289,7 @@ const listConnectionStringsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16314,7 +16314,7 @@ const getDiagnosticLogsConfigurationOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16339,7 +16339,7 @@ const updateDiagnosticLogsConfigOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16371,7 +16371,7 @@ const updateMetadataOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16403,7 +16403,7 @@ const listMetadataOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16428,7 +16428,7 @@ const updateSitePushSettingsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16460,7 +16460,7 @@ const listSitePushSettingsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16485,7 +16485,7 @@ const listSlotConfigurationNamesOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16510,7 +16510,7 @@ const updateSlotConfigurationNamesOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16533,119 +16533,6 @@ const updateSlotConfigurationNamesOperationSpec: msRest.OperationSpec = { serializer }; -const getSwiftVirtualNetworkConnectionOperationSpec: msRest.OperationSpec = { - httpMethod: "GET", - path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/virtualNetwork", - urlParameters: [ - Parameters.resourceGroupName, - Parameters.name, - Parameters.subscriptionId - ], - queryParameters: [ - Parameters.apiVersion - ], - headerParameters: [ - Parameters.acceptLanguage - ], - responses: { - 200: { - bodyMapper: Mappers.SwiftVirtualNetwork - }, - default: { - bodyMapper: Mappers.DefaultErrorResponse - } - }, - serializer -}; - -const createOrUpdateSwiftVirtualNetworkConnectionOperationSpec: msRest.OperationSpec = { - httpMethod: "PUT", - path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/virtualNetwork", - urlParameters: [ - Parameters.resourceGroupName, - Parameters.name, - Parameters.subscriptionId - ], - queryParameters: [ - Parameters.apiVersion - ], - headerParameters: [ - Parameters.acceptLanguage - ], - requestBody: { - parameterPath: "connectionEnvelope", - mapper: { - ...Mappers.SwiftVirtualNetwork, - required: true - } - }, - responses: { - 200: { - bodyMapper: Mappers.SwiftVirtualNetwork - }, - default: { - bodyMapper: Mappers.DefaultErrorResponse - } - }, - serializer -}; - -const deleteSwiftVirtualNetworkOperationSpec: msRest.OperationSpec = { - httpMethod: "DELETE", - path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/virtualNetwork", - urlParameters: [ - Parameters.resourceGroupName, - Parameters.name, - Parameters.subscriptionId - ], - queryParameters: [ - Parameters.apiVersion - ], - headerParameters: [ - Parameters.acceptLanguage - ], - responses: { - 200: {}, - 404: {}, - default: { - bodyMapper: Mappers.CloudError - } - }, - serializer -}; - -const updateSwiftVirtualNetworkConnectionOperationSpec: msRest.OperationSpec = { - httpMethod: "PATCH", - path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/virtualNetwork", - urlParameters: [ - Parameters.resourceGroupName, - Parameters.name, - Parameters.subscriptionId - ], - queryParameters: [ - Parameters.apiVersion - ], - headerParameters: [ - Parameters.acceptLanguage - ], - requestBody: { - parameterPath: "connectionEnvelope", - mapper: { - ...Mappers.SwiftVirtualNetwork, - required: true - } - }, - responses: { - 200: { - bodyMapper: Mappers.SwiftVirtualNetwork - }, - default: { - bodyMapper: Mappers.DefaultErrorResponse - } - }, - serializer -}; - const getConfigurationOperationSpec: msRest.OperationSpec = { httpMethod: "GET", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/web", @@ -16655,7 +16542,7 @@ const getConfigurationOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16680,7 +16567,7 @@ const createOrUpdateConfigurationOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16712,7 +16599,7 @@ const updateConfigurationOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16744,7 +16631,7 @@ const listConfigurationSnapshotInfoOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16770,7 +16657,7 @@ const getConfigurationSnapshotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16796,7 +16683,7 @@ const recoverSiteConfigurationSnapshotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16819,7 +16706,7 @@ const getWebSiteContainerLogsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16850,7 +16737,7 @@ const getContainerLogsZipOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16881,7 +16768,7 @@ const listContinuousWebJobsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16907,7 +16794,7 @@ const getContinuousWebJobOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16934,7 +16821,7 @@ const deleteContinuousWebJobOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16959,7 +16846,7 @@ const startContinuousWebJobOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -16984,7 +16871,7 @@ const stopContinuousWebJobOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17008,7 +16895,7 @@ const listDeploymentsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17034,7 +16921,7 @@ const getDeploymentOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17060,7 +16947,7 @@ const createDeploymentOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17093,7 +16980,7 @@ const deleteDeploymentOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17118,7 +17005,7 @@ const listDeploymentLogOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17143,7 +17030,7 @@ const discoverBackupOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17175,7 +17062,7 @@ const listDomainOwnershipIdentifiersOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17201,7 +17088,7 @@ const getDomainOwnershipIdentifierOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17227,7 +17114,7 @@ const createOrUpdateDomainOwnershipIdentifierOperationSpec: msRest.OperationSpec Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17260,7 +17147,7 @@ const deleteDomainOwnershipIdentifierOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17285,7 +17172,7 @@ const updateDomainOwnershipIdentifierOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17317,7 +17204,7 @@ const getMSDeployStatusOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17342,7 +17229,7 @@ const getMSDeployLogOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17368,7 +17255,7 @@ const listFunctionsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17394,7 +17281,7 @@ const getFunctionsAdminTokenOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17425,7 +17312,7 @@ const getFunctionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17452,7 +17339,7 @@ const deleteFunctionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17477,7 +17364,7 @@ const listFunctionSecretsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17502,7 +17389,7 @@ const listHostNameBindingsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17528,7 +17415,7 @@ const getHostNameBindingOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17554,7 +17441,7 @@ const createOrUpdateHostNameBindingOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17587,7 +17474,7 @@ const deleteHostNameBindingOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17613,7 +17500,7 @@ const getHybridConnectionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17640,7 +17527,7 @@ const createOrUpdateHybridConnectionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17674,7 +17561,7 @@ const deleteHybridConnectionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17700,7 +17587,7 @@ const updateHybridConnectionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17734,7 +17621,7 @@ const listHybridConnectionKeysOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17759,7 +17646,7 @@ const listHybridConnectionsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17784,7 +17671,7 @@ const listRelayServiceConnectionsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17810,7 +17697,7 @@ const getRelayServiceConnectionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17836,7 +17723,7 @@ const createOrUpdateRelayServiceConnectionOperationSpec: msRest.OperationSpec = Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17869,7 +17756,7 @@ const deleteRelayServiceConnectionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17894,7 +17781,7 @@ const updateRelayServiceConnectionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17926,7 +17813,7 @@ const listInstanceIdentifiersOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17952,7 +17839,7 @@ const getInstanceMsDeployStatusOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -17978,7 +17865,7 @@ const getInstanceMSDeployLogOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18005,7 +17892,7 @@ const listInstanceProcessesOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18033,7 +17920,7 @@ const getInstanceProcessOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18061,7 +17948,7 @@ const deleteInstanceProcessOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18087,7 +17974,7 @@ const getInstanceProcessDumpOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18120,7 +18007,7 @@ const listInstanceProcessModulesOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18149,7 +18036,7 @@ const getInstanceProcessModuleOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18177,7 +18064,7 @@ const listInstanceProcessThreadsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18206,7 +18093,7 @@ const getInstanceProcessThreadOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18232,7 +18119,7 @@ const isCloneableOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18257,7 +18144,7 @@ const listSyncFunctionTriggersOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18282,14 +18169,123 @@ const listMetricDefinitionsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.ResourceMetricDefinitionCollection + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; + +const listMetricsOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/metrics", + urlParameters: [ + Parameters.resourceGroupName, + Parameters.name, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.details, + Parameters.filter, + Parameters.apiVersion1 + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.ResourceMetricCollection + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; + +const getMigrateMySqlStatusOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/migratemysql/status", + urlParameters: [ + Parameters.resourceGroupName, + Parameters.name, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion1 + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.MigrateMySqlStatus + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; + +const getSwiftVirtualNetworkConnectionOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkConfig/virtualNetwork", + urlParameters: [ + Parameters.resourceGroupName, + Parameters.name, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion1 + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.SwiftVirtualNetwork + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; + +const createOrUpdateSwiftVirtualNetworkConnectionOperationSpec: msRest.OperationSpec = { + httpMethod: "PUT", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkConfig/virtualNetwork", + urlParameters: [ + Parameters.resourceGroupName, + Parameters.name, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage ], + requestBody: { + parameterPath: "connectionEnvelope", + mapper: { + ...Mappers.SwiftVirtualNetwork, + required: true + } + }, responses: { 200: { - bodyMapper: Mappers.ResourceMetricDefinitionCollection + bodyMapper: Mappers.SwiftVirtualNetwork }, default: { bodyMapper: Mappers.DefaultErrorResponse @@ -18298,50 +18294,54 @@ const listMetricDefinitionsOperationSpec: msRest.OperationSpec = { serializer }; -const listMetricsOperationSpec: msRest.OperationSpec = { - httpMethod: "GET", - path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/metrics", +const deleteSwiftVirtualNetworkOperationSpec: msRest.OperationSpec = { + httpMethod: "DELETE", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkConfig/virtualNetwork", urlParameters: [ Parameters.resourceGroupName, Parameters.name, Parameters.subscriptionId ], queryParameters: [ - Parameters.details, - Parameters.filter, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage ], responses: { - 200: { - bodyMapper: Mappers.ResourceMetricCollection - }, + 200: {}, + 404: {}, default: { - bodyMapper: Mappers.DefaultErrorResponse + bodyMapper: Mappers.CloudError } }, serializer }; -const getMigrateMySqlStatusOperationSpec: msRest.OperationSpec = { - httpMethod: "GET", - path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/migratemysql/status", +const updateSwiftVirtualNetworkConnectionOperationSpec: msRest.OperationSpec = { + httpMethod: "PATCH", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkConfig/virtualNetwork", urlParameters: [ Parameters.resourceGroupName, Parameters.name, Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage ], + requestBody: { + parameterPath: "connectionEnvelope", + mapper: { + ...Mappers.SwiftVirtualNetwork, + required: true + } + }, responses: { 200: { - bodyMapper: Mappers.MigrateMySqlStatus + bodyMapper: Mappers.SwiftVirtualNetwork }, default: { bodyMapper: Mappers.DefaultErrorResponse @@ -18360,7 +18360,7 @@ const listNetworkFeaturesOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18387,7 +18387,7 @@ const getNetworkTraceOperationOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18440,7 +18440,7 @@ const startWebSiteNetworkTraceOperationSpec: msRest.OperationSpec = { Parameters.durationInSeconds, Parameters.maxFrameLength, Parameters.sasUrl, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18470,7 +18470,7 @@ const stopWebSiteNetworkTraceOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18495,7 +18495,7 @@ const getNetworkTracesOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18532,7 +18532,7 @@ const getNetworkTraceOperationV2OperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18583,7 +18583,7 @@ const getNetworkTracesV2OperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18619,7 +18619,7 @@ const generateNewSitePublishingPasswordOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18644,7 +18644,7 @@ const listPerfMonCountersOperationSpec: msRest.OperationSpec = { ], queryParameters: [ Parameters.filter, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18669,7 +18669,7 @@ const getSitePhpErrorLogFlagOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18694,7 +18694,7 @@ const listPremierAddOnsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18720,7 +18720,7 @@ const getPremierAddOnOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18746,7 +18746,7 @@ const addPremierAddOnOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18779,7 +18779,7 @@ const deletePremierAddOnOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18803,7 +18803,7 @@ const updatePremierAddOnOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18835,7 +18835,7 @@ const getPrivateAccessOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18860,7 +18860,7 @@ const putPrivateAccessVnetOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18892,7 +18892,7 @@ const listProcessesOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18919,7 +18919,7 @@ const getProcessOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18946,7 +18946,7 @@ const deleteProcessOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -18971,7 +18971,7 @@ const getProcessDumpOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19003,7 +19003,7 @@ const listProcessModulesOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19031,7 +19031,7 @@ const getProcessModuleOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19058,7 +19058,7 @@ const listProcessThreadsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19086,7 +19086,7 @@ const getProcessThreadOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19112,7 +19112,7 @@ const listPublicCertificatesOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19138,7 +19138,7 @@ const getPublicCertificateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19164,7 +19164,7 @@ const createOrUpdatePublicCertificateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19197,7 +19197,7 @@ const deletePublicCertificateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19221,7 +19221,7 @@ const listPublishingProfileXmlWithSecretsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19258,7 +19258,7 @@ const resetProductionSlotConfigOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19283,7 +19283,7 @@ const restartOperationSpec: msRest.OperationSpec = { queryParameters: [ Parameters.softRestart, Parameters.synchronous, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19306,7 +19306,7 @@ const listSiteExtensionsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19333,7 +19333,7 @@ const getSiteExtensionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19360,7 +19360,7 @@ const deleteSiteExtensionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19384,7 +19384,7 @@ const listSlotsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19410,7 +19410,7 @@ const getSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19439,7 +19439,7 @@ const deleteSlotOperationSpec: msRest.OperationSpec = { queryParameters: [ Parameters.deleteMetrics, Parameters.deleteEmptyServerFarm, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19465,7 +19465,7 @@ const updateSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19502,7 +19502,7 @@ const analyzeCustomHostnameSlotOperationSpec: msRest.OperationSpec = { ], queryParameters: [ Parameters.hostName0, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19528,7 +19528,7 @@ const applySlotConfigurationSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19559,7 +19559,7 @@ const backupSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19592,7 +19592,7 @@ const listBackupsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19619,7 +19619,7 @@ const getBackupStatusSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19646,7 +19646,7 @@ const deleteBackupSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19672,7 +19672,7 @@ const listBackupStatusSecretsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19705,7 +19705,7 @@ const listConfigurationsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19731,7 +19731,7 @@ const updateApplicationSettingsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19764,7 +19764,7 @@ const listApplicationSettingsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19790,7 +19790,7 @@ const updateAuthSettingsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19823,7 +19823,7 @@ const getAuthSettingsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19849,7 +19849,7 @@ const updateAzureStorageAccountsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19882,7 +19882,7 @@ const listAzureStorageAccountsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19908,7 +19908,7 @@ const updateBackupConfigurationSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19941,7 +19941,7 @@ const deleteBackupConfigurationSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19965,7 +19965,7 @@ const getBackupConfigurationSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -19991,7 +19991,7 @@ const updateConnectionStringsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20024,7 +20024,7 @@ const listConnectionStringsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20050,7 +20050,7 @@ const getDiagnosticLogsConfigurationSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20076,7 +20076,7 @@ const updateDiagnosticLogsConfigSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20109,7 +20109,7 @@ const updateMetadataSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20142,7 +20142,7 @@ const listMetadataSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20168,7 +20168,7 @@ const updateSitePushSettingsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20201,7 +20201,7 @@ const listSitePushSettingsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20217,123 +20217,6 @@ const listSitePushSettingsSlotOperationSpec: msRest.OperationSpec = { serializer }; -const getSwiftVirtualNetworkConnectionSlotOperationSpec: msRest.OperationSpec = { - httpMethod: "GET", - path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/virtualNetwork", - urlParameters: [ - Parameters.resourceGroupName, - Parameters.name, - Parameters.slot, - Parameters.subscriptionId - ], - queryParameters: [ - Parameters.apiVersion - ], - headerParameters: [ - Parameters.acceptLanguage - ], - responses: { - 200: { - bodyMapper: Mappers.SwiftVirtualNetwork - }, - default: { - bodyMapper: Mappers.DefaultErrorResponse - } - }, - serializer -}; - -const createOrUpdateSwiftVirtualNetworkConnectionSlotOperationSpec: msRest.OperationSpec = { - httpMethod: "PUT", - path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/virtualNetwork", - urlParameters: [ - Parameters.resourceGroupName, - Parameters.name, - Parameters.slot, - Parameters.subscriptionId - ], - queryParameters: [ - Parameters.apiVersion - ], - headerParameters: [ - Parameters.acceptLanguage - ], - requestBody: { - parameterPath: "connectionEnvelope", - mapper: { - ...Mappers.SwiftVirtualNetwork, - required: true - } - }, - responses: { - 200: { - bodyMapper: Mappers.SwiftVirtualNetwork - }, - default: { - bodyMapper: Mappers.DefaultErrorResponse - } - }, - serializer -}; - -const deleteSwiftVirtualNetworkSlotOperationSpec: msRest.OperationSpec = { - httpMethod: "DELETE", - path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/virtualNetwork", - urlParameters: [ - Parameters.resourceGroupName, - Parameters.name, - Parameters.slot, - Parameters.subscriptionId - ], - queryParameters: [ - Parameters.apiVersion - ], - headerParameters: [ - Parameters.acceptLanguage - ], - responses: { - 200: {}, - 404: {}, - default: { - bodyMapper: Mappers.CloudError - } - }, - serializer -}; - -const updateSwiftVirtualNetworkConnectionSlotOperationSpec: msRest.OperationSpec = { - httpMethod: "PATCH", - path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/virtualNetwork", - urlParameters: [ - Parameters.resourceGroupName, - Parameters.name, - Parameters.slot, - Parameters.subscriptionId - ], - queryParameters: [ - Parameters.apiVersion - ], - headerParameters: [ - Parameters.acceptLanguage - ], - requestBody: { - parameterPath: "connectionEnvelope", - mapper: { - ...Mappers.SwiftVirtualNetwork, - required: true - } - }, - responses: { - 200: { - bodyMapper: Mappers.SwiftVirtualNetwork - }, - default: { - bodyMapper: Mappers.DefaultErrorResponse - } - }, - serializer -}; - const getConfigurationSlotOperationSpec: msRest.OperationSpec = { httpMethod: "GET", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/config/web", @@ -20344,7 +20227,7 @@ const getConfigurationSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20370,7 +20253,7 @@ const createOrUpdateConfigurationSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20403,7 +20286,7 @@ const updateConfigurationSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20436,7 +20319,7 @@ const listConfigurationSnapshotInfoSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20463,7 +20346,7 @@ const getConfigurationSnapshotSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20490,7 +20373,7 @@ const recoverSiteConfigurationSnapshotSlotOperationSpec: msRest.OperationSpec = Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20514,7 +20397,7 @@ const getWebSiteContainerLogsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20546,7 +20429,7 @@ const getContainerLogsZipSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20578,7 +20461,7 @@ const listContinuousWebJobsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20605,7 +20488,7 @@ const getContinuousWebJobSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20633,7 +20516,7 @@ const deleteContinuousWebJobSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20659,7 +20542,7 @@ const startContinuousWebJobSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20685,7 +20568,7 @@ const stopContinuousWebJobSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20710,7 +20593,7 @@ const listDeploymentsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20737,7 +20620,7 @@ const getDeploymentSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20764,7 +20647,7 @@ const createDeploymentSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20798,7 +20681,7 @@ const deleteDeploymentSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20824,7 +20707,7 @@ const listDeploymentLogSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20850,7 +20733,7 @@ const discoverBackupSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20883,7 +20766,7 @@ const listDomainOwnershipIdentifiersSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20910,7 +20793,7 @@ const getDomainOwnershipIdentifierSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20937,7 +20820,7 @@ const createOrUpdateDomainOwnershipIdentifierSlotOperationSpec: msRest.Operation Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20971,7 +20854,7 @@ const deleteDomainOwnershipIdentifierSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -20997,7 +20880,7 @@ const updateDomainOwnershipIdentifierSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21030,7 +20913,7 @@ const getMSDeployStatusSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21056,7 +20939,7 @@ const getMSDeployLogSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21083,7 +20966,7 @@ const listInstanceFunctionsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21110,7 +20993,7 @@ const getFunctionsAdminTokenSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21142,7 +21025,7 @@ const getInstanceFunctionSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21170,7 +21053,7 @@ const deleteInstanceFunctionSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21196,7 +21079,7 @@ const listFunctionSecretsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21222,7 +21105,7 @@ const listHostNameBindingsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21249,7 +21132,7 @@ const getHostNameBindingSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21276,7 +21159,7 @@ const createOrUpdateHostNameBindingSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21310,7 +21193,7 @@ const deleteHostNameBindingSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21337,7 +21220,7 @@ const getHybridConnectionSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21365,7 +21248,7 @@ const createOrUpdateHybridConnectionSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21400,7 +21283,7 @@ const deleteHybridConnectionSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21427,7 +21310,7 @@ const updateHybridConnectionSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21462,7 +21345,7 @@ const listHybridConnectionKeysSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21488,7 +21371,7 @@ const listHybridConnectionsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21514,7 +21397,7 @@ const listRelayServiceConnectionsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21541,7 +21424,7 @@ const getRelayServiceConnectionSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21568,7 +21451,7 @@ const createOrUpdateRelayServiceConnectionSlotOperationSpec: msRest.OperationSpe Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21602,7 +21485,7 @@ const deleteRelayServiceConnectionSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21628,7 +21511,7 @@ const updateRelayServiceConnectionSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21661,7 +21544,7 @@ const listInstanceIdentifiersSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21688,7 +21571,7 @@ const getInstanceMsDeployStatusSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21715,7 +21598,7 @@ const getInstanceMSDeployLogSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21743,7 +21626,7 @@ const listInstanceProcessesSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21772,7 +21655,7 @@ const getInstanceProcessSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21801,7 +21684,7 @@ const deleteInstanceProcessSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21828,7 +21711,7 @@ const getInstanceProcessDumpSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21862,7 +21745,7 @@ const listInstanceProcessModulesSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21892,7 +21775,7 @@ const getInstanceProcessModuleSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21921,7 +21804,7 @@ const listInstanceProcessThreadsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21951,7 +21834,7 @@ const getInstanceProcessThreadSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -21978,7 +21861,7 @@ const isCloneableSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22004,7 +21887,7 @@ const listSyncFunctionTriggersSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22030,7 +21913,7 @@ const listMetricDefinitionsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22058,7 +21941,7 @@ const listMetricsSlotOperationSpec: msRest.OperationSpec = { queryParameters: [ Parameters.details, Parameters.filter, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22084,7 +21967,7 @@ const getMigrateMySqlStatusSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22100,6 +21983,123 @@ const getMigrateMySqlStatusSlotOperationSpec: msRest.OperationSpec = { serializer }; +const getSwiftVirtualNetworkConnectionSlotOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkConfig/virtualNetwork", + urlParameters: [ + Parameters.resourceGroupName, + Parameters.name, + Parameters.slot, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion1 + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.SwiftVirtualNetwork + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; + +const createOrUpdateSwiftVirtualNetworkConnectionSlotOperationSpec: msRest.OperationSpec = { + httpMethod: "PUT", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkConfig/virtualNetwork", + urlParameters: [ + Parameters.resourceGroupName, + Parameters.name, + Parameters.slot, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion1 + ], + headerParameters: [ + Parameters.acceptLanguage + ], + requestBody: { + parameterPath: "connectionEnvelope", + mapper: { + ...Mappers.SwiftVirtualNetwork, + required: true + } + }, + responses: { + 200: { + bodyMapper: Mappers.SwiftVirtualNetwork + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; + +const deleteSwiftVirtualNetworkSlotOperationSpec: msRest.OperationSpec = { + httpMethod: "DELETE", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkConfig/virtualNetwork", + urlParameters: [ + Parameters.resourceGroupName, + Parameters.name, + Parameters.slot, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion1 + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: {}, + 404: {}, + default: { + bodyMapper: Mappers.CloudError + } + }, + serializer +}; + +const updateSwiftVirtualNetworkConnectionSlotOperationSpec: msRest.OperationSpec = { + httpMethod: "PATCH", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkConfig/virtualNetwork", + urlParameters: [ + Parameters.resourceGroupName, + Parameters.name, + Parameters.slot, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion1 + ], + headerParameters: [ + Parameters.acceptLanguage + ], + requestBody: { + parameterPath: "connectionEnvelope", + mapper: { + ...Mappers.SwiftVirtualNetwork, + required: true + } + }, + responses: { + 200: { + bodyMapper: Mappers.SwiftVirtualNetwork + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; + const listNetworkFeaturesSlotOperationSpec: msRest.OperationSpec = { httpMethod: "GET", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/slots/{slot}/networkFeatures/{view}", @@ -22111,7 +22111,7 @@ const listNetworkFeaturesSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22139,7 +22139,7 @@ const getNetworkTraceOperationSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22193,7 +22193,7 @@ const startWebSiteNetworkTraceSlotOperationSpec: msRest.OperationSpec = { Parameters.durationInSeconds, Parameters.maxFrameLength, Parameters.sasUrl, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22224,7 +22224,7 @@ const stopWebSiteNetworkTraceSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22250,7 +22250,7 @@ const getNetworkTracesSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22288,7 +22288,7 @@ const getNetworkTraceOperationSlotV2OperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22340,7 +22340,7 @@ const getNetworkTracesSlotV2OperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22377,7 +22377,7 @@ const generateNewSitePublishingPasswordSlotOperationSpec: msRest.OperationSpec = Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22403,7 +22403,7 @@ const listPerfMonCountersSlotOperationSpec: msRest.OperationSpec = { ], queryParameters: [ Parameters.filter, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22429,7 +22429,7 @@ const getSitePhpErrorLogFlagSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22455,7 +22455,7 @@ const listPremierAddOnsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22482,7 +22482,7 @@ const getPremierAddOnSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22509,7 +22509,7 @@ const addPremierAddOnSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22543,7 +22543,7 @@ const deletePremierAddOnSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22568,7 +22568,7 @@ const updatePremierAddOnSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22601,7 +22601,7 @@ const getPrivateAccessSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22627,7 +22627,7 @@ const putPrivateAccessVnetSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22660,7 +22660,7 @@ const listProcessesSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22688,7 +22688,7 @@ const getProcessSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22716,7 +22716,7 @@ const deleteProcessSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22742,7 +22742,7 @@ const getProcessDumpSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22775,7 +22775,7 @@ const listProcessModulesSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22804,7 +22804,7 @@ const getProcessModuleSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22832,7 +22832,7 @@ const listProcessThreadsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22861,7 +22861,7 @@ const getProcessThreadSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22888,7 +22888,7 @@ const listPublicCertificatesSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22915,7 +22915,7 @@ const getPublicCertificateSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22942,7 +22942,7 @@ const createOrUpdatePublicCertificateSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -22976,7 +22976,7 @@ const deletePublicCertificateSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23001,7 +23001,7 @@ const listPublishingProfileXmlWithSecretsSlotOperationSpec: msRest.OperationSpec Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23039,7 +23039,7 @@ const resetSlotConfigurationSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23065,7 +23065,7 @@ const restartSlotOperationSpec: msRest.OperationSpec = { queryParameters: [ Parameters.softRestart, Parameters.synchronous, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23089,7 +23089,7 @@ const listSiteExtensionsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23117,7 +23117,7 @@ const getSiteExtensionSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23145,7 +23145,7 @@ const deleteSiteExtensionSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23170,7 +23170,7 @@ const listSlotDifferencesSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23203,7 +23203,7 @@ const listSnapshotsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23229,7 +23229,7 @@ const listSnapshotsFromDRSecondarySlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23255,7 +23255,7 @@ const getSourceControlSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23287,7 +23287,7 @@ const deleteSourceControlSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23313,7 +23313,7 @@ const updateSourceControlSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23352,7 +23352,7 @@ const startSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23376,7 +23376,7 @@ const stopSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23400,7 +23400,7 @@ const stopNetworkTraceSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23425,7 +23425,7 @@ const syncRepositorySlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23449,7 +23449,7 @@ const syncFunctionTriggersSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23473,7 +23473,7 @@ const listTriggeredWebJobsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23500,7 +23500,7 @@ const getTriggeredWebJobSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23528,7 +23528,7 @@ const deleteTriggeredWebJobSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23554,7 +23554,7 @@ const listTriggeredWebJobHistorySlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23583,7 +23583,7 @@ const getTriggeredWebJobHistorySlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23611,7 +23611,7 @@ const runTriggeredWebJobSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23637,7 +23637,7 @@ const listUsagesSlotOperationSpec: msRest.OperationSpec = { ], queryParameters: [ Parameters.filter, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23663,7 +23663,7 @@ const listVnetConnectionsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23701,7 +23701,7 @@ const getVnetConnectionSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23728,7 +23728,7 @@ const createOrUpdateVnetConnectionSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23762,7 +23762,7 @@ const deleteVnetConnectionSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23788,7 +23788,7 @@ const updateVnetConnectionSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23823,7 +23823,7 @@ const getVnetConnectionGatewaySlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23852,7 +23852,7 @@ const createOrUpdateVnetConnectionGatewaySlotOperationSpec: msRest.OperationSpec Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23887,7 +23887,7 @@ const updateVnetConnectionGatewaySlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23920,7 +23920,7 @@ const listWebJobsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23947,7 +23947,7 @@ const getWebJobSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -23972,7 +23972,7 @@ const listSlotDifferencesFromProductionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24004,7 +24004,7 @@ const listSnapshotsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24029,7 +24029,7 @@ const listSnapshotsFromDRSecondaryOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24054,7 +24054,7 @@ const getSourceControlOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24085,7 +24085,7 @@ const deleteSourceControlOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24110,7 +24110,7 @@ const updateSourceControlOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24148,7 +24148,7 @@ const startOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24171,7 +24171,7 @@ const stopOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24194,7 +24194,7 @@ const stopNetworkTraceOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24218,7 +24218,7 @@ const syncRepositoryOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24241,7 +24241,7 @@ const syncFunctionTriggersOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24264,7 +24264,7 @@ const listTriggeredWebJobsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24290,7 +24290,7 @@ const getTriggeredWebJobOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24317,7 +24317,7 @@ const deleteTriggeredWebJobOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24342,7 +24342,7 @@ const listTriggeredWebJobHistoryOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24370,7 +24370,7 @@ const getTriggeredWebJobHistoryOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24397,7 +24397,7 @@ const runTriggeredWebJobOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24422,7 +24422,7 @@ const listUsagesOperationSpec: msRest.OperationSpec = { ], queryParameters: [ Parameters.filter, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24447,7 +24447,7 @@ const listVnetConnectionsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24484,7 +24484,7 @@ const getVnetConnectionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24510,7 +24510,7 @@ const createOrUpdateVnetConnectionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24543,7 +24543,7 @@ const deleteVnetConnectionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24568,7 +24568,7 @@ const updateVnetConnectionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24602,7 +24602,7 @@ const getVnetConnectionGatewayOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24630,7 +24630,7 @@ const createOrUpdateVnetConnectionGatewayOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24664,7 +24664,7 @@ const updateVnetConnectionGatewayOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24696,7 +24696,7 @@ const listWebJobsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24722,7 +24722,7 @@ const getWebJobOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24747,7 +24747,7 @@ const beginCreateOrUpdateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24783,7 +24783,7 @@ const beginRestoreOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24814,7 +24814,7 @@ const beginListPublishingCredentialsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24839,7 +24839,7 @@ const beginCreateMSDeployOperationOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24873,7 +24873,7 @@ const beginCreateFunctionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24906,7 +24906,7 @@ const beginCreateInstanceMSDeployOperationOperationSpec: msRest.OperationSpec = Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24940,7 +24940,7 @@ const beginMigrateStorageOperationSpec: msRest.OperationSpec = { ], queryParameters: [ Parameters.subscriptionName, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -24972,7 +24972,7 @@ const beginMigrateMySqlOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25007,7 +25007,7 @@ const beginStartWebSiteNetworkTraceOperationOperationSpec: msRest.OperationSpec Parameters.durationInSeconds, Parameters.maxFrameLength, Parameters.sasUrl, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25057,7 +25057,7 @@ const beginRestoreFromBackupBlobOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25088,7 +25088,7 @@ const beginRestoreFromDeletedAppOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25119,7 +25119,7 @@ const beginRestoreSnapshotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25151,7 +25151,7 @@ const beginInstallSiteExtensionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25181,7 +25181,7 @@ const beginCreateOrUpdateSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25218,7 +25218,7 @@ const beginRestoreSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25250,7 +25250,7 @@ const beginListPublishingCredentialsSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25276,7 +25276,7 @@ const beginCreateMSDeployOperationSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25311,7 +25311,7 @@ const beginCreateInstanceFunctionSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25345,7 +25345,7 @@ const beginCreateInstanceMSDeployOperationSlotOperationSpec: msRest.OperationSpe Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25382,7 +25382,7 @@ const beginStartWebSiteNetworkTraceOperationSlotOperationSpec: msRest.OperationS Parameters.durationInSeconds, Parameters.maxFrameLength, Parameters.sasUrl, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25433,7 +25433,7 @@ const beginRestoreFromBackupBlobSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25465,7 +25465,7 @@ const beginRestoreFromDeletedAppSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25497,7 +25497,7 @@ const beginRestoreSnapshotSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25530,7 +25530,7 @@ const beginInstallSiteExtensionSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25560,7 +25560,7 @@ const beginSwapSlotSlotOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25592,7 +25592,7 @@ const beginCreateOrUpdateSourceControlSlotOperationSpec: msRest.OperationSpec = Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25634,7 +25634,7 @@ const beginStartNetworkTraceSlotOperationSpec: msRest.OperationSpec = { Parameters.durationInSeconds, Parameters.maxFrameLength, Parameters.sasUrl, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25684,7 +25684,7 @@ const beginSwapSlotWithProductionOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25715,7 +25715,7 @@ const beginCreateOrUpdateSourceControlOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage @@ -25756,7 +25756,7 @@ const beginStartNetworkTraceOperationSpec: msRest.OperationSpec = { Parameters.durationInSeconds, Parameters.maxFrameLength, Parameters.sasUrl, - Parameters.apiVersion + Parameters.apiVersion1 ], headerParameters: [ Parameters.acceptLanguage diff --git a/sdk/appservice/arm-appservice/src/webSiteManagementClient.ts b/sdk/appservice/arm-appservice/src/webSiteManagementClient.ts index fff75e64389e..ecf9e302a4a2 100644 --- a/sdk/appservice/arm-appservice/src/webSiteManagementClient.ts +++ b/sdk/appservice/arm-appservice/src/webSiteManagementClient.ts @@ -485,6 +485,39 @@ class WebSiteManagementClient extends WebSiteManagementClientContext { callback) as Promise; } + /** + * Validate if the container settings are correct. + * @summary Validate if the container settings are correct. + * @param validateContainerSettingsRequest + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param [options] The optional parameters + * @returns Promise + */ + validateContainerSettings(validateContainerSettingsRequest: Models.ValidateContainerSettingsRequest, resourceGroupName: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param validateContainerSettingsRequest + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param callback The callback + */ + validateContainerSettings(validateContainerSettingsRequest: Models.ValidateContainerSettingsRequest, resourceGroupName: string, callback: msRest.ServiceCallback): void; + /** + * @param validateContainerSettingsRequest + * @param resourceGroupName Name of the resource group to which the resource belongs. + * @param options The optional parameters + * @param callback The callback + */ + validateContainerSettings(validateContainerSettingsRequest: Models.ValidateContainerSettingsRequest, resourceGroupName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + validateContainerSettings(validateContainerSettingsRequest: Models.ValidateContainerSettingsRequest, resourceGroupName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.sendOperationRequest( + { + validateContainerSettingsRequest, + resourceGroupName, + options + }, + validateContainerSettingsOperationSpec, + callback) as Promise; + } + /** * Validate whether a resource can be moved. * @summary Validate whether a resource can be moved. @@ -670,7 +703,7 @@ const getPublishingUserOperationSpec: msRest.OperationSpec = { httpMethod: "GET", path: "providers/Microsoft.Web/publishingUsers/web", queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -690,7 +723,7 @@ const updatePublishingUserOperationSpec: msRest.OperationSpec = { httpMethod: "PUT", path: "providers/Microsoft.Web/publishingUsers/web", queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -717,7 +750,7 @@ const listSourceControlsOperationSpec: msRest.OperationSpec = { httpMethod: "GET", path: "providers/Microsoft.Web/sourcecontrols", queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -740,7 +773,7 @@ const getSourceControlOperationSpec: msRest.OperationSpec = { Parameters.sourceControlType ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -763,7 +796,7 @@ const updateSourceControlOperationSpec: msRest.OperationSpec = { Parameters.sourceControlType ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -795,7 +828,7 @@ const listBillingMetersOperationSpec: msRest.OperationSpec = { queryParameters: [ Parameters.billingLocation, Parameters.osType, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -818,7 +851,7 @@ const checkNameAvailabilityOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -855,7 +888,7 @@ const getSubscriptionDeploymentLocationsOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -882,7 +915,7 @@ const listGeoRegionsOperationSpec: msRest.OperationSpec = { Parameters.linuxWorkersEnabled, Parameters.xenonWorkersEnabled, Parameters.linuxDynamicWorkersEnabled, - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -905,7 +938,7 @@ const listSiteIdentifiersAssignedToHostNameOperationSpec: msRest.OperationSpec = Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -940,7 +973,7 @@ const listPremierAddOnOffersOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -963,7 +996,7 @@ const listSkusOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -986,7 +1019,7 @@ const verifyHostingEnvironmentVnetOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1017,7 +1050,7 @@ const moveOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1046,7 +1079,7 @@ const validateOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage @@ -1069,6 +1102,42 @@ const validateOperationSpec: msRest.OperationSpec = { serializer }; +const validateContainerSettingsOperationSpec: msRest.OperationSpec = { + httpMethod: "POST", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/validateContainerSettings", + urlParameters: [ + Parameters.resourceGroupName, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion0 + ], + headerParameters: [ + Parameters.acceptLanguage + ], + requestBody: { + parameterPath: "validateContainerSettingsRequest", + mapper: { + ...Mappers.ValidateContainerSettingsRequest, + required: true + } + }, + responses: { + 200: { + bodyMapper: { + serializedName: "parsedResponse", + type: { + name: "Object" + } + } + }, + default: { + bodyMapper: Mappers.DefaultErrorResponse + } + }, + serializer +}; + const validateMoveOperationSpec: msRest.OperationSpec = { httpMethod: "POST", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/validateMoveResources", @@ -1077,7 +1146,7 @@ const validateMoveOperationSpec: msRest.OperationSpec = { Parameters.subscriptionId ], queryParameters: [ - Parameters.apiVersion + Parameters.apiVersion0 ], headerParameters: [ Parameters.acceptLanguage diff --git a/sdk/appservice/arm-appservice/src/webSiteManagementClientContext.ts b/sdk/appservice/arm-appservice/src/webSiteManagementClientContext.ts index cdf6e7bfafbe..6fb0ab996511 100644 --- a/sdk/appservice/arm-appservice/src/webSiteManagementClientContext.ts +++ b/sdk/appservice/arm-appservice/src/webSiteManagementClientContext.ts @@ -13,12 +13,11 @@ import * as msRest from "@azure/ms-rest-js"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-appservice"; -const packageVersion = "5.7.0"; +const packageVersion = "5.8.0"; export class WebSiteManagementClientContext extends msRestAzure.AzureServiceClient { credentials: msRest.ServiceClientCredentials; subscriptionId: string; - apiVersion?: string; /** * Initializes a new instance of the WebSiteManagementClient class. @@ -45,7 +44,6 @@ export class WebSiteManagementClientContext extends msRestAzure.AzureServiceClie super(credentials, options); - this.apiVersion = '2018-02-01'; this.acceptLanguage = 'en-US'; this.longRunningOperationRetryTimeout = 30; this.baseUri = options.baseUri || this.baseUri || "https://management.azure.com"; diff --git a/sdk/appservice/arm-appservice/tsconfig.json b/sdk/appservice/arm-appservice/tsconfig.json index 87bbf5b5fa49..422b584abd5e 100644 --- a/sdk/appservice/arm-appservice/tsconfig.json +++ b/sdk/appservice/arm-appservice/tsconfig.json @@ -9,7 +9,7 @@ "esModuleInterop": true, "allowSyntheticDefaultImports": true, "forceConsistentCasingInFileNames": true, - "lib": ["es6"], + "lib": ["es6", "dom"], "declaration": true, "outDir": "./esm", "importHelpers": true diff --git a/sdk/kusto/arm-kusto/README.md b/sdk/kusto/arm-kusto/README.md index 716fff60116e..46dbcd6772c9 100644 --- a/sdk/kusto/arm-kusto/README.md +++ b/sdk/kusto/arm-kusto/README.md @@ -99,5 +99,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) - ![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/kusto/arm-kusto/README.png) diff --git a/sdk/kusto/arm-kusto/package.json b/sdk/kusto/arm-kusto/package.json index 83a3bc257d8b..e398fb3a69f9 100644 --- a/sdk/kusto/arm-kusto/package.json +++ b/sdk/kusto/arm-kusto/package.json @@ -2,10 +2,10 @@ "name": "@azure/arm-kusto", "author": "Microsoft Corporation", "description": "KustoManagementClient Library with typescript type definitions for node.js and browser.", - "version": "2.0.0", + "version": "2.0.1", "dependencies": { - "@azure/ms-rest-azure-js": "^1.3.2", - "@azure/ms-rest-js": "^1.6.0", + "@azure/ms-rest-azure-js": "^2.0.0", + "@azure/ms-rest-js": "^2.0.3", "tslib": "^1.9.3" }, "keywords": [ @@ -26,13 +26,13 @@ "rollup-plugin-sourcemaps": "^0.4.2", "uglify-js": "^3.4.9" }, - "homepage": "https://github.com/azure/azure-sdk-for-js/tree/master/sdk/kusto/arm-kusto", + "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/kusto/arm-kusto", "repository": { "type": "git", - "url": "https://github.com/azure/azure-sdk-for-js.git" + "url": "https://github.com/Azure/azure-sdk-for-js.git" }, "bugs": { - "url": "https://github.com/azure/azure-sdk-for-js/issues" + "url": "https://github.com/Azure/azure-sdk-for-js/issues" }, "files": [ "dist/**/*.js", diff --git a/sdk/kusto/arm-kusto/src/kustoManagementClientContext.ts b/sdk/kusto/arm-kusto/src/kustoManagementClientContext.ts index 233eb4c61b8d..01ee587ed07c 100644 --- a/sdk/kusto/arm-kusto/src/kustoManagementClientContext.ts +++ b/sdk/kusto/arm-kusto/src/kustoManagementClientContext.ts @@ -13,7 +13,7 @@ import * as msRest from "@azure/ms-rest-js"; import * as msRestAzure from "@azure/ms-rest-azure-js"; const packageName = "@azure/arm-kusto"; -const packageVersion = "2.0.0"; +const packageVersion = "2.0.1"; export class KustoManagementClientContext extends msRestAzure.AzureServiceClient { credentials: msRest.ServiceClientCredentials; @@ -38,7 +38,7 @@ export class KustoManagementClientContext extends msRestAzure.AzureServiceClient if (!options) { options = {}; } - if(!options.userAgent) { + if (!options.userAgent) { const defaultUserAgent = msRestAzure.getDefaultUserAgentValue(); options.userAgent = `${packageName}/${packageVersion} ${defaultUserAgent}`; } @@ -53,10 +53,10 @@ export class KustoManagementClientContext extends msRestAzure.AzureServiceClient this.credentials = credentials; this.subscriptionId = subscriptionId; - if(options.acceptLanguage !== null && options.acceptLanguage !== undefined) { + if (options.acceptLanguage !== null && options.acceptLanguage !== undefined) { this.acceptLanguage = options.acceptLanguage; } - if(options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) { + if (options.longRunningOperationRetryTimeout !== null && options.longRunningOperationRetryTimeout !== undefined) { this.longRunningOperationRetryTimeout = options.longRunningOperationRetryTimeout; } } diff --git a/sdk/kusto/arm-kusto/src/models/dataConnectionsMappers.ts b/sdk/kusto/arm-kusto/src/models/dataConnectionsMappers.ts index ee7a5801301a..c62a692f6819 100644 --- a/sdk/kusto/arm-kusto/src/models/dataConnectionsMappers.ts +++ b/sdk/kusto/arm-kusto/src/models/dataConnectionsMappers.ts @@ -11,6 +11,7 @@ export { AzureEntityResource, AzureSku, BaseResource, + CheckNameResult, CloudError, Cluster, ClusterUpdate, @@ -18,6 +19,7 @@ export { DatabaseStatistics, DatabaseUpdate, DataConnection, + DataConnectionCheckNameRequest, DataConnectionListResult, DataConnectionValidation, DataConnectionValidationListResult, diff --git a/sdk/kusto/arm-kusto/src/models/index.ts b/sdk/kusto/arm-kusto/src/models/index.ts index 4ebc20e87cf0..6c233f95db03 100644 --- a/sdk/kusto/arm-kusto/src/models/index.ts +++ b/sdk/kusto/arm-kusto/src/models/index.ts @@ -510,6 +510,16 @@ export interface DatabaseCheckNameRequest { name: string; } +/** + * The result returned from a data connections check name availability request. + */ +export interface DataConnectionCheckNameRequest { + /** + * Data Connection name. + */ + name: string; +} + /** * The result returned from a check name availability request. */ @@ -527,6 +537,11 @@ export interface CheckNameResult { * that are violated. */ message?: string; + /** + * Message providing the reason why the given name is invalid. Possible values include: + * 'Invalid', 'AlreadyExists' + */ + reason?: Reason; } /** @@ -710,6 +725,14 @@ export type DatabasePrincipalRole = 'Admin' | 'Ingestor' | 'Monitor' | 'User' | */ export type DatabasePrincipalType = 'App' | 'Group' | 'User'; +/** + * Defines values for Reason. + * Possible values include: 'Invalid', 'AlreadyExists' + * @readonly + * @enum {string} + */ +export type Reason = 'Invalid' | 'AlreadyExists'; + /** * Contains response data for the get operation. */ @@ -1150,6 +1173,26 @@ export type DataConnectionsDataConnectionValidationMethodResponse = DataConnecti }; }; +/** + * Contains response data for the checkNameAvailability operation. + */ +export type DataConnectionsCheckNameAvailabilityResponse = CheckNameResult & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: CheckNameResult; + }; +}; + /** * Contains response data for the get operation. */ diff --git a/sdk/kusto/arm-kusto/src/models/mappers.ts b/sdk/kusto/arm-kusto/src/models/mappers.ts index 16f782d21dd3..c571284d20d3 100644 --- a/sdk/kusto/arm-kusto/src/models/mappers.ts +++ b/sdk/kusto/arm-kusto/src/models/mappers.ts @@ -744,6 +744,32 @@ export const DatabaseCheckNameRequest: msRest.CompositeMapper = { } }; +export const DataConnectionCheckNameRequest: msRest.CompositeMapper = { + serializedName: "DataConnectionCheckNameRequest", + type: { + name: "Composite", + className: "DataConnectionCheckNameRequest", + modelProperties: { + name: { + required: true, + serializedName: "name", + type: { + name: "String" + } + }, + type: { + required: true, + isConstant: true, + serializedName: "type", + defaultValue: 'Microsoft.Kusto/clusters/databases/dataConnections', + type: { + name: "String" + } + } + } + } +}; + export const CheckNameResult: msRest.CompositeMapper = { serializedName: "CheckNameResult", type: { @@ -767,6 +793,12 @@ export const CheckNameResult: msRest.CompositeMapper = { type: { name: "String" } + }, + reason: { + serializedName: "reason", + type: { + name: "String" + } } } } diff --git a/sdk/kusto/arm-kusto/src/operations/dataConnections.ts b/sdk/kusto/arm-kusto/src/operations/dataConnections.ts index 5cd49ecbd8b2..31abdb5d34ff 100644 --- a/sdk/kusto/arm-kusto/src/operations/dataConnections.ts +++ b/sdk/kusto/arm-kusto/src/operations/dataConnections.ts @@ -103,6 +103,46 @@ export class DataConnections { callback) as Promise; } + /** + * Checks that the data connection name is valid and is not already in use. + * @param resourceGroupName The name of the resource group containing the Kusto cluster. + * @param clusterName The name of the Kusto cluster. + * @param databaseName The name of the database in the Kusto cluster. + * @param dataConnectionName The name of the data connection. + * @param [options] The optional parameters + * @returns Promise + */ + checkNameAvailability(resourceGroupName: string, clusterName: string, databaseName: string, dataConnectionName: Models.DataConnectionCheckNameRequest, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName The name of the resource group containing the Kusto cluster. + * @param clusterName The name of the Kusto cluster. + * @param databaseName The name of the database in the Kusto cluster. + * @param dataConnectionName The name of the data connection. + * @param callback The callback + */ + checkNameAvailability(resourceGroupName: string, clusterName: string, databaseName: string, dataConnectionName: Models.DataConnectionCheckNameRequest, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName The name of the resource group containing the Kusto cluster. + * @param clusterName The name of the Kusto cluster. + * @param databaseName The name of the database in the Kusto cluster. + * @param dataConnectionName The name of the data connection. + * @param options The optional parameters + * @param callback The callback + */ + checkNameAvailability(resourceGroupName: string, clusterName: string, databaseName: string, dataConnectionName: Models.DataConnectionCheckNameRequest, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + checkNameAvailability(resourceGroupName: string, clusterName: string, databaseName: string, dataConnectionName: Models.DataConnectionCheckNameRequest, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + clusterName, + databaseName, + dataConnectionName, + options + }, + checkNameAvailabilityOperationSpec, + callback) as Promise; + } + /** * Returns a data connection. * @param resourceGroupName The name of the resource group containing the Kusto cluster. @@ -319,6 +359,39 @@ const dataConnectionValidationMethodOperationSpec: msRest.OperationSpec = { serializer }; +const checkNameAvailabilityOperationSpec: msRest.OperationSpec = { + httpMethod: "POST", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/checkNameAvailability", + urlParameters: [ + Parameters.resourceGroupName, + Parameters.clusterName, + Parameters.databaseName, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + requestBody: { + parameterPath: "dataConnectionName", + mapper: { + ...Mappers.DataConnectionCheckNameRequest, + required: true + } + }, + responses: { + 200: { + bodyMapper: Mappers.CheckNameResult + }, + default: { + bodyMapper: Mappers.CloudError + } + }, + serializer +}; + const getOperationSpec: msRest.OperationSpec = { httpMethod: "GET", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}/databases/{databaseName}/dataConnections/{dataConnectionName}", diff --git a/sdk/kusto/arm-kusto/tsconfig.json b/sdk/kusto/arm-kusto/tsconfig.json index 87bbf5b5fa49..422b584abd5e 100644 --- a/sdk/kusto/arm-kusto/tsconfig.json +++ b/sdk/kusto/arm-kusto/tsconfig.json @@ -9,7 +9,7 @@ "esModuleInterop": true, "allowSyntheticDefaultImports": true, "forceConsistentCasingInFileNames": true, - "lib": ["es6"], + "lib": ["es6", "dom"], "declaration": true, "outDir": "./esm", "importHelpers": true From 7369bfbad8b33c8622e0cc3224367b657c35bdc5 Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Mon, 15 Jul 2019 11:12:06 -0700 Subject: [PATCH 279/289] Update pnpm-lock.yaml (#4308) --- common/config/rush/pnpm-lock.yaml | 755 +++++++++++++++++------------- 1 file changed, 441 insertions(+), 314 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index d1c816a6cdbd..0f1215a8b1c3 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -6,7 +6,7 @@ dependencies: '@azure/ms-rest-azure-js': 1.3.8 '@azure/ms-rest-js': 1.8.13 '@azure/ms-rest-nodeauth': 0.9.3 - '@microsoft/api-extractor': 7.3.1 + '@microsoft/api-extractor': 7.3.2 '@rush-temp/abort-controller': 'file:projects/abort-controller.tgz' '@rush-temp/core-amqp': 'file:projects/core-amqp.tgz' '@rush-temp/core-arm': 'file:projects/core-arm.tgz' @@ -34,7 +34,7 @@ dependencies: '@types/debug': 0.0.31 '@types/dotenv': 6.1.1 '@types/express': 4.17.0 - '@types/form-data': 2.2.1 + '@types/form-data': 2.5.0 '@types/fs-extra': 7.0.0 '@types/glob': 7.1.1 '@types/is-buffer': 2.0.0 @@ -56,16 +56,16 @@ dependencies: '@types/tunnel': 0.0.0 '@types/underscore': 1.9.2 '@types/uuid': 3.4.5 - '@types/webpack': 4.4.34 + '@types/webpack': 4.4.35 '@types/webpack-dev-middleware': 2.0.3 '@types/ws': 6.0.1 '@types/xml2js': 0.4.4 '@types/yargs': 11.1.2 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 abortcontroller-polyfill: 1.3.0 assert: 1.5.0 - async-lock: 1.2.0 + async-lock: 1.2.1 axios: 0.19.0 axios-mock-adapter: 1.17.0_axios@0.19.0 azure-storage: 2.10.3 @@ -100,21 +100,21 @@ dependencies: is-buffer: 2.0.3 jssha: 2.3.1 jws: 3.2.2 - karma: 4.1.0 - karma-chai: 0.1.0_chai@4.2.0+karma@4.1.0 + karma: 4.2.0 + karma-chai: 0.1.0_chai@4.2.0+karma@4.2.0 karma-chrome-launcher: 2.2.0 karma-coverage: 1.1.2 - karma-edge-launcher: 0.4.2_karma@4.1.0 + karma-edge-launcher: 0.4.2_karma@4.2.0 karma-env-preprocessor: 0.1.1 karma-firefox-launcher: 1.1.0 - karma-ie-launcher: 1.0.0_karma@4.1.0 - karma-json-preprocessor: 0.3.3_karma@4.1.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.1.0 + karma-junit-reporter: 1.2.0_karma@4.2.0 karma-mocha: 1.3.0 - karma-mocha-reporter: 2.2.5_karma@4.1.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 karma-remap-coverage: 0.1.5_karma-coverage@1.1.2 - karma-rollup-preprocessor: 7.0.0_rollup@1.16.7 + karma-rollup-preprocessor: 7.0.0_rollup@1.17.0 karma-sourcemap-loader: 0.3.7 karma-typescript-es6-transform: 4.1.1 karma-webpack: 4.0.2_webpack@4.35.3 @@ -144,21 +144,21 @@ dependencies: rhea: 1.0.8 rhea-promise: 0.1.15 rimraf: 2.6.3 - rollup: 1.16.7 + rollup: 1.17.0 rollup-plugin-alias: 1.5.2 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 + rollup-plugin-commonjs: 10.0.1_rollup@1.17.0 rollup-plugin-inject: 3.0.0 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.16.7 + rollup-plugin-node-resolve: 5.2.0_rollup@1.17.0 rollup-plugin-replace: 2.2.0 rollup-plugin-resolve: 0.0.1-predev.1 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 - rollup-plugin-terser: 5.1.1_rollup@1.16.7 - rollup-plugin-uglify: 6.0.2_rollup@1.16.7 - rollup-plugin-visualizer: 2.4.4_rollup@1.16.7 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.17.0 + rollup-plugin-terser: 5.1.1_rollup@1.17.0 + rollup-plugin-uglify: 6.0.2_rollup@1.17.0 + rollup-plugin-visualizer: 2.4.4_rollup@1.17.0 semaphore: 1.0.5 semver: 5.7.0 shx: 0.3.2 @@ -179,18 +179,18 @@ dependencies: util: 0.11.1 uuid: 3.3.2 webpack: 4.35.3_webpack@4.35.3 - webpack-cli: 3.3.5_webpack@4.35.3 + webpack-cli: 3.3.6_webpack@4.35.3 webpack-dev-middleware: 3.7.0_webpack@4.35.3 ws: 6.2.1 xhr-mock: 2.4.1 xml2js: 0.4.19 yargs: 11.1.0 - yarn: 1.16.0 + yarn: 1.17.3 lockfileVersion: 5.1 packages: /@azure/amqp-common/0.1.9_rhea-promise@0.1.15: dependencies: - async-lock: 1.2.0 + async-lock: 1.2.1 debug: 3.2.6 is-buffer: 2.0.3 jssha: 2.3.1 @@ -207,7 +207,7 @@ packages: '@azure/ms-rest-nodeauth': 0.9.3 '@types/async-lock': 1.1.1 '@types/is-buffer': 2.0.0 - async-lock: 1.2.0 + async-lock: 1.2.1 buffer: 5.2.1 debug: 3.2.6 events: 3.0.0 @@ -235,7 +235,7 @@ packages: /@azure/event-hubs/1.0.8: dependencies: '@azure/amqp-common': 0.1.9_rhea-promise@0.1.15 - async-lock: 1.2.0 + async-lock: 1.2.1 debug: 3.2.6 is-buffer: 2.0.2 jssha: 2.3.1 @@ -373,7 +373,7 @@ packages: dev: false resolution: integrity: sha512-LYMnA1cB2W3YuCOAFruNvnQBZ64OzEnsHxzcxclBhTcUGag6NrtGnip90AVTvVzFlXDLoT7trvPEenlWflWZFQ== - /@microsoft/api-extractor/7.3.1: + /@microsoft/api-extractor/7.3.2: dependencies: '@microsoft/api-extractor-model': 7.2.0 '@microsoft/node-core-library': 3.13.0 @@ -387,7 +387,7 @@ packages: dev: false hasBin: true resolution: - integrity: sha512-tldZDD8tRRc9d4LKdZbNptB958S5pIsf0Nu8eOEpcxoffM3sofG3O8+RZ2Rm9JpAVeGcxPA3r0hWyQ+srNqs+Q== + integrity: sha512-7F/mQl09qFo09kDM9aIYBNUOwqX+IYM0nlsU+ipmSS92ifG21fWBOyqhuEE9hciKXho6dMIIGTTQa7L/HP4diA== /@microsoft/node-core-library/3.13.0: dependencies: '@types/fs-extra': 5.0.4 @@ -521,12 +521,13 @@ packages: dev: false resolution: integrity: sha512-CjaMu57cjgjuZbh9DpkloeGxV45CnMGlVd+XpG7Gm9QgVrd7KFq+X4HY0vM+2v0bczS48Wg7bvnMY5TN+Xmcfw== - /@types/form-data/2.2.1: + /@types/form-data/2.5.0: dependencies: - '@types/node': 8.10.50 + form-data: 2.5.0 + deprecated: 'This is a stub types definition. form-data provides its own type definitions, so you do not need this installed.' dev: false resolution: - integrity: sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ== + integrity: sha512-23/wYiuckYYtFpL+4RPWiWmRQH2BjFuqCUi2+N3amB1a1Drv+i/byTrGvlLwRVLFNAZbwpbQ7JvTK+VCAPMbcg== /@types/fs-extra/5.0.4: dependencies: '@types/node': 8.10.50 @@ -612,10 +613,10 @@ packages: dev: false resolution: integrity: sha512-OthuN+2FuzfZO3yONJ/QVjKmLEuRagS9TV9lEId+WHL9KhftYG+/2z+pxlr0UgVVXSpVD8woie/3fzQn8ft/Ow== - /@types/node/12.6.2: + /@types/node/12.6.3: dev: false resolution: - integrity: sha512-gojym4tX0FWeV2gsW4Xmzo5wxGjXGm550oVUII7f7G5o4BV6c7DBdiG1RRQd+y1bvqRyYtPfMK85UM95vsapqQ== + integrity: sha512-7TEYTQT1/6PP53NftXXabIZDaZfaoBdeBm8Md/i7zsWRoBe0YwOXguyK8vhHs8ehgB/w9U4K/6EWuTyp0W6nIA== /@types/node/8.10.50: dev: false resolution: @@ -699,12 +700,12 @@ packages: dependencies: '@types/connect': 3.4.32 '@types/memory-fs': 0.3.2 - '@types/webpack': 4.4.34 + '@types/webpack': 4.4.35 loglevel: 1.6.3 dev: false resolution: integrity: sha512-DzNJJ6ah/6t1n8sfAgQyEbZ/OMmFcF9j9P3aesnm7G6/iBFR/qiGin8K89J0RmaWIBzhTMdDg3I5PmKmSv7N9w== - /@types/webpack/4.4.34: + /@types/webpack/4.4.35: dependencies: '@types/anymatch': 1.3.1 '@types/node': 8.10.50 @@ -713,7 +714,7 @@ packages: source-map: 0.6.1 dev: false resolution: - integrity: sha512-GnEBgjHsfO1M7DIQ0dAupSofcmDItE3Zsu3reK8SQpl/6N0rtUQxUmQzVFAS5ou/FGjsYKjXAWfItLZ0kNFTfQ== + integrity: sha512-kf+mn/+CB4HsFb+Rz0QBRlo8nNC9LFhwqeK5xxhd3FEPRWJv6MFVnljKV5ARac56+syO8vIhq+nGt860+3wx7A== /@types/ws/6.0.1: dependencies: '@types/events': 3.0.0 @@ -735,12 +736,12 @@ packages: dev: false resolution: integrity: sha1-LrHQCl5Ow/pYx2r94S4YK2bcXBw= - /@typescript-eslint/eslint-plugin/1.11.0_8d1711d609953acbf65aedec42f2b5c5: + /@typescript-eslint/eslint-plugin/1.12.0_db854cf46887ef4aa7b9323cccc417a5: dependencies: - '@typescript-eslint/experimental-utils': 1.11.0_eslint@5.16.0+typescript@3.5.3 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/experimental-utils': 1.12.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 eslint: 5.16.0 - eslint-utils: 1.3.1 + eslint-utils: 1.4.0 functional-red-black-tree: 1.0.1 regexpp: 2.0.1 tsutils: 3.14.0_typescript@3.5.3 @@ -752,10 +753,10 @@ packages: eslint: ^5.0.0 typescript: '*' resolution: - integrity: sha512-mXv9ccCou89C8/4avKHuPB2WkSZyY/XcTQUXd5LFZAcLw1I3mWYVjUu6eS9Ja0QkP/ClolbcW9tb3Ov/pMdcqw== - /@typescript-eslint/experimental-utils/1.11.0_eslint@5.16.0+typescript@3.5.3: + integrity: sha512-J/ZTZF+pLNqjXBGNfq5fahsoJ4vJOkYbitWPavA05IrZ7BXUaf4XWlhUB/ic1lpOGTRpLWF+PLAePjiHp6dz8g== + /@typescript-eslint/experimental-utils/1.12.0_eslint@5.16.0+typescript@3.5.3: dependencies: - '@typescript-eslint/typescript-estree': 1.11.0 + '@typescript-eslint/typescript-estree': 1.12.0 eslint: 5.16.0 eslint-scope: 4.0.3 typescript: 3.5.3 @@ -766,12 +767,12 @@ packages: eslint: '*' typescript: '*' resolution: - integrity: sha512-7LbfaqF6B8oa8cp/315zxKk8FFzosRzzhF8Kn/ZRsRsnpm7Qcu25cR/9RnAQo5utZ2KIWVgaALr+ZmcbG47ruw== - /@typescript-eslint/parser/1.11.0_eslint@5.16.0+typescript@3.5.3: + integrity: sha512-s0soOTMJloytr9GbPteMLNiO2HvJ+qgQkRNplABXiVw6vq7uQRvidkby64Gqt/nA7pys74HksHwRULaB/QRVyw== + /@typescript-eslint/parser/1.12.0_eslint@5.16.0+typescript@3.5.3: dependencies: '@types/eslint-visitor-keys': 1.0.0 - '@typescript-eslint/experimental-utils': 1.11.0_eslint@5.16.0+typescript@3.5.3 - '@typescript-eslint/typescript-estree': 1.11.0 + '@typescript-eslint/experimental-utils': 1.12.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/typescript-estree': 1.12.0 eslint: 5.16.0 eslint-visitor-keys: 1.0.0 dev: false @@ -781,8 +782,8 @@ packages: eslint: ^5.0.0 typescript: '*' resolution: - integrity: sha512-5xBExyXaxVyczrZvbRKEXvaTUFFq7gIM9BynXukXZE0zF3IQP/FxF4mPmmh3gJ9egafZFqByCpPTFm3dk4SY7Q== - /@typescript-eslint/typescript-estree/1.11.0: + integrity: sha512-0uzbaa9ZLCA5yMWJywnJJ7YVENKGWVUhJDV5UrMoldC5HoI54W5kkdPhTfmtFKpPFp93MIwmJj0/61ztvmz5Dw== + /@typescript-eslint/typescript-estree/1.12.0: dependencies: lodash.unescape: 4.0.1 semver: 5.5.0 @@ -790,7 +791,7 @@ packages: engines: node: '>=6.14.0' resolution: - integrity: sha512-fquUHF5tAx1sM2OeRCC7wVxFd1iMELWMGCzOSmJ3pLzArj9+kRixdlC4d5MncuzXpjEqc6045p3KwM0o/3FuUA== + integrity: sha512-nwN6yy//XcVhFs0ZyU+teJHB8tbCm7AIA8mu6E2r5hu6MajwYBY3Uwop7+rPZWUN/IUOHpL8C+iUPMDVYUU3og== /@webassemblyjs/ast/1.8.5: dependencies: '@webassemblyjs/helper-module-context': 1.8.5 @@ -979,7 +980,7 @@ packages: /adal-node/0.1.28: dependencies: '@types/node': 8.10.50 - async: 3.1.0 + async: 2.6.3 date-utils: 1.2.21 jws: 3.2.2 request: 2.88.0 @@ -1004,23 +1005,23 @@ packages: node: '>= 4.0.0' resolution: integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== - /ajv-errors/1.0.1_ajv@6.10.1: + /ajv-errors/1.0.1_ajv@6.10.2: dependencies: - ajv: 6.10.1 + ajv: 6.10.2 dev: false peerDependencies: ajv: '>=5.0.0' resolution: integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - /ajv-keywords/3.4.1_ajv@6.10.1: + /ajv-keywords/3.4.1_ajv@6.10.2: dependencies: - ajv: 6.10.1 + ajv: 6.10.2 dev: false peerDependencies: ajv: ^6.9.1 resolution: integrity: sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== - /ajv/6.10.1: + /ajv/6.10.2: dependencies: fast-deep-equal: 2.0.1 fast-json-stable-stringify: 2.0.0 @@ -1028,7 +1029,7 @@ packages: uri-js: 4.2.2 dev: false resolution: - integrity: sha512-w1YQaVGNC6t2UCPjEawK/vo/dG8OOrVtUmhBT1uJJYxbl5kU2Tj3v6LGqBcsysN1yhuCStJCCA3GqdvKY8sqXQ== + integrity: sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== /amdefine/1.0.1: dev: false engines: @@ -1124,6 +1125,13 @@ packages: dev: false resolution: integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + /anymatch/3.0.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.0.7 + dev: false + resolution: + integrity: sha512-c6IvoeBECQlMVuYUjSwimnhmztImpErfxJzWZhIQinIvQWoGOnB0dLIgifbPHQt5heS6mNlaZG16f06H3C8t1g== /append-buffer/1.0.2: dependencies: buffer-equal: 1.0.0 @@ -1362,10 +1370,12 @@ packages: dev: false resolution: integrity: sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== - /async-lock/1.2.0: + /async-lock/1.2.1: + dependencies: + grunt-env: 0.4.4 dev: false resolution: - integrity: sha512-81HzTQm4+qMj6PwNlnR+y9g7pDdGGzd/YBUrQnHk+BhR28ja2qv497NkQQc1KcKEqh/RShm07di2b0cIWVFrNQ== + integrity: sha512-eHyJHqr7JivGaVfrpy7rJpTUVNoECFQFUL9ZVmaKDNaKa9IiYsnqNaYAiwU9AXtmDUE8LNjPdxvwMMJzW9vtVg== /async-settle/1.0.0: dependencies: async-done: 1.3.2 @@ -1384,16 +1394,12 @@ packages: dev: false resolution: integrity: sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw== - /async/2.6.2: + /async/2.6.3: dependencies: lodash: 4.17.14 dev: false resolution: - integrity: sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== - /async/3.1.0: - dev: false - resolution: - integrity: sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ== + integrity: sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== /asynckit/0.4.0: dev: false resolution: @@ -1990,6 +1996,12 @@ packages: node: '>=0.10.0' resolution: integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + /binary-extensions/2.0.0: + dev: false + engines: + node: '>=8' + resolution: + integrity: sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== /binary-search-bounds/2.0.3: dev: false resolution: @@ -2047,6 +2059,14 @@ packages: node: '>=0.10.0' resolution: integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + /braces/3.0.2: + dependencies: + fill-range: 7.0.1 + dev: false + engines: + node: '>=8' + resolution: + integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== /brorand/1.1.0: dev: false resolution: @@ -2114,8 +2134,8 @@ packages: integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== /browserslist/3.2.8: dependencies: - caniuse-lite: 1.0.30000983 - electron-to-chromium: 1.3.190 + caniuse-lite: 1.0.30000984 + electron-to-chromium: 1.3.191 dev: false hasBin: true resolution: @@ -2297,10 +2317,10 @@ packages: node: '>=6' resolution: integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - /caniuse-lite/1.0.30000983: + /caniuse-lite/1.0.30000984: dev: false resolution: - integrity: sha512-/llD1bZ6qwNkt41AsvjsmwNOoA4ZB+8iqmf5LVyeSXuBODT/hAMFNVOh84NdUzoiYiSKqo5vQ3ZzeYHSi/olDQ== + integrity: sha512-n5tKOjMaZ1fksIpQbjERuqCyfgec/m9pferkFQbLmWtqLUdmt12hNhjSwsmPdqeiG2NkITOQhr1VYIwWSAceiA== /caseless/0.12.0: dev: false resolution: @@ -2387,6 +2407,22 @@ packages: fsevents: 1.2.9 resolution: integrity: sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== + /chokidar/3.0.2: + dependencies: + anymatch: 3.0.3 + braces: 3.0.2 + glob-parent: 5.0.0 + is-binary-path: 2.1.0 + is-glob: 4.0.1 + normalize-path: 3.0.0 + readdirp: 3.1.1 + dev: false + engines: + node: '>= 8' + optionalDependencies: + fsevents: 2.0.7 + resolution: + integrity: sha512-c4PR2egjNjI1um6bamCQ6bUNPDiyofNQruHvKgHQ4gDUP/ITSVSzNsiI5OWtHOsX323i5ha/kk4YmOZ1Ktg7KA== /chownr/1.1.2: dev: false resolution: @@ -2712,6 +2748,11 @@ packages: requiresBuild: true resolution: integrity: sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== + /core-js/3.1.4: + dev: false + requiresBuild: true + resolution: + integrity: sha512-YNZN8lt82XIMLnLirj9MhKDFZHalwzzrL9YLt6eb0T5D0EDl4IQ90IGkua8mHbnxNrkj1d8hbdizMc0Qmg1WnQ== /core-util-is/1.0.2: dev: false resolution: @@ -3149,10 +3190,10 @@ packages: dev: false resolution: integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - /electron-to-chromium/1.3.190: + /electron-to-chromium/1.3.191: dev: false resolution: - integrity: sha512-cs9WnTnGBGnYYVFMCtLmr9jXNTOkdp95RLz5VhwzDn7dErg1Lnt9o4d01gEH69XlmRKWUr91Yu1hA+Hi8qW0PA== + integrity: sha512-jasjtY5RUy/TOyiUYM2fb4BDaPZfm6CXRFeJDMfFsXYADGxUN49RBqtgB7EL2RmJXeIRUk9lM1U6A5yk2YJMPQ== /elliptic/6.5.0: dependencies: bn.js: 4.11.8 @@ -3404,12 +3445,14 @@ packages: node: '>=4.0.0' resolution: integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - /eslint-utils/1.3.1: + /eslint-utils/1.4.0: + dependencies: + eslint-visitor-keys: 1.0.0 dev: false engines: node: '>=6' resolution: - integrity: sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== + integrity: sha512-7ehnzPaP5IIEh1r1tkjuIrxqhNkzUJa9z3R92tLJdZIVdWaczEhr3EbhGtsMrVxi1KeR8qA7Off6SWc5WNQqyQ== /eslint-visitor-keys/1.0.0: dev: false engines: @@ -3419,13 +3462,13 @@ packages: /eslint/5.16.0: dependencies: '@babel/code-frame': 7.0.0 - ajv: 6.10.1 + ajv: 6.10.2 chalk: 2.4.2 cross-spawn: 6.0.5 debug: 4.1.1 doctrine: 3.0.0 eslint-scope: 4.0.3 - eslint-utils: 1.3.1 + eslint-utils: 1.4.0 eslint-visitor-keys: 1.0.0 espree: 5.0.1 esquery: 1.0.1 @@ -3778,6 +3821,14 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + /fill-range/7.0.1: + dependencies: + to-regex-range: 5.0.1 + dev: false + engines: + node: '>=8' + resolution: + integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== /finalhandler/1.1.2: dependencies: debug: 2.6.9 @@ -4038,6 +4089,13 @@ packages: requiresBuild: true resolution: integrity: sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== + /fsevents/2.0.7: + dev: false + engines: + node: ^8.16.0 || ^10.6.0 || >=11.0.0 + optional: true + resolution: + integrity: sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ== /function-bind/1.1.1: dev: false resolution: @@ -4105,6 +4163,14 @@ packages: dev: false resolution: integrity: sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + /glob-parent/5.0.0: + dependencies: + is-glob: 4.0.1 + dev: false + engines: + node: '>= 6' + resolution: + integrity: sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== /glob-stream/6.1.0: dependencies: extend: 3.0.2 @@ -4244,6 +4310,13 @@ packages: node: '>=4.x' resolution: integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + /grunt-env/0.4.4: + dependencies: + ini: 1.3.5 + lodash: 2.4.2 + dev: false + resolution: + integrity: sha1-OziEOo1zcXfdyfiTh5+2nOGgvC8= /gulp-cli/2.2.0: dependencies: ansi-colors: 1.1.0 @@ -4323,7 +4396,7 @@ packages: integrity: sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= /har-validator/5.1.3: dependencies: - ajv: 6.10.1 + ajv: 6.10.2 har-schema: 2.0.0 dev: false engines: @@ -4718,6 +4791,14 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + /is-binary-path/2.1.0: + dependencies: + binary-extensions: 2.0.0 + dev: false + engines: + node: '>=8' + resolution: + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== /is-buffer/1.1.6: dev: false resolution: @@ -4864,6 +4945,12 @@ packages: node: '>=0.10.0' resolution: integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + /is-number/7.0.0: + dev: false + engines: + node: '>=0.12.0' + resolution: + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== /is-obj/1.0.1: dev: false engines: @@ -5239,10 +5326,10 @@ packages: dev: false resolution: integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== - /karma-chai/0.1.0_chai@4.2.0+karma@4.1.0: + /karma-chai/0.1.0_chai@4.2.0+karma@4.2.0: dependencies: chai: 4.2.0 - karma: 4.1.0 + karma: 4.2.0 dev: false peerDependencies: chai: '*' @@ -5266,10 +5353,10 @@ packages: dev: false resolution: integrity: sha512-eQawj4Cl3z/CjxslYy9ariU4uDh7cCNFZHNWXWRpl0pNeblY/4wHR7M7boTYXWrn9bY0z2pZmr11eKje/S/hIw== - /karma-edge-launcher/0.4.2_karma@4.1.0: + /karma-edge-launcher/0.4.2_karma@4.2.0: dependencies: edge-launcher: 1.2.2 - karma: 4.1.0 + karma: 4.2.0 dev: false engines: node: '>=4' @@ -5285,18 +5372,18 @@ packages: dev: false resolution: integrity: sha512-LbZ5/XlIXLeQ3cqnCbYLn+rOVhuMIK9aZwlP6eOLGzWdo1UVp7t6CN3DP4SafiRLjexKwHeKHDm0c38Mtd3VxA== - /karma-ie-launcher/1.0.0_karma@4.1.0: + /karma-ie-launcher/1.0.0_karma@4.2.0: dependencies: - karma: 4.1.0 + karma: 4.2.0 lodash: 4.17.14 dev: false peerDependencies: karma: '>=0.9' resolution: integrity: sha1-SXmGhCxJAZA0bNifVJTKmDDG1Zw= - /karma-json-preprocessor/0.3.3_karma@4.1.0: + /karma-json-preprocessor/0.3.3_karma@4.2.0: dependencies: - karma: 4.1.0 + karma: 4.2.0 dev: false peerDependencies: karma: '>=0.9' @@ -5308,9 +5395,9 @@ packages: dev: false resolution: integrity: sha512-kNCi+0UrXAeTJMpMsHkHNbfmlErsYT+/haNakJIhsE/gtj3Jx7zWRg7BTc1HHSbH5KeVXVRJr3/KLB/NHWY7Hg== - /karma-junit-reporter/1.2.0_karma@4.1.0: + /karma-junit-reporter/1.2.0_karma@4.2.0: dependencies: - karma: 4.1.0 + karma: 4.2.0 path-is-absolute: 1.0.1 xmlbuilder: 8.2.2 dev: false @@ -5318,10 +5405,10 @@ packages: karma: '>=0.9' resolution: integrity: sha1-T5xAzt+xo5X4rvh2q/lhiZF8Y5Y= - /karma-mocha-reporter/2.2.5_karma@4.1.0: + /karma-mocha-reporter/2.2.5_karma@4.2.0: dependencies: chalk: 2.4.2 - karma: 4.1.0 + karma: 4.2.0 log-symbols: 2.2.0 strip-ansi: 4.0.0 dev: false @@ -5346,11 +5433,11 @@ packages: karma-coverage: '>=0.5.4' resolution: integrity: sha512-FM5h8eHcHbMMR+2INBUxD+4+wUbkCnobfn5uWprkLyj6Xcm2MRFQOuAJn9h2H13nNso6rk+QoNpHd5xCevlPOw== - /karma-rollup-preprocessor/7.0.0_rollup@1.16.7: + /karma-rollup-preprocessor/7.0.0_rollup@1.17.0: dependencies: chokidar: 2.1.6 debounce: 1.2.0 - rollup: 1.16.7 + rollup: 1.17.0 dev: false engines: node: '>= 8.0.0' @@ -5370,7 +5457,7 @@ packages: acorn-walk: 6.2.0 babel-core: 6.26.3 babel-preset-env: 1.7.0 - log4js: 4.5.0 + log4js: 4.5.1 magic-string: 0.25.3 dev: false resolution: @@ -5391,15 +5478,15 @@ packages: webpack: ^4.0.0 resolution: integrity: sha512-970/okAsdUOmiMOCY8sb17A2I8neS25Ad9uhyK3GHgmRSIFJbDcNEFE8dqqUhNe9OHiCC9k3DMrSmtd/0ymP1A== - /karma/4.1.0: + /karma/4.2.0: dependencies: bluebird: 3.5.5 body-parser: 1.19.0 - braces: 2.3.2 - chokidar: 2.1.6 + braces: 3.0.2 + chokidar: 3.0.2 colors: 1.3.3 connect: 3.7.0 - core-js: 2.6.9 + core-js: 3.1.4 di: 0.0.1 dom-serialize: 2.2.1 flatted: 2.0.1 @@ -5408,7 +5495,7 @@ packages: http-proxy: 1.17.0 isbinaryfile: 3.0.3 lodash: 4.17.14 - log4js: 4.5.0 + log4js: 4.5.1 mime: 2.4.4 minimatch: 3.0.4 optimist: 0.6.1 @@ -5425,7 +5512,7 @@ packages: node: '>= 8' hasBin: true resolution: - integrity: sha512-xckiDqyNi512U4dXGOOSyLKPwek6X/vUizSy2f3geYevbLj+UIdvNwbn7IwfUIL2g1GXEPWt/87qFD1fBbl/Uw== + integrity: sha512-fmCuxN1rwJxTdZfOXK5LjlmS4Ana/OvzNMpkyLL/TLE8hmgSkpVpMYQ7RTVa8TNKRVQDZNl5W1oF5cfKfgIMlA== /kind-of/1.1.0: dev: false engines: @@ -5609,6 +5696,13 @@ packages: dev: false resolution: integrity: sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= + /lodash/2.4.2: + dev: false + engines: + '0': node + '1': rhino + resolution: + integrity: sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4= /lodash/4.17.14: dev: false resolution: @@ -5633,18 +5727,18 @@ packages: node: '>=6.0' resolution: integrity: sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ== - /log4js/4.5.0: + /log4js/4.5.1: dependencies: date-format: 2.0.0 debug: 4.1.1 flatted: 2.0.1 rfdc: 1.1.4 - streamroller: 1.0.5 + streamroller: 1.0.6 dev: false engines: node: '>=6.0' resolution: - integrity: sha512-mYtGcbmu//OprhT7prJM2erY9nPXM2TMLM/mBLPo4FojntEZz/V34d06SVBXeQ6EsryMkLJhHuXCWCQNoPW8hQ== + integrity: sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw== /loglevel/1.6.3: dev: false engines: @@ -6920,6 +7014,12 @@ packages: dev: false resolution: integrity: sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + /picomatch/2.0.7: + dev: false + engines: + node: '>=8' + resolution: + integrity: sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA== /pidtree/0.3.0: dev: false engines: @@ -7314,6 +7414,14 @@ packages: node: '>=0.10' resolution: integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + /readdirp/3.1.1: + dependencies: + picomatch: 2.0.7 + dev: false + engines: + node: '>= 8' + resolution: + integrity: sha512-XXdSXZrQuvqoETj50+JAitxz1UPdt5dupjT6T5nVB+WvjMv2XKYj+s7hPeAVCXvmJrL36O4YYyWlIC3an2ePiQ== /rechoir/0.6.2: dependencies: resolve: 1.11.1 @@ -7639,13 +7747,13 @@ packages: dev: false resolution: integrity: sha512-ODeZXhTxpD48sfcYLAFc1BGrsXKDj7o1CSNH3uYbdK3o0NxyMmaQPTNgW+ko+am92DLC8QSTe4kyxTuEkI5S5w== - /rollup-plugin-commonjs/10.0.1_rollup@1.16.7: + /rollup-plugin-commonjs/10.0.1_rollup@1.17.0: dependencies: estree-walker: 0.6.1 is-reference: 1.1.3 magic-string: 0.25.3 resolve: 1.11.1 - rollup: 1.16.7 + rollup: 1.17.0 rollup-pluginutils: 2.8.1 dev: false peerDependencies: @@ -7683,13 +7791,13 @@ packages: dev: false resolution: integrity: sha512-xRkB+W/m1KLIzPUmG0ofvR+CPNcvuCuNdjVBVS7ALKSxr3EDhnzNceGkGi1m8MToSli13AzKFYH4ie9w3I5L3g== - /rollup-plugin-node-resolve/5.2.0_rollup@1.16.7: + /rollup-plugin-node-resolve/5.2.0_rollup@1.17.0: dependencies: '@types/resolve': 0.0.8 builtin-modules: 3.1.0 is-module: 1.0.0 resolve: 1.11.1 - rollup: 1.16.7 + rollup: 1.17.0 rollup-pluginutils: 2.8.1 dev: false peerDependencies: @@ -7711,9 +7819,9 @@ packages: dev: false resolution: integrity: sha512-rZqFD43y4U9nSqVq3iyWBiDwmBQJY8Txi04yI9jTKD3xcl7CbFjh1qRpQshUB3sONLubDzm7vJiwB+1MEGv67w== - /rollup-plugin-sourcemaps/0.4.2_rollup@1.16.7: + /rollup-plugin-sourcemaps/0.4.2_rollup@1.17.0: dependencies: - rollup: 1.16.7 + rollup: 1.17.0 rollup-pluginutils: 2.8.1 source-map-resolve: 0.5.2 dev: false @@ -7724,11 +7832,11 @@ packages: rollup: '>=0.31.2' resolution: integrity: sha1-YhJaqUCHqt97g+9N+vYptHMTXoc= - /rollup-plugin-terser/5.1.1_rollup@1.16.7: + /rollup-plugin-terser/5.1.1_rollup@1.17.0: dependencies: '@babel/code-frame': 7.0.0 jest-worker: 24.6.0 - rollup: 1.16.7 + rollup: 1.17.0 rollup-pluginutils: 2.8.1 serialize-javascript: 1.7.0 terser: 4.1.2 @@ -7737,11 +7845,11 @@ packages: rollup: '>=0.66.0 <2' resolution: integrity: sha512-McIMCDEY8EU6Y839C09UopeRR56wXHGdvKKjlfiZG/GrP6wvZQ62u2ko/Xh1MNH2M9WDL+obAAHySljIZYCuPQ== - /rollup-plugin-uglify/6.0.2_rollup@1.16.7: + /rollup-plugin-uglify/6.0.2_rollup@1.17.0: dependencies: '@babel/code-frame': 7.0.0 jest-worker: 24.6.0 - rollup: 1.16.7 + rollup: 1.17.0 serialize-javascript: 1.7.0 uglify-js: 3.6.0 dev: false @@ -7749,12 +7857,12 @@ packages: rollup: '>=0.66.0 <2' resolution: integrity: sha512-qwz2Tryspn5QGtPUowq5oumKSxANKdrnfz7C0jm4lKxvRDsNe/hSGsB9FntUul7UeC4TsZEWKErVgE1qWSO0gw== - /rollup-plugin-visualizer/2.4.4_rollup@1.16.7: + /rollup-plugin-visualizer/2.4.4_rollup@1.17.0: dependencies: mkdirp: 0.5.1 open: 6.4.0 pupa: 2.0.0 - rollup: 1.16.7 + rollup: 1.17.0 source-map: 0.7.3 dev: false engines: @@ -7769,15 +7877,15 @@ packages: dev: false resolution: integrity: sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg== - /rollup/1.16.7: + /rollup/1.17.0: dependencies: '@types/estree': 0.0.39 - '@types/node': 12.6.2 + '@types/node': 12.6.3 acorn: 6.2.0 dev: false hasBin: true resolution: - integrity: sha512-P3GVcbVSLLjHWFLKGerYRe3Q/yggRXmTZFx/4WZf4wzGwO6hAg5jyMAFMQKc0dts8rFID4BQngfoz6yQbI7iMQ== + integrity: sha512-k/j1m0NIsI4SYgCJR4MWPstGJOWfJyd6gycKoMhyoKPVXxm+L49XtbUwZyFsrSU2YXsOkM4u1ll9CS/ZgJBUpw== /run-async/2.3.0: dependencies: is-promise: 2.1.0 @@ -7828,9 +7936,9 @@ packages: integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== /schema-utils/1.0.0: dependencies: - ajv: 6.10.1 - ajv-errors: 1.0.1_ajv@6.10.1 - ajv-keywords: 3.4.1_ajv@6.10.1 + ajv: 6.10.2 + ajv-errors: 1.0.1_ajv@6.10.2 + ajv-keywords: 3.4.1_ajv@6.10.2 dev: false engines: node: '>= 4' @@ -8295,9 +8403,9 @@ packages: node: '>=0.12.0' resolution: integrity: sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ== - /streamroller/1.0.5: + /streamroller/1.0.6: dependencies: - async: 2.6.2 + async: 2.6.3 date-format: 2.0.0 debug: 3.2.6 fs-extra: 7.0.1 @@ -8306,7 +8414,7 @@ packages: engines: node: '>=6.0' resolution: - integrity: sha512-iGVaMcyF5PcUY0cPbW3xFQUXnr9O4RZXNBBjhuLZgrjLO4XCLLGfx4T2sGqygSeylUjwgWRsnNbT9aV0Zb8AYw== + integrity: sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg== /strict-uri-encode/1.1.0: dev: false engines: @@ -8480,7 +8588,7 @@ packages: integrity: sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg= /table/5.4.1: dependencies: - ajv: 6.10.1 + ajv: 6.10.2 lodash: 4.17.14 slice-ansi: 2.1.0 string-width: 3.1.0 @@ -8653,6 +8761,14 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + /to-regex-range/5.0.1: + dependencies: + is-number: 7.0.0 + dev: false + engines: + node: '>=8.0' + resolution: + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== /to-regex/3.0.2: dependencies: define-property: 2.0.2 @@ -9172,7 +9288,7 @@ packages: dev: false resolution: integrity: sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== - /webpack-cli/3.3.5_webpack@4.35.3: + /webpack-cli/3.3.6_webpack@4.35.3: dependencies: chalk: 2.4.2 cross-spawn: 6.0.5 @@ -9193,7 +9309,7 @@ packages: peerDependencies: webpack: 4.x.x resolution: - integrity: sha512-w0j/s42c5UhchwTmV/45MLQnTVwRoaUTu9fM5LuyOd/8lFoCNCELDogFoecx5NzRUndO0yD/gF2b02XKMnmAWQ== + integrity: sha512-0vEa83M7kJtxK/jUhlpZ27WHIOndz5mghWL2O53kiDoA9DIxSKnfqB92LoqEn77cT4f3H2cZm1BMEat/6AZz3A== /webpack-dev-middleware/3.7.0_webpack@4.35.3: dependencies: memory-fs: 0.4.1 @@ -9231,8 +9347,8 @@ packages: '@webassemblyjs/wasm-edit': 1.8.5 '@webassemblyjs/wasm-parser': 1.8.5 acorn: 6.2.0 - ajv: 6.10.1 - ajv-keywords: 3.4.1_ajv@6.10.1 + ajv: 6.10.2 + ajv-keywords: 3.4.1_ajv@6.10.2 chrome-trace-event: 1.0.2 enhanced-resolve: 4.1.0 eslint-scope: 4.0.3 @@ -9493,13 +9609,13 @@ packages: dev: false resolution: integrity: sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= - /yarn/1.16.0: + /yarn/1.17.3: dev: false engines: node: '>=4.0.0' hasBin: true resolution: - integrity: sha512-cfemyGlnWKA1zopUUgebTPf8C4WkPIZ+TJmklwcEAJ4u6oWPtJeAzrsamaGGh/+b1XWe8W51yzAImC4AWbWR1g== + integrity: sha512-CgA8o7nRZaQvmeF/WBx2FC7f9W/0X59T2IaLYqgMo6637wfp5mMEsM3YXoJtKUspnpmDJKl/gGFhnqS+sON7hA== /yauzl/2.4.1: dependencies: fd-slicer: 1.0.1 @@ -9535,11 +9651,11 @@ packages: integrity: sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw== 'file:projects/abort-controller.tgz': dependencies: - '@microsoft/api-extractor': 7.3.1 + '@microsoft/api-extractor': 7.3.2 '@types/mocha': 5.2.7 '@types/node': 8.10.50 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 cross-env: 5.2.0 delay: 4.3.0 @@ -9549,16 +9665,16 @@ packages: eslint-plugin-no-null: 1.0.2_eslint@5.16.0 eslint-plugin-no-only-tests: 2.3.1 eslint-plugin-promise: 4.2.1 - karma: 4.1.0 + karma: 4.2.0 karma-chrome-launcher: 2.2.0 karma-coverage: 1.1.2 - karma-edge-launcher: 0.4.2_karma@4.1.0 + karma-edge-launcher: 0.4.2_karma@4.2.0 karma-env-preprocessor: 0.1.1 karma-firefox-launcher: 1.1.0 - karma-ie-launcher: 1.0.0_karma@4.1.0 - karma-junit-reporter: 1.2.0_karma@4.1.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.1.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 karma-remap-coverage: 0.1.5_karma-coverage@1.1.2 mocha: 5.2.0 mocha-junit-reporter: 1.23.0_mocha@5.2.0 @@ -9566,19 +9682,19 @@ packages: nyc: 14.1.1 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.16.7 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 + rollup: 1.17.0 + rollup-plugin-commonjs: 10.0.1_rollup@1.17.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 + rollup-plugin-node-resolve: 5.2.0_rollup@1.17.0 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 - rollup-plugin-uglify: 6.0.2_rollup@1.16.7 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.17.0 + rollup-plugin-terser: 5.1.1_rollup@1.17.0 tslib: 1.10.0 typescript: 3.5.3 dev: false name: '@rush-temp/abort-controller' resolution: - integrity: sha512-QzyWDAVpqT9O978eRMOueC1BnAEvglhzhy7BxxR21arkIKwj8ivcYwLVdQZDkZipTky/O4MZlO3ZnDGi89QlZQ== + integrity: sha512-2+IDAPkc8w6F7v+Qtv+0QlKup7BbSj9/FJRqus2Fv6lv4Qwfhhl1dII2Ttv0Y3D1jF0IlqOecuzEef9zxLc/jA== tarball: 'file:projects/abort-controller.tgz' version: 0.0.0 'file:projects/core-amqp.tgz': @@ -9593,10 +9709,10 @@ packages: '@types/mocha': 5.2.7 '@types/node': 8.10.50 '@types/sinon': 5.0.7 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 - async-lock: 1.2.0 + async-lock: 1.2.1 buffer: 5.2.1 chai: 4.2.0 chai-as-promised: 7.1.1_chai@4.2.0 @@ -9612,7 +9728,7 @@ packages: events: 3.0.0 is-buffer: 2.0.3 jssha: 2.3.1 - karma: 4.1.0 + karma: 4.2.0 karma-chrome-launcher: 2.2.0 karma-mocha: 1.3.0 mocha: 5.2.0 @@ -9625,17 +9741,17 @@ packages: rhea: 1.0.8 rhea-promise: 0.1.15 rimraf: 2.6.3 - rollup: 1.16.7 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 + rollup: 1.17.0 + rollup-plugin-commonjs: 10.0.1_rollup@1.17.0 rollup-plugin-inject: 3.0.0 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.16.7 + rollup-plugin-node-resolve: 5.2.0_rollup@1.17.0 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 - rollup-plugin-uglify: 6.0.2_rollup@1.16.7 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.17.0 + rollup-plugin-terser: 5.1.1_rollup@1.17.0 sinon: 7.3.2 stream-browserify: 2.0.2 ts-node: 7.0.1 @@ -9647,7 +9763,7 @@ packages: dev: false name: '@rush-temp/core-amqp' resolution: - integrity: sha512-Jz3QXVrDs186fKzZbn1zBpEPrOrnBzkbg9YdZtgRpVomMCNkzXuAS3xiqWNTUeCtfrJmencleLHXjMOiAqwDZA== + integrity: sha512-pH12zXk5V3XB+ZgCEfAwPIhOySH/1TOgwMRcPRGpjWewRNJNYZNL4dX/yu4Gq+ms8XKgK2u+Yl8lp7N/7CYmWw== tarball: 'file:projects/core-amqp.tgz' version: 0.0.0 'file:projects/core-arm.tgz': @@ -9663,10 +9779,10 @@ packages: nyc: 14.1.1 opn-cli: 4.1.0 rimraf: 2.6.3 - rollup: 1.16.7 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 - rollup-plugin-visualizer: 2.4.4_rollup@1.16.7 + rollup: 1.17.0 + rollup-plugin-node-resolve: 5.2.0_rollup@1.17.0 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.17.0 + rollup-plugin-visualizer: 2.4.4_rollup@1.17.0 shx: 0.3.2 ts-loader: 5.4.5_typescript@3.5.3 ts-node: 7.0.1 @@ -9674,7 +9790,7 @@ packages: tslint: 5.18.0_typescript@3.5.3 typescript: 3.5.3 uglify-js: 3.6.0 - yarn: 1.16.0 + yarn: 1.17.3 dev: false name: '@rush-temp/core-arm' resolution: @@ -9684,8 +9800,8 @@ packages: 'file:projects/core-asynciterator-polyfill.tgz': dependencies: '@types/node': 8.10.50 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 eslint: 5.16.0 eslint-config-prettier: 4.3.0_eslint@5.16.0 eslint-detailed-reporter: 0.8.0_eslint@5.16.0 @@ -9702,11 +9818,11 @@ packages: version: 0.0.0 'file:projects/core-auth.tgz': dependencies: - '@microsoft/api-extractor': 7.3.1 + '@microsoft/api-extractor': 7.3.2 '@types/mocha': 5.2.7 '@types/node': 8.10.50 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 cross-env: 5.2.0 eslint: 5.16.0 @@ -9721,22 +9837,22 @@ packages: mocha-multi: 1.1.0_mocha@5.2.0 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.16.7 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 + rollup: 1.17.0 + rollup-plugin-commonjs: 10.0.1_rollup@1.17.0 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 + rollup-plugin-node-resolve: 5.2.0_rollup@1.17.0 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 - rollup-plugin-uglify: 6.0.2_rollup@1.16.7 - rollup-plugin-visualizer: 2.4.4_rollup@1.16.7 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.17.0 + rollup-plugin-terser: 5.1.1_rollup@1.17.0 + rollup-plugin-visualizer: 2.4.4_rollup@1.17.0 tslib: 1.10.0 typescript: 3.5.3 util: 0.11.1 dev: false name: '@rush-temp/core-auth' resolution: - integrity: sha512-akV7r5ANBOjNmBbw1NvDSYcbBy/J7I1hJ6QFDYA1wj2z6sU7lb1FJI/lDaobNjy7AvzZ+BsHy9Yj3plqmvlGaA== + integrity: sha512-MhDSymfCLIHeHlYVi0KQ4oXsKUrRGUrEtwNYEbB8nq7BkXZRsiuEyv8LuffmWh+ipeHLWPhMnEW94EoRIqSiyw== tarball: 'file:projects/core-auth.tgz' version: 0.0.0 'file:projects/core-http.tgz': @@ -9744,7 +9860,7 @@ packages: '@azure/logger-js': 1.3.2 '@types/chai': 4.1.7 '@types/express': 4.17.0 - '@types/form-data': 2.2.1 + '@types/form-data': 2.5.0 '@types/glob': 7.1.1 '@types/karma': 3.0.3 '@types/mocha': 5.2.7 @@ -9754,11 +9870,11 @@ packages: '@types/tough-cookie': 2.3.5 '@types/tunnel': 0.0.0 '@types/uuid': 3.4.5 - '@types/webpack': 4.4.34 + '@types/webpack': 4.4.35 '@types/webpack-dev-middleware': 2.0.3 '@types/xml2js': 0.4.4 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 abortcontroller-polyfill: 1.3.0 axios: 0.19.0 axios-mock-adapter: 1.17.0_axios@0.19.0 @@ -9772,11 +9888,11 @@ packages: express: 4.17.1 form-data: 2.5.0 glob: 7.1.4 - karma: 4.1.0 - karma-chai: 0.1.0_chai@4.2.0+karma@4.1.0 + karma: 4.2.0 + karma-chai: 0.1.0_chai@4.2.0+karma@4.2.0 karma-chrome-launcher: 2.2.0 karma-mocha: 1.3.0 - karma-rollup-preprocessor: 7.0.0_rollup@1.16.7 + karma-rollup-preprocessor: 7.0.0_rollup@1.17.0 karma-sourcemap-loader: 0.3.7 karma-typescript-es6-transform: 4.1.1 karma-webpack: 4.0.2_webpack@4.35.3 @@ -9790,15 +9906,15 @@ packages: process: 0.11.10 puppeteer: 1.18.1 rimraf: 2.6.3 - rollup: 1.16.7 + rollup: 1.17.0 rollup-plugin-alias: 1.5.2 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 + rollup-plugin-commonjs: 10.0.1_rollup@1.17.0 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 + rollup-plugin-node-resolve: 5.2.0_rollup@1.17.0 rollup-plugin-resolve: 0.0.1-predev.1 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 - rollup-plugin-visualizer: 2.4.4_rollup@1.16.7 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.17.0 + rollup-plugin-visualizer: 2.4.4_rollup@1.17.0 semver: 5.7.0 shx: 0.3.2 sinon: 7.3.2 @@ -9811,11 +9927,11 @@ packages: uglify-js: 3.6.0 uuid: 3.3.2 webpack: 4.35.3_webpack@4.35.3 - webpack-cli: 3.3.5_webpack@4.35.3 + webpack-cli: 3.3.6_webpack@4.35.3 webpack-dev-middleware: 3.7.0_webpack@4.35.3 xhr-mock: 2.4.1 xml2js: 0.4.19 - yarn: 1.16.0 + yarn: 1.17.3 dev: false name: '@rush-temp/core-http' resolution: @@ -9825,8 +9941,8 @@ packages: 'file:projects/core-paging.tgz': dependencies: '@types/node': 8.10.50 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 eslint: 5.16.0 eslint-config-prettier: 4.3.0_eslint@5.16.0 eslint-detailed-reporter: 0.8.0_eslint@5.16.0 @@ -9850,8 +9966,8 @@ packages: '@types/sinon': 5.0.7 '@types/tunnel': 0.0.0 '@types/underscore': 1.9.2 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 binary-search-bounds: 2.0.3 create-hmac: 1.1.7 eslint: 5.16.0 @@ -9876,7 +9992,7 @@ packages: tunnel: 0.0.6 typescript: 3.5.3 webpack: 4.35.3_webpack@4.35.3 - webpack-cli: 3.3.5_webpack@4.35.3 + webpack-cli: 3.3.6_webpack@4.35.3 dev: false name: '@rush-temp/cosmos' resolution: @@ -9885,7 +10001,7 @@ packages: version: 0.0.0 'file:projects/event-hubs.tgz': dependencies: - '@microsoft/api-extractor': 7.3.1 + '@microsoft/api-extractor': 7.3.2 '@types/async-lock': 1.1.1 '@types/chai': 4.1.7 '@types/chai-as-promised': 7.1.0 @@ -9897,10 +10013,10 @@ packages: '@types/node': 8.10.50 '@types/uuid': 3.4.5 '@types/ws': 6.0.1 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 - async-lock: 1.2.0 + async-lock: 1.2.1 chai: 4.2.0 chai-as-promised: 7.1.1_chai@4.2.0 chai-string: 1.5.0_chai@4.2.0 @@ -9916,16 +10032,16 @@ packages: https-proxy-agent: 2.2.2 is-buffer: 2.0.3 jssha: 2.3.1 - karma: 4.1.0 + karma: 4.2.0 karma-chrome-launcher: 2.2.0 karma-coverage: 1.1.2 - karma-edge-launcher: 0.4.2_karma@4.1.0 + karma-edge-launcher: 0.4.2_karma@4.2.0 karma-env-preprocessor: 0.1.1 karma-firefox-launcher: 1.1.0 - karma-ie-launcher: 1.0.0_karma@4.1.0 - karma-junit-reporter: 1.2.0_karma@4.1.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.1.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 karma-remap-coverage: 0.1.5_karma-coverage@1.1.2 mocha: 5.2.0 mocha-junit-reporter: 1.23.0_mocha@5.2.0 @@ -9935,16 +10051,16 @@ packages: puppeteer: 1.18.1 rhea-promise: 0.1.15 rimraf: 2.6.3 - rollup: 1.16.7 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 + rollup: 1.17.0 + rollup-plugin-commonjs: 10.0.1_rollup@1.17.0 rollup-plugin-inject: 3.0.0 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 + rollup-plugin-node-resolve: 5.2.0_rollup@1.17.0 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 - rollup-plugin-uglify: 6.0.2_rollup@1.16.7 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.17.0 + rollup-plugin-terser: 5.1.1_rollup@1.17.0 ts-mocha: 6.0.0_mocha@5.2.0 ts-node: 7.0.1 tslib: 1.10.0 @@ -9954,13 +10070,13 @@ packages: dev: false name: '@rush-temp/event-hubs' resolution: - integrity: sha512-4SXlBNNpio9rKF27gt7/ROBdlKbdDYx5i0Vx2M9yYumMcG+kkGTBb/k80ef+RKx1FuvRCeEsZbsVlWFMYvDxWA== + integrity: sha512-E0udJXYTcWrpWxUM38hWHnk35qsmXDG5ywVW4j492xsASvwyE/lBUl0vXZ/IT+2w3GHnEQiydeNxysUw6EflQg== tarball: 'file:projects/event-hubs.tgz' version: 0.0.0 'file:projects/event-processor-host.tgz': dependencies: '@azure/event-hubs': 1.0.8 - '@microsoft/api-extractor': 7.3.1 + '@microsoft/api-extractor': 7.3.2 '@types/async-lock': 1.1.1 '@types/chai': 4.1.7 '@types/chai-as-promised': 7.1.0 @@ -9970,9 +10086,9 @@ packages: '@types/mocha': 5.2.7 '@types/node': 8.10.50 '@types/uuid': 3.4.5 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 - async-lock: 1.2.0 + '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 + async-lock: 1.2.1 azure-storage: 2.10.3 chai: 4.2.0 chai-as-promised: 7.1.1_chai@4.2.0 @@ -9994,14 +10110,14 @@ packages: path-browserify: 1.0.0 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.16.7 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 + rollup: 1.17.0 + rollup-plugin-commonjs: 10.0.1_rollup@1.17.0 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 + rollup-plugin-node-resolve: 5.2.0_rollup@1.17.0 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 - rollup-plugin-uglify: 6.0.2_rollup@1.16.7 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.17.0 + rollup-plugin-uglify: 6.0.2_rollup@1.17.0 ts-node: 7.0.1 tslib: 1.10.0 typescript: 3.5.3 @@ -10019,23 +10135,23 @@ packages: '@types/node': 8.10.50 '@types/qs': 6.5.3 '@types/uuid': 3.4.5 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 cross-env: 5.2.0 eslint: 5.16.0 events: 3.0.0 inherits: 2.0.4 jws: 3.2.2 - karma: 4.1.0 + karma: 4.2.0 karma-chrome-launcher: 2.2.0 karma-coverage: 1.1.2 karma-env-preprocessor: 0.1.1 - karma-json-preprocessor: 0.3.3_karma@4.1.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.1.0 + karma-junit-reporter: 1.2.0_karma@4.2.0 karma-mocha: 1.3.0 - karma-mocha-reporter: 2.2.5_karma@4.1.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 karma-remap-coverage: 0.1.5_karma-coverage@1.1.2 mocha: 5.2.0 mocha-junit-reporter: 1.23.0_mocha@5.2.0 @@ -10044,15 +10160,15 @@ packages: puppeteer: 1.18.1 qs: 6.7.0 rimraf: 2.6.3 - rollup: 1.16.7 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 + rollup: 1.17.0 + rollup-plugin-commonjs: 10.0.1_rollup@1.17.0 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 + rollup-plugin-node-resolve: 5.2.0_rollup@1.17.0 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 - rollup-plugin-terser: 5.1.1_rollup@1.16.7 - rollup-plugin-visualizer: 2.4.4_rollup@1.16.7 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.17.0 + rollup-plugin-terser: 5.1.1_rollup@1.17.0 + rollup-plugin-visualizer: 2.4.4_rollup@1.17.0 tslib: 1.10.0 typescript: 3.5.3 util: 0.11.1 @@ -10065,11 +10181,11 @@ packages: version: 0.0.0 'file:projects/keyvault-certificates.tgz': dependencies: - '@microsoft/api-extractor': 7.3.1 + '@microsoft/api-extractor': 7.3.2 '@types/chai': 4.1.7 '@types/node': 8.10.50 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 chai: 4.2.0 eslint: 5.16.0 eslint-config-prettier: 4.3.0_eslint@5.16.0 @@ -10079,9 +10195,9 @@ packages: eslint-plugin-promise: 4.2.1 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.16.7 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 + rollup: 1.17.0 + rollup-plugin-commonjs: 10.0.1_rollup@1.17.0 + rollup-plugin-node-resolve: 5.2.0_rollup@1.17.0 tslib: 1.10.0 typescript: 3.5.3 uglify-js: 3.6.0 @@ -10094,15 +10210,15 @@ packages: version: 0.0.0 'file:projects/keyvault-keys.tgz': dependencies: - '@microsoft/api-extractor': 7.3.1 + '@microsoft/api-extractor': 7.3.2 '@types/chai': 4.1.7 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 '@types/nock': 10.0.3 '@types/node': 8.10.50 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 chai: 4.2.0 cross-env: 5.2.0 dotenv: 7.0.0 @@ -10117,9 +10233,9 @@ packages: nock: 10.0.6 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.16.7 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 + rollup: 1.17.0 + rollup-plugin-commonjs: 10.0.1_rollup@1.17.0 + rollup-plugin-node-resolve: 5.2.0_rollup@1.17.0 ts-mocha: 6.0.0_mocha@5.2.0 tslib: 1.10.0 typescript: 3.5.3 @@ -10135,15 +10251,15 @@ packages: dependencies: '@azure/ms-rest-azure-js': 1.3.8 '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.3.1 + '@microsoft/api-extractor': 7.3.2 '@types/chai': 4.1.7 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 '@types/nock': 10.0.3 '@types/node': 8.10.50 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 chai: 4.2.0 cross-env: 5.2.0 dotenv: 7.0.0 @@ -10158,9 +10274,9 @@ packages: nock: 10.0.6 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.16.7 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 + rollup: 1.17.0 + rollup-plugin-commonjs: 10.0.1_rollup@1.17.0 + rollup-plugin-node-resolve: 5.2.0_rollup@1.17.0 ts-mocha: 6.0.0_mocha@5.2.0 tslib: 1.10.0 typescript: 3.5.3 @@ -10177,7 +10293,7 @@ packages: '@azure/amqp-common': 1.0.0-preview.6_rhea-promise@0.1.15 '@azure/arm-servicebus': 0.1.0 '@azure/ms-rest-nodeauth': 0.9.3 - '@microsoft/api-extractor': 7.3.1 + '@microsoft/api-extractor': 7.3.2 '@types/async-lock': 1.1.1 '@types/chai': 4.1.7 '@types/chai-as-promised': 7.1.0 @@ -10188,8 +10304,8 @@ packages: '@types/mocha': 5.2.7 '@types/node': 8.10.50 '@types/ws': 6.0.1 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 buffer: 5.2.1 chai: 4.2.0 @@ -10206,16 +10322,16 @@ packages: eslint-plugin-promise: 4.2.1 https-proxy-agent: 2.2.2 is-buffer: 2.0.3 - karma: 4.1.0 + karma: 4.2.0 karma-chrome-launcher: 2.2.0 karma-coverage: 1.1.2 - karma-edge-launcher: 0.4.2_karma@4.1.0 + karma-edge-launcher: 0.4.2_karma@4.2.0 karma-env-preprocessor: 0.1.1 karma-firefox-launcher: 1.1.0 - karma-ie-launcher: 1.0.0_karma@4.1.0 - karma-junit-reporter: 1.2.0_karma@4.1.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.1.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 karma-remap-coverage: 0.1.5_karma-coverage@1.1.2 long: 4.0.0 mocha: 5.2.0 @@ -10230,16 +10346,16 @@ packages: rhea: 1.0.8 rhea-promise: 0.1.15 rimraf: 2.6.3 - rollup: 1.16.7 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 + rollup: 1.17.0 + rollup-plugin-commonjs: 10.0.1_rollup@1.17.0 rollup-plugin-inject: 3.0.0 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 + rollup-plugin-node-resolve: 5.2.0_rollup@1.17.0 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 - rollup-plugin-terser: 5.1.1_rollup@1.16.7 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.17.0 + rollup-plugin-terser: 5.1.1_rollup@1.17.0 ts-node: 7.0.1 tslib: 1.10.0 typescript: 3.5.3 @@ -10253,7 +10369,7 @@ packages: 'file:projects/storage-blob.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.3.1 + '@microsoft/api-extractor': 7.3.2 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 @@ -10261,8 +10377,8 @@ packages: '@types/nock': 10.0.3 '@types/node': 8.10.50 '@types/query-string': 6.2.0 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 cross-env: 5.2.0 dotenv: 7.0.0 @@ -10278,18 +10394,18 @@ packages: gulp: 4.0.2 gulp-zip: 4.2.0 inherits: 2.0.4 - karma: 4.1.0 + karma: 4.2.0 karma-chrome-launcher: 2.2.0 karma-coverage: 1.1.2 - karma-edge-launcher: 0.4.2_karma@4.1.0 + karma-edge-launcher: 0.4.2_karma@4.2.0 karma-env-preprocessor: 0.1.1 karma-firefox-launcher: 1.1.0 - karma-ie-launcher: 1.0.0_karma@4.1.0 - karma-json-preprocessor: 0.3.3_karma@4.1.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.1.0 + karma-junit-reporter: 1.2.0_karma@4.2.0 karma-mocha: 1.3.0 - karma-mocha-reporter: 2.2.5_karma@4.1.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 karma-remap-coverage: 0.1.5_karma-coverage@1.1.2 mocha: 5.2.0 mocha-junit-reporter: 1.23.0_mocha@5.2.0 @@ -10301,15 +10417,15 @@ packages: puppeteer: 1.18.1 query-string: 5.1.1 rimraf: 2.6.3 - rollup: 1.16.7 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 + rollup: 1.17.0 + rollup-plugin-commonjs: 10.0.1_rollup@1.17.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 + rollup-plugin-node-resolve: 5.2.0_rollup@1.17.0 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 - rollup-plugin-uglify: 6.0.2_rollup@1.16.7 - rollup-plugin-visualizer: 2.4.4_rollup@1.16.7 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.17.0 + rollup-plugin-terser: 5.1.1_rollup@1.17.0 + rollup-plugin-visualizer: 2.4.4_rollup@1.17.0 source-map-support: 0.5.12 ts-node: 7.0.1 tslib: 1.10.0 @@ -10318,13 +10434,13 @@ packages: dev: false name: '@rush-temp/storage-blob' resolution: - integrity: sha512-GN9dJLmBjN9/yKq4HFq2nJ9sTh+F7bFEhsbZXOreWSYotiyVBo9HbqxjCj9GHlWcyYcQ3JtXt2CEggqmZgV/JA== + integrity: sha512-4105iXB3hoaFSq5UdvNfztT1BgIPpS9xe/jnH5QPvhO5vxg7S0zIh7RuKqQE9BjpVpbNYU03ANCVnaymnDmZOQ== tarball: 'file:projects/storage-blob.tgz' version: 0.0.0 'file:projects/storage-file.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.3.1 + '@microsoft/api-extractor': 7.3.2 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 @@ -10332,8 +10448,8 @@ packages: '@types/nock': 10.0.3 '@types/node': 8.10.50 '@types/query-string': 6.2.0 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 cross-env: 5.2.0 dotenv: 7.0.0 @@ -10349,18 +10465,18 @@ packages: gulp: 4.0.2 gulp-zip: 4.2.0 inherits: 2.0.4 - karma: 4.1.0 + karma: 4.2.0 karma-chrome-launcher: 2.2.0 karma-coverage: 1.1.2 - karma-edge-launcher: 0.4.2_karma@4.1.0 + karma-edge-launcher: 0.4.2_karma@4.2.0 karma-env-preprocessor: 0.1.1 karma-firefox-launcher: 1.1.0 - karma-ie-launcher: 1.0.0_karma@4.1.0 - karma-json-preprocessor: 0.3.3_karma@4.1.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.1.0 + karma-junit-reporter: 1.2.0_karma@4.2.0 karma-mocha: 1.3.0 - karma-mocha-reporter: 2.2.5_karma@4.1.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 karma-remap-coverage: 0.1.5_karma-coverage@1.1.2 mocha: 5.2.0 mocha-junit-reporter: 1.23.0_mocha@5.2.0 @@ -10372,15 +10488,15 @@ packages: puppeteer: 1.18.1 query-string: 5.1.1 rimraf: 2.6.3 - rollup: 1.16.7 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 + rollup: 1.17.0 + rollup-plugin-commonjs: 10.0.1_rollup@1.17.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 + rollup-plugin-node-resolve: 5.2.0_rollup@1.17.0 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 - rollup-plugin-uglify: 6.0.2_rollup@1.16.7 - rollup-plugin-visualizer: 2.4.4_rollup@1.16.7 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.17.0 + rollup-plugin-terser: 5.1.1_rollup@1.17.0 + rollup-plugin-visualizer: 2.4.4_rollup@1.17.0 source-map-support: 0.5.12 ts-node: 7.0.1 tslib: 1.10.0 @@ -10389,13 +10505,13 @@ packages: dev: false name: '@rush-temp/storage-file' resolution: - integrity: sha512-IRqfOeXpG7XSL5GrT4zL3mvy2ZzCeCICSmo3Tj6V6h9eEHHnWwqcfd7FZR1sYVvAn+nN4NhFph3ptdrSW1hSmg== + integrity: sha512-juOCmmDWgZhQNzudPSlmhETCWJ2pXvezQg1oaVg+MNtkkz8uD2q03kXb7yfYOEM+w9cegsJZUp3jCXt61VkPtQ== tarball: 'file:projects/storage-file.tgz' version: 0.0.0 'file:projects/storage-queue.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.3.1 + '@microsoft/api-extractor': 7.3.2 '@types/dotenv': 6.1.1 '@types/fs-extra': 7.0.0 '@types/mocha': 5.2.7 @@ -10403,8 +10519,8 @@ packages: '@types/nock': 10.0.3 '@types/node': 8.10.50 '@types/query-string': 6.2.0 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 cross-env: 5.2.0 dotenv: 7.0.0 @@ -10419,18 +10535,18 @@ packages: gulp: 4.0.2 gulp-zip: 4.2.0 inherits: 2.0.4 - karma: 4.1.0 + karma: 4.2.0 karma-chrome-launcher: 2.2.0 karma-coverage: 1.1.2 - karma-edge-launcher: 0.4.2_karma@4.1.0 + karma-edge-launcher: 0.4.2_karma@4.2.0 karma-env-preprocessor: 0.1.1 karma-firefox-launcher: 1.1.0 - karma-ie-launcher: 1.0.0_karma@4.1.0 - karma-json-preprocessor: 0.3.3_karma@4.1.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.1.0 + karma-junit-reporter: 1.2.0_karma@4.2.0 karma-mocha: 1.3.0 - karma-mocha-reporter: 2.2.5_karma@4.1.0 + karma-mocha-reporter: 2.2.5_karma@4.2.0 karma-remap-coverage: 0.1.5_karma-coverage@1.1.2 mocha: 5.2.0 mocha-junit-reporter: 1.23.0_mocha@5.2.0 @@ -10442,15 +10558,15 @@ packages: puppeteer: 1.18.1 query-string: 5.1.1 rimraf: 2.6.3 - rollup: 1.16.7 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 + rollup: 1.17.0 + rollup-plugin-commonjs: 10.0.1_rollup@1.17.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 + rollup-plugin-node-resolve: 5.2.0_rollup@1.17.0 rollup-plugin-replace: 2.2.0 rollup-plugin-shim: 1.0.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 - rollup-plugin-uglify: 6.0.2_rollup@1.16.7 - rollup-plugin-visualizer: 2.4.4_rollup@1.16.7 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.17.0 + rollup-plugin-terser: 5.1.1_rollup@1.17.0 + rollup-plugin-visualizer: 2.4.4_rollup@1.17.0 source-map-support: 0.5.12 ts-node: 7.0.1 tslib: 1.10.0 @@ -10459,17 +10575,17 @@ packages: dev: false name: '@rush-temp/storage-queue' resolution: - integrity: sha512-mWuY5OZImZ9GGy7h2otuIgonajJJHiVfWXPqWB5mD/YArcWtFLqw8ozB3ZaRZrE7FQ6C9xR3jpeHwO3jA9jhlw== + integrity: sha512-s5r16h2hU8MIPBfqhtCgY59+GGhaRwA+vdgVyFzzlWvwd3IE3MDSc/GjVHDXFt0bHes3PU3AQQU6el2IURCm2w== tarball: 'file:projects/storage-queue.tgz' version: 0.0.0 'file:projects/template.tgz': dependencies: '@azure/ms-rest-js': 1.8.13 - '@microsoft/api-extractor': 7.3.1 + '@microsoft/api-extractor': 7.3.2 '@types/mocha': 5.2.7 '@types/node': 8.10.50 - '@typescript-eslint/eslint-plugin': 1.11.0_8d1711d609953acbf65aedec42f2b5c5 - '@typescript-eslint/parser': 1.11.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 + '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 cross-env: 5.2.0 eslint: 5.16.0 @@ -10480,27 +10596,38 @@ packages: eslint-plugin-promise: 4.2.1 events: 3.0.0 inherits: 2.0.4 + karma: 4.2.0 + karma-chrome-launcher: 2.2.0 + karma-coverage: 1.1.2 + karma-edge-launcher: 0.4.2_karma@4.2.0 + karma-env-preprocessor: 0.1.1 + karma-firefox-launcher: 1.1.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.2.0 + karma-remap-coverage: 0.1.5_karma-coverage@1.1.2 mocha: 5.2.0 mocha-junit-reporter: 1.23.0_mocha@5.2.0 mocha-multi: 1.1.0_mocha@5.2.0 prettier: 1.18.2 rimraf: 2.6.3 - rollup: 1.16.7 - rollup-plugin-commonjs: 10.0.1_rollup@1.16.7 + rollup: 1.17.0 + rollup-plugin-commonjs: 10.0.1_rollup@1.17.0 rollup-plugin-json: 4.0.0 rollup-plugin-multi-entry: 2.1.0 - rollup-plugin-node-resolve: 5.2.0_rollup@1.16.7 + rollup-plugin-node-resolve: 5.2.0_rollup@1.17.0 rollup-plugin-replace: 2.2.0 - rollup-plugin-sourcemaps: 0.4.2_rollup@1.16.7 - rollup-plugin-uglify: 6.0.2_rollup@1.16.7 - rollup-plugin-visualizer: 2.4.4_rollup@1.16.7 + rollup-plugin-sourcemaps: 0.4.2_rollup@1.17.0 + rollup-plugin-terser: 5.1.1_rollup@1.17.0 + rollup-plugin-visualizer: 2.4.4_rollup@1.17.0 tslib: 1.10.0 typescript: 3.5.3 util: 0.11.1 dev: false name: '@rush-temp/template' resolution: - integrity: sha512-p4x160RdYLlW5VjMpev7fMKCtQoXJ8VFTzHASa7PWeYp41D7G9L7uWUO6PRYysglX5Vm9WuZZpsDmfg+ccVKmQ== + integrity: sha512-Lbng6NWBk6fVPMUAdf3pqeb/y6PrAfaBE8BlVthaVo1FsUn1CnIYdCPJylV3q1WReebpXxvvoh7isVsDNvVZ+Q== tarball: 'file:projects/template.tgz' version: 0.0.0 'file:projects/testhub.tgz': @@ -10509,7 +10636,7 @@ packages: '@types/node': 8.10.50 '@types/uuid': 3.4.5 '@types/yargs': 11.1.2 - async-lock: 1.2.0 + async-lock: 1.2.1 death: 1.1.0 debug: 3.2.6 is-buffer: 2.0.3 From b05ee9cded3478abc15e7621aae4464594d8db32 Mon Sep 17 00:00:00 2001 From: bsiegel <96068+bsiegel@users.noreply.github.com> Date: Mon, 15 Jul 2019 12:59:16 -0700 Subject: [PATCH 280/289] Refactor cosmos integration pipeline (#4255) * Extract common steps * Add integration step to Cosmos CI config * Improve OSName detection in tests archetype * Also publish browser test results in client archetype * Update test naming scheme * Prepare integration archetype for merge with the tests archetype * Replace tests archetype with integration archetype * Add verify agent OS to common.yml * Use the verify_agent_os script to set the OSName * Set shallow clone depth to 20 * Remove the Prepare build step It wasn't adding much value and the fact that other jobs depended on it means that it was adding a lot of queuing time. * Use standard tests template for cosmos * Allow warnings in integration tests too --- common/config/rush/command-line.json | 18 ++-- .../templates/jobs/archetype-sdk-client.yml | 90 +++++-------------- .../jobs/archetype-sdk-integration.yml | 76 ++++++++++++++++ .../templates/jobs/archetype-sdk-tests.yml | 64 ------------- .../templates/jobs/node6-test-sdk-client.yml | 59 ------------ eng/pipelines/templates/steps/common.yml | 25 ++++++ .../steps/cosmos-integration-nightly.yml | 7 ++ .../steps/cosmos-integration-public.yml | 5 ++ .../templates/steps/integration-npm.yml | 30 +++++++ .../templates/steps/integration-rush.yml | 26 ++++++ .../templates/steps/select-packages.yml | 7 +- .../templates/steps/tests-common.yml | 49 ---------- eng/pipelines/templates/variables/globals.yml | 2 + eng/tools/select-packages/index.js | 2 +- sdk/cosmosdb/ci.yml | 13 ++- .../cosmos.test.nightly.emulator.yml | 68 -------------- .../cosmos.test.public.emulator.yml | 66 -------------- sdk/cosmosdb/cosmos/tests.yml | 17 ++++ sdk/eventhub/event-hubs/tests.yml | 20 ++--- sdk/eventhub/event-processor-host/tests.yml | 8 +- sdk/keyvault/keyvault-keys/tests.yml | 2 +- sdk/keyvault/keyvault-secrets/tests.yml | 2 +- sdk/servicebus/service-bus/tests.yml | 6 +- sdk/storage/archetype-sdk-tests-storage.yml | 26 +++--- 24 files changed, 274 insertions(+), 414 deletions(-) create mode 100644 eng/pipelines/templates/jobs/archetype-sdk-integration.yml delete mode 100644 eng/pipelines/templates/jobs/archetype-sdk-tests.yml delete mode 100644 eng/pipelines/templates/jobs/node6-test-sdk-client.yml create mode 100644 eng/pipelines/templates/steps/common.yml create mode 100644 eng/pipelines/templates/steps/cosmos-integration-nightly.yml create mode 100644 eng/pipelines/templates/steps/cosmos-integration-public.yml create mode 100644 eng/pipelines/templates/steps/integration-npm.yml create mode 100644 eng/pipelines/templates/steps/integration-rush.yml delete mode 100644 eng/pipelines/templates/steps/tests-common.yml delete mode 100644 sdk/cosmosdb/cosmos/.azure-pipelines/cosmos.test.nightly.emulator.yml delete mode 100644 sdk/cosmosdb/cosmos/.azure-pipelines/cosmos.test.public.emulator.yml create mode 100644 sdk/cosmosdb/cosmos/tests.yml diff --git a/common/config/rush/command-line.json b/common/config/rush/command-line.json index 4409c37444dd..5b72a3f69c29 100644 --- a/common/config/rush/command-line.json +++ b/common/config/rush/command-line.json @@ -33,7 +33,8 @@ "commandKind": "bulk", "name": "build:test", "summary": "Build the test targets only in projects", - "enableParallelism": true + "enableParallelism": true, + "allowWarningsInSuccessfulBuild": true }, { "commandKind": "bulk", @@ -57,20 +58,23 @@ "commandKind": "bulk", "name": "integration-test:browser", "summary": "Execute browser integration tests defined in projects", - "enableParallelism": true + "enableParallelism": true, + "allowWarningsInSuccessfulBuild": true }, { "commandKind": "bulk", "name": "integration-test:node", "summary": "Execute Node integration tests defined in projects", - "enableParallelism": true + "enableParallelism": true, + "allowWarningsInSuccessfulBuild": true }, { "commandKind": "bulk", "name": "integration-test", "summary": "Execute integration tests defined in projects", "description": "Execute tests which require an actual service instance (live Azure, emulator, etc). Integration tests typically require service endpoints to be specified via environment variables in order to run.", - "enableParallelism": true + "enableParallelism": true, + "allowWarningsInSuccessfulBuild": true }, { "commandKind": "bulk", @@ -113,13 +117,15 @@ "commandKind": "bulk", "name": "unit-test:browser", "summary": "Execute browser unit tests defined in projects", - "enableParallelism": true + "enableParallelism": true, + "allowWarningsInSuccessfulBuild": true }, { "commandKind": "bulk", "name": "unit-test:node", "summary": "Execute Node unit tests defined in projects", - "enableParallelism": true + "enableParallelism": true, + "allowWarningsInSuccessfulBuild": true }, { "commandKind": "bulk", diff --git a/eng/pipelines/templates/jobs/archetype-sdk-client.yml b/eng/pipelines/templates/jobs/archetype-sdk-client.yml index 0f99b5247e6e..15c42ae5e827 100644 --- a/eng/pipelines/templates/jobs/archetype-sdk-client.yml +++ b/eng/pipelines/templates/jobs/archetype-sdk-client.yml @@ -1,10 +1,10 @@ jobs: - - job: Prepare + - job: "Build" variables: - template: ../variables/globals.yml pool: - vmImage: "ubuntu-16.04" + vmImage: "$(OSVmImage)" steps: - script: | @@ -12,41 +12,12 @@ jobs: displayName: 'Tag scheduled builds' condition: and(eq(variables['Build.SourceBranchName'],'master'),eq(variables['Build.Reason'],'Schedule')) - - task: NodeTool@0 - inputs: - versionSpec: "$(NodeVersion)" - displayName: "Install Node.js $(NodeVersion)" - - - script: | - npm install -g npm@6.9.0 - displayName: "Install npm version 6.9.0" + - template: ../steps/common.yml - template: ../steps/select-packages.yml parameters: ServiceDirectory: ${{parameters.ServiceDirectory}} - - job: "Build" - variables: - - template: ../variables/globals.yml - - name: GeneratedPackageTargets - value: $[dependencies.Prepare.outputs['SelectPackages.GeneratedPackageTargets']] - - dependsOn: - - Prepare - - pool: - vmImage: "ubuntu-16.04" - - steps: - - task: NodeTool@0 - inputs: - versionSpec: "$(NodeVersion)" - displayName: "Install Node.js $(NodeVersion)" - - - script: | - npm install -g npm@6.9.0 - displayName: "Install npm version 6.9.0" - - script: | node common/scripts/install-run-rush.js install displayName: "Install dependencies" @@ -76,27 +47,18 @@ jobs: - job: "Analyze" - dependsOn: - - Prepare - variables: - template: ../variables/globals.yml - - name: GeneratedPackageTargets - value: $[dependencies.Prepare.outputs['SelectPackages.GeneratedPackageTargets']] pool: - vmImage: "ubuntu-16.04" + vmImage: "$(OSVmImage)" steps: - - task: UsePythonVersion@0 - displayName: "Use Python 3.6" - inputs: - versionSpec: "3.6" + - template: ../steps/common.yml - - task: NodeTool@0 - inputs: - versionSpec: "$(NodeVersion)" - displayName: "Install Node.js $(NodeVersion)" + - template: ../steps/select-packages.yml + parameters: + ServiceDirectory: ${{parameters.ServiceDirectory}} - script: | pip install setuptools wheel @@ -116,47 +78,35 @@ jobs: condition: and(succeededOrFailed(), ne(variables['Build.Reason'], 'PullRequest')) displayName: "Component Detection" - - job: "Test" - - dependsOn: - - Prepare + - job: "UnitTest" strategy: matrix: Linux_Node8: - OSName: "Linux" OSVmImage: "ubuntu-16.04" NodeVersion: "8.x" Linux_Node10: - OSName: "Linux" OSVmImage: "ubuntu-16.04" NodeVersion: "10.x" Linux_Node12: - OSName: "Linux" OSVmImage: "ubuntu-16.04" NodeVersion: "12.x" macOS_Node8: - OSName: "macOS" OSVmImage: "macOS-10.13" NodeVersion: "8.x" macOS_Node10: - OSName: "macOS" OSVmImage: "macOS-10.13" NodeVersion: "10.x" macOS_Node12: - OSName: "macOS" OSVmImage: "macOS-10.13" NodeVersion: "12.x" Windows_Node8: - OSName: "Windows" OSVmImage: "vs2017-win2016" NodeVersion: "8.x" Windows_Node10: - OSName: "Windows" OSVmImage: "vs2017-win2016" NodeVersion: "10.x" Windows_Node12: - OSName: "Windows" OSVmImage: "vs2017-win2016" NodeVersion: "12.x" @@ -164,13 +114,14 @@ jobs: vmImage: "$(OSVmImage)" variables: - GeneratedPackageTargets: $[dependencies.Prepare.outputs['SelectPackages.GeneratedPackageTargets']] + - template: ../variables/globals.yml steps: - - task: NodeTool@0 - inputs: - versionSpec: "$(NodeVersion)" - displayName: "Install Node.js $(NodeVersion)" + - template: ../steps/common.yml + + - template: ../steps/select-packages.yml + parameters: + ServiceDirectory: ${{parameters.ServiceDirectory}} - script: | node common/scripts/install-run-rush.js install @@ -189,6 +140,13 @@ jobs: - task: PublishTestResults@2 inputs: testResultsFiles: "**/test-results.xml" - testRunTitle: "$(OSName) Node $(NodeVersion)" + testRunTitle: "$(OSName) - NodeJS - Unit Tests - [Node $(NodeVersion)]" + condition: succeededOrFailed() + displayName: "Publish NodeJS unit test results" + + - task: PublishTestResults@2 + inputs: + testResultsFiles: "**/test-results.browser.xml" + testRunTitle: "$(OSName) - Browser - Unit Tests - [Node $(NodeVersion)]" condition: succeededOrFailed() - displayName: "Publish test results" + displayName: "Publish browser unit test results" diff --git a/eng/pipelines/templates/jobs/archetype-sdk-integration.yml b/eng/pipelines/templates/jobs/archetype-sdk-integration.yml new file mode 100644 index 000000000000..53e4cd0e59a8 --- /dev/null +++ b/eng/pipelines/templates/jobs/archetype-sdk-integration.yml @@ -0,0 +1,76 @@ +parameters: + Toolchain: "rush" + PackageName: "" # For Rush toolchain only + PackagePath: "" # For NPM toolchain only + PreIntegrationSteps: "" + EnvVars: [] + MaxParallel: 0 + Matrix: + Linux_Node10: + OSVmImage: "ubuntu-16.04" + TestType: "node" + Windows_Node10: + OSVmImage: "vs2017-win2016" + TestType: "node" + macOS_Node10: + OSVmImage: "macOS-10.13" + TestType: "node" + Browser_Linux_Node10: + OSVmImage: "ubuntu-16.04" + TestType: "browser" + Browser_Windows_Node10: + OSVmImage: "vs2017-win2016" + TestType: "browser" + Browser_macOS_Node10: + OSVmImage: "macOS-10.13" + TestType: "browser" + +jobs: + - job: "IntegrationTest" + + variables: + - template: ../variables/globals.yml + + strategy: + maxParallel: ${{ parameters.MaxParallel }} + matrix: + ${{ each matrixEntry in parameters.Matrix }}: + ${{ matrixEntry.key }}: + # TestResultsFiles + ${{ if eq(matrixEntry.value.TestType, 'browser' )}}: + TestResultsFiles: "**/test-results.browser.xml" + ${{ if eq(matrixEntry.value.TestType, 'node') }}: + TestResultsFiles: "**/test-results.xml" + + # Remaining entries from the matrix object + ${{ insert }}: ${{ matrixEntry.value }} + + pool: + vmImage: "$(OSVmImage)" + + timeoutInMinutes: 240 + + steps: + - template: ../steps/common.yml + + - template: ../steps/integration-${{parameters.Toolchain}}.yml + parameters: + PackageName: ${{parameters.PackageName}} + PackagePath: ${{parameters.PackagePath}} + PreIntegrationSteps: ${{parameters.PreIntegrationSteps}} + TestType: $(TestType) + EnvVars: ${{parameters.EnvVars}} + + - task: PublishTestResults@2 + inputs: + testResultsFiles: "**/test-results.xml" + testRunTitle: "$(OSName) - NodeJS - Integration Tests - [Node $(NodeVersion)]" + condition: and(succeededOrFailed(), eq(variables['TestType'], 'node')) + displayName: "Publish NodeJS integration test results" + + - task: PublishTestResults@2 + inputs: + testResultsFiles: "**/test-results.browser.xml" + testRunTitle: "$(OSName) - Browser - Integration Tests - [Node $(NodeVersion)]" + condition: and(succeededOrFailed(), eq(variables['TestType'], 'browser')) + displayName: "Publish browser integration test results" diff --git a/eng/pipelines/templates/jobs/archetype-sdk-tests.yml b/eng/pipelines/templates/jobs/archetype-sdk-tests.yml deleted file mode 100644 index eee567fa24a8..000000000000 --- a/eng/pipelines/templates/jobs/archetype-sdk-tests.yml +++ /dev/null @@ -1,64 +0,0 @@ -parameters: - PackageName: "" - EnvVars: [] - MaxParallel: 0 - Matrix: - Linux_Node10X: - OSVmImage: "ubuntu-16.04" - TestType: "node" - Windows_Node10X: - OSVmImage: "vs2017-win2016" - TestType: "node" - Mac_Node10X: - OSVmImage: "macOS-10.13" - TestType: "node" - Browser_Linux_Node10X: - OSVmImage: "ubuntu-16.04" - TestType: "browser" - Browser_Windows_Node10X: - OSVmImage: "vs2017-win2016" - TestType: "browser" - Browser_Mac_Node10X: - OSVmImage: "macOS-10.13" - TestType: "browser" - -jobs: - - job: "Test" - variables: - - template: ../variables/globals.yml - strategy: - maxParallel: ${{ parameters.MaxParallel }} - matrix: - ${{ each matrixEntry in parameters.Matrix }}: - ${{ matrixEntry.key }}: - # TestResultsFiles - ${{ if eq(matrixEntry.value.TestType, 'browser' )}}: - TestResultsFiles: "**/test-results.browser.xml" - ${{ if eq(matrixEntry.value.TestType, 'node') }}: - TestResultsFiles: "**/test-results.xml" - - # OSName: - ${{ if eq(matrixEntry.value.OSVmImage, 'ubuntu-16.04') }}: - OSName: "Linux" - ${{ if eq(matrixEntry.value.OSVmImage, 'vs2017-win2016') }}: - OSName: "Windows" - ${{ if eq(matrixEntry.value.OSVmImage, 'macOS-10.13') }}: - OSName: "MacOS" - - # Remaining entries from the matrix object - ${{ insert }}: ${{ matrixEntry.value }} - - pool: - vmImage: "$(OSVmImage)" - - timeoutInMinutes: 240 - - steps: - - template: ../steps/tests-common.yml - parameters: - NodeVersion: $(NodeVersion) - PackageName: ${{ parameters.PackageName }} - TestType: $(TestType) - EnvVars: ${{ parameters.EnvVars }} - OSName: $(OSName) - TestResultsFiles: $(TestResultsFiles) diff --git a/eng/pipelines/templates/jobs/node6-test-sdk-client.yml b/eng/pipelines/templates/jobs/node6-test-sdk-client.yml deleted file mode 100644 index 82e08bf42cc3..000000000000 --- a/eng/pipelines/templates/jobs/node6-test-sdk-client.yml +++ /dev/null @@ -1,59 +0,0 @@ -jobs: - - job: "TestNode6" - variables: - - template: ../variables/globals.yml - - strategy: - matrix: - Linux: - OSName: "Linux" - OSVmImage: "ubuntu-16.04" - macOS: - OSName: "macOS" - OSVmImage: "macOS-10.13" - Windows: - OSName: "Windows" - OSVmImage: "vs2017-win2016" - - pool: - vmImage: "$(OSVmImage)" - - steps: - - task: NodeTool@0 - inputs: - versionSpec: "6.0.0" - displayName: "Install Node.js 6.0.0" - - - task: Npm@1 - inputs: - command: "install" - workingDir: "${{parameters.PackagePath}}" - displayName: "Install dependencies" - - - task: Npm@1 - inputs: - command: "custom" - customCommand: "run build" - workingDir: "${{parameters.PackagePath}}" - displayName: "Build library" - - - task: Npm@1 - inputs: - command: "custom" - customCommand: "run build:test" - workingDir: "${{parameters.PackagePath}}" - displayName: "Build test assets" - - - task: Npm@1 - inputs: - command: "custom" - customCommand: "run unit-test" - workingDir: "${{parameters.PackagePath}}" - displayName: "Test library" - - - task: PublishTestResults@2 - inputs: - testResultsFiles: "**/test-results.xml" - testRunTitle: "$(OSName) Node 6.0.0" - condition: succeededOrFailed() - displayName: "Publish test results" diff --git a/eng/pipelines/templates/steps/common.yml b/eng/pipelines/templates/steps/common.yml new file mode 100644 index 000000000000..384ba227c080 --- /dev/null +++ b/eng/pipelines/templates/steps/common.yml @@ -0,0 +1,25 @@ +steps: + - powershell: | + Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/Azure/azure-sdk-tools/verify-agent-os_1.1.0/scripts/python/verify_agent_os.py" -OutFile "verify_agent_os.py" | Wait-Process + workingDirectory: "$(Build.BinariesDirectory)" + displayName: "Download verify_agent_os.py" + + - task: UsePythonVersion@0 + displayName: "Use Python 3.6" + inputs: + versionSpec: "3.6" + + - task: PythonScript@0 + displayName: "Verify agent OS" # This also sets the friendly name in variable 'OSName' + inputs: + scriptPath: "$(Build.BinariesDirectory)/verify_agent_os.py" + arguments: $(OSVmImage) + + - task: NodeTool@0 + inputs: + versionSpec: "$(NodeVersion)" + displayName: "Use NodeJS $(NodeVersion)" + + - script: | + npm install -g npm@6.9.0 + displayName: "Install npm 6.9.0" diff --git a/eng/pipelines/templates/steps/cosmos-integration-nightly.yml b/eng/pipelines/templates/steps/cosmos-integration-nightly.yml new file mode 100644 index 000000000000..a174298da59b --- /dev/null +++ b/eng/pipelines/templates/steps/cosmos-integration-nightly.yml @@ -0,0 +1,7 @@ +steps: + - task: azure-cosmosdb.emulator-internal-preview.run-cosmosdbemulatorcontainer.CosmosDbEmulator@2 + inputs: + username: "$(cosmos-cosmosdb-azurecr-io-username)" + password: "$(cosmos-cosmosdb-azurecr-io-password)" + defaultPartitionCount: 25 + displayName: "Run Azure Cosmos DB Emulator container (nightly)" diff --git a/eng/pipelines/templates/steps/cosmos-integration-public.yml b/eng/pipelines/templates/steps/cosmos-integration-public.yml new file mode 100644 index 000000000000..f8199e4785b5 --- /dev/null +++ b/eng/pipelines/templates/steps/cosmos-integration-public.yml @@ -0,0 +1,5 @@ +steps: + - task: azure-cosmosdb.emulator-public-preview.run-cosmosdbemulatorcontainer.CosmosDbEmulator@2 + inputs: + defaultPartitionCount: 25 + displayName: "Run Azure Cosmos DB Emulator container (public)" diff --git a/eng/pipelines/templates/steps/integration-npm.yml b/eng/pipelines/templates/steps/integration-npm.yml new file mode 100644 index 000000000000..8de3a1630889 --- /dev/null +++ b/eng/pipelines/templates/steps/integration-npm.yml @@ -0,0 +1,30 @@ +parameters: + PackagePath: "" + PreIntegrationSteps: "" + TestType: "" + EnvVars: [] + +steps: + - script: | + npm install + displayName: "Install dependencies" + workingDirectory: "${{parameters.PackagePath}}" + + - script: | + npm run build + displayName: "Build libraries" + workingDirectory: "${{parameters.PackagePath}}" + + - script: | + npm run build:test + displayName: "Build test assets" + workingDirectory: "${{parameters.PackagePath}}" + + - ${{if ne(parameters.PreIntegrationSteps, '')}}: + - template: ../steps/${{parameters.PreIntegrationSteps}}.yml + + - script: | + npm run integration-test:${{parameters.TestType}} + displayName: "Integration test libraries" + workingDirectory: "${{parameters.PackagePath}}" + env: ${{parameters.EnvVars}} diff --git a/eng/pipelines/templates/steps/integration-rush.yml b/eng/pipelines/templates/steps/integration-rush.yml new file mode 100644 index 000000000000..78defcdc4df8 --- /dev/null +++ b/eng/pipelines/templates/steps/integration-rush.yml @@ -0,0 +1,26 @@ +parameters: + PackageName: "" + PreIntegrationSteps: "" + TestType: "" + EnvVars: [] + +steps: + - script: | + node common/scripts/install-run-rush.js install + displayName: "Install dependencies" + + - script: | + node common/scripts/install-run-rush.js build -t "${{parameters.PackageName}}" --verbose + displayName: "Build libraries" + + - script: | + node common/scripts/install-run-rush.js build:test -t "${{parameters.PackageName}}" --verbose + displayName: "Build test assets" + + - ${{if ne(parameters.PreIntegrationSteps, '')}}: + - template: ../steps/${{parameters.PreIntegrationSteps}}.yml + + - script: | + node common/scripts/install-run-rush.js integration-test:${{parameters.TestType}} -t "${{parameters.PackageName}}" --verbose + displayName: "Integration test libraries" + env: ${{parameters.EnvVars}} diff --git a/eng/pipelines/templates/steps/select-packages.yml b/eng/pipelines/templates/steps/select-packages.yml index 92387c833526..285912c3f8f0 100644 --- a/eng/pipelines/templates/steps/select-packages.yml +++ b/eng/pipelines/templates/steps/select-packages.yml @@ -1,7 +1,10 @@ steps: - script: | - npm ci # This causes us to download packages exclusively based on the lock file, faster and more secure. + npm ci + workingDirectory: $(System.DefaultWorkingDirectory)/eng/tools/select-packages + displayName: "Install script dependencies" + + - script: | npm run select-packages "$(System.DefaultWorkingDirectory)/sdk/${{parameters.ServiceDirectory}}/!(arm-*)/package.json" workingDirectory: $(System.DefaultWorkingDirectory)/eng/tools/select-packages - name: SelectPackages displayName: "Selecting packages to build" diff --git a/eng/pipelines/templates/steps/tests-common.yml b/eng/pipelines/templates/steps/tests-common.yml deleted file mode 100644 index 66a224719324..000000000000 --- a/eng/pipelines/templates/steps/tests-common.yml +++ /dev/null @@ -1,49 +0,0 @@ -parameters: - NodeVersion: "" - PackageName: "" - TestType: "" - EnvVars: [] - OSName: "" - TestResultsFiles: "" - -steps: - - powershell: | - Invoke-WebRequest -Uri "https://github.com/Azure/azure-sdk-tools/releases/download/sdk-tools_14793/sdk-tools.zip" ` - -OutFile "sdk-tools.zip" | Wait-Process; Expand-Archive -Path "sdk-tools.zip" -DestinationPath "./sdk-tools/" - workingDirectory: "$(Build.BinariesDirectory)" - displayName: "Download Tools Archive From Github Release and Extract it" - - - task: PythonScript@0 - displayName: "Run VerifyAgentOS script" - inputs: - scriptPath: "$(Build.BinariesDirectory)/sdk-tools/scripts/python/verify_agent_os.py" - arguments: ${{ parameters.OSName }} - - - task: NodeTool@0 - inputs: - versionSpec: "${{ parameters.NodeVersion }}" - displayName: "Install Node.js ${{ parameters.NodeVersion }}" - - - script: | - node common/scripts/install-run-rush.js install - displayName: "Install dependencies" - - - script: | - node common/scripts/install-run-rush.js build -t "${{parameters.PackageName}}" --verbose - displayName: 'rush build -t "${{parameters.PackageName}}"' - - - script: | - node common/scripts/install-run-rush.js build:test -t "${{parameters.PackageName}}" --verbose - displayName: 'rush build:test -t "${{parameters.PackageName}}"' - - - script: | - node common/scripts/install-run-rush.js integration-test:${{ parameters.TestType }} -t "${{parameters.PackageName}}" --verbose - displayName: 'rush integration-test:${{ parameters.TestType }} -t "${{parameters.PackageName}}"' - env: ${{ parameters.EnvVars }} - - - task: PublishTestResults@2 - inputs: - testRunTitle: "${{ parameters.OSName }} - ${{ parameters.TestType }} - Tests [Node ${{ parameters.NodeVersion }}]" - testResultsFiles: ${{ parameters.TestResultsFiles }} - condition: succeededOrFailed() - displayName: "Publish Test Results: ${{ parameters.OSName }} - ${{ parameters.TestType }} - Tests [Node ${{ parameters.NodeVersion }}]" diff --git a/eng/pipelines/templates/variables/globals.yml b/eng/pipelines/templates/variables/globals.yml index 78da1e386beb..402b48895587 100644 --- a/eng/pipelines/templates/variables/globals.yml +++ b/eng/pipelines/templates/variables/globals.yml @@ -1,3 +1,5 @@ variables: NodeVersion: "10.x" + OSVmImage: "ubuntu-16.04" + Agent.Source.Git.ShallowFetchDepth: 20 skipComponentGovernanceDetection: true diff --git a/eng/tools/select-packages/index.js b/eng/tools/select-packages/index.js index b19503a3d872..d282e3eea11b 100644 --- a/eng/tools/select-packages/index.js +++ b/eng/tools/select-packages/index.js @@ -63,7 +63,7 @@ glob(filter, (err, files) => { // Can't use regular logging here because the pattern for Azure Pipelines requires ##vso to be the first chars. console.log( - `##vso[task.setvariable variable=GeneratedPackageTargets;isOutput=true;]${packageTargets}` + `##vso[task.setvariable variable=GeneratedPackageTargets]${packageTargets}` ); log( diff --git a/sdk/cosmosdb/ci.yml b/sdk/cosmosdb/ci.yml index 64631ddb6fc0..bdcd91f382f2 100644 --- a/sdk/cosmosdb/ci.yml +++ b/sdk/cosmosdb/ci.yml @@ -24,6 +24,17 @@ jobs: parameters: ServiceDirectory: cosmosdb - - template: ../../eng/pipelines/templates/jobs/node6-test-sdk-client.yml + - template: ../../eng/pipelines/templates/jobs/archetype-sdk-integration.yml parameters: PackagePath: "sdk/cosmosdb/cosmos/" + Toolchain: npm + Matrix: + Windows_Node6: + OSVmImage: "vs2017-win2016" + NodeVersion: "6.x" + TestType: "node" + PreIntegrationSteps: cosmos-integration-public + EnvVars: + ACCOUNT_HOST: $(CosmosDbEmulator.Endpoint) + MOCHA_TIMEOUT: 100000 + NODE_TLS_REJECT_UNAUTHORIZED: 0 diff --git a/sdk/cosmosdb/cosmos/.azure-pipelines/cosmos.test.nightly.emulator.yml b/sdk/cosmosdb/cosmos/.azure-pipelines/cosmos.test.nightly.emulator.yml deleted file mode 100644 index 25646f4bc2fe..000000000000 --- a/sdk/cosmosdb/cosmos/.azure-pipelines/cosmos.test.nightly.emulator.yml +++ /dev/null @@ -1,68 +0,0 @@ -# Node.js -# Build a general Node.js project with npm. -# Add steps that analyze code, save build artifacts, deploy, and more: -# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript - -trigger: - branches: - include: - - master - paths: - include: - - sdk/cosmosdb/cosmos - -pr: - branches: - include: - - master - paths: - include: - - sdk/cosmosdb/cosmos - -variables: - NodeVersion: '10.x' - -jobs: - - job: NightlyEmulator - pool: - vmImage: vs2017-win2016 - steps: - - task: NodeTool@0 - inputs: - versionSpec: '$(NodeVersion)' - displayName: 'Install Node.js $(NodeVersion)' - - - script: | - node common/scripts/install-run-rush.js install - displayName: 'Install dependencies' - - - script: | - node common/scripts/install-run-rush.js build -t "@azure/cosmos" --verbose - displayName: 'rush build -t "@azure/cosmos"' - - - script: | - node common/scripts/install-run-rush.js build:test -t "@azure/cosmos" --verbose - displayName: 'rush build:test -t "@azure/cosmos"' - - - task: azure-cosmosdb.emulator-internal-preview.run-cosmosdbemulatorcontainer.CosmosDbEmulator@2 - displayName: "Run Azure Cosmos DB Emulator container" - inputs: - username: "$(cosmos-cosmosdb-azurecr-io-username)" - password: "$(cosmos-cosmosdb-azurecr-io-password)" - defaultPartitionCount: 25 - - - script: | - node common/scripts/install-run-rush.js integration-test -t "@azure/cosmos" --verbose - failOnStderr: true - displayName: 'rush integration-test -t "@azure/cosmos"' - env: - ACCOUNT_HOST: $(CosmosDbEmulator.Endpoint) - MOCHA_TIMEOUT: 100000 - NODE_TLS_REJECT_UNAUTHORIZED: 0 - - - task: PublishTestResults@2 - inputs: - testResultsFiles: '**/test-results.xml' - testRunTitle: 'Cosmos Emulator Node $(NodeVersion)' - condition: succeededOrFailed() - displayName: 'Publish test results' diff --git a/sdk/cosmosdb/cosmos/.azure-pipelines/cosmos.test.public.emulator.yml b/sdk/cosmosdb/cosmos/.azure-pipelines/cosmos.test.public.emulator.yml deleted file mode 100644 index 6c77842818b1..000000000000 --- a/sdk/cosmosdb/cosmos/.azure-pipelines/cosmos.test.public.emulator.yml +++ /dev/null @@ -1,66 +0,0 @@ -# Node.js -# Build a general Node.js project with npm. -# Add steps that analyze code, save build artifacts, deploy, and more: -# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript - -trigger: - branches: - include: - - master - paths: - include: - - sdk/cosmosdb/cosmos - -pr: - branches: - include: - - master - paths: - include: - - sdk/cosmosdb/cosmos - -variables: - NodeVersion: '10.x' - -jobs: - - job: Emulator - pool: - vmImage: vs2017-win2016 - steps: - - task: NodeTool@0 - inputs: - versionSpec: '$(NodeVersion)' - displayName: 'Install Node.js $(NodeVersion)' - - - script: | - node common/scripts/install-run-rush.js install - displayName: 'Install dependencies' - - - script: | - node common/scripts/install-run-rush.js build -t "@azure/cosmos" --verbose - displayName: 'rush build -t "@azure/cosmos"' - - - script: | - node common/scripts/install-run-rush.js build:test -t "@azure/cosmos" --verbose - displayName: 'rush build:test -t "@azure/cosmos"' - - - task: azure-cosmosdb.emulator-public-preview.run-cosmosdbemulatorcontainer.CosmosDbEmulator@2 - displayName: "Run Azure Cosmos DB Emulator container" - inputs: - defaultPartitionCount: 25 - - - script: | - node common/scripts/install-run-rush.js integration-test -t "@azure/cosmos" --verbose - failOnStderr: true - displayName: 'rush integration-test -t "@azure/cosmos"' - env: - ACCOUNT_HOST: $(CosmosDbEmulator.Endpoint) - MOCHA_TIMEOUT: 100000 - NODE_TLS_REJECT_UNAUTHORIZED: 0 - - - task: PublishTestResults@2 - inputs: - testResultsFiles: '**/test-results.xml' - testRunTitle: 'Cosmos Emulator Node $(NodeVersion)' - condition: succeededOrFailed() - displayName: 'Publish test results' diff --git a/sdk/cosmosdb/cosmos/tests.yml b/sdk/cosmosdb/cosmos/tests.yml new file mode 100644 index 000000000000..1f37f8947f47 --- /dev/null +++ b/sdk/cosmosdb/cosmos/tests.yml @@ -0,0 +1,17 @@ +trigger: none + +jobs: + - template: ../../../eng/pipelines/templates/jobs/archetype-sdk-integration.yml + parameters: + PackagePath: "sdk/cosmosdb/cosmos/" + Toolchain: npm + Matrix: + Windows_Node6: + OSVmImage: "vs2017-win2016" + NodeVersion: "6.x" + TestType: "node" + PreIntegrationSteps: cosmos-integration-nightly + EnvVars: + ACCOUNT_HOST: $(CosmosDbEmulator.Endpoint) + MOCHA_TIMEOUT: 100000 + NODE_TLS_REJECT_UNAUTHORIZED: 0 diff --git a/sdk/eventhub/event-hubs/tests.yml b/sdk/eventhub/event-hubs/tests.yml index 70c45d969b0f..0823168fc436 100644 --- a/sdk/eventhub/event-hubs/tests.yml +++ b/sdk/eventhub/event-hubs/tests.yml @@ -1,52 +1,52 @@ trigger: none jobs: - - template: ../../../eng/pipelines/templates/jobs/archetype-sdk-tests.yml + - template: ../../../eng/pipelines/templates/jobs/archetype-sdk-integration.yml parameters: PackageName: "@azure/event-hubs" # Remove Browser tests from matrix since they are currently a no-op Matrix: - Linux_Node10X: + Linux_Node10: OSVmImage: "ubuntu-16.04" TestType: "node" NodeVersion: "10.x" EVENTHUB_NAME: "hub_linux_node10" - Windows_Node10X: + Windows_Node10: OSVmImage: "vs2017-win2016" TestType: "node" NodeVersion: "10.x" EVENTHUB_NAME: "hub_windows_node10" - Mac_Node10X: + macOS_Node10: OSVmImage: "macOS-10.13" TestType: "node" NodeVersion: "10.x" EVENTHUB_NAME: "hub_mac_node10" - Linux_Node12X: + Linux_Node12: OSVmImage: "ubuntu-16.04" TestType: "node" NodeVersion: "12.x" EVENTHUB_NAME: "hub_linux_node12" - Windows_Node12X: + Windows_Node12: OSVmImage: "vs2017-win2016" TestType: "node" NodeVersion: "12.x" EVENTHUB_NAME: "hub_windows_node12" - Mac_Node12X: + macOS_Node12: OSVmImage: "macOS-10.13" TestType: "node" NodeVersion: "12.x" EVENTHUB_NAME: "hub_mac_node12" - Linux_Node8X: + Linux_Node8: OSVmImage: "ubuntu-16.04" TestType: "node" NodeVersion: "8.x" EVENTHUB_NAME: "hub_linux_node8" - Windows_Node8X: + Windows_Node8: OSVmImage: "vs2017-win2016" TestType: "node" NodeVersion: "8.x" EVENTHUB_NAME: "hub_windows_node8" - Mac_Node8X: + macOS_Node8: OSVmImage: "macOS-10.13" TestType: "node" NodeVersion: "8.x" diff --git a/sdk/eventhub/event-processor-host/tests.yml b/sdk/eventhub/event-processor-host/tests.yml index 6754a4adff97..73df81704a76 100644 --- a/sdk/eventhub/event-processor-host/tests.yml +++ b/sdk/eventhub/event-processor-host/tests.yml @@ -1,18 +1,18 @@ trigger: none jobs: - - template: ../../../eng/pipelines/templates/jobs/archetype-sdk-tests.yml + - template: ../../../eng/pipelines/templates/jobs/archetype-sdk-integration.yml parameters: PackageName: "@azure/event-processor-host" # Remove Browser tests from matrix since they are currently a no-op Matrix: - Linux_Node10X: + Linux_Node10: OSVmImage: "ubuntu-16.04" TestType: "node" - Windows_Node10X: + Windows_Node10: OSVmImage: "vs2017-win2016" TestType: "node" - Mac_Node10X: + macOS_Node10: OSVmImage: "macOS-10.13" TestType: "node" EnvVars: diff --git a/sdk/keyvault/keyvault-keys/tests.yml b/sdk/keyvault/keyvault-keys/tests.yml index f6d7020ee345..037ffb2fff4d 100644 --- a/sdk/keyvault/keyvault-keys/tests.yml +++ b/sdk/keyvault/keyvault-keys/tests.yml @@ -1,7 +1,7 @@ trigger: none jobs: - - template: ../../../eng/pipelines/templates/jobs/archetype-sdk-tests.yml + - template: ../../../eng/pipelines/templates/jobs/archetype-sdk-integration.yml parameters: PackageName: "@azure/keyvault-keys" EnvVars: diff --git a/sdk/keyvault/keyvault-secrets/tests.yml b/sdk/keyvault/keyvault-secrets/tests.yml index cad0d2678900..d062ad380cda 100644 --- a/sdk/keyvault/keyvault-secrets/tests.yml +++ b/sdk/keyvault/keyvault-secrets/tests.yml @@ -1,7 +1,7 @@ trigger: none jobs: - - template: ../../../eng/pipelines/templates/jobs/archetype-sdk-tests.yml + - template: ../../../eng/pipelines/templates/jobs/archetype-sdk-integration.yml parameters: PackageName: "@azure/keyvault-secrets" EnvVars: diff --git a/sdk/servicebus/service-bus/tests.yml b/sdk/servicebus/service-bus/tests.yml index d98d3f2c3e7b..471ca842062f 100644 --- a/sdk/servicebus/service-bus/tests.yml +++ b/sdk/servicebus/service-bus/tests.yml @@ -1,15 +1,15 @@ trigger: none jobs: - - template: ../../../eng/pipelines/templates/jobs/archetype-sdk-tests.yml + - template: ../../../eng/pipelines/templates/jobs/archetype-sdk-integration.yml parameters: PackageName: "@azure/service-bus" # Use a more simple matrix because these tests run for a long time Matrix: - Linux_Node10X: + Linux_Node10: OSVmImage: "ubuntu-16.04" TestType: "node" - Browser_Windows_Node10X: + Browser_Windows_Node10: OSVmImage: "vs2017-win2016" TestType: "browser" EnvVars: diff --git a/sdk/storage/archetype-sdk-tests-storage.yml b/sdk/storage/archetype-sdk-tests-storage.yml index f93f7730a129..772ff196fbef 100644 --- a/sdk/storage/archetype-sdk-tests-storage.yml +++ b/sdk/storage/archetype-sdk-tests-storage.yml @@ -6,57 +6,57 @@ parameters: ACCOUNT_SAS: $(js-storage-test-account-sas) STORAGE_CONNECTION_STRING: $(js-storage-test-connection-string) Matrix: - Linux_Node8X: + Linux_Node8: OSVmImage: "ubuntu-16.04" NodeVersion: "8.x" TestType: "node" - Linux_Node10X: + Linux_Node10: OSVmImage: "ubuntu-16.04" NodeVersion: "10.x" TestType: "node" - Linux_Node12X: + Linux_Node12: OSVmImage: "ubuntu-16.04" NodeVersion: "12.x" TestType: "node" - Windows_Node8X: + Windows_Node8: OSVmImage: "vs2017-win2016" NodeVersion: "8.x" TestType: "node" - Windows_Node10X: + Windows_Node10: OSVmImage: "vs2017-win2016" NodeVersion: "10.x" TestType: "node" - Windows_Node12X: + Windows_Node12: OSVmImage: "vs2017-win2016" NodeVersion: "12.x" TestType: "node" - Mac_Node8X: + macOS_Node8: OSVmImage: "macOS-10.13" NodeVersion: "8.x" TestType: "node" - Mac_Node10X: + macOS_Node10: OSVmImage: "macOS-10.13" NodeVersion: "10.x" TestType: "node" - Mac_Node12X: + macOS_Node12: OSVmImage: "macOS-10.13" NodeVersion: "12.x" TestType: "node" - Browser_Linux_Node10X: + Browser_Linux_Node10: OSVmImage: "ubuntu-16.04" NodeVersion: "10.x" TestType: "browser" - Browser_Windows_Node10X: + Browser_Windows_Node10: OSVmImage: "vs2017-win2016" NodeVersion: "10.x" TestType: "browser" - Browser_Mac_Node10X: + Browser_macOS_Node10: OSVmImage: "macOS-10.13" NodeVersion: "10.x" TestType: "browser" jobs: - - template: ../../eng/pipelines/templates/jobs/archetype-sdk-tests.yml + - template: ../../eng/pipelines/templates/jobs/archetype-sdk-integration.yml parameters: EnvVars: ${{ parameters.EnvVars }} PackageName: ${{ parameters.PackageName }} From 403285543c0dce67d1f02d5c6df9fe7293e3282c Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Mon, 15 Jul 2019 14:17:20 -0700 Subject: [PATCH 281/289] Remove deprecated dev dependency @types/form-data (#4313) - TS typings were moved from @types/form-data to form-data in 2.5.0 - https://github.com/form-data/form-data/pull/428 - @types/form-data is deprecated as of 2.5.0 - https://github.com/DefinitelyTyped/DefinitelyTyped/pull/36819 --- common/config/rush/pnpm-lock.yaml | 14 ++------------ sdk/core/core-http/package.json | 3 +-- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 0f1215a8b1c3..f31f7a58589c 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -34,7 +34,6 @@ dependencies: '@types/debug': 0.0.31 '@types/dotenv': 6.1.1 '@types/express': 4.17.0 - '@types/form-data': 2.5.0 '@types/fs-extra': 7.0.0 '@types/glob': 7.1.1 '@types/is-buffer': 2.0.0 @@ -521,13 +520,6 @@ packages: dev: false resolution: integrity: sha512-CjaMu57cjgjuZbh9DpkloeGxV45CnMGlVd+XpG7Gm9QgVrd7KFq+X4HY0vM+2v0bczS48Wg7bvnMY5TN+Xmcfw== - /@types/form-data/2.5.0: - dependencies: - form-data: 2.5.0 - deprecated: 'This is a stub types definition. form-data provides its own type definitions, so you do not need this installed.' - dev: false - resolution: - integrity: sha512-23/wYiuckYYtFpL+4RPWiWmRQH2BjFuqCUi2+N3amB1a1Drv+i/byTrGvlLwRVLFNAZbwpbQ7JvTK+VCAPMbcg== /@types/fs-extra/5.0.4: dependencies: '@types/node': 8.10.50 @@ -9860,7 +9852,6 @@ packages: '@azure/logger-js': 1.3.2 '@types/chai': 4.1.7 '@types/express': 4.17.0 - '@types/form-data': 2.5.0 '@types/glob': 7.1.1 '@types/karma': 3.0.3 '@types/mocha': 5.2.7 @@ -9935,7 +9926,7 @@ packages: dev: false name: '@rush-temp/core-http' resolution: - integrity: sha512-wm2OlqXnbEFpZKYmqGqKlsgmfdgzTYODsAlnhvfpLXD+uwHFQOHVNc6KUFdY8SAoH3t1kyaZjyxI+nTp0ihMcQ== + integrity: sha512-j8oocZ+3uRVuagmj58ue9BHFKpv2fqQMJlL2LX3PQS4q0H2Rwv+z2kppAbFmAcORldCuShH8X2K61znVkFwCVw== tarball: 'file:projects/core-http.tgz' version: 0.0.0 'file:projects/core-paging.tgz': @@ -10691,7 +10682,6 @@ specifiers: '@types/debug': ^0.0.31 '@types/dotenv': ^6.1.0 '@types/express': ^4.16.0 - '@types/form-data': ^2.2.1 '@types/fs-extra': ~7.0.0 '@types/glob': ^7.1.1 '@types/is-buffer': ^2.0.0 @@ -10747,7 +10737,7 @@ specifiers: events: ^3.0.0 execa: 1.0.0 express: ^4.16.3 - form-data: ^2.3.2 + form-data: ^2.5.0 fs-extra: ~8.0.1 glob: ^7.1.2 gulp: ^4.0.0 diff --git a/sdk/core/core-http/package.json b/sdk/core/core-http/package.json index bc00f6e45686..64012d37983f 100644 --- a/sdk/core/core-http/package.json +++ b/sdk/core/core-http/package.json @@ -113,7 +113,7 @@ "@azure/core-auth": "^1.0.0-preview.1", "@types/tunnel": "^0.0.0", "axios": "^0.19.0", - "form-data": "^2.3.2", + "form-data": "^2.5.0", "process": "^0.11.10", "tough-cookie": "^2.4.3", "tslib": "^1.9.3", @@ -125,7 +125,6 @@ "@azure/logger-js": "^1.0.2", "@types/chai": "^4.1.6", "@types/express": "^4.16.0", - "@types/form-data": "^2.2.1", "@types/glob": "^7.1.1", "@types/karma": "^3.0.0", "@types/mocha": "^5.2.5", From e1e7386837b166bb10ab6d704ab75d9bb6cfb055 Mon Sep 17 00:00:00 2001 From: ShivangiReja <45216704+ShivangiReja@users.noreply.github.com> Date: Mon, 15 Jul 2019 14:59:11 -0700 Subject: [PATCH 282/289] [Event Hub] Support for creating a batch when sending events (#4268) * [Event Hubs] Support creating of a batch when sending events --- .../event-hubs/review/event-hubs.api.md | 23 +++- sdk/eventhub/event-hubs/samples/sendEvents.ts | 27 ++++- sdk/eventhub/event-hubs/src/eventDataBatch.ts | 113 +++++++++++++++++ sdk/eventhub/event-hubs/src/eventHubClient.ts | 18 +++ sdk/eventhub/event-hubs/src/eventHubSender.ts | 114 ++++++++++++------ sdk/eventhub/event-hubs/src/index.ts | 4 +- sdk/eventhub/event-hubs/src/sender.ts | 44 ++++++- sdk/eventhub/event-hubs/test/sender.spec.ts | 96 ++++++++++++++- 8 files changed, 388 insertions(+), 51 deletions(-) create mode 100644 sdk/eventhub/event-hubs/src/eventDataBatch.ts diff --git a/sdk/eventhub/event-hubs/review/event-hubs.api.md b/sdk/eventhub/event-hubs/review/event-hubs.api.md index 3a2afa4f6195..fcf25ef9fe80 100644 --- a/sdk/eventhub/event-hubs/review/event-hubs.api.md +++ b/sdk/eventhub/event-hubs/review/event-hubs.api.md @@ -22,6 +22,12 @@ import { TokenCredential } from '@azure/core-amqp'; import { TokenType } from '@azure/core-amqp'; import { WebSocketImpl } from 'rhea-promise'; +// @public +export interface BatchOptions { + maxMessageSizeInBytes?: number; + partitionKey?: string; +} + export { DataTransformer } export { DefaultDataTransformer } @@ -36,6 +42,18 @@ export interface EventData { }; } +// @public +export class EventDataBatch { + // Warning: (ae-forgotten-export) The symbol "ConnectionContext" needs to be exported by the entry point index.d.ts + // + // @internal + constructor(context: ConnectionContext, maxSizeInBytes: number, partitionKey?: string); + readonly batchMessage: Buffer | undefined; + readonly partitionKey: string | undefined; + readonly size: number | undefined; + tryAdd(eventData: EventData): boolean; +} + // @public export class EventHubClient { constructor(connectionString: string, options?: EventHubClientOptions); @@ -63,8 +81,6 @@ export interface EventHubClientOptions { // @public export class EventHubConsumer { - // Warning: (ae-forgotten-export) The symbol "ConnectionContext" needs to be exported by the entry point index.d.ts - // // @internal constructor(context: ConnectionContext, consumerGroup: string, partitionId: string, eventPosition: EventPosition, options?: EventHubConsumerOptions); close(): Promise; @@ -89,8 +105,9 @@ export class EventHubProducer { // @internal constructor(context: ConnectionContext, options?: EventHubProducerOptions); close(): Promise; + createBatch(options?: BatchOptions): Promise; readonly isClosed: boolean; - send(eventData: EventData | EventData[], options?: SendOptions): Promise; + send(eventData: EventData | EventData[] | EventDataBatch, options?: SendOptions): Promise; } // @public diff --git a/sdk/eventhub/event-hubs/samples/sendEvents.ts b/sdk/eventhub/event-hubs/samples/sendEvents.ts index c153106f6479..5934abc5686b 100644 --- a/sdk/eventhub/event-hubs/samples/sendEvents.ts +++ b/sdk/eventhub/event-hubs/samples/sendEvents.ts @@ -3,7 +3,6 @@ Licensed under the MIT Licence. This sample demonstrates how the send() function can be used to send events to Event Hubs. - See https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-about to learn about Event Hubs. Note: If you are using version 2.1.0 or lower of @azure/event-hubs library, then please use the samples at @@ -33,7 +32,6 @@ async function main(): Promise { const client = new EventHubClient(connectionString, eventHubName); const partitionIds = await client.getPartitionIds(); const producer = client.createProducer({ partitionId: partitionIds[0] }); - const events: EventData[] = []; try { // NOTE: For receiving events from Azure Stream Analytics, please send Events to an EventHub // where the body is a JSON object/array. @@ -42,18 +40,37 @@ async function main(): Promise { // { body: { "message": "Hello World 2" } }, // { body: { "message": "Hello World 3" } } // ]; + console.log("Sending single event..."); + const scientist = listOfScientists[0]; + producer.send({ body: `${scientist.firstName} ${scientist.name}` }); + + console.log("Sending multiple events..."); + const events: EventData[] = []; for (let index = 0; index < listOfScientists.length; index++) { const scientist = listOfScientists[index]; events.push({ body: `${scientist.firstName} ${scientist.name}` }); } - console.log("Sending batch events..."); - await producer.send(events); + + // Below variation of send will be available in the upcoming release + // console.log("Creating and sending a batch of events..."); + // const eventDatabatch = await producer.createBatch(); + // for (let index = 0; index < listOfScientists.length; index++) { + // const scientist = listOfScientists[index]; + // const isAdded = eventDatabatch.tryAdd({ body: `${scientist.firstName} ${scientist.name}` }); + // if (!isAdded) { + // console.log(`Unable to add event ${index} to the batch`); + // break; + // } + // } + // await producer.send(eventDatabatch); + + await producer.close(); } finally { await client.close(); } } -main().catch(err => { +main().catch((err) => { console.log("Error occurred: ", err); }); diff --git a/sdk/eventhub/event-hubs/src/eventDataBatch.ts b/sdk/eventhub/event-hubs/src/eventDataBatch.ts new file mode 100644 index 000000000000..ff45014b4cb9 --- /dev/null +++ b/sdk/eventhub/event-hubs/src/eventDataBatch.ts @@ -0,0 +1,113 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import { EventData, toAmqpMessage } from "./eventData"; +import { ConnectionContext } from "./connectionContext"; +import { AmqpMessage } from "@azure/core-amqp"; +import { message } from "rhea-promise"; + +/** + * A class representing a batch of events which can be passed to the `send` method of a `EventConsumer` instance. + * This batch is ensured to be under the maximum message size supported by Azure Event Hubs service. + * + * Use the `tryAdd` function on the EventDataBatch to add events in a batch. + * @class + */ +export class EventDataBatch { + /** + * @property Describes the amqp connection context for the Client. + */ + private _context: ConnectionContext; + /** + * @property A value that is hashed to produce a partition assignment. + * It guarantees that messages with the same partitionKey end up in the same partition. + * Specifying this will throw an error if the producer was created using a `paritionId`. + */ + private _partitionKey?: string; + /** + * @property The maximum size allowed for the batch. + */ + private readonly _maxSizeInBytes: number; + /** + * @property Current size of the batch in bytes. + */ + private _size: number; + /** + * @property Encoded amqp messages. + */ + private _encodedMessages: Buffer[] = []; + /** + * @property Encoded batch message. + */ + private _batchMessage: Buffer | undefined; + + /** + * @constructor + * @internal + * @ignore + */ + constructor(context: ConnectionContext, maxSizeInBytes: number, partitionKey?: string) { + this._context = context; + this._maxSizeInBytes = maxSizeInBytes; + this._partitionKey = partitionKey; + this._size = 0; + } + + /** + * @property The partitionKey set during `EventDataBatch` creation. This value is hashed to produce a partition assignment when the consumer is created without a `partitionId` + * @readonly + */ + get partitionKey(): string | undefined { + return this._partitionKey; + } + + /** + * @property Size of a batch of events. + * @readonly + */ + get size(): number { + return this._size; + } + + /** + * @property Encoded batch message. + * @readonly + */ + get batchMessage(): Buffer | undefined { + return this._batchMessage; + } + + /** + * Tries to add an event data to the batch if permitted by the batch's size limit. + * @param eventData An individual event data object. + * @returns A boolean value indicating if the event data has been added to the batch or not. + */ + public tryAdd(eventData: EventData): boolean { + // Convert EventData to AmqpMessage. + const amqpMessage = toAmqpMessage(eventData, this._partitionKey); + amqpMessage.body = this._context.dataTransformer.encode(eventData.body); + + // Encode every amqp message and then convert every encoded message to amqp data section + this._encodedMessages.push(message.encode(amqpMessage)); + + const batchMessage: AmqpMessage = { + body: message.data_sections(this._encodedMessages) + }; + + if (amqpMessage.message_annotations) { + batchMessage.message_annotations = amqpMessage.message_annotations; + } + + const encodedBatchMessage = message.encode(batchMessage); + const currentSize = encodedBatchMessage.length; + + // this._batchMessage will be used for final send operation + if (currentSize > this._maxSizeInBytes) { + this._encodedMessages.pop(); + return false; + } + this._batchMessage = encodedBatchMessage; + this._size = currentSize; + return true; + } +} diff --git a/sdk/eventhub/event-hubs/src/eventHubClient.ts b/sdk/eventhub/event-hubs/src/eventHubClient.ts index 60b2828d01da..20d42c2ce48f 100644 --- a/sdk/eventhub/event-hubs/src/eventHubClient.ts +++ b/sdk/eventhub/event-hubs/src/eventHubClient.ts @@ -102,6 +102,24 @@ export interface SendOptions { abortSignal?: AbortSignalLike; } +/** + * The set of options to configure the createBatch operation on the `EventProducer`. + */ +export interface BatchOptions { + /** + * @property + * A value that is hashed to produce a partition assignment. + * It guarantees that messages with the same partitionKey end up in the same partition. + * Specifying this will throw an error if the producer was created using a `paritionId`. + */ + partitionKey?: string; + /** + * @property + * The maximum size allowed for the batch. + */ + maxMessageSizeInBytes?: number; +} + /** * The set of options to configure the behavior of an `EventHubConsumer`. * These can be specified when creating the consumer using the `createConsumer` method. diff --git a/sdk/eventhub/event-hubs/src/eventHubSender.ts b/sdk/eventhub/event-hubs/src/eventHubSender.ts index de34ad5db3e7..6b0faf579d70 100644 --- a/sdk/eventhub/event-hubs/src/eventHubSender.ts +++ b/sdk/eventhub/event-hubs/src/eventHubSender.ts @@ -4,7 +4,6 @@ import uuid from "uuid/v4"; import * as log from "./log"; import { - messageProperties, Sender, EventContext, OnAmqpEvent, @@ -30,6 +29,7 @@ import { ConnectionContext } from "./connectionContext"; import { LinkEntity } from "./linkEntity"; import { SendOptions, EventHubProducerOptions } from "./eventHubClient"; import { AbortSignalLike, AbortError } from "@azure/abort-controller"; +import { EventDataBatch } from "./eventDataBatch"; import { getRetryAttemptTimeoutInMs } from "./eventHubClient"; /** @@ -341,6 +341,34 @@ export class EventHubSender extends LinkEntity { ); return result; } + /** + * Returns maximum message size on the AMQP sender link. + * @ignore + * @returns Promise + */ + async getMaxMessageSize(): Promise { + try { + if (!this.isOpen()) { + log.sender( + "Acquiring lock %s for initializing the session, sender and " + + "possibly the connection.", + this.senderLock + ); + await defaultLock.acquire(this.senderLock, () => { + return this._init(); + }); + } + return this._sender!.maxMessageSize; + } catch (err) { + log.error( + "[%s] An error occurred while creating the sender %s", + this._context.connectionId, + this.name, + err + ); + throw err; + } + } /** * Send a batch of EventData to the EventHub. The "message_annotations", @@ -351,7 +379,10 @@ export class EventHubSender extends LinkEntity { * @param options Options to control the way the events are batched along with request options * @return Promise */ - async send(events: EventData[], options?: SendOptions & EventHubProducerOptions): Promise { + async send( + events: EventData[] | EventDataBatch, + options?: SendOptions & EventHubProducerOptions + ): Promise { try { // throw an error if partition key and partition id are both defined if ( @@ -369,6 +400,18 @@ export class EventHubSender extends LinkEntity { ); throw error; } + + if (events instanceof EventDataBatch && options && options.partitionKey) { + // throw an error if partition key is different than the one provided in the options. + const error = new Error("Partition key is not supported when sending a batch message. Pass the partition key when creating the batch message instead."); + log.error( + "[%s] Partition key is not supported when using createBatch(). %O", + this._context.connectionId, + error + ); + throw error; + } + if (!this.isOpen()) { log.sender( "Acquiring lock %s for initializing the session, sender and " + @@ -384,41 +427,40 @@ export class EventHubSender extends LinkEntity { this._context.connectionId, this.name ); - const partitionKey = (options && options.partitionKey) || undefined; - const messages: AmqpMessage[] = []; - // Convert EventData to AmqpMessage. - for (let i = 0; i < events.length; i++) { - const message = toAmqpMessage(events[i], partitionKey); - message.body = this._context.dataTransformer.encode(events[i].body); - messages[i] = message; - } - // Encode every amqp message and then convert every encoded message to amqp data section - const batchMessage: AmqpMessage = { - body: message.data_sections(messages.map(message.encode)) - }; - // Set message_annotations, application_properties and properties of the first message as - // that of the envelope (batch message). - if (messages[0].message_annotations) { - batchMessage.message_annotations = messages[0].message_annotations; - } - if (messages[0].application_properties) { - batchMessage.application_properties = messages[0].application_properties; - } - for (const prop of messageProperties) { - if ((messages[0] as any)[prop]) { - (batchMessage as any)[prop] = (messages[0] as any)[prop]; + + let encodedBatchMessage: Buffer | undefined; + if (events instanceof EventDataBatch) { + encodedBatchMessage = events.batchMessage!; + } else { + const partitionKey = (options && options.partitionKey) || undefined; + const messages: AmqpMessage[] = []; + // Convert EventData to AmqpMessage. + for (let i = 0; i < events.length; i++) { + const message = toAmqpMessage(events[i], partitionKey); + message.body = this._context.dataTransformer.encode(events[i].body); + messages[i] = message; + } + // Encode every amqp message and then convert every encoded message to amqp data section + const batchMessage: AmqpMessage = { + body: message.data_sections(messages.map(message.encode)) + }; + + // Set message_annotations of the first message as + // that of the envelope (batch message). + if (messages[0].message_annotations) { + batchMessage.message_annotations = messages[0].message_annotations; } - } - // Finally encode the envelope (batch message). - const encodedBatchMessage = message.encode(batchMessage); + // Finally encode the envelope (batch message). + encodedBatchMessage = message.encode(batchMessage); + } log.sender( "[%s] Sender '%s', sending encoded batch message.", this._context.connectionId, this.name, encodedBatchMessage ); - return await this._trySendBatch(encodedBatchMessage, batchMessage.message_id, options); + return await this._trySendBatch(encodedBatchMessage, options); } catch (err) { log.error("An error occurred while sending the batch message %O", err); throw err; @@ -464,9 +506,7 @@ export class EventHubSender extends LinkEntity { */ private _trySendBatch( message: AmqpMessage | Buffer, - tag: any, - options: SendOptions & EventHubProducerOptions = {}, - format?: number + options: SendOptions & EventHubProducerOptions = {} ): Promise { const abortSignal: AbortSignalLike | undefined = options.abortSignal; @@ -497,8 +537,7 @@ export class EventHubSender extends LinkEntity { log.sender( "[%s] Sender '%s', sending message with id '%s'.", this._context.connectionId, - this.name, - (Buffer.isBuffer(message) ? tag : message.message_id) || tag || "" + this.name ); let onRejected: Func; let onReleased: Func; @@ -609,13 +648,12 @@ export class EventHubSender extends LinkEntity { this._sender!.on(SenderEvents.modified, onModified); this._sender!.on(SenderEvents.released, onReleased); waitTimer = setTimeout(actionAfterTimeout, getRetryAttemptTimeoutInMs(options.retryOptions)); - const delivery = this._sender!.send(message, tag, 0x80013700); + const delivery = this._sender!.send(message, undefined, 0x80013700); log.sender( - "[%s] Sender '%s', sent message with delivery id: %d and tag: %s", + "[%s] Sender '%s', sent message with delivery id: %d", this._context.connectionId, this.name, - delivery.id, - delivery.tag.toString() + delivery.id ); } else { // let us retry to send the message after some time. diff --git a/sdk/eventhub/event-hubs/src/index.ts b/sdk/eventhub/event-hubs/src/index.ts index 73d387d4aaad..08c223992499 100644 --- a/sdk/eventhub/event-hubs/src/index.ts +++ b/sdk/eventhub/event-hubs/src/index.ts @@ -13,12 +13,14 @@ export { EventHubConsumerOptions, EventHubProducerOptions, RetryOptions, - SendOptions + SendOptions, + BatchOptions } from "./eventHubClient"; export { EventPosition } from "./eventPosition"; export { PartitionProperties, EventHubProperties } from "./managementClient"; export { EventHubProducer } from "./sender"; export { EventHubConsumer, EventIteratorOptions } from "./receiver"; +export { EventDataBatch } from "./eventDataBatch" export { MessagingError, DataTransformer, diff --git a/sdk/eventhub/event-hubs/src/sender.ts b/sdk/eventhub/event-hubs/src/sender.ts index 897632a9f9d9..e92baf3e8710 100644 --- a/sdk/eventhub/event-hubs/src/sender.ts +++ b/sdk/eventhub/event-hubs/src/sender.ts @@ -3,10 +3,11 @@ import { EventData } from "./eventData"; import { EventHubSender } from "./eventHubSender"; -import { EventHubProducerOptions, SendOptions } from "./eventHubClient"; +import { EventHubProducerOptions, SendOptions, BatchOptions } from "./eventHubClient"; import { ConnectionContext } from "./connectionContext"; import * as log from "./log"; import { throwErrorIfConnectionClosed, throwTypeErrorIfParameterMissing } from "./util/error"; +import { EventDataBatch } from "./eventDataBatch"; /** * A producer responsible for sending `EventData` to a specific Event Hub. @@ -58,6 +59,33 @@ export class EventHubProducer { this._eventHubSender = EventHubSender.create(this._context, partitionId); } + /** + * Creates an instance of EventDataBatch to which one can add events until the maximum supported size is reached. + * The batch can be passed to the send method of the EventHubProducer to be sent to Azure Event Hubs + * @param options Options to define partition key and max message size. + * @returns Promise + */ + async createBatch(options?: BatchOptions): Promise { + this._throwIfSenderOrConnectionClosed(); + if (!options) { + options = {}; + } + let maxMessageSize = await this._eventHubSender!.getMaxMessageSize(); + if (options.maxMessageSizeInBytes) { + if (options.maxMessageSizeInBytes > maxMessageSize) { + const error = new Error( + `Max message size (${options.maxMessageSizeInBytes} bytes) is greater than maximum message size (${maxMessageSize} bytes) on the AMQP sender link.` + ); + log.error( + `[${this._context.connectionId}] Max message size (${options.maxMessageSizeInBytes} bytes) is greater than maximum message size (${maxMessageSize} bytes) on the AMQP sender link. ${error}` + ); + throw error; + } + maxMessageSize = options.maxMessageSizeInBytes; + } + return new EventDataBatch(this._context, maxMessageSize, options.partitionKey); + } + /** * Send a single or an array of events to the associated Event Hub. * @@ -71,12 +99,22 @@ export class EventHubProducer { * @throws {TypeError} Thrown if a required parameter is missing. * @throws {Error} Thrown if the underlying connection or sender has been closed. * @throws {Error} Thrown if a partitionKey is provided when the producer was created with a partitionId. + * @throws {Error} Thrown if batch was created with partitionKey different than the one provided in the options. * Create a new producer using the EventHubClient createProducer method. */ - async send(eventData: EventData | EventData[], options?: SendOptions): Promise { + async send( + eventData: EventData | EventData[] | EventDataBatch, + options?: SendOptions + ): Promise { this._throwIfSenderOrConnectionClosed(); throwTypeErrorIfParameterMissing(this._context.connectionId, "eventData", eventData); - if (!Array.isArray(eventData)) { + if (eventData instanceof EventDataBatch && !eventData.batchMessage) { + log.error( + `[${this._context.connectionId}] No events to send, use tryAdd() function on the EventDataBatch to add events in a batch.` + ); + return; + } + if (!Array.isArray(eventData) && !(eventData instanceof EventDataBatch)) { eventData = [eventData]; } return this._eventHubSender!.send(eventData, { ...this._senderOptions, ...options }); diff --git a/sdk/eventhub/event-hubs/test/sender.spec.ts b/sdk/eventhub/event-hubs/test/sender.spec.ts index be938fc705ad..b4f65f0ce8c7 100644 --- a/sdk/eventhub/event-hubs/test/sender.spec.ts +++ b/sdk/eventhub/event-hubs/test/sender.spec.ts @@ -7,7 +7,7 @@ import chaiAsPromised from "chai-as-promised"; chai.use(chaiAsPromised); import debugModule from "debug"; const debug = debugModule("azure:event-hubs:sender-spec"); -import { EventHubClient, EventData, EventHubProducer } from "../src"; +import { EventHubClient, EventData, EventHubProducer, EventPosition } from "../src"; import { EnvVarKeys, getEnvVars } from "./utils/testUtils"; import { AbortController } from "@azure/abort-controller"; const env = getEnvVars(); @@ -198,6 +198,100 @@ describe("EventHub Sender #RunnableInBrowser", function(): void { }); }); + describe("Create batch", function(): void { + it("should be sent successfully", async function(): Promise { + const list = [ + { name: "Albert" }, + { name: `${Buffer.from("Mike".repeat(1300000))}` }, + { name: "Marie" } + ]; + const partitionInfo = await client.getPartitionProperties("0"); + const producer = client.createProducer({ partitionId: "0" }); + const consumer = client.createConsumer( + EventHubClient.defaultConsumerGroupName, + "0", + EventPosition.fromSequenceNumber(partitionInfo.lastEnqueuedSequenceNumber) + ); + const eventDataBatch = await producer.createBatch(); + for (let i = 0; i < 3; i++) { + eventDataBatch.tryAdd({ body: `${list[i].name}` }); + } + await producer.send(eventDataBatch); + const data = await consumer.receiveBatch(3, 5); + data.length.should.equal(2); + list[0].name.should.equal(data[0].body); + list[2].name.should.equal(data[1].body); + await producer.close(); + await consumer.close(); + }); + + it("with partition key should be sent successfully.", async function(): Promise { + const producer = client.createProducer(); + const eventDataBatch = await producer.createBatch({ partitionKey: "1" }); + for (let i = 0; i < 5; i++) { + eventDataBatch.tryAdd({ body: `Hello World ${i}` }); + } + await producer.send(eventDataBatch); + await producer.close(); + }); + + it("with max message size should be sent successfully.", async function(): Promise { + const partitionInfo = await client.getPartitionProperties("0"); + const producer = client.createProducer({ partitionId: "0" }); + const consumer = client.createConsumer( + EventHubClient.defaultConsumerGroupName, + "0", + EventPosition.fromSequenceNumber(partitionInfo.lastEnqueuedSequenceNumber) + ); + const eventDataBatch = await producer.createBatch({ maxMessageSizeInBytes: 5000 }); + const message = { body: `${Buffer.from("Z".repeat(4096))}` }; + for (let i = 1; i <= 3; i++) { + const isAdded = eventDataBatch.tryAdd(message); + if (!isAdded) { + debug(`Unable to add ${i} event to the batch`); + break; + } + } + await producer.send(eventDataBatch); + const data = await consumer.receiveBatch(3, 5); + data.length.should.equal(1); + message.body.should.equal(data[0].body); + await producer.close(); + await consumer.close(); + }); + + it("should throw when maxMessageSize is greater than maximum message size on the AMQP sender link", async function(): Promise< + void + > { + try { + const producer = client.createProducer({ partitionId: "0" }); + await producer.createBatch({ maxMessageSizeInBytes: 2046528 }); + throw new Error("Test Failure"); + } catch (err) { + // \(delivery-id:(\d+), size:(\d+) bytes\) exceeds the limit \((\d+) bytes\) + err.message.should.match( + /.*Max message size \((\d+) bytes\) is greater than maximum message size \((\d+) bytes\) on the AMQP sender link.*/gi + ); + } + }); + + it("should throw when Partition key is provided in the send options", async function(): Promise< + void + > { + try { + const producer = client.createProducer(); + const eventDataBatch = await producer.createBatch({ partitionKey: "1" }); + for (let i = 0; i < 5; i++) { + eventDataBatch.tryAdd({ body: `Hello World ${i}` }); + } + await producer.send(eventDataBatch, { partitionKey: "2" }); + throw new Error("Test Failure"); + } catch (err) { + err.message.should.equal("Partition key is not supported when using createBatch()."); + } + }); + }); + describe("multiple producers", function(): void { it("should be isolated on same partitionId", async function(): Promise { const producers: EventHubProducer[] = []; From ef2b4e62e5dd2ad4197caf5efaa5809917cca35d Mon Sep 17 00:00:00 2001 From: ShivangiReja <45216704+ShivangiReja@users.noreply.github.com> Date: Mon, 15 Jul 2019 17:38:07 -0700 Subject: [PATCH 283/289] [Event Hubs] [Service Bus] Added event handlers for `error` and `protocolError` events on the connection object. (#4323) --- .../event-hubs/src/connectionContext.ts | 36 +++++++++++++++++++ sdk/servicebus/service-bus/changelog.md | 1 + .../service-bus/src/connectionContext.ts | 36 +++++++++++++++++++ 3 files changed, 73 insertions(+) diff --git a/sdk/eventhub/event-hubs/src/connectionContext.ts b/sdk/eventhub/event-hubs/src/connectionContext.ts index c49b3e778aaa..3ef398f96984 100644 --- a/sdk/eventhub/event-hubs/src/connectionContext.ts +++ b/sdk/eventhub/event-hubs/src/connectionContext.ts @@ -237,9 +237,45 @@ export namespace ConnectionContext { } }; + const protocolError: OnAmqpEvent = async (context: EventContext) => { + if (context.connection && context.connection.error) { + log.error( + "[%s] Error (context.connection.error) occurred on the amqp connection: %O", + connectionContext.connection.id, + context.connection && context.connection.error + ); + } + if (context.error) { + log.error( + "[%s] Error (context.error) occurred on the amqp connection: %O", + connectionContext.connection.id, + context.error + ); + } + }; + + const error: OnAmqpEvent = async (context: EventContext) => { + if (context.connection && context.connection.error) { + log.error( + "[%s] Error (context.connection.error) occurred on the amqp connection: %O", + connectionContext.connection.id, + context.connection && context.connection.error + ); + } + if (context.error) { + log.error( + "[%s] Error (context.error) occurred on the amqp connection: %O", + connectionContext.connection.id, + context.error + ); + } + }; + // Add listeners on the connection object. connectionContext.connection.on(ConnectionEvents.connectionOpen, onConnectionOpen); connectionContext.connection.on(ConnectionEvents.disconnected, disconnected); + connectionContext.connection.on(ConnectionEvents.protocolError, protocolError); + connectionContext.connection.on(ConnectionEvents.error, error); log.context("[%s] Created connection context successfully.", connectionContext.connectionId); return connectionContext; diff --git a/sdk/servicebus/service-bus/changelog.md b/sdk/servicebus/service-bus/changelog.md index f545ed0deebd..4005d1072245 100644 --- a/sdk/servicebus/service-bus/changelog.md +++ b/sdk/servicebus/service-bus/changelog.md @@ -1,6 +1,7 @@ # 2019-07-09 1.0.3 - Update `amqp-common` dependency version to 1.0.0-preview.6. This includes fix for the [bug 3971](https://github.com/Azure/azure-sdk-for-js/issues/3971) where the token audience in the credential created during [MSI based login](https://www.npmjs.com/package/@azure/ms-rest-nodeauth/v/2.0.2#msi-managed-service-identity-based-login-from-a-virtual-machine-created-in-azure) was being ignored. [PR 4146](https://github.com/Azure/azure-sdk-for-js/pull/4146) +- Added event handlers for `error` and `protocolError` events on the connection object to avoid the case of unhandled exceptions like [bug 4136](https://github.com/Azure/azure-sdk-for-js/issues/4136) # 2019-05-21 1.0.2 diff --git a/sdk/servicebus/service-bus/src/connectionContext.ts b/sdk/servicebus/service-bus/src/connectionContext.ts index 968a3e858382..5a572e641371 100644 --- a/sdk/servicebus/service-bus/src/connectionContext.ts +++ b/sdk/servicebus/service-bus/src/connectionContext.ts @@ -146,9 +146,45 @@ export namespace ConnectionContext { } }; + const protocolError: OnAmqpEvent = async (context: EventContext) => { + if (context.connection && context.connection.error) { + log.error( + "[%s] Error (context.connection.error) occurred on the amqp connection: %O", + connectionContext.connection.id, + context.connection && context.connection.error + ); + } + if (context.error) { + log.error( + "[%s] Error (context.error) occurred on the amqp connection: %O", + connectionContext.connection.id, + context.error + ); + } + }; + + const error: OnAmqpEvent = async (context: EventContext) => { + if (context.connection && context.connection.error) { + log.error( + "[%s] Error (context.connection.error) occurred on the amqp connection: %O", + connectionContext.connection.id, + context.connection && context.connection.error + ); + } + if (context.error) { + log.error( + "[%s] Error (context.error) occurred on the amqp connection: %O", + connectionContext.connection.id, + context.error + ); + } + }; + // Add listeners on the connection object. connectionContext.connection.on(ConnectionEvents.connectionOpen, onConnectionOpen); connectionContext.connection.on(ConnectionEvents.disconnected, disconnected); + connectionContext.connection.on(ConnectionEvents.protocolError, protocolError); + connectionContext.connection.on(ConnectionEvents.error, error); log.connectionCtxt( "[%s] Created connection context successfully.", From 7c7e81029cf42c59765afd69ef9e8db45f0e6b85 Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Mon, 15 Jul 2019 18:34:06 -0700 Subject: [PATCH 284/289] Fix dependencies for @typescript-eslint/eslint-plugin (#4327) - @typescript-eslint/eslint-plugin@1.12.0 introduced an implicit dependency on @typescript-eslint/typescript-estree - This should be fixed in a future release of @typescript-eslint/eslint-plugin - https://github.com/typescript-eslint/typescript-eslint/issues/705 --- common/config/rush/pnpm-lock.yaml | 54 +++++++++++++++---------------- common/config/rush/pnpmfile.js | 12 +++++-- 2 files changed, 37 insertions(+), 29 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index f31f7a58589c..da0289502964 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -64,7 +64,7 @@ dependencies: '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 abortcontroller-polyfill: 1.3.0 assert: 1.5.0 - async-lock: 1.2.1 + async-lock: 1.2.2 axios: 0.19.0 axios-mock-adapter: 1.17.0_axios@0.19.0 azure-storage: 2.10.3 @@ -189,7 +189,7 @@ lockfileVersion: 5.1 packages: /@azure/amqp-common/0.1.9_rhea-promise@0.1.15: dependencies: - async-lock: 1.2.1 + async-lock: 1.2.2 debug: 3.2.6 is-buffer: 2.0.3 jssha: 2.3.1 @@ -206,7 +206,7 @@ packages: '@azure/ms-rest-nodeauth': 0.9.3 '@types/async-lock': 1.1.1 '@types/is-buffer': 2.0.0 - async-lock: 1.2.1 + async-lock: 1.2.2 buffer: 5.2.1 debug: 3.2.6 events: 3.0.0 @@ -234,7 +234,7 @@ packages: /@azure/event-hubs/1.0.8: dependencies: '@azure/amqp-common': 0.1.9_rhea-promise@0.1.15 - async-lock: 1.2.1 + async-lock: 1.2.2 debug: 3.2.6 is-buffer: 2.0.2 jssha: 2.3.1 @@ -732,6 +732,7 @@ packages: dependencies: '@typescript-eslint/experimental-utils': 1.12.0_eslint@5.16.0+typescript@3.5.3 '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 + '@typescript-eslint/typescript-estree': 1.12.0 eslint: 5.16.0 eslint-utils: 1.4.0 functional-red-black-tree: 1.0.1 @@ -1362,12 +1363,10 @@ packages: dev: false resolution: integrity: sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== - /async-lock/1.2.1: - dependencies: - grunt-env: 0.4.4 + /async-lock/1.2.2: dev: false resolution: - integrity: sha512-eHyJHqr7JivGaVfrpy7rJpTUVNoECFQFUL9ZVmaKDNaKa9IiYsnqNaYAiwU9AXtmDUE8LNjPdxvwMMJzW9vtVg== + integrity: sha512-uczz62z2fMWOFbyo6rG4NlV2SdxugJT6sZA2QcfB1XaSjEiOh8CuOb/TttyMnYQCda6nkWecJe465tGQDPJiKw== /async-settle/1.0.0: dependencies: async-done: 1.3.2 @@ -4302,13 +4301,6 @@ packages: node: '>=4.x' resolution: integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== - /grunt-env/0.4.4: - dependencies: - ini: 1.3.5 - lodash: 2.4.2 - dev: false - resolution: - integrity: sha1-OziEOo1zcXfdyfiTh5+2nOGgvC8= /gulp-cli/2.2.0: dependencies: ansi-colors: 1.1.0 @@ -5688,13 +5680,6 @@ packages: dev: false resolution: integrity: sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= - /lodash/2.4.2: - dev: false - engines: - '0': node - '1': rhino - resolution: - integrity: sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4= /lodash/4.17.14: dev: false resolution: @@ -6520,7 +6505,7 @@ packages: spawn-wrap: 1.4.2 test-exclude: 5.2.3 uuid: 3.3.2 - yargs: 13.2.4 + yargs: 13.3.0 yargs-parser: 13.1.1 dev: false engines: @@ -9583,6 +9568,21 @@ packages: dev: false resolution: integrity: sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== + /yargs/13.3.0: + dependencies: + cliui: 5.0.0 + find-up: 3.0.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 3.1.0 + which-module: 2.0.0 + y18n: 4.0.0 + yargs-parser: 13.1.1 + dev: false + resolution: + integrity: sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== /yargs/7.1.0: dependencies: camelcase: 3.0.0 @@ -9704,7 +9704,7 @@ packages: '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 - async-lock: 1.2.1 + async-lock: 1.2.2 buffer: 5.2.1 chai: 4.2.0 chai-as-promised: 7.1.1_chai@4.2.0 @@ -10007,7 +10007,7 @@ packages: '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 assert: 1.5.0 - async-lock: 1.2.1 + async-lock: 1.2.2 chai: 4.2.0 chai-as-promised: 7.1.1_chai@4.2.0 chai-string: 1.5.0_chai@4.2.0 @@ -10079,7 +10079,7 @@ packages: '@types/uuid': 3.4.5 '@typescript-eslint/eslint-plugin': 1.12.0_db854cf46887ef4aa7b9323cccc417a5 '@typescript-eslint/parser': 1.12.0_eslint@5.16.0+typescript@3.5.3 - async-lock: 1.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 @@ -10627,7 +10627,7 @@ packages: '@types/node': 8.10.50 '@types/uuid': 3.4.5 '@types/yargs': 11.1.2 - async-lock: 1.2.1 + async-lock: 1.2.2 death: 1.1.0 debug: 3.2.6 is-buffer: 2.0.3 diff --git a/common/config/rush/pnpmfile.js b/common/config/rush/pnpmfile.js index a575eec35780..3832ba7dd101 100644 --- a/common/config/rush/pnpmfile.js +++ b/common/config/rush/pnpmfile.js @@ -1,4 +1,4 @@ -"use strict"; +'use strict'; /** * When using the PNPM package manager, you can use pnpmfile.js to workaround @@ -28,12 +28,20 @@ module.exports = { * The return value is the updated object. */ function readPackage(packageJson, context) { - // // The karma types have a missing dependency on typings from the log4js package. // if (packageJson.name === '@types/karma') { // context.log('Fixed up dependencies for @types/karma'); // packageJson.dependencies['log4js'] = '0.6.38'; // } + // @typescript-eslint/eslint-plugin@1.12.0 introduced an implicit dependency on @typescript-eslint/typescript-estree. + // This should be fixed in a future release of @typescript-eslint/eslint-plugin. + // https://github.com/typescript-eslint/typescript-eslint/issues/705 + if (packageJson.name === '@typescript-eslint/eslint-plugin') { + context.log('Fixed up dependencies for @typescript-eslint/eslint-plugin'); + packageJson.dependencies['@typescript-eslint/typescript-estree'] = + '^1.11.0'; + } + return packageJson; } From 4a5a8f31126ec87cb866a599e01da3a4009bec94 Mon Sep 17 00:00:00 2001 From: Brian Terlson Date: Tue, 16 Jul 2019 11:13:31 -0700 Subject: [PATCH 285/289] Remove enginesStrict from root package.json I'm not entirely sure what the purpose of this was, but support for it was removed in NPM 3.0 a while ago. Fixes #3898. --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index df69bdfc3c05..e7915b8549ae 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,6 @@ "webpack": "^4.26.1", "yargs": "^11.0.0" }, - "engineStrict": true, "engines": { "node": ">=10.10.0" } From fd7ac94d51471af1a56ffa46f4c1e2b774d9b34f Mon Sep 17 00:00:00 2001 From: ramya0820 <45977823+ramya0820@users.noreply.github.com> Date: Tue, 16 Jul 2019 15:38:06 -0700 Subject: [PATCH 286/289] [Service Bus] Update version in constants.ts (#4332) * [Event Hubs] Introduce timeoutInMs on RetryOptions (#4239) * Update version in constants file --- sdk/servicebus/service-bus/src/util/constants.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/servicebus/service-bus/src/util/constants.ts b/sdk/servicebus/service-bus/src/util/constants.ts index a39e80feb54d..ccfa5fd210f3 100644 --- a/sdk/servicebus/service-bus/src/util/constants.ts +++ b/sdk/servicebus/service-bus/src/util/constants.ts @@ -3,7 +3,7 @@ export const packageJsonInfo = { name: "@azure/service-bus", - version: "1.0.2" + version: "1.0.3" }; export const messageDispositionTimeout = 20000; From e2d0341a9201e96b7a2c8acdbb5fd78cd19f07a4 Mon Sep 17 00:00:00 2001 From: ramya0820 <45977823+ramya0820@users.noreply.github.com> Date: Tue, 16 Jul 2019 16:02:48 -0700 Subject: [PATCH 287/289] [Event Hubs] Ensure fallbacks exist for retryOptions (#4326) --- sdk/eventhub/event-hubs/src/eventHubClient.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/sdk/eventhub/event-hubs/src/eventHubClient.ts b/sdk/eventhub/event-hubs/src/eventHubClient.ts index 20d42c2ce48f..8b8e4188523f 100644 --- a/sdk/eventhub/event-hubs/src/eventHubClient.ts +++ b/sdk/eventhub/event-hubs/src/eventHubClient.ts @@ -55,9 +55,9 @@ export interface RetryOptions { export function getRetryAttemptTimeoutInMs(retryOptions: RetryOptions | undefined): number { const timeoutInMs = retryOptions == undefined || - typeof retryOptions.timeoutInMs !== "number" || - !isFinite(retryOptions.timeoutInMs) || - retryOptions.timeoutInMs < Constants.defaultOperationTimeoutInSeconds * 1000 + typeof retryOptions.timeoutInMs !== "number" || + !isFinite(retryOptions.timeoutInMs) || + retryOptions.timeoutInMs < Constants.defaultOperationTimeoutInSeconds * 1000 ? Constants.defaultOperationTimeoutInSeconds * 1000 : retryOptions.timeoutInMs; return timeoutInMs; @@ -342,6 +342,12 @@ export class EventHubClient { * @returns Promise */ createProducer(options?: EventHubProducerOptions): EventHubProducer { + if (!options) { + options = {}; + } + if (!options.retryOptions) { + options.retryOptions = this._clientOptions.retryOptions; + } throwErrorIfConnectionClosed(this._context); return new EventHubProducer(this._context, options); } @@ -370,6 +376,12 @@ export class EventHubClient { eventPosition: EventPosition, options?: EventHubConsumerOptions ): EventHubConsumer { + if (!options) { + options = {}; + } + if (!options.retryOptions) { + options.retryOptions = this._clientOptions.retryOptions; + } throwErrorIfConnectionClosed(this._context); throwTypeErrorIfParameterMissing(this._context.connectionId, "consumerGroup", consumerGroup); throwTypeErrorIfParameterMissing(this._context.connectionId, "partitionId", partitionId); From 9128a4632ead71eb5ec431b0fcf348c56950c078 Mon Sep 17 00:00:00 2001 From: ShivangiReja <45216704+ShivangiReja@users.noreply.github.com> Date: Tue, 16 Jul 2019 16:43:24 -0700 Subject: [PATCH 288/289] [EPH] Update event-hub version to 2.1.1 and make it compatible with EPH (#4333) * [EPH] Update event-hub version to 2.1.1 and make it compatible with EPH --- common/config/rush/pnpm-lock.yaml | 44 ++++++++++++++++--- .../event-hubs/review/event-hubs.api.md | 2 +- .../event-processor-host/changelog.md | 23 +++++++++- .../event-processor-host/package.json | 6 +-- .../review/event-processor-host.api.md | 8 ++-- .../src/eventProcessorHost.ts | 2 +- .../src/util/constants.ts | 2 +- sdk/eventhub/testhub/package.json | 2 +- 8 files changed, 71 insertions(+), 18 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index da0289502964..f55fb7f5b8b0 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -1,7 +1,8 @@ dependencies: '@azure/amqp-common': 1.0.0-preview.6_rhea-promise@0.1.15 '@azure/arm-servicebus': 0.1.0 - '@azure/event-hubs': 1.0.8 + '@azure/event-hubs': 2.1.1 + '@azure/event-processor-host': 1.0.6 '@azure/logger-js': 1.3.2 '@azure/ms-rest-azure-js': 1.3.8 '@azure/ms-rest-js': 1.8.13 @@ -245,6 +246,33 @@ packages: dev: false resolution: integrity: sha512-iYaB08erq2Eg5sUOXD0GXn4OmkqC67xczLfnlaaF0fLtgk999ePTuFqj4LHYT5HHUdDumYZ+U3WjPSvb0ztHJw== + /@azure/event-hubs/2.1.1: + dependencies: + '@azure/amqp-common': 1.0.0-preview.6_rhea-promise@0.1.15 + '@azure/ms-rest-nodeauth': 0.9.3 + async-lock: 1.2.2 + debug: 3.2.6 + is-buffer: 2.0.3 + jssha: 2.3.1 + rhea-promise: 0.1.15 + tslib: 1.10.0 + uuid: 3.3.2 + dev: false + resolution: + integrity: sha512-nGnFBPcB/rs+5YWwmHJg+d3Cs7BrjtVfuD1eEv8j+ui2X6uXxB88wom1A2t/7xsSzkunQSrXJ2mCwdHxKI5aHw== + /@azure/event-processor-host/1.0.6: + dependencies: + '@azure/event-hubs': 1.0.8 + async-lock: 1.2.2 + azure-storage: 2.10.3 + debug: 3.2.6 + ms-rest-azure: 2.6.0 + path-browserify: 1.0.0 + tslib: 1.10.0 + uuid: 3.3.2 + dev: false + resolution: + integrity: sha512-SjlC+eXXeVWEU0oSK7Q6xVhbFd9G7tG+F6QK7orqpIYSzn0NPtDeKZasTO+nS0uvrUDKr3vs2DiK+fEjz8hm5g== /@azure/logger-js/1.3.2: dependencies: tslib: 1.10.0 @@ -10066,7 +10094,8 @@ packages: version: 0.0.0 'file:projects/event-processor-host.tgz': dependencies: - '@azure/event-hubs': 1.0.8 + '@azure/event-hubs': 2.1.1 + '@azure/ms-rest-nodeauth': 0.9.3 '@microsoft/api-extractor': 7.3.2 '@types/async-lock': 1.1.1 '@types/chai': 4.1.7 @@ -10116,7 +10145,7 @@ packages: dev: false name: '@rush-temp/event-processor-host' resolution: - integrity: sha512-kNXtALlFQOATlvSkSIJ2PU54lX/OY/yD33fxY4KXBUcEZ3fJTaH8iXmV0S89Ry/eaOHtHU/Iia1Yfs7u7d4avA== + integrity: sha512-YEltFsweWeV5/IHJyEd/kVz7RG4iRz2AWE6rsw23UIXJaMkEc3nhsw/FtJpWq8bGWs8Dp3pvzKx1VezkCFB9MQ== tarball: 'file:projects/event-processor-host.tgz' version: 0.0.0 'file:projects/identity.tgz': @@ -10623,7 +10652,8 @@ packages: version: 0.0.0 'file:projects/testhub.tgz': dependencies: - '@azure/event-hubs': 1.0.8 + '@azure/event-hubs': 2.1.1 + '@azure/event-processor-host': 1.0.6 '@types/node': 8.10.50 '@types/uuid': 3.4.5 '@types/yargs': 11.1.2 @@ -10643,13 +10673,15 @@ packages: dev: false name: '@rush-temp/testhub' resolution: - integrity: sha512-c3cFI0Our99carkgcyOFLmX5QRh5fIqyVv9S75VRX7woNtBGXPvWRE8VOxEN9o8N8FjSEQzc6PPEO6YRz7ok8Q== + integrity: sha512-Lt7NGJIhEbyVoQ1sJ4eUnUg7nGIkdgatRJJMWz18ZVWxKFXPxbBjxPsvIJNirR8QdA3efLv1FhyM4lszfJHcjw== tarball: 'file:projects/testhub.tgz' version: 0.0.0 +registry: '' specifiers: '@azure/amqp-common': ^1.0.0-preview.6 '@azure/arm-servicebus': ^0.1.0 - '@azure/event-hubs': ^1.0.6 + '@azure/event-hubs': ^2.1.1 + '@azure/event-processor-host': ^1.0.6 '@azure/logger-js': ^1.0.2 '@azure/ms-rest-azure-js': ^1.3.2 '@azure/ms-rest-js': ^1.2.6 diff --git a/sdk/eventhub/event-hubs/review/event-hubs.api.md b/sdk/eventhub/event-hubs/review/event-hubs.api.md index fcf25ef9fe80..69fbec014ccf 100644 --- a/sdk/eventhub/event-hubs/review/event-hubs.api.md +++ b/sdk/eventhub/event-hubs/review/event-hubs.api.md @@ -50,7 +50,7 @@ export class EventDataBatch { constructor(context: ConnectionContext, maxSizeInBytes: number, partitionKey?: string); readonly batchMessage: Buffer | undefined; readonly partitionKey: string | undefined; - readonly size: number | undefined; + readonly size: number; tryAdd(eventData: EventData): boolean; } diff --git a/sdk/eventhub/event-processor-host/changelog.md b/sdk/eventhub/event-processor-host/changelog.md index 5fab95c4dfc5..89fd917d926f 100644 --- a/sdk/eventhub/event-processor-host/changelog.md +++ b/sdk/eventhub/event-processor-host/changelog.md @@ -1,3 +1,24 @@ +## 2019-07-16 2.0.0 +- Use the latest version of the dependency on [@azure/event-hubs](https://www.npmjs.com/package/@azure/event-hubs/v/2.1.1) that has the following bug fixes + - Added event handlers for `error` and `protocolError` events on the connection object to avoid the case of unhandled exceptions. This is related to the [bug 4136](https://github.com/Azure/azure-sdk-for-js/issues/4136) + - A network connection lost error is now treated as retryable error. A new error with name `ConnectionLostError` + is introduced for this scenario which you can see if you enable the [logs](https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/eventhub/event-processor-host#debug-logs). + - When recovering from an error that caused the underlying AMQP connection to get disconnected, + [rhea](https://github.com/amqp/rhea/issues/205) reconnects all the older AMQP links on the connection + resulting in the below 2 errors in the logs. We now clear rhea's internal map to avoid such reconnections. + We already have code in place to create new AMQP links to resume send/receive operations. + - InvalidOperationError: A link to connection '.....' $cbs node has already been opened. + - UnauthorizedError: Unauthorized access. 'Listen' claim(s) are required to perform this operation. + +#### Breaking Changes +- If you have been using the `createFromAadTokenCredentials` function or the `createFromAadTokenCredentialsWithCustomCheckpointAndLeaseManager` function to create an instance of the +`EventProcessorHost`, you will now need to use the [@azure/ms-rest-nodeauth](https://www.npmjs.com/package/@azure/ms-rest-nodeauth) +library instead of [ms-rest-azure](https://www.npmjs.com/package/ms-rest-azure) library to create +the credentials that are needed by these functions. + - Typescript: Replace `import * from "ms-rest-azure";` with `import * from "@azure/ms-rest-nodeauth";` + - Javascript: Replace `require("ms-rest-azure")` with `require("@azure/ms-rest-nodeauth")` + + ## 2018-10-05 1.0.6 - Remove `@azure/amqp-common` and `rhea-promise` as dependencies, since we use very little from those libraries and there is a risk of having two instances of rhea in the dependency chain which @@ -61,4 +82,4 @@ partition management. - This client library makes it easier to manage receivers for an EventHub. - You can checkpoint the received data to an Azure Storage Blob. The processor does checkpointing on your behalf at regular intervals. This makes it easy to start receiving events from the point you -left at a later time. \ No newline at end of file +left at a later time. diff --git a/sdk/eventhub/event-processor-host/package.json b/sdk/eventhub/event-processor-host/package.json index 6c88a271487e..71cc65efb032 100644 --- a/sdk/eventhub/event-processor-host/package.json +++ b/sdk/eventhub/event-processor-host/package.json @@ -1,7 +1,7 @@ { "name": "@azure/event-processor-host", "sdk-type": "client", - "version": "1.0.6", + "version": "2.0.0", "description": "Azure Event Processor Host (Event Hubs) SDK for JS.", "author": "Microsoft Corporation", "license": "MIT", @@ -58,11 +58,11 @@ "unit-test": "npm run unit-test:node && npm run unit-test:browser" }, "dependencies": { - "@azure/event-hubs": "^1.0.6", + "@azure/event-hubs": "^2.1.1", "async-lock": "^1.1.3", "azure-storage": "^2.10.2", "debug": "^3.1.0", - "ms-rest-azure": "^2.5.9", + "@azure/ms-rest-nodeauth": "^0.9.2", "path-browserify": "^1.0.0", "tslib": "^1.9.3", "uuid": "^3.3.2" diff --git a/sdk/eventhub/event-processor-host/review/event-processor-host.api.md b/sdk/eventhub/event-processor-host/review/event-processor-host.api.md index 3f18c060ada6..f3aee4ba32bc 100644 --- a/sdk/eventhub/event-processor-host/review/event-processor-host.api.md +++ b/sdk/eventhub/event-processor-host/review/event-processor-host.api.md @@ -5,13 +5,13 @@ ```ts import { aadEventHubsAudience } from '@azure/event-hubs'; -import { ApplicationTokenCredentials } from 'ms-rest-azure'; +import { ApplicationTokenCredentials } from '@azure/ms-rest-nodeauth'; import AsyncLock from 'async-lock'; import { BlobService as BlobService_2 } from 'azure-storage'; import { ClientOptionsBase } from '@azure/event-hubs'; import { DataTransformer } from '@azure/event-hubs'; import { delay } from '@azure/event-hubs'; -import { DeviceTokenCredentials } from 'ms-rest-azure'; +import { DeviceTokenCredentials } from '@azure/ms-rest-nodeauth'; import { Dictionary } from '@azure/event-hubs'; import { EventData } from '@azure/event-hubs'; import { EventHubClient } from '@azure/event-hubs'; @@ -20,11 +20,11 @@ import { EventHubPartitionRuntimeInformation } from '@azure/event-hubs'; import { EventHubRuntimeInformation } from '@azure/event-hubs'; import { EventPosition } from '@azure/event-hubs'; import { MessagingError } from '@azure/event-hubs'; -import { MSITokenCredentials } from 'ms-rest-azure'; +import { MSITokenCredentials } from '@azure/ms-rest-nodeauth'; import { OnError } from '@azure/event-hubs'; import { ServiceResponse } from 'azure-storage'; import { TokenProvider } from '@azure/event-hubs'; -import { UserTokenCredentials } from 'ms-rest-azure'; +import { UserTokenCredentials } from '@azure/ms-rest-nodeauth'; export { aadEventHubsAudience } diff --git a/sdk/eventhub/event-processor-host/src/eventProcessorHost.ts b/sdk/eventhub/event-processor-host/src/eventProcessorHost.ts index a1af40a406ee..be8fb2943481 100644 --- a/sdk/eventhub/event-processor-host/src/eventProcessorHost.ts +++ b/sdk/eventhub/event-processor-host/src/eventProcessorHost.ts @@ -14,7 +14,7 @@ import { UserTokenCredentials, DeviceTokenCredentials, MSITokenCredentials -} from "ms-rest-azure"; +} from "@azure/ms-rest-nodeauth"; import * as log from "./log"; import { LeaseManager } from "./leaseManager"; import { HostContext } from "./hostContext"; diff --git a/sdk/eventhub/event-processor-host/src/util/constants.ts b/sdk/eventhub/event-processor-host/src/util/constants.ts index 968570fd22fd..7520f58a47b5 100644 --- a/sdk/eventhub/event-processor-host/src/util/constants.ts +++ b/sdk/eventhub/event-processor-host/src/util/constants.ts @@ -18,5 +18,5 @@ export const leaseIdMismatchWithBlobOperation = "leaseidmismatchwithbloboperatio export const defaultConsumerGroup = "$default"; export const packageInfo = { name: "@azure/event-processor-host", - version: "1.0.5" + version: "2.0.0" }; diff --git a/sdk/eventhub/testhub/package.json b/sdk/eventhub/testhub/package.json index 4048fbb962b2..eb5943621607 100644 --- a/sdk/eventhub/testhub/package.json +++ b/sdk/eventhub/testhub/package.json @@ -7,7 +7,7 @@ "node": ">=6.0.0" }, "dependencies": { - "@azure/event-hubs": "^1.0.6", + "@azure/event-hubs": "^2.1.1", "@azure/event-processor-host": "^1.0.6", "@types/node": "^8.0.0", "@types/uuid": "^3.4.3", From b7e603bbeab5183e259546e7b3c529e380ba324f Mon Sep 17 00:00:00 2001 From: SDK Automation Date: Wed, 17 Jul 2019 16:42:29 +0000 Subject: [PATCH 289/289] Generated from 47915530c58914f6d82019b48b33bd0b51094b83 Update cdn.json --- sdk/cdn/arm-cdn/README.md | 1 - sdk/cdn/arm-cdn/package.json | 8 +- sdk/cdn/arm-cdn/src/cdnManagementClient.ts | 11 +- .../arm-cdn/src/cdnManagementClientContext.ts | 17 +- .../src/models/customDomainsMappers.ts | 47 +- .../arm-cdn/src/models/edgeNodesMappers.ts | 47 +- .../arm-cdn/src/models/endpointsMappers.ts | 47 +- sdk/cdn/arm-cdn/src/models/index.ts | 1891 +++++++++--- .../src/models/managedRuleSetsMappers.ts | 83 + sdk/cdn/arm-cdn/src/models/mappers.ts | 2563 ++++++++++++++--- sdk/cdn/arm-cdn/src/models/originsMappers.ts | 47 +- sdk/cdn/arm-cdn/src/models/parameters.ts | 30 +- sdk/cdn/arm-cdn/src/models/policiesMappers.ts | 84 + sdk/cdn/arm-cdn/src/models/profilesMappers.ts | 47 +- .../arm-cdn/src/operations/customDomains.ts | 12 +- sdk/cdn/arm-cdn/src/operations/endpoints.ts | 22 +- sdk/cdn/arm-cdn/src/operations/index.ts | 2 + .../arm-cdn/src/operations/managedRuleSets.ts | 126 + sdk/cdn/arm-cdn/src/operations/origins.ts | 6 +- sdk/cdn/arm-cdn/src/operations/policies.ts | 388 +++ sdk/cdn/arm-cdn/src/operations/profiles.ts | 16 +- 21 files changed, 4695 insertions(+), 800 deletions(-) create mode 100644 sdk/cdn/arm-cdn/src/models/managedRuleSetsMappers.ts create mode 100644 sdk/cdn/arm-cdn/src/models/policiesMappers.ts create mode 100644 sdk/cdn/arm-cdn/src/operations/managedRuleSets.ts create mode 100644 sdk/cdn/arm-cdn/src/operations/policies.ts diff --git a/sdk/cdn/arm-cdn/README.md b/sdk/cdn/arm-cdn/README.md index b6d871b13f0b..825e031423d3 100644 --- a/sdk/cdn/arm-cdn/README.md +++ b/sdk/cdn/arm-cdn/README.md @@ -95,5 +95,4 @@ See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to - [Microsoft Azure SDK for Javascript](https://github.com/Azure/azure-sdk-for-js) - ![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js/sdk/cdn/arm-cdn/README.png) diff --git a/sdk/cdn/arm-cdn/package.json b/sdk/cdn/arm-cdn/package.json index c5945226f8ba..c1e52393db88 100644 --- a/sdk/cdn/arm-cdn/package.json +++ b/sdk/cdn/arm-cdn/package.json @@ -5,7 +5,7 @@ "version": "4.2.0", "dependencies": { "@azure/ms-rest-azure-js": "^1.3.2", - "@azure/ms-rest-js": "^1.6.0", + "@azure/ms-rest-js": "^1.8.1", "tslib": "^1.9.3" }, "keywords": [ @@ -26,13 +26,13 @@ "rollup-plugin-sourcemaps": "^0.4.2", "uglify-js": "^3.4.9" }, - "homepage": "https://github.com/azure/azure-sdk-for-js/tree/master/sdk/cdn/arm-cdn", + "homepage": "https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/cdn/arm-cdn", "repository": { "type": "git", - "url": "https://github.com/azure/azure-sdk-for-js.git" + "url": "https://github.com/Azure/azure-sdk-for-js.git" }, "bugs": { - "url": "https://github.com/azure/azure-sdk-for-js/issues" + "url": "https://github.com/Azure/azure-sdk-for-js/issues" }, "files": [ "dist/**/*.js", diff --git a/sdk/cdn/arm-cdn/src/cdnManagementClient.ts b/sdk/cdn/arm-cdn/src/cdnManagementClient.ts index d0659fd35c4c..8bcaeb7ed4c6 100644 --- a/sdk/cdn/arm-cdn/src/cdnManagementClient.ts +++ b/sdk/cdn/arm-cdn/src/cdnManagementClient.ts @@ -25,15 +25,20 @@ class CdnManagementClient extends CdnManagementClientContext { resourceUsage: operations.ResourceUsageOperations; operations: operations.Operations; edgeNodes: operations.EdgeNodes; + policies: operations.Policies; + managedRuleSets: operations.ManagedRuleSets; /** * Initializes a new instance of the CdnManagementClient class. * @param credentials Credentials needed for the client to connect to Azure. * @param subscriptionId Azure Subscription ID. + * @param subscriptionId1 Azure Subscription ID. + * @param apiVersion1 Version of the API to be used with the client request. Current version is + * 2017-04-02. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.CdnManagementClientOptions) { - super(credentials, subscriptionId, options); + constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, subscriptionId1: string, apiVersion1: string, options?: Models.CdnManagementClientOptions) { + super(credentials, subscriptionId, subscriptionId1, apiVersion1, options); this.profiles = new operations.Profiles(this); this.endpoints = new operations.Endpoints(this); this.origins = new operations.Origins(this); @@ -41,6 +46,8 @@ class CdnManagementClient extends CdnManagementClientContext { this.resourceUsage = new operations.ResourceUsageOperations(this); this.operations = new operations.Operations(this); this.edgeNodes = new operations.EdgeNodes(this); + this.policies = new operations.Policies(this); + this.managedRuleSets = new operations.ManagedRuleSets(this); } /** diff --git a/sdk/cdn/arm-cdn/src/cdnManagementClientContext.ts b/sdk/cdn/arm-cdn/src/cdnManagementClientContext.ts index b57e0c53f2be..7d8d75f3d56b 100644 --- a/sdk/cdn/arm-cdn/src/cdnManagementClientContext.ts +++ b/sdk/cdn/arm-cdn/src/cdnManagementClientContext.ts @@ -19,20 +19,31 @@ export class CdnManagementClientContext extends msRestAzure.AzureServiceClient { credentials: msRest.ServiceClientCredentials; subscriptionId: string; apiVersion?: string; + subscriptionId1: string; + apiVersion1: string; /** * Initializes a new instance of the CdnManagementClient class. * @param credentials Credentials needed for the client to connect to Azure. * @param subscriptionId Azure Subscription ID. + * @param subscriptionId1 Azure Subscription ID. + * @param apiVersion1 Version of the API to be used with the client request. Current version is + * 2017-04-02. * @param [options] The parameter options */ - constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, options?: Models.CdnManagementClientOptions) { + constructor(credentials: msRest.ServiceClientCredentials, subscriptionId: string, subscriptionId1: string, apiVersion1: string, options?: Models.CdnManagementClientOptions) { if (credentials == undefined) { throw new Error('\'credentials\' cannot be null.'); } if (subscriptionId == undefined) { throw new Error('\'subscriptionId\' cannot be null.'); } + if (subscriptionId1 == undefined) { + throw new Error('\'subscriptionId1\' cannot be null.'); + } + if (apiVersion1 == undefined) { + throw new Error('\'apiVersion1\' cannot be null.'); + } if (!options) { options = {}; @@ -44,13 +55,15 @@ export class CdnManagementClientContext extends msRestAzure.AzureServiceClient { super(credentials, options); - this.apiVersion = '2017-10-12'; + this.apiVersion = '2019-06-15-preview'; this.acceptLanguage = 'en-US'; this.longRunningOperationRetryTimeout = 30; this.baseUri = options.baseUri || this.baseUri || "https://management.azure.com"; this.requestContentType = "application/json; charset=utf-8"; this.credentials = credentials; this.subscriptionId = subscriptionId; + this.subscriptionId1 = subscriptionId1; + this.apiVersion1 = apiVersion1; if(options.acceptLanguage !== null && options.acceptLanguage !== undefined) { this.acceptLanguage = options.acceptLanguage; diff --git a/sdk/cdn/arm-cdn/src/models/customDomainsMappers.ts b/sdk/cdn/arm-cdn/src/models/customDomainsMappers.ts index 3bd827402303..83ecff459a1c 100644 --- a/sdk/cdn/arm-cdn/src/models/customDomainsMappers.ts +++ b/sdk/cdn/arm-cdn/src/models/customDomainsMappers.ts @@ -8,39 +8,82 @@ export { discriminators, + ActionType, BaseResource, CacheExpirationActionParameters, CdnCertificateSourceParameters, + CdnEndpoint, CdnManagedHttpsParameters, + CdnWebApplicationFirewallPolicy, + CdnWebApplicationFirewallPolicyPatchParameters, CidrIpAddress, CustomDomain, CustomDomainHttpsParameters, CustomDomainListResult, CustomDomainParameters, + CustomRule, + CustomRuleList, DeepCreatedOrigin, DeliveryRule, DeliveryRuleAction, DeliveryRuleCacheExpirationAction, DeliveryRuleCondition, + DeliveryRuleIsDeviceCondition, + DeliveryRulePostArgsCondition, + DeliveryRuleQueryStringCondition, + DeliveryRuleRemoteAddressCondition, + DeliveryRuleRequestBodyCondition, + DeliveryRuleRequestHeaderAction, + DeliveryRuleRequestHeaderCondition, + DeliveryRuleRequestMethodCondition, + DeliveryRuleRequestSchemeCondition, + DeliveryRuleRequestUriCondition, + DeliveryRuleResponseHeaderAction, DeliveryRuleUrlFileExtensionCondition, + DeliveryRuleUrlFileNameCondition, DeliveryRuleUrlPathCondition, EdgeNode, Endpoint, EndpointPropertiesUpdateParametersDeliveryPolicy, + EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink, EndpointUpdateParameters, ErrorResponse, GeoFilter, + HeaderActionParameters, IpAddressGroup, + IsDeviceMatchConditionParameters, KeyVaultCertificateSourceParameters, + ManagedRuleDefinition, + ManagedRuleGroupDefinition, + ManagedRuleGroupOverride, + ManagedRuleOverride, + ManagedRuleSet, + ManagedRuleSetDefinition, + ManagedRuleSetList, + MatchCondition, Origin, OriginUpdateParameters, + PolicySettings, + PostArgsMatchConditionParameters, Profile, ProfileUpdateParameters, ProxyResource, + QueryStringMatchConditionParameters, + RateLimitRule, + RateLimitRuleList, + RemoteAddressMatchConditionParameters, + RequestBodyMatchConditionParameters, + RequestHeaderMatchConditionParameters, + RequestMethodMatchConditionParameters, + RequestSchemeMatchConditionParameters, + RequestUriMatchConditionParameters, Resource, Sku, TrackedResource, - UrlFileExtensionConditionParameters, - UrlPathConditionParameters, + UrlFileExtensionMatchConditionParameters, + UrlFileNameMatchConditionParameters, + UrlPathMatchConditionParameters, + UrlRedirectAction, + UrlRedirectActionParameters, UserManagedHttpsParameters } from "../models/mappers"; diff --git a/sdk/cdn/arm-cdn/src/models/edgeNodesMappers.ts b/sdk/cdn/arm-cdn/src/models/edgeNodesMappers.ts index 59b6f89e96de..8c6941f7b22d 100644 --- a/sdk/cdn/arm-cdn/src/models/edgeNodesMappers.ts +++ b/sdk/cdn/arm-cdn/src/models/edgeNodesMappers.ts @@ -8,33 +8,76 @@ export { discriminators, + ActionType, BaseResource, CacheExpirationActionParameters, + CdnEndpoint, + CdnWebApplicationFirewallPolicy, + CdnWebApplicationFirewallPolicyPatchParameters, CidrIpAddress, CustomDomain, + CustomRule, + CustomRuleList, DeepCreatedOrigin, DeliveryRule, DeliveryRuleAction, DeliveryRuleCacheExpirationAction, DeliveryRuleCondition, + DeliveryRuleIsDeviceCondition, + DeliveryRulePostArgsCondition, + DeliveryRuleQueryStringCondition, + DeliveryRuleRemoteAddressCondition, + DeliveryRuleRequestBodyCondition, + DeliveryRuleRequestHeaderAction, + DeliveryRuleRequestHeaderCondition, + DeliveryRuleRequestMethodCondition, + DeliveryRuleRequestSchemeCondition, + DeliveryRuleRequestUriCondition, + DeliveryRuleResponseHeaderAction, DeliveryRuleUrlFileExtensionCondition, + DeliveryRuleUrlFileNameCondition, DeliveryRuleUrlPathCondition, EdgeNode, EdgenodeResult, Endpoint, EndpointPropertiesUpdateParametersDeliveryPolicy, + EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink, EndpointUpdateParameters, ErrorResponse, GeoFilter, + HeaderActionParameters, IpAddressGroup, + IsDeviceMatchConditionParameters, + ManagedRuleDefinition, + ManagedRuleGroupDefinition, + ManagedRuleGroupOverride, + ManagedRuleOverride, + ManagedRuleSet, + ManagedRuleSetDefinition, + ManagedRuleSetList, + MatchCondition, Origin, OriginUpdateParameters, + PolicySettings, + PostArgsMatchConditionParameters, Profile, ProfileUpdateParameters, ProxyResource, + QueryStringMatchConditionParameters, + RateLimitRule, + RateLimitRuleList, + RemoteAddressMatchConditionParameters, + RequestBodyMatchConditionParameters, + RequestHeaderMatchConditionParameters, + RequestMethodMatchConditionParameters, + RequestSchemeMatchConditionParameters, + RequestUriMatchConditionParameters, Resource, Sku, TrackedResource, - UrlFileExtensionConditionParameters, - UrlPathConditionParameters + UrlFileExtensionMatchConditionParameters, + UrlFileNameMatchConditionParameters, + UrlPathMatchConditionParameters, + UrlRedirectAction, + UrlRedirectActionParameters } from "../models/mappers"; diff --git a/sdk/cdn/arm-cdn/src/models/endpointsMappers.ts b/sdk/cdn/arm-cdn/src/models/endpointsMappers.ts index 547872122332..7d529fd4adcc 100644 --- a/sdk/cdn/arm-cdn/src/models/endpointsMappers.ts +++ b/sdk/cdn/arm-cdn/src/models/endpointsMappers.ts @@ -8,39 +8,82 @@ export { discriminators, + ActionType, BaseResource, CacheExpirationActionParameters, + CdnEndpoint, + CdnWebApplicationFirewallPolicy, + CdnWebApplicationFirewallPolicyPatchParameters, CidrIpAddress, CustomDomain, + CustomRule, + CustomRuleList, DeepCreatedOrigin, DeliveryRule, DeliveryRuleAction, DeliveryRuleCacheExpirationAction, DeliveryRuleCondition, + DeliveryRuleIsDeviceCondition, + DeliveryRulePostArgsCondition, + DeliveryRuleQueryStringCondition, + DeliveryRuleRemoteAddressCondition, + DeliveryRuleRequestBodyCondition, + DeliveryRuleRequestHeaderAction, + DeliveryRuleRequestHeaderCondition, + DeliveryRuleRequestMethodCondition, + DeliveryRuleRequestSchemeCondition, + DeliveryRuleRequestUriCondition, + DeliveryRuleResponseHeaderAction, DeliveryRuleUrlFileExtensionCondition, + DeliveryRuleUrlFileNameCondition, DeliveryRuleUrlPathCondition, EdgeNode, Endpoint, EndpointListResult, EndpointPropertiesUpdateParametersDeliveryPolicy, + EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink, EndpointUpdateParameters, ErrorResponse, GeoFilter, + HeaderActionParameters, IpAddressGroup, + IsDeviceMatchConditionParameters, LoadParameters, + ManagedRuleDefinition, + ManagedRuleGroupDefinition, + ManagedRuleGroupOverride, + ManagedRuleOverride, + ManagedRuleSet, + ManagedRuleSetDefinition, + ManagedRuleSetList, + MatchCondition, Origin, OriginUpdateParameters, + PolicySettings, + PostArgsMatchConditionParameters, Profile, ProfileUpdateParameters, ProxyResource, PurgeParameters, + QueryStringMatchConditionParameters, + RateLimitRule, + RateLimitRuleList, + RemoteAddressMatchConditionParameters, + RequestBodyMatchConditionParameters, + RequestHeaderMatchConditionParameters, + RequestMethodMatchConditionParameters, + RequestSchemeMatchConditionParameters, + RequestUriMatchConditionParameters, Resource, ResourceUsage, ResourceUsageListResult, Sku, TrackedResource, - UrlFileExtensionConditionParameters, - UrlPathConditionParameters, + UrlFileExtensionMatchConditionParameters, + UrlFileNameMatchConditionParameters, + UrlPathMatchConditionParameters, + UrlRedirectAction, + UrlRedirectActionParameters, ValidateCustomDomainInput, ValidateCustomDomainOutput } from "../models/mappers"; diff --git a/sdk/cdn/arm-cdn/src/models/index.ts b/sdk/cdn/arm-cdn/src/models/index.ts index 951ca9b6e44c..c8b736ba42aa 100644 --- a/sdk/cdn/arm-cdn/src/models/index.ts +++ b/sdk/cdn/arm-cdn/src/models/index.ts @@ -199,6 +199,10 @@ export interface Endpoint extends TrackedResource { * A policy that specifies the delivery rules to be used for an endpoint. */ deliveryPolicy?: EndpointPropertiesUpdateParametersDeliveryPolicy; + /** + * Defines the Web Application Firewall policy for the endpoint (if applicable) + */ + webApplicationFirewallPolicyLink?: EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink; /** * The host name of the endpoint structured as {endpointName}.{DNSZone}, e.g. * contoso.azureedge.net @@ -242,39 +246,43 @@ export interface GeoFilter { } /** - * Contains the possible cases for DeliveryRuleAction. + * Contains the possible cases for DeliveryRuleCondition. */ -export type DeliveryRuleActionUnion = DeliveryRuleAction | DeliveryRuleCacheExpirationAction; +export type DeliveryRuleConditionUnion = DeliveryRuleCondition | DeliveryRuleRemoteAddressCondition | DeliveryRuleRequestMethodCondition | DeliveryRuleQueryStringCondition | DeliveryRulePostArgsCondition | DeliveryRuleRequestUriCondition | DeliveryRuleRequestHeaderCondition | DeliveryRuleRequestBodyCondition | DeliveryRuleRequestSchemeCondition | DeliveryRuleUrlPathCondition | DeliveryRuleUrlFileExtensionCondition | DeliveryRuleUrlFileNameCondition | DeliveryRuleIsDeviceCondition; /** - * An action for the delivery rule. + * A condition for the delivery rule. */ -export interface DeliveryRuleAction { +export interface DeliveryRuleCondition { /** * Polymorphic Discriminator */ - name: "DeliveryRuleAction"; + name: "DeliveryRuleCondition"; } /** - * Contains the possible cases for DeliveryRuleCondition. + * Contains the possible cases for DeliveryRuleAction. */ -export type DeliveryRuleConditionUnion = DeliveryRuleCondition | DeliveryRuleUrlPathCondition | DeliveryRuleUrlFileExtensionCondition; +export type DeliveryRuleActionUnion = DeliveryRuleAction | UrlRedirectAction | DeliveryRuleRequestHeaderAction | DeliveryRuleResponseHeaderAction | DeliveryRuleCacheExpirationAction; /** - * A condition for the delivery rule. + * An action for the delivery rule. */ -export interface DeliveryRuleCondition { +export interface DeliveryRuleAction { /** * Polymorphic Discriminator */ - name: "DeliveryRuleCondition"; + name: "DeliveryRuleAction"; } /** * A rule that specifies a set of actions and conditions */ export interface DeliveryRule { + /** + * Name of the rule + */ + name: string; /** * The order in which the rules are applied for the endpoint. Possible values {0,1,2,3,………}. A * rule with a lesser order will be applied before a rule with a greater order. Rule with order 0 @@ -282,14 +290,14 @@ export interface DeliveryRule { * applied. */ order: number; - /** - * A list of actions that are executed when all the conditions of a rule are satisfied. - */ - actions: DeliveryRuleActionUnion[]; /** * A list of conditions that must be matched for the actions to be executed */ conditions?: DeliveryRuleConditionUnion[]; + /** + * A list of actions that are executed when all the conditions of a rule are satisfied. + */ + actions: DeliveryRuleActionUnion[]; } /** @@ -306,6 +314,16 @@ export interface EndpointPropertiesUpdateParametersDeliveryPolicy { rules: DeliveryRule[]; } +/** + * Defines the Web Application Firewall policy for the endpoint (if applicable) + */ +export interface EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink { + /** + * Resource ID. + */ + id?: string; +} + /** * Properties required to create or update an endpoint. */ @@ -374,525 +392,1351 @@ export interface EndpointUpdateParameters extends BaseResource { * A policy that specifies the delivery rules to be used for an endpoint. */ deliveryPolicy?: EndpointPropertiesUpdateParametersDeliveryPolicy; + /** + * Defines the Web Application Firewall policy for the endpoint (if applicable) + */ + webApplicationFirewallPolicyLink?: EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink; } /** - * Defines the parameters for the URL path condition. + * Defines the parameters for RemoteAddress match conditions */ -export interface UrlPathConditionParameters { +export interface RemoteAddressMatchConditionParameters { /** - * A URL path for the condition of the delivery rule + * Describes operator to be matched. Possible values include: 'Any', 'IPMatch', 'GeoMatch' */ - path: string; + operator: RemoteAddressOperator; /** - * The match type for the condition of the delivery rule. Possible values include: 'Literal', - * 'Wildcard' + * Describes if this is negate condition or not + */ + negateCondition?: boolean; + /** + * Match values to match against. The operator will apply to each value in here with OR + * semantics. If any of them match the variable with the given operator this match condition is + * considered a match. + */ + matchValues: string[]; + /** + * List of transforms */ - matchType: MatchType; + transforms?: Transform[]; } /** - * Defines the URL path condition for the delivery rule. + * Defines the RemoteAddress condition for the delivery rule. */ -export interface DeliveryRuleUrlPathCondition { +export interface DeliveryRuleRemoteAddressCondition { /** * Polymorphic Discriminator */ - name: "UrlPath"; + name: "RemoteAddress"; /** * Defines the parameters for the condition. */ - parameters: UrlPathConditionParameters; + parameters: RemoteAddressMatchConditionParameters; } /** - * Defines the parameters for the URL file extension condition. + * Defines the parameters for RequestMethod match conditions */ -export interface UrlFileExtensionConditionParameters { +export interface RequestMethodMatchConditionParameters { + /** + * Describes if this is negate condition or not + */ + negateConditionAPPLES?: boolean; /** - * A list of extensions for the condition of the delivery rule. + * The match value for the condition of the delivery rule */ - extensions: string[]; + matchValues: string[]; } /** - * Defines the URL file extension condition for the delivery rule. + * Defines the RequestMethod condition for the delivery rule. */ -export interface DeliveryRuleUrlFileExtensionCondition { +export interface DeliveryRuleRequestMethodCondition { /** * Polymorphic Discriminator */ - name: "UrlFileExtension"; + name: "RequestMethod"; /** * Defines the parameters for the condition. */ - parameters: UrlFileExtensionConditionParameters; + parameters: RequestMethodMatchConditionParameters; } /** - * Defines the parameters for the cache expiration action. + * Defines the parameters for QueryString match conditions */ -export interface CacheExpirationActionParameters { +export interface QueryStringMatchConditionParameters { /** - * Caching behavior for the requests that include query strings. Possible values include: - * 'BypassCache', 'Override', 'SetIfMissing' + * Describes operator to be matched. Possible values include: 'Any', 'Equal', 'Contains', + * 'BeginsWith', 'EndsWith', 'LessThan', 'LessThanOrEqual', 'GreaterThan', 'GreaterThanOrEqual' */ - cacheBehavior: CacheBehavior; + operator: QueryStringOperator; /** - * The duration for which the content needs to be cached. Allowed format is [d.]hh:mm:ss + * Describes if this is negate condition or not */ - cacheDuration?: string; + negateCondition?: boolean; + /** + * The match value for the condition of the delivery rule + */ + matchValues: string[]; + /** + * List of transforms + */ + transforms?: Transform[]; } /** - * Defines the cache expiration action for the delivery rule. + * Defines the QueryString condition for the delivery rule. */ -export interface DeliveryRuleCacheExpirationAction { +export interface DeliveryRuleQueryStringCondition { /** * Polymorphic Discriminator */ - name: "CacheExpiration"; + name: "QueryString"; /** - * Defines the parameters for the action. + * Defines the parameters for the condition. */ - parameters: CacheExpirationActionParameters; + parameters: QueryStringMatchConditionParameters; } /** - * Parameters required for content purge. + * Defines the parameters for PostArgs match conditions */ -export interface PurgeParameters { +export interface PostArgsMatchConditionParameters { /** - * The path to the content to be purged. Can describe a file path or a wild card directory. + * Name of PostArg to be matched */ - contentPaths: string[]; + selector: string; + /** + * Describes operator to be matched. Possible values include: 'Any', 'Equal', 'Contains', + * 'BeginsWith', 'EndsWith', 'LessThan', 'LessThanOrEqual', 'GreaterThan', 'GreaterThanOrEqual' + */ + operator: PostArgsOperator; + /** + * Describes if this is negate condition or not + */ + negateCondition?: boolean; + /** + * The match value for the condition of the delivery rule + */ + matchValues: string[]; + /** + * List of transforms + */ + transforms?: Transform[]; } /** - * Parameters required for content load. + * Defines the PostArgs condition for the delivery rule. */ -export interface LoadParameters { +export interface DeliveryRulePostArgsCondition { /** - * The path to the content to be loaded. Path should be a relative file URL of the origin. + * Polymorphic Discriminator */ - contentPaths: string[]; + name: "PostArgs"; + /** + * Defines the parameters for the condition. + */ + parameters: PostArgsMatchConditionParameters; } /** - * CDN origin is the source of the content being delivered via CDN. When the edge nodes represented - * by an endpoint do not have the requested content cached, they attempt to fetch it from one or - * more of the configured origins. + * Defines the parameters for RequestUri match conditions */ -export interface Origin extends TrackedResource { +export interface RequestUriMatchConditionParameters { /** - * The address of the origin. Domain names, IPv4 addresses, and IPv6 addresses are supported. + * Describes operator to be matched. Possible values include: 'Any', 'Equal', 'Contains', + * 'BeginsWith', 'EndsWith', 'LessThan', 'LessThanOrEqual', 'GreaterThan', 'GreaterThanOrEqual' */ - hostName: string; + operator: RequestUriOperator; /** - * The value of the HTTP port. Must be between 1 and 65535. + * Describes if this is negate condition or not */ - httpPort?: number; + negateCondition?: boolean; /** - * The value of the https port. Must be between 1 and 65535. + * The match value for the condition of the delivery rule */ - httpsPort?: number; + matchValues: string[]; /** - * Resource status of the origin. Possible values include: 'Creating', 'Active', 'Deleting' - * **NOTE: This property will not be serialized. It can only be populated by the server.** + * List of transforms */ - readonly resourceState?: OriginResourceState; + transforms?: Transform[]; +} + +/** + * Defines the RequestUri condition for the delivery rule. + */ +export interface DeliveryRuleRequestUriCondition { /** - * Provisioning status of the origin. - * **NOTE: This property will not be serialized. It can only be populated by the server.** + * Polymorphic Discriminator */ - readonly provisioningState?: string; + name: "RequestUri"; + /** + * Defines the parameters for the condition. + */ + parameters: RequestUriMatchConditionParameters; } /** - * Origin properties needed for origin creation or update. + * Defines the parameters for RequestHeader match conditions */ -export interface OriginUpdateParameters extends BaseResource { +export interface RequestHeaderMatchConditionParameters { /** - * The address of the origin. Domain names, IPv4 addresses, and IPv6 addresses are supported. + * Name of Header to be matched */ - hostName?: string; + selector: string; /** - * The value of the HTTP port. Must be between 1 and 65535. + * Describes operator to be matched. Possible values include: 'Any', 'Equal', 'Contains', + * 'BeginsWith', 'EndsWith', 'LessThan', 'LessThanOrEqual', 'GreaterThan', 'GreaterThanOrEqual' */ - httpPort?: number; + operator: RequestHeaderOperator; /** - * The value of the HTTPS port. Must be between 1 and 65535. + * Describes if this is negate condition or not */ - httpsPort?: number; + negateCondition?: boolean; + /** + * The match value for the condition of the delivery rule + */ + matchValues: string[]; + /** + * List of transforms + */ + transforms?: Transform[]; } /** - * The resource model definition for a ARM proxy resource. It will have everything other than - * required location and tags + * Defines the RequestHeader condition for the delivery rule. */ -export interface ProxyResource extends Resource { +export interface DeliveryRuleRequestHeaderCondition { + /** + * Polymorphic Discriminator + */ + name: "RequestHeader"; + /** + * Defines the parameters for the condition. + */ + parameters: RequestHeaderMatchConditionParameters; } /** - * Friendly domain name mapping to the endpoint hostname that the customer provides for branding - * purposes, e.g. www.contoso.com. + * Defines the parameters for RequestBody match conditions */ -export interface CustomDomain extends ProxyResource { +export interface RequestBodyMatchConditionParameters { /** - * The host name of the custom domain. Must be a domain name. + * Describes operator to be matched. Possible values include: 'Any', 'Equal', 'Contains', + * 'BeginsWith', 'EndsWith', 'LessThan', 'LessThanOrEqual', 'GreaterThan', 'GreaterThanOrEqual' */ - hostName: string; + operator: RequestBodyOperator; /** - * Resource status of the custom domain. Possible values include: 'Creating', 'Active', - * 'Deleting' - * **NOTE: This property will not be serialized. It can only be populated by the server.** + * Describes if this is negate condition or not */ - readonly resourceState?: CustomDomainResourceState; + negateCondition?: boolean; /** - * Provisioning status of Custom Https of the custom domain. Possible values include: 'Enabling', - * 'Enabled', 'Disabling', 'Disabled', 'Failed' - * **NOTE: This property will not be serialized. It can only be populated by the server.** + * The match value for the condition of the delivery rule */ - readonly customHttpsProvisioningState?: CustomHttpsProvisioningState; + matchValues: string[]; /** - * Provisioning substate shows the progress of custom HTTPS enabling/disabling process step by - * step. Possible values include: 'SubmittingDomainControlValidationRequest', - * 'PendingDomainControlValidationREquestApproval', 'DomainControlValidationRequestApproved', - * 'DomainControlValidationRequestRejected', 'DomainControlValidationRequestTimedOut', - * 'IssuingCertificate', 'DeployingCertificate', 'CertificateDeployed', 'DeletingCertificate', - * 'CertificateDeleted' - * **NOTE: This property will not be serialized. It can only be populated by the server.** + * List of transforms */ - readonly customHttpsProvisioningSubstate?: CustomHttpsProvisioningSubstate; + transforms?: Transform[]; +} + +/** + * Defines the RequestBody condition for the delivery rule. + */ +export interface DeliveryRuleRequestBodyCondition { /** - * Special validation or data may be required when delivering CDN to some regions due to local - * compliance reasons. E.g. ICP license number of a custom domain is required to deliver content - * in China. + * Polymorphic Discriminator */ - validationData?: string; + name: "RequestBody"; /** - * Provisioning status of the custom domain. - * **NOTE: This property will not be serialized. It can only be populated by the server.** + * Defines the parameters for the condition. */ - readonly provisioningState?: string; + parameters: RequestBodyMatchConditionParameters; } /** - * The customDomain JSON object required for custom domain creation or update. + * Defines the parameters for RequestScheme match conditions */ -export interface CustomDomainParameters { +export interface RequestSchemeMatchConditionParameters { /** - * The host name of the custom domain. Must be a domain name. + * Describes if this is negate condition or not */ - hostName: string; + negateCondition?: boolean; + /** + * The match value for the condition of the delivery rule + */ + matchValues: string[]; } /** - * Contains the possible cases for CustomDomainHttpsParameters. - */ -export type CustomDomainHttpsParametersUnion = CustomDomainHttpsParameters | CdnManagedHttpsParameters | UserManagedHttpsParameters; - -/** - * The JSON object that contains the properties to secure a custom domain. + * Defines the RequestScheme condition for the delivery rule. */ -export interface CustomDomainHttpsParameters { +export interface DeliveryRuleRequestSchemeCondition { /** * Polymorphic Discriminator */ - certificateSource: "CustomDomainHttpsParameters"; + name: "RequestScheme"; /** - * Defines the TLS extension protocol that is used for secure delivery. Possible values include: - * 'ServerNameIndication', 'IPBased' + * Defines the parameters for the condition. */ - protocolType: ProtocolType; + parameters: RequestSchemeMatchConditionParameters; } /** - * Defines the parameters for using CDN managed certificate for securing custom domain. + * Defines the parameters for UrlPath match conditions */ -export interface CdnCertificateSourceParameters { +export interface UrlPathMatchConditionParameters { /** - * Type of certificate used. Possible values include: 'Shared', 'Dedicated' + * Describes operator to be matched. Possible values include: 'Any', 'Equal', 'Contains', + * 'BeginsWith', 'EndsWith', 'LessThan', 'LessThanOrEqual', 'GreaterThan', 'GreaterThanOrEqual', + * 'Wildcard' */ - certificateType: CertificateType; + operator: UrlPathOperator; + /** + * Describes if this is negate condition or not + */ + negateCondition?: boolean; + /** + * The match value for the condition of the delivery rule + */ + matchValues: string[]; + /** + * List of transforms + */ + transforms?: Transform[]; } /** - * Defines the certificate source parameters using CDN managed certificate for enabling SSL. + * Defines the UrlPath condition for the delivery rule. */ -export interface CdnManagedHttpsParameters { +export interface DeliveryRuleUrlPathCondition { /** * Polymorphic Discriminator */ - certificateSource: "Cdn"; - /** - * Defines the TLS extension protocol that is used for secure delivery. Possible values include: - * 'ServerNameIndication', 'IPBased' - */ - protocolType: ProtocolType; + name: "UrlPath"; /** - * Defines the certificate source parameters using CDN managed certificate for enabling SSL. + * Defines the parameters for the condition. */ - certificateSourceParameters: CdnCertificateSourceParameters; + parameters: UrlPathMatchConditionParameters; } /** - * Describes the parameters for using a user's KeyVault certificate for securing custom domain. + * Defines the parameters for UrlFileExtension match conditions */ -export interface KeyVaultCertificateSourceParameters { +export interface UrlFileExtensionMatchConditionParameters { /** - * Subscription Id of the user's Key Vault containing the SSL certificate + * Describes operator to be matched. Possible values include: 'Any', 'Equal', 'Contains', + * 'BeginsWith', 'EndsWith', 'LessThan', 'LessThanOrEqual', 'GreaterThan', 'GreaterThanOrEqual' */ - subscriptionId: string; + operator: UrlFileExtensionOperator; /** - * Resource group of the user's Key Vault containing the SSL certificate + * Describes if this is negate condition or not */ - resourceGroupName: string; + negateCondition?: boolean; /** - * The name of the user's Key Vault containing the SSL certificate + * The match value for the condition of the delivery rule */ - vaultName: string; + matchValues: string[]; /** - * The name of Key Vault Secret (representing the full certificate PFX) in Key Vault. + * List of transforms */ - secretName: string; + transforms?: Transform[]; +} + +/** + * Defines the UrlFileExtension condition for the delivery rule. + */ +export interface DeliveryRuleUrlFileExtensionCondition { /** - * The version(GUID) of Key Vault Secret in Key Vault. + * Polymorphic Discriminator */ - secretVersion: string; + name: "UrlFileExtension"; + /** + * Defines the parameters for the condition. + */ + parameters: UrlFileExtensionMatchConditionParameters; } /** - * Defines the certificate source parameters using user's keyvault certificate for enabling SSL. + * Defines the parameters for UrlFilename match conditions */ -export interface UserManagedHttpsParameters { +export interface UrlFileNameMatchConditionParameters { /** - * Polymorphic Discriminator + * Describes operator to be matched. Possible values include: 'Any', 'Equal', 'Contains', + * 'BeginsWith', 'EndsWith', 'LessThan', 'LessThanOrEqual', 'GreaterThan', 'GreaterThanOrEqual' */ - certificateSource: "AzureKeyVault"; + operator: UrlFileNameOperator; /** - * Defines the TLS extension protocol that is used for secure delivery. Possible values include: - * 'ServerNameIndication', 'IPBased' + * Describes if this is negate condition or not */ - protocolType: ProtocolType; + negateCondition?: boolean; /** - * Defines the certificate source parameters using user's keyvault certificate for enabling SSL. + * The match value for the condition of the delivery rule */ - certificateSourceParameters: KeyVaultCertificateSourceParameters; + matchValues: string[]; + /** + * List of transforms + */ + transforms?: Transform[]; } /** - * Input of the custom domain to be validated for DNS mapping. + * Defines the UrlFileName condition for the delivery rule. */ -export interface ValidateCustomDomainInput { +export interface DeliveryRuleUrlFileNameCondition { /** - * The host name of the custom domain. Must be a domain name. + * Polymorphic Discriminator */ - hostName: string; + name: "UrlFileName"; + /** + * Defines the parameters for the condition. + */ + parameters: UrlFileNameMatchConditionParameters; } /** - * Output of custom domain validation. + * Defines the parameters for IsDevice match conditions */ -export interface ValidateCustomDomainOutput { +export interface IsDeviceMatchConditionParameters { /** - * Indicates whether the custom domain is valid or not. - * **NOTE: This property will not be serialized. It can only be populated by the server.** + * Describes if this is negate condition or not */ - readonly customDomainValidated?: boolean; + negateCondition?: boolean; /** - * The reason why the custom domain is not valid. - * **NOTE: This property will not be serialized. It can only be populated by the server.** + * The match value for the condition of the delivery rule */ - readonly reason?: string; + matchValues: string[]; /** - * Error message describing why the custom domain is not valid. - * **NOTE: This property will not be serialized. It can only be populated by the server.** + * List of transforms */ - readonly message?: string; + transforms?: Transform[]; +} + +/** + * Defines the IsDevice condition for the delivery rule. + */ +export interface DeliveryRuleIsDeviceCondition { + /** + * Polymorphic Discriminator + */ + name: "IsDevice"; + /** + * Defines the parameters for the condition. + */ + parameters: IsDeviceMatchConditionParameters; +} + +/** + * Defines the parameters for the url redirect action. + */ +export interface UrlRedirectActionParameters { + /** + * The redirect type the rule will use when redirecting traffic. Possible values include: + * 'Moved', 'Found', 'TemporaryRedirect', 'PermanentRedirect' + */ + redirectType: RedirectType; + /** + * Protocol to use for the redirect. The default value is MatchRequest. Possible values include: + * 'MatchRequest', 'Http', 'Https' + */ + destinationProtocol?: DestinationProtocol; + /** + * The full path to redirect. Path cannot be empty and must start with /. Leave empty to use the + * incoming path as destination path. + */ + customPath?: string; + /** + * Host to redirect. Leave empty to use the incoming host as the destination host. + */ + customHostname?: string; + /** + * The set of query strings to be placed in the redirect URL. Setting this value would replace + * any existing query string; leave empty to preserve the incoming query string. Query string + * must be in = format. ? and & will be added automatically so do not include them. + */ + customQueryString?: string; + /** + * Fragment to add to the redirect URL. Fragment is the part of the URL that comes after #. Do + * not include the #. + */ + customFragment?: string; +} + +/** + * Defines the url redirect action for the delivery rule. + */ +export interface UrlRedirectAction { + /** + * Polymorphic Discriminator + */ + name: "UrlRedirect"; + /** + * Defines the parameters for the action. + */ + parameters: UrlRedirectActionParameters; +} + +/** + * Defines the parameters for the request header action. + */ +export interface HeaderActionParameters { + /** + * Action to perform. Possible values include: 'Append', 'Overwrite', 'Delete' + */ + headerAction: HeaderAction; + /** + * Name of the header to modify + */ + headerName: string; + /** + * Value for the specified action + */ + value?: string; +} + +/** + * Defines the request header action for the delivery rule. + */ +export interface DeliveryRuleRequestHeaderAction { + /** + * Polymorphic Discriminator + */ + name: "ModifyRequestHeader"; + /** + * Defines the parameters for the action. + */ + parameters: HeaderActionParameters; +} + +/** + * Defines the response header action for the delivery rule. + */ +export interface DeliveryRuleResponseHeaderAction { + /** + * Polymorphic Discriminator + */ + name: "ModifyResponseHeader"; + /** + * Defines the parameters for the action. + */ + parameters: HeaderActionParameters; +} + +/** + * Defines the parameters for the cache expiration action. + */ +export interface CacheExpirationActionParameters { + /** + * Caching behavior for the requests. Possible values include: 'BypassCache', 'Override', + * 'SetIfMissing' + */ + cacheBehavior: CacheBehavior; + /** + * The duration for which the content needs to be cached. Allowed format is [d.]hh:mm:ss + */ + cacheDuration?: string; +} + +/** + * Defines the cache expiration action for the delivery rule. + */ +export interface DeliveryRuleCacheExpirationAction { + /** + * Polymorphic Discriminator + */ + name: "CacheExpiration"; + /** + * Defines the parameters for the action. + */ + parameters: CacheExpirationActionParameters; +} + +/** + * Parameters required for content purge. + */ +export interface PurgeParameters { + /** + * The path to the content to be purged. Can describe a file path or a wild card directory. + */ + contentPaths: string[]; +} + +/** + * Parameters required for content load. + */ +export interface LoadParameters { + /** + * The path to the content to be loaded. Path should be a relative file URL of the origin. + */ + contentPaths: string[]; +} + +/** + * CDN origin is the source of the content being delivered via CDN. When the edge nodes represented + * by an endpoint do not have the requested content cached, they attempt to fetch it from one or + * more of the configured origins. + */ +export interface Origin extends TrackedResource { + /** + * The address of the origin. Domain names, IPv4 addresses, and IPv6 addresses are supported. + */ + hostName: string; + /** + * The value of the HTTP port. Must be between 1 and 65535. + */ + httpPort?: number; + /** + * The value of the https port. Must be between 1 and 65535. + */ + httpsPort?: number; + /** + * Resource status of the origin. Possible values include: 'Creating', 'Active', 'Deleting' + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly resourceState?: OriginResourceState; + /** + * Provisioning status of the origin. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly provisioningState?: string; +} + +/** + * Origin properties needed for origin creation or update. + */ +export interface OriginUpdateParameters extends BaseResource { + /** + * The address of the origin. Domain names, IPv4 addresses, and IPv6 addresses are supported. + */ + hostName?: string; + /** + * The value of the HTTP port. Must be between 1 and 65535. + */ + httpPort?: number; + /** + * The value of the HTTPS port. Must be between 1 and 65535. + */ + httpsPort?: number; +} + +/** + * The resource model definition for a ARM proxy resource. It will have everything other than + * required location and tags + */ +export interface ProxyResource extends Resource { +} + +/** + * Friendly domain name mapping to the endpoint hostname that the customer provides for branding + * purposes, e.g. www.contoso.com. + */ +export interface CustomDomain extends ProxyResource { + /** + * The host name of the custom domain. Must be a domain name. + */ + hostName: string; + /** + * Resource status of the custom domain. Possible values include: 'Creating', 'Active', + * 'Deleting' + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly resourceState?: CustomDomainResourceState; + /** + * Provisioning status of Custom Https of the custom domain. Possible values include: 'Enabling', + * 'Enabled', 'Disabling', 'Disabled', 'Failed' + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly customHttpsProvisioningState?: CustomHttpsProvisioningState; + /** + * Provisioning substate shows the progress of custom HTTPS enabling/disabling process step by + * step. Possible values include: 'SubmittingDomainControlValidationRequest', + * 'PendingDomainControlValidationREquestApproval', 'DomainControlValidationRequestApproved', + * 'DomainControlValidationRequestRejected', 'DomainControlValidationRequestTimedOut', + * 'IssuingCertificate', 'DeployingCertificate', 'CertificateDeployed', 'DeletingCertificate', + * 'CertificateDeleted' + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly customHttpsProvisioningSubstate?: CustomHttpsProvisioningSubstate; + /** + * Special validation or data may be required when delivering CDN to some regions due to local + * compliance reasons. E.g. ICP license number of a custom domain is required to deliver content + * in China. + */ + validationData?: string; + /** + * Provisioning status of the custom domain. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly provisioningState?: string; +} + +/** + * The customDomain JSON object required for custom domain creation or update. + */ +export interface CustomDomainParameters { + /** + * The host name of the custom domain. Must be a domain name. + */ + hostName: string; +} + +/** + * Contains the possible cases for CustomDomainHttpsParameters. + */ +export type CustomDomainHttpsParametersUnion = CustomDomainHttpsParameters | CdnManagedHttpsParameters | UserManagedHttpsParameters; + +/** + * The JSON object that contains the properties to secure a custom domain. + */ +export interface CustomDomainHttpsParameters { + /** + * Polymorphic Discriminator + */ + certificateSource: "CustomDomainHttpsParameters"; + /** + * Defines the TLS extension protocol that is used for secure delivery. Possible values include: + * 'ServerNameIndication', 'IPBased' + */ + protocolType: ProtocolType; +} + +/** + * Defines the parameters for using CDN managed certificate for securing custom domain. + */ +export interface CdnCertificateSourceParameters { + /** + * Type of certificate used. Possible values include: 'Shared', 'Dedicated' + */ + certificateType: CertificateType; +} + +/** + * Defines the certificate source parameters using CDN managed certificate for enabling SSL. + */ +export interface CdnManagedHttpsParameters { + /** + * Polymorphic Discriminator + */ + certificateSource: "Cdn"; + /** + * Defines the TLS extension protocol that is used for secure delivery. Possible values include: + * 'ServerNameIndication', 'IPBased' + */ + protocolType: ProtocolType; + /** + * Defines the certificate source parameters using CDN managed certificate for enabling SSL. + */ + certificateSourceParameters: CdnCertificateSourceParameters; +} + +/** + * Describes the parameters for using a user's KeyVault certificate for securing custom domain. + */ +export interface KeyVaultCertificateSourceParameters { + /** + * Subscription Id of the user's Key Vault containing the SSL certificate + */ + subscriptionId: string; + /** + * Resource group of the user's Key Vault containing the SSL certificate + */ + resourceGroupName: string; + /** + * The name of the user's Key Vault containing the SSL certificate + */ + vaultNameGRAPES?: string; + /** + * The name of Key Vault Secret (representing the full certificate PFX) in Key Vault. + */ + secretName: string; + /** + * The version(GUID) of Key Vault Secret in Key Vault. + */ + secretVersion: string; +} + +/** + * Defines the certificate source parameters using user's keyvault certificate for enabling SSL. + */ +export interface UserManagedHttpsParameters { + /** + * Polymorphic Discriminator + */ + certificateSource: "AzureKeyVault"; + /** + * Defines the TLS extension protocol that is used for secure delivery. Possible values include: + * 'ServerNameIndication', 'IPBased' + */ + protocolType: ProtocolType; + /** + * Defines the certificate source parameters using user's keyvault certificate for enabling SSL. + */ + certificateSourceParameters: KeyVaultCertificateSourceParameters; +} + +/** + * Input of the custom domain to be validated for DNS mapping. + */ +export interface ValidateCustomDomainInput { + /** + * The host name of the custom domain. Must be a domain name. + */ + hostName: string; +} + +/** + * Output of custom domain validation. + */ +export interface ValidateCustomDomainOutput { + /** + * Indicates whether the custom domain is valid or not. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly customDomainValidated?: boolean; + /** + * The reason why the custom domain is not valid. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly reason?: string; + /** + * Error message describing why the custom domain is not valid. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly message?: string; } /** * Input of CheckNameAvailability API. */ -export interface CheckNameAvailabilityInput { +export interface CheckNameAvailabilityInput { + /** + * The resource name to validate. + */ + name: string; +} + +/** + * Output of check name availability API. + */ +export interface CheckNameAvailabilityOutput { + /** + * Indicates whether the name is available. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly nameAvailable?: boolean; + /** + * The reason why the name is not available. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly reason?: string; + /** + * The detailed error message describing why the name is not available. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly message?: string; +} + +/** + * Input of the validate probe API. + */ +export interface ValidateProbeInput { + /** + * The probe URL to validate. + */ + probeURL: string; +} + +/** + * Output of the validate probe API. + */ +export interface ValidateProbeOutput { + /** + * Indicates whether the probe URL is accepted or not. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly isValid?: boolean; + /** + * Specifies the error code when the probe url is not accepted. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly errorCode?: string; + /** + * The detailed error message describing why the probe URL is not accepted. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly message?: string; +} + +/** + * Output of check resource usage API. + */ +export interface ResourceUsage { + /** + * Resource type for which the usage is provided. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly resourceType?: string; + /** + * Unit of the usage. e.g. Count. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly unit?: string; + /** + * Actual value of usage on the specified resource type. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly currentValue?: number; + /** + * Quota of the specified resource type. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly limit?: number; +} + +/** + * The object that represents the operation. + */ +export interface OperationDisplay { + /** + * Service provider: Microsoft.Cdn + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly providerGRAPES?: string; + /** + * Resource on which the operation is performed: Profile, endpoint, etc. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly resource?: string; + /** + * Operation type: Read, write, delete, etc. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly operation?: string; +} + +/** + * CDN REST API operation + */ +export interface Operation { + /** + * Operation name: {provider}/{resource}/{operation} + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly name?: string; + /** + * The object that represents the operation. + */ + display?: OperationDisplay; +} + +/** + * CIDR Ip address + */ +export interface CidrIpAddress { + /** + * Ip address itself. + */ + baseIpAddress?: string; + /** + * The length of the prefix of the ip address. + */ + prefixLength?: number; +} + +/** + * CDN Ip address group + */ +export interface IpAddressGroup { + /** + * The delivery region of the ip address group + */ + deliveryRegion?: string; + /** + * The list of ip v4 addresses. + */ + ipv4Addresses?: CidrIpAddress[]; + /** + * The list of ip v6 addresses. + */ + ipv6Addresses?: CidrIpAddress[]; +} + +/** + * Edgenode is a global Point of Presence (POP) location used to deliver CDN content to end users. + */ +export interface EdgeNode extends ProxyResource { + /** + * List of ip address groups. + */ + ipAddressGroups: IpAddressGroup[]; +} + +/** + * Error response indicates CDN service is not able to process the incoming request. The reason is + * provided in the error message. + */ +export interface ErrorResponse { + /** + * Error code. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly codeTHING?: string; + /** + * Error message indicating why the operation failed. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly message?: string; +} + +/** + * Defines contents of a web application firewall global configuration + */ +export interface PolicySettings { + /** + * describes if the policy is in enabled state or disabled state. Possible values include: + * 'Disabled', 'Enabled' + */ + enabledState?: PolicyEnabledState; + /** + * Describes if it is in detection mode or prevention mode at policy level. Possible values + * include: 'Prevention', 'Detection' + */ + mode?: PolicyMode; + /** + * If action type is redirect, this field represents the default redirect URL for the client. + */ + defaultRedirectUrl?: string; + /** + * If the action type is block, this field defines the default customer overridable http response + * status code. + */ + defaultCustomBlockResponseStatusCode?: number; + /** + * If the action type is block, customer can override the response body. The body must be + * specified in base64 encoding. + */ + defaultCustomBlockResponseBody?: string; +} + +/** + * Defines the common attributes for a custom rule that can be included in a waf policy + */ +export interface CustomRule { + /** + * Defines the name of the custom rule + */ + name: string; + /** + * Describes if the custom rule is in enabled or disabled state. Defaults to Enabled if not + * specified. Possible values include: 'Disabled', 'Enabled' + */ + enabledState?: CustomRuleEnabledState; + /** + * Defines in what order this rule be evaluated in the overall list of custom rules + */ + priority: number; + /** + * List of match conditions. + */ + matchConditions: MatchCondition[]; + /** + * Describes what action to be applied when rule matches + */ + action: ActionType; +} + +/** + * Defines a rate limiting rule that can be included in a waf policy + */ +export interface RateLimitRule extends CustomRule { + /** + * Defines rate limit threshold. + */ + rateLimitThreshold: number; + /** + * Defines rate limit duration. Default is 1 minute. + */ + rateLimitDurationInMinutes: number; +} + +/** + * Defines contents of rate limit rules + */ +export interface RateLimitRuleList { + /** + * List of rules + */ + rules?: RateLimitRule[]; +} + +/** + * Define match conditions + */ +export interface MatchCondition { + /** + * Match variable to compare against. Possible values include: 'RemoteAddr', 'Country', + * 'RequestMethod', 'RequestHeader', 'RequestUri', 'QueryString', 'RequestBody', 'Cookies', + * 'PostArgs' + */ + matchVariable: MatchVariable; + /** + * Selector can used to match a specific key for QueryString, RequestUri, RequestHeaders or + * RequestBody. + */ + selector?: string; + /** + * Describes operator to be matched. Possible values include: 'Any', 'IPMatch', 'GeoMatch', + * 'Equal', 'Contains', 'LessThan', 'GreaterThan', 'LessThanOrEqual', 'GreaterThanOrEqual', + * 'BeginsWith', 'EndsWith', 'RegEx' + */ + operator: Operator; + /** + * Describes if the result of this condition should be negated. + */ + negateCondition?: boolean; + /** + * List of possible match values. + */ + matchValue: string[]; +} + +/** + * Defines the action to take on rule match. + */ +export interface ActionType { + /** + * Describes type of action. Possible values include: 'Allow', 'Block', 'Log', 'Redirect' + */ + actionType: Action; + /** + * If action type is redirect, this field represents URL to be re-directed. + */ + redirectUrl?: string; + /** + * If the action type is block, customer can override the response status code. + */ + customBlockResponseStatusCode?: number; + /** + * If the action type is block, customer can override the response body. The body must be + * specified in base64 encoding. + */ + customBlockResponseBody?: string; +} + +/** + * Defines contents of custom rules + */ +export interface CustomRuleList { + /** + * List of rules + */ + rules?: CustomRule[]; +} + +/** + * Defines a managed rule group override setting. + */ +export interface ManagedRuleOverride { + /** + * Identifier for the managed rule. + */ + ruleId: string; + /** + * Describes if the managed rule is in enabled or disabled state. Defaults to Disabled if not + * specified. Possible values include: 'Disabled', 'Enabled' + */ + enabledState?: ManagedRuleEnabledState; + /** + * Describes the override action to be applied when rule matches. + */ + action?: ActionType; +} + +/** + * Defines a managed rule group override setting. + */ +export interface ManagedRuleGroupOverride { /** - * The resource name to validate. + * Describes the managed rule group within the rule set to override */ - name: string; + ruleGroupName: string; + /** + * List of rules that will be disabled. If none specified, all rules in the group will be + * disabled. + */ + rules?: ManagedRuleOverride[]; } /** - * Output of check name availability API. + * Defines a managed rule set. */ -export interface CheckNameAvailabilityOutput { +export interface ManagedRuleSet { /** - * Indicates whether the name is available. - * **NOTE: This property will not be serialized. It can only be populated by the server.** + * Defines the rule set type to use. */ - readonly nameAvailable?: boolean; + ruleSetType: string; /** - * The reason why the name is not available. - * **NOTE: This property will not be serialized. It can only be populated by the server.** + * Defines the version of the rule set to use. */ - readonly reason?: string; + ruleSetVersion: string; /** - * The detailed error message describing why the name is not available. - * **NOTE: This property will not be serialized. It can only be populated by the server.** + * Verizon only : If the rule set supports anomaly detection mode, this describes the threshold + * for blocking requests. */ - readonly message?: string; + anomalyScore?: number; + /** + * Defines the rule overrides to apply to the rule set. + */ + ruleGroupOverrides?: ManagedRuleGroupOverride[]; } /** - * Input of the validate probe API. + * Defines the list of managed rule sets for the policy. */ -export interface ValidateProbeInput { +export interface ManagedRuleSetList { /** - * The probe URL to validate. + * List of rule sets. */ - probeURL: string; + managedRuleSets?: ManagedRuleSet[]; } /** - * Output of the validate probe API. + * Defines the ARM Resource ID for the linked endpoints */ -export interface ValidateProbeOutput { - /** - * Indicates whether the probe URL is accepted or not. - * **NOTE: This property will not be serialized. It can only be populated by the server.** - */ - readonly isValid?: boolean; - /** - * Specifies the error code when the probe url is not accepted. - * **NOTE: This property will not be serialized. It can only be populated by the server.** - */ - readonly errorCode?: string; +export interface CdnEndpoint { /** - * The detailed error message describing why the probe URL is not accepted. - * **NOTE: This property will not be serialized. It can only be populated by the server.** + * ARM Resource ID string. */ - readonly message?: string; + id?: string; } /** - * Output of check resource usage API. + * Defines web application firewall policy for Azure CDN. */ -export interface ResourceUsage { +export interface CdnWebApplicationFirewallPolicy extends TrackedResource { /** - * Resource type for which the usage is provided. - * **NOTE: This property will not be serialized. It can only be populated by the server.** + * Describes policySettings for policy */ - readonly resourceType?: string; + policySettings?: PolicySettings; /** - * Unit of the usage. e.g. Count. - * **NOTE: This property will not be serialized. It can only be populated by the server.** + * Describes rate limit rules inside the policy. */ - readonly unit?: string; + rateLimitRules?: RateLimitRuleList; /** - * Actual value of usage on the specified resource type. - * **NOTE: This property will not be serialized. It can only be populated by the server.** + * Describes custom rules inside the policy. */ - readonly currentValue?: number; + customRules?: CustomRuleList; /** - * Quota of the specified resource type. - * **NOTE: This property will not be serialized. It can only be populated by the server.** + * Describes managed rules inside the policy. */ - readonly limit?: number; -} - -/** - * The object that represents the operation. - */ -export interface OperationDisplay { + managedRules?: ManagedRuleSetList; /** - * Service provider: Microsoft.Cdn + * Describes Azure CDN endpoints associated with this Web Application Firewall policy. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ - readonly provider?: string; + readonly cdnEndpointLinks?: CdnEndpoint[]; /** - * Resource on which the operation is performed: Profile, endpoint, etc. + * Provisioning state of the WebApplicationFirewallPolicy. Possible values include: 'Creating', + * 'Succeeded', 'Failed' * **NOTE: This property will not be serialized. It can only be populated by the server.** */ - readonly resource?: string; + readonly provisioningState?: ProvisioningState; /** - * Operation type: Read, write, delete, etc. + * Resource status of the policy. Possible values include: 'Creating', 'Enabling', 'Enabled', + * 'Disabling', 'Disabled', 'Deleting' * **NOTE: This property will not be serialized. It can only be populated by the server.** */ - readonly operation?: string; + readonly resourceState?: PolicyResourceState; + /** + * Gets a unique read-only string that changes whenever the resource is updated. + */ + etag?: string; + /** + * The pricing tier (defines a CDN provider, feature list and rate) of the + * CdnWebApplicationFirewallPolicy. + */ + sku: Sku; } /** - * CDN REST API operation + * Properties required to update a CdnWebApplicationFirewallPolicy. */ -export interface Operation { - /** - * Operation name: {provider}/{resource}/{operation} - * **NOTE: This property will not be serialized. It can only be populated by the server.** - */ - readonly name?: string; +export interface CdnWebApplicationFirewallPolicyPatchParameters extends BaseResource { /** - * The object that represents the operation. + * CdnWebApplicationFirewallPolicy tags */ - display?: OperationDisplay; + tags?: { [propertyName: string]: string }; } /** - * CIDR Ip address + * Describes a managed rule definition. */ -export interface CidrIpAddress { +export interface ManagedRuleDefinition { /** - * Ip address itself. + * Identifier for the managed rule. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ - baseIpAddress?: string; + readonly ruleId?: string; /** - * The length of the prefix of the ip address. + * Describes the functionality of the managed rule. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ - prefixLength?: number; + readonly description?: string; } /** - * CDN Ip address group + * Describes a managed rule group. */ -export interface IpAddressGroup { +export interface ManagedRuleGroupDefinition { /** - * The delivery region of the ip address group + * Name of the managed rule group. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ - deliveryRegion?: string; + readonly ruleGroupName?: string; /** - * The list of ip v4 addresses. + * Description of the managed rule group. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ - ipv4Addresses?: CidrIpAddress[]; + readonly description?: string; /** - * The list of ip v6 addresses. + * List of rules within the managed rule group. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ - ipv6Addresses?: CidrIpAddress[]; + readonly rules?: ManagedRuleDefinition[]; } /** - * Edgenode is a global Point of Presence (POP) location used to deliver CDN content to end users. + * Describes a managed rule set definition. */ -export interface EdgeNode extends ProxyResource { +export interface ManagedRuleSetDefinition extends Resource { /** - * List of ip address groups. + * Provisioning state of the managed rule set. + * **NOTE: This property will not be serialized. It can only be populated by the server.** */ - ipAddressGroups: IpAddressGroup[]; -} - -/** - * Error response indicates CDN service is not able to process the incoming request. The reason is - * provided in the error message. - */ -export interface ErrorResponse { + readonly provisioningState?: string; /** - * Error code. + * Type of the managed rule set. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ - readonly code?: string; + readonly ruleSetType?: string; /** - * Error message indicating why the operation failed. + * Version of the managed rule set type. * **NOTE: This property will not be serialized. It can only be populated by the server.** */ - readonly message?: string; + readonly ruleSetVersion?: string; + /** + * Rule groups of the managed rule set. + * **NOTE: This property will not be serialized. It can only be populated by the server.** + */ + readonly ruleGroups?: ManagedRuleGroupDefinition[]; + /** + * The pricing tier (defines a CDN provider, feature list and rate) of the + * CdnWebApplicationFirewallPolicy. + */ + sku?: Sku; } /** @@ -927,6 +1771,26 @@ export interface CustomDomainsEnableCustomHttpsOptionalParams extends msRest.Req customDomainHttpsParameters?: CustomDomainHttpsParametersUnion; } +/** + * Optional Parameters. + */ +export interface PoliciesUpdateOptionalParams extends msRest.RequestOptionsBase { + /** + * CdnWebApplicationFirewallPolicy tags + */ + tags?: { [propertyName: string]: string }; +} + +/** + * Optional Parameters. + */ +export interface PoliciesBeginUpdateOptionalParams extends msRest.RequestOptionsBase { + /** + * CdnWebApplicationFirewallPolicy tags + */ + tags?: { [propertyName: string]: string }; +} + /** * An interface representing CdnManagementClientOptions. */ @@ -991,88 +1855,233 @@ export interface OriginListResult extends Array { * URL link to get the next set of results. * @extends Array */ -export interface CustomDomainListResult extends Array { - /** - * URL to get the next set of custom domain objects if there are any. - */ - nextLink?: string; -} +export interface CustomDomainListResult extends Array { + /** + * URL to get the next set of custom domain objects if there are any. + */ + nextLink?: string; +} + +/** + * @interface + * Result of the request to list CDN operations. It contains a list of operations and a URL link to + * get the next set of results. + * @extends Array + */ +export interface OperationsListResult extends Array { + /** + * URL to get the next set of operation list results if there are any. + */ + nextLink?: string; +} + +/** + * @interface + * Result of the request to list CDN edgenodes. It contains a list of ip address group and a URL + * link to get the next set of results. + * @extends Array + */ +export interface EdgenodeResult extends Array { + /** + * URL to get the next set of edgenode list results if there are any. + */ + nextLink?: string; +} + +/** + * @interface + * Defines a list of WebApplicationFirewallPolicies for Azure CDN. It contains a list of + * WebApplicationFirewallPolicy objects and a URL link to get the next set of results. + * @extends Array + */ +export interface CdnWebApplicationFirewallPolicyList extends Array { + /** + * URL to get the next set of WebApplicationFirewallPolicy objects if there are any. + */ + nextLink?: string; +} + +/** + * @interface + * List of managed rule set definitions available for use in a policy. + * @extends Array + */ +export interface ManagedRuleSetDefinitionList extends Array { + /** + * URL to retrieve next set of managed rule set definitions. + */ + nextLink?: string; +} + +/** + * Defines values for SkuName. + * Possible values include: 'Standard_Verizon', 'Premium_Verizon', 'Custom_Verizon', + * 'Standard_Akamai', 'Standard_ChinaCdn', 'Standard_Microsoft' + * @readonly + * @enum {string} + */ +export type SkuName = 'Standard_Verizon' | 'Premium_Verizon' | 'Custom_Verizon' | 'Standard_Akamai' | 'Standard_ChinaCdn' | 'Standard_Microsoft'; + +/** + * Defines values for ProfileResourceState. + * Possible values include: 'Creating', 'Active', 'Deleting', 'Disabled' + * @readonly + * @enum {string} + */ +export type ProfileResourceState = 'Creating' | 'Active' | 'Deleting' | 'Disabled'; + +/** + * Defines values for OptimizationType. + * Possible values include: 'GeneralWebDelivery', 'GeneralMediaStreaming', + * 'VideoOnDemandMediaStreaming', 'LargeFileDownload', 'DynamicSiteAcceleration' + * @readonly + * @enum {string} + */ +export type OptimizationType = 'GeneralWebDelivery' | 'GeneralMediaStreaming' | 'VideoOnDemandMediaStreaming' | 'LargeFileDownload' | 'DynamicSiteAcceleration'; + +/** + * Defines values for EndpointResourceState. + * Possible values include: 'Creating', 'Deleting', 'Running', 'Starting', 'Stopped', 'Stopping' + * @readonly + * @enum {string} + */ +export type EndpointResourceState = 'Creating' | 'Deleting' | 'Running' | 'Starting' | 'Stopped' | 'Stopping'; + +/** + * Defines values for QueryStringCachingBehavior. + * Possible values include: 'IgnoreQueryString', 'BypassCaching', 'UseQueryString', 'NotSet' + * @readonly + * @enum {string} + */ +export type QueryStringCachingBehavior = 'IgnoreQueryString' | 'BypassCaching' | 'UseQueryString' | 'NotSet'; + +/** + * Defines values for GeoFilterActions. + * Possible values include: 'Block', 'Allow' + * @readonly + * @enum {string} + */ +export type GeoFilterActions = 'Block' | 'Allow'; + +/** + * Defines values for RemoteAddressOperator. + * Possible values include: 'Any', 'IPMatch', 'GeoMatch' + * @readonly + * @enum {string} + */ +export type RemoteAddressOperator = 'Any' | 'IPMatch' | 'GeoMatch'; + +/** + * Defines values for Transform. + * Possible values include: 'Lowercase', 'Uppercase' + * @readonly + * @enum {string} + */ +export type Transform = 'Lowercase' | 'Uppercase'; + +/** + * Defines values for QueryStringOperator. + * Possible values include: 'Any', 'Equal', 'Contains', 'BeginsWith', 'EndsWith', 'LessThan', + * 'LessThanOrEqual', 'GreaterThan', 'GreaterThanOrEqual' + * @readonly + * @enum {string} + */ +export type QueryStringOperator = 'Any' | 'Equal' | 'Contains' | 'BeginsWith' | 'EndsWith' | 'LessThan' | 'LessThanOrEqual' | 'GreaterThan' | 'GreaterThanOrEqual'; + +/** + * Defines values for PostArgsOperator. + * Possible values include: 'Any', 'Equal', 'Contains', 'BeginsWith', 'EndsWith', 'LessThan', + * 'LessThanOrEqual', 'GreaterThan', 'GreaterThanOrEqual' + * @readonly + * @enum {string} + */ +export type PostArgsOperator = 'Any' | 'Equal' | 'Contains' | 'BeginsWith' | 'EndsWith' | 'LessThan' | 'LessThanOrEqual' | 'GreaterThan' | 'GreaterThanOrEqual'; + +/** + * Defines values for RequestUriOperator. + * Possible values include: 'Any', 'Equal', 'Contains', 'BeginsWith', 'EndsWith', 'LessThan', + * 'LessThanOrEqual', 'GreaterThan', 'GreaterThanOrEqual' + * @readonly + * @enum {string} + */ +export type RequestUriOperator = 'Any' | 'Equal' | 'Contains' | 'BeginsWith' | 'EndsWith' | 'LessThan' | 'LessThanOrEqual' | 'GreaterThan' | 'GreaterThanOrEqual'; /** - * @interface - * Result of the request to list CDN operations. It contains a list of operations and a URL link to - * get the next set of results. - * @extends Array + * Defines values for RequestHeaderOperator. + * Possible values include: 'Any', 'Equal', 'Contains', 'BeginsWith', 'EndsWith', 'LessThan', + * 'LessThanOrEqual', 'GreaterThan', 'GreaterThanOrEqual' + * @readonly + * @enum {string} */ -export interface OperationsListResult extends Array { - /** - * URL to get the next set of operation list results if there are any. - */ - nextLink?: string; -} +export type RequestHeaderOperator = 'Any' | 'Equal' | 'Contains' | 'BeginsWith' | 'EndsWith' | 'LessThan' | 'LessThanOrEqual' | 'GreaterThan' | 'GreaterThanOrEqual'; /** - * @interface - * Result of the request to list CDN edgenodes. It contains a list of ip address group and a URL - * link to get the next set of results. - * @extends Array + * Defines values for RequestBodyOperator. + * Possible values include: 'Any', 'Equal', 'Contains', 'BeginsWith', 'EndsWith', 'LessThan', + * 'LessThanOrEqual', 'GreaterThan', 'GreaterThanOrEqual' + * @readonly + * @enum {string} */ -export interface EdgenodeResult extends Array { - /** - * URL to get the next set of edgenode list results if there are any. - */ - nextLink?: string; -} +export type RequestBodyOperator = 'Any' | 'Equal' | 'Contains' | 'BeginsWith' | 'EndsWith' | 'LessThan' | 'LessThanOrEqual' | 'GreaterThan' | 'GreaterThanOrEqual'; /** - * Defines values for SkuName. - * Possible values include: 'Standard_Verizon', 'Premium_Verizon', 'Custom_Verizon', - * 'Standard_Akamai', 'Standard_ChinaCdn', 'Standard_Microsoft' + * Defines values for UrlPathOperator. + * Possible values include: 'Any', 'Equal', 'Contains', 'BeginsWith', 'EndsWith', 'LessThan', + * 'LessThanOrEqual', 'GreaterThan', 'GreaterThanOrEqual', 'Wildcard' * @readonly * @enum {string} */ -export type SkuName = 'Standard_Verizon' | 'Premium_Verizon' | 'Custom_Verizon' | 'Standard_Akamai' | 'Standard_ChinaCdn' | 'Standard_Microsoft'; +export type UrlPathOperator = 'Any' | 'Equal' | 'Contains' | 'BeginsWith' | 'EndsWith' | 'LessThan' | 'LessThanOrEqual' | 'GreaterThan' | 'GreaterThanOrEqual' | 'Wildcard'; /** - * Defines values for ProfileResourceState. - * Possible values include: 'Creating', 'Active', 'Deleting', 'Disabled' + * Defines values for UrlFileExtensionOperator. + * Possible values include: 'Any', 'Equal', 'Contains', 'BeginsWith', 'EndsWith', 'LessThan', + * 'LessThanOrEqual', 'GreaterThan', 'GreaterThanOrEqual' * @readonly * @enum {string} */ -export type ProfileResourceState = 'Creating' | 'Active' | 'Deleting' | 'Disabled'; +export type UrlFileExtensionOperator = 'Any' | 'Equal' | 'Contains' | 'BeginsWith' | 'EndsWith' | 'LessThan' | 'LessThanOrEqual' | 'GreaterThan' | 'GreaterThanOrEqual'; /** - * Defines values for OptimizationType. - * Possible values include: 'GeneralWebDelivery', 'GeneralMediaStreaming', - * 'VideoOnDemandMediaStreaming', 'LargeFileDownload', 'DynamicSiteAcceleration' + * Defines values for UrlFileNameOperator. + * Possible values include: 'Any', 'Equal', 'Contains', 'BeginsWith', 'EndsWith', 'LessThan', + * 'LessThanOrEqual', 'GreaterThan', 'GreaterThanOrEqual' * @readonly * @enum {string} */ -export type OptimizationType = 'GeneralWebDelivery' | 'GeneralMediaStreaming' | 'VideoOnDemandMediaStreaming' | 'LargeFileDownload' | 'DynamicSiteAcceleration'; +export type UrlFileNameOperator = 'Any' | 'Equal' | 'Contains' | 'BeginsWith' | 'EndsWith' | 'LessThan' | 'LessThanOrEqual' | 'GreaterThan' | 'GreaterThanOrEqual'; /** - * Defines values for EndpointResourceState. - * Possible values include: 'Creating', 'Deleting', 'Running', 'Starting', 'Stopped', 'Stopping' + * Defines values for RedirectType. + * Possible values include: 'Moved', 'Found', 'TemporaryRedirect', 'PermanentRedirect' * @readonly * @enum {string} */ -export type EndpointResourceState = 'Creating' | 'Deleting' | 'Running' | 'Starting' | 'Stopped' | 'Stopping'; +export type RedirectType = 'Moved' | 'Found' | 'TemporaryRedirect' | 'PermanentRedirect'; /** - * Defines values for QueryStringCachingBehavior. - * Possible values include: 'IgnoreQueryString', 'BypassCaching', 'UseQueryString', 'NotSet' + * Defines values for DestinationProtocol. + * Possible values include: 'MatchRequest', 'Http', 'Https' * @readonly * @enum {string} */ -export type QueryStringCachingBehavior = 'IgnoreQueryString' | 'BypassCaching' | 'UseQueryString' | 'NotSet'; +export type DestinationProtocol = 'MatchRequest' | 'Http' | 'Https'; /** - * Defines values for GeoFilterActions. - * Possible values include: 'Block', 'Allow' + * Defines values for HeaderAction. + * Possible values include: 'Append', 'Overwrite', 'Delete' * @readonly * @enum {string} */ -export type GeoFilterActions = 'Block' | 'Allow'; +export type HeaderAction = 'Append' | 'Overwrite' | 'Delete'; + +/** + * Defines values for CacheBehavior. + * Possible values include: 'BypassCache', 'Override', 'SetIfMissing' + * @readonly + * @enum {string} + */ +export type CacheBehavior = 'BypassCache' | 'Override' | 'SetIfMissing'; /** * Defines values for OriginResourceState. @@ -1135,20 +2144,78 @@ export type CertificateType = 'Shared' | 'Dedicated'; export type ResourceType = 'Microsoft.Cdn/Profiles/Endpoints'; /** - * Defines values for MatchType. - * Possible values include: 'Literal', 'Wildcard' + * Defines values for PolicyEnabledState. + * Possible values include: 'Disabled', 'Enabled' * @readonly * @enum {string} */ -export type MatchType = 'Literal' | 'Wildcard'; +export type PolicyEnabledState = 'Disabled' | 'Enabled'; /** - * Defines values for CacheBehavior. - * Possible values include: 'BypassCache', 'Override', 'SetIfMissing' + * Defines values for PolicyMode. + * Possible values include: 'Prevention', 'Detection' * @readonly * @enum {string} */ -export type CacheBehavior = 'BypassCache' | 'Override' | 'SetIfMissing'; +export type PolicyMode = 'Prevention' | 'Detection'; + +/** + * Defines values for CustomRuleEnabledState. + * Possible values include: 'Disabled', 'Enabled' + * @readonly + * @enum {string} + */ +export type CustomRuleEnabledState = 'Disabled' | 'Enabled'; + +/** + * Defines values for MatchVariable. + * Possible values include: 'RemoteAddr', 'Country', 'RequestMethod', 'RequestHeader', + * 'RequestUri', 'QueryString', 'RequestBody', 'Cookies', 'PostArgs' + * @readonly + * @enum {string} + */ +export type MatchVariable = 'RemoteAddr' | 'Country' | 'RequestMethod' | 'RequestHeader' | 'RequestUri' | 'QueryString' | 'RequestBody' | 'Cookies' | 'PostArgs'; + +/** + * Defines values for Operator. + * Possible values include: 'Any', 'IPMatch', 'GeoMatch', 'Equal', 'Contains', 'LessThan', + * 'GreaterThan', 'LessThanOrEqual', 'GreaterThanOrEqual', 'BeginsWith', 'EndsWith', 'RegEx' + * @readonly + * @enum {string} + */ +export type Operator = 'Any' | 'IPMatch' | 'GeoMatch' | 'Equal' | 'Contains' | 'LessThan' | 'GreaterThan' | 'LessThanOrEqual' | 'GreaterThanOrEqual' | 'BeginsWith' | 'EndsWith' | 'RegEx'; + +/** + * Defines values for Action. + * Possible values include: 'Allow', 'Block', 'Log', 'Redirect' + * @readonly + * @enum {string} + */ +export type Action = 'Allow' | 'Block' | 'Log' | 'Redirect'; + +/** + * Defines values for ManagedRuleEnabledState. + * Possible values include: 'Disabled', 'Enabled' + * @readonly + * @enum {string} + */ +export type ManagedRuleEnabledState = 'Disabled' | 'Enabled'; + +/** + * Defines values for ProvisioningState. + * Possible values include: 'Creating', 'Succeeded', 'Failed' + * @readonly + * @enum {string} + */ +export type ProvisioningState = 'Creating' | 'Succeeded' | 'Failed'; + +/** + * Defines values for PolicyResourceState. + * Possible values include: 'Creating', 'Enabling', 'Enabled', 'Disabling', 'Disabled', 'Deleting' + * @readonly + * @enum {string} + */ +export type PolicyResourceState = 'Creating' | 'Enabling' | 'Enabled' | 'Disabling' | 'Disabled' | 'Deleting'; /** * Contains response data for the list operation. @@ -2149,3 +3216,183 @@ export type EdgeNodesListNextResponse = EdgenodeResult & { parsedBody: EdgenodeResult; }; }; + +/** + * Contains response data for the list operation. + */ +export type PoliciesListResponse = CdnWebApplicationFirewallPolicyList & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: CdnWebApplicationFirewallPolicyList; + }; +}; + +/** + * Contains response data for the get operation. + */ +export type PoliciesGetResponse = CdnWebApplicationFirewallPolicy & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: CdnWebApplicationFirewallPolicy; + }; +}; + +/** + * Contains response data for the createOrUpdate operation. + */ +export type PoliciesCreateOrUpdateResponse = CdnWebApplicationFirewallPolicy & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: CdnWebApplicationFirewallPolicy; + }; +}; + +/** + * Contains response data for the update operation. + */ +export type PoliciesUpdateResponse = CdnWebApplicationFirewallPolicy & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: CdnWebApplicationFirewallPolicy; + }; +}; + +/** + * Contains response data for the beginCreateOrUpdate operation. + */ +export type PoliciesBeginCreateOrUpdateResponse = CdnWebApplicationFirewallPolicy & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: CdnWebApplicationFirewallPolicy; + }; +}; + +/** + * Contains response data for the beginUpdate operation. + */ +export type PoliciesBeginUpdateResponse = CdnWebApplicationFirewallPolicy & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: CdnWebApplicationFirewallPolicy; + }; +}; + +/** + * Contains response data for the listNext operation. + */ +export type PoliciesListNextResponse = CdnWebApplicationFirewallPolicyList & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: CdnWebApplicationFirewallPolicyList; + }; +}; + +/** + * Contains response data for the list operation. + */ +export type ManagedRuleSetsListResponse = ManagedRuleSetDefinitionList & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: ManagedRuleSetDefinitionList; + }; +}; + +/** + * Contains response data for the listNext operation. + */ +export type ManagedRuleSetsListNextResponse = ManagedRuleSetDefinitionList & { + /** + * The underlying HTTP response. + */ + _response: msRest.HttpResponse & { + /** + * The response body as text (string format) + */ + bodyAsText: string; + + /** + * The response body as parsed JSON or XML + */ + parsedBody: ManagedRuleSetDefinitionList; + }; +}; diff --git a/sdk/cdn/arm-cdn/src/models/managedRuleSetsMappers.ts b/sdk/cdn/arm-cdn/src/models/managedRuleSetsMappers.ts new file mode 100644 index 000000000000..9e406e6854be --- /dev/null +++ b/sdk/cdn/arm-cdn/src/models/managedRuleSetsMappers.ts @@ -0,0 +1,83 @@ +/* + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. + */ + +export { + discriminators, + ActionType, + BaseResource, + CacheExpirationActionParameters, + CdnEndpoint, + CdnWebApplicationFirewallPolicy, + CdnWebApplicationFirewallPolicyPatchParameters, + CidrIpAddress, + CustomDomain, + CustomRule, + CustomRuleList, + DeepCreatedOrigin, + DeliveryRule, + DeliveryRuleAction, + DeliveryRuleCacheExpirationAction, + DeliveryRuleCondition, + DeliveryRuleIsDeviceCondition, + DeliveryRulePostArgsCondition, + DeliveryRuleQueryStringCondition, + DeliveryRuleRemoteAddressCondition, + DeliveryRuleRequestBodyCondition, + DeliveryRuleRequestHeaderAction, + DeliveryRuleRequestHeaderCondition, + DeliveryRuleRequestMethodCondition, + DeliveryRuleRequestSchemeCondition, + DeliveryRuleRequestUriCondition, + DeliveryRuleResponseHeaderAction, + DeliveryRuleUrlFileExtensionCondition, + DeliveryRuleUrlFileNameCondition, + DeliveryRuleUrlPathCondition, + EdgeNode, + Endpoint, + EndpointPropertiesUpdateParametersDeliveryPolicy, + EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink, + EndpointUpdateParameters, + ErrorResponse, + GeoFilter, + HeaderActionParameters, + IpAddressGroup, + IsDeviceMatchConditionParameters, + ManagedRuleDefinition, + ManagedRuleGroupDefinition, + ManagedRuleGroupOverride, + ManagedRuleOverride, + ManagedRuleSet, + ManagedRuleSetDefinition, + ManagedRuleSetDefinitionList, + ManagedRuleSetList, + MatchCondition, + Origin, + OriginUpdateParameters, + PolicySettings, + PostArgsMatchConditionParameters, + Profile, + ProfileUpdateParameters, + ProxyResource, + QueryStringMatchConditionParameters, + RateLimitRule, + RateLimitRuleList, + RemoteAddressMatchConditionParameters, + RequestBodyMatchConditionParameters, + RequestHeaderMatchConditionParameters, + RequestMethodMatchConditionParameters, + RequestSchemeMatchConditionParameters, + RequestUriMatchConditionParameters, + Resource, + Sku, + TrackedResource, + UrlFileExtensionMatchConditionParameters, + UrlFileNameMatchConditionParameters, + UrlPathMatchConditionParameters, + UrlRedirectAction, + UrlRedirectActionParameters +} from "../models/mappers"; diff --git a/sdk/cdn/arm-cdn/src/models/mappers.ts b/sdk/cdn/arm-cdn/src/models/mappers.ts index 324463c9cddd..3aa45b15900c 100644 --- a/sdk/cdn/arm-cdn/src/models/mappers.ts +++ b/sdk/cdn/arm-cdn/src/models/mappers.ts @@ -316,6 +316,13 @@ export const Endpoint: msRest.CompositeMapper = { className: "EndpointPropertiesUpdateParametersDeliveryPolicy" } }, + webApplicationFirewallPolicyLink: { + serializedName: "properties.webApplicationFirewallPolicyLink", + type: { + name: "Composite", + className: "EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink" + } + }, hostName: { readOnly: true, serializedName: "properties.hostName", @@ -394,16 +401,16 @@ export const GeoFilter: msRest.CompositeMapper = { } }; -export const DeliveryRuleAction: msRest.CompositeMapper = { - serializedName: "DeliveryRuleAction", +export const DeliveryRuleCondition: msRest.CompositeMapper = { + serializedName: "DeliveryRuleCondition", type: { name: "Composite", polymorphicDiscriminator: { serializedName: "name", clientName: "name" }, - uberParent: "DeliveryRuleAction", - className: "DeliveryRuleAction", + uberParent: "DeliveryRuleCondition", + className: "DeliveryRuleCondition", modelProperties: { name: { required: true, @@ -416,16 +423,16 @@ export const DeliveryRuleAction: msRest.CompositeMapper = { } }; -export const DeliveryRuleCondition: msRest.CompositeMapper = { - serializedName: "DeliveryRuleCondition", +export const DeliveryRuleAction: msRest.CompositeMapper = { + serializedName: "DeliveryRuleAction", type: { name: "Composite", polymorphicDiscriminator: { serializedName: "name", clientName: "name" }, - uberParent: "DeliveryRuleCondition", - className: "DeliveryRuleCondition", + uberParent: "DeliveryRuleAction", + className: "DeliveryRuleAction", modelProperties: { name: { required: true, @@ -444,6 +451,13 @@ export const DeliveryRule: msRest.CompositeMapper = { name: "Composite", className: "DeliveryRule", modelProperties: { + name: { + required: true, + serializedName: "name", + type: { + name: "String" + } + }, order: { required: true, serializedName: "order", @@ -451,27 +465,27 @@ export const DeliveryRule: msRest.CompositeMapper = { name: "Number" } }, - actions: { - required: true, - serializedName: "actions", + conditions: { + serializedName: "conditions", type: { name: "Sequence", element: { type: { name: "Composite", - className: "DeliveryRuleAction" + className: "DeliveryRuleCondition" } } } }, - conditions: { - serializedName: "conditions", + actions: { + required: true, + serializedName: "actions", type: { name: "Sequence", element: { type: { name: "Composite", - className: "DeliveryRuleCondition" + className: "DeliveryRuleAction" } } } @@ -509,6 +523,22 @@ export const EndpointPropertiesUpdateParametersDeliveryPolicy: msRest.CompositeM } }; +export const EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink: msRest.CompositeMapper = { + serializedName: "EndpointPropertiesUpdateParameters_webApplicationFirewallPolicyLink", + type: { + name: "Composite", + className: "EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink", + modelProperties: { + id: { + serializedName: "id", + type: { + name: "String" + } + } + } + } +}; + export const EndpointUpdateParameters: msRest.CompositeMapper = { serializedName: "EndpointUpdateParameters", type: { @@ -609,51 +639,80 @@ export const EndpointUpdateParameters: msRest.CompositeMapper = { name: "Composite", className: "EndpointPropertiesUpdateParametersDeliveryPolicy" } + }, + webApplicationFirewallPolicyLink: { + serializedName: "properties.webApplicationFirewallPolicyLink", + type: { + name: "Composite", + className: "EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink" + } } } } }; -export const UrlPathConditionParameters: msRest.CompositeMapper = { - serializedName: "UrlPathConditionParameters", +export const RemoteAddressMatchConditionParameters: msRest.CompositeMapper = { + serializedName: "RemoteAddressMatchConditionParameters", type: { name: "Composite", - className: "UrlPathConditionParameters", + className: "RemoteAddressMatchConditionParameters", modelProperties: { odatatype: { required: true, isConstant: true, serializedName: "@odata\\.type", - defaultValue: 'Microsoft.Azure.Cdn.Models.DeliveryRuleUrlPathConditionParameters', + defaultValue: '#Microsoft.Azure.Cdn.Models.DeliveryRuleRemoteAddressConditionParameters', type: { name: "String" } }, - path: { + operator: { required: true, - serializedName: "path", + serializedName: "operator", type: { name: "String" } }, - matchType: { + negateCondition: { + serializedName: "negateCondition", + type: { + name: "Boolean" + } + }, + matchValues: { required: true, - serializedName: "matchType", + serializedName: "matchValues", type: { - name: "String" + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + }, + transforms: { + serializedName: "transforms", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } } } } } }; -export const DeliveryRuleUrlPathCondition: msRest.CompositeMapper = { - serializedName: "UrlPath", +export const DeliveryRuleRemoteAddressCondition: msRest.CompositeMapper = { + serializedName: "RemoteAddress", type: { name: "Composite", polymorphicDiscriminator: DeliveryRuleCondition.type.polymorphicDiscriminator, uberParent: "DeliveryRuleCondition", - className: "DeliveryRuleUrlPathCondition", + className: "DeliveryRuleRemoteAddressCondition", modelProperties: { ...DeliveryRuleCondition.type.modelProperties, parameters: { @@ -662,31 +721,46 @@ export const DeliveryRuleUrlPathCondition: msRest.CompositeMapper = { defaultValue: {}, type: { name: "Composite", - className: "UrlPathConditionParameters" + className: "RemoteAddressMatchConditionParameters" } } } } }; -export const UrlFileExtensionConditionParameters: msRest.CompositeMapper = { - serializedName: "UrlFileExtensionConditionParameters", +export const RequestMethodMatchConditionParameters: msRest.CompositeMapper = { + serializedName: "RequestMethodMatchConditionParameters", type: { name: "Composite", - className: "UrlFileExtensionConditionParameters", + className: "RequestMethodMatchConditionParameters", modelProperties: { odatatype: { required: true, isConstant: true, serializedName: "@odata\\.type", - defaultValue: 'Microsoft.Azure.Cdn.Models.DeliveryRuleUrlFileExtensionConditionParameters', + defaultValue: '#Microsoft.Azure.Cdn.Models.DeliveryRuleRequestMethodConditionParameters', + type: { + name: "String" + } + }, + operator: { + required: true, + isConstant: true, + serializedName: "operator", + defaultValue: 'Equal', type: { name: "String" } }, - extensions: { + negateConditionAPPLES: { + serializedName: "negateConditionAPPLES", + type: { + name: "Boolean" + } + }, + matchValues: { required: true, - serializedName: "extensions", + serializedName: "matchValues", type: { name: "Sequence", element: { @@ -700,13 +774,13 @@ export const UrlFileExtensionConditionParameters: msRest.CompositeMapper = { } }; -export const DeliveryRuleUrlFileExtensionCondition: msRest.CompositeMapper = { - serializedName: "UrlFileExtension", +export const DeliveryRuleRequestMethodCondition: msRest.CompositeMapper = { + serializedName: "RequestMethod", type: { name: "Composite", polymorphicDiscriminator: DeliveryRuleCondition.type.polymorphicDiscriminator, uberParent: "DeliveryRuleCondition", - className: "DeliveryRuleUrlFileExtensionCondition", + className: "DeliveryRuleRequestMethodCondition", modelProperties: { ...DeliveryRuleCondition.type.modelProperties, parameters: { @@ -715,86 +789,139 @@ export const DeliveryRuleUrlFileExtensionCondition: msRest.CompositeMapper = { defaultValue: {}, type: { name: "Composite", - className: "UrlFileExtensionConditionParameters" + className: "RequestMethodMatchConditionParameters" } } } } }; -export const CacheExpirationActionParameters: msRest.CompositeMapper = { - serializedName: "CacheExpirationActionParameters", +export const QueryStringMatchConditionParameters: msRest.CompositeMapper = { + serializedName: "QueryStringMatchConditionParameters", type: { name: "Composite", - className: "CacheExpirationActionParameters", + className: "QueryStringMatchConditionParameters", modelProperties: { odatatype: { required: true, isConstant: true, serializedName: "@odata\\.type", - defaultValue: 'Microsoft.Azure.Cdn.Models.DeliveryRuleCacheExpirationActionParameters', + defaultValue: '#Microsoft.Azure.Cdn.Models.DeliveryRuleQueryStringConditionParameters', type: { name: "String" } }, - cacheBehavior: { + operator: { required: true, - serializedName: "cacheBehavior", + serializedName: "operator", type: { name: "String" } }, - cacheType: { + negateCondition: { + serializedName: "negateCondition", + type: { + name: "Boolean" + } + }, + matchValues: { required: true, - isConstant: true, - serializedName: "cacheType", - defaultValue: 'All', + serializedName: "matchValues", type: { - name: "String" + name: "Sequence", + element: { + type: { + name: "String" + } + } } }, - cacheDuration: { - nullable: true, - serializedName: "cacheDuration", + transforms: { + serializedName: "transforms", type: { - name: "String" + name: "Sequence", + element: { + type: { + name: "String" + } + } } } } } }; -export const DeliveryRuleCacheExpirationAction: msRest.CompositeMapper = { - serializedName: "CacheExpiration", +export const DeliveryRuleQueryStringCondition: msRest.CompositeMapper = { + serializedName: "QueryString", type: { name: "Composite", - polymorphicDiscriminator: DeliveryRuleAction.type.polymorphicDiscriminator, - uberParent: "DeliveryRuleAction", - className: "DeliveryRuleCacheExpirationAction", + polymorphicDiscriminator: DeliveryRuleCondition.type.polymorphicDiscriminator, + uberParent: "DeliveryRuleCondition", + className: "DeliveryRuleQueryStringCondition", modelProperties: { - ...DeliveryRuleAction.type.modelProperties, + ...DeliveryRuleCondition.type.modelProperties, parameters: { required: true, serializedName: "parameters", defaultValue: {}, type: { name: "Composite", - className: "CacheExpirationActionParameters" + className: "QueryStringMatchConditionParameters" } } } } }; -export const PurgeParameters: msRest.CompositeMapper = { - serializedName: "PurgeParameters", +export const PostArgsMatchConditionParameters: msRest.CompositeMapper = { + serializedName: "PostArgsMatchConditionParameters", type: { name: "Composite", - className: "PurgeParameters", + className: "PostArgsMatchConditionParameters", modelProperties: { - contentPaths: { + odatatype: { required: true, - serializedName: "contentPaths", + isConstant: true, + serializedName: "@odata\\.type", + defaultValue: '#Microsoft.Azure.Cdn.Models.DeliveryRulePostArgsConditionParameters', + type: { + name: "String" + } + }, + selector: { + required: true, + serializedName: "selector", + type: { + name: "String" + } + }, + operator: { + required: true, + serializedName: "operator", + type: { + name: "String" + } + }, + negateCondition: { + serializedName: "negateCondition", + type: { + name: "Boolean" + } + }, + matchValues: { + required: true, + serializedName: "matchValues", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + }, + transforms: { + serializedName: "transforms", type: { name: "Sequence", element: { @@ -808,108 +935,1434 @@ export const PurgeParameters: msRest.CompositeMapper = { } }; -export const LoadParameters: msRest.CompositeMapper = { - serializedName: "LoadParameters", +export const DeliveryRulePostArgsCondition: msRest.CompositeMapper = { + serializedName: "PostArgs", type: { name: "Composite", - className: "LoadParameters", + polymorphicDiscriminator: DeliveryRuleCondition.type.polymorphicDiscriminator, + uberParent: "DeliveryRuleCondition", + className: "DeliveryRulePostArgsCondition", modelProperties: { - contentPaths: { + ...DeliveryRuleCondition.type.modelProperties, + parameters: { required: true, - serializedName: "contentPaths", + serializedName: "parameters", + defaultValue: {}, type: { - name: "Sequence", - element: { - type: { - name: "String" - } - } + name: "Composite", + className: "PostArgsMatchConditionParameters" } } } } }; -export const Origin: msRest.CompositeMapper = { - serializedName: "Origin", +export const RequestUriMatchConditionParameters: msRest.CompositeMapper = { + serializedName: "RequestUriMatchConditionParameters", type: { name: "Composite", - className: "Origin", + className: "RequestUriMatchConditionParameters", modelProperties: { - ...TrackedResource.type.modelProperties, - hostName: { + odatatype: { required: true, - serializedName: "properties.hostName", + isConstant: true, + serializedName: "@odata\\.type", + defaultValue: '#Microsoft.Azure.Cdn.Models.DeliveryRuleRequestUriConditionParameters', type: { name: "String" } }, - httpPort: { - serializedName: "properties.httpPort", - constraints: { - InclusiveMaximum: 65535, - InclusiveMinimum: 1 - }, + operator: { + required: true, + serializedName: "operator", type: { - name: "Number" + name: "String" } }, - httpsPort: { - serializedName: "properties.httpsPort", - constraints: { - InclusiveMaximum: 65535, - InclusiveMinimum: 1 - }, + negateCondition: { + serializedName: "negateCondition", type: { - name: "Number" + name: "Boolean" } }, - resourceState: { - readOnly: true, - serializedName: "properties.resourceState", + matchValues: { + required: true, + serializedName: "matchValues", type: { - name: "String" + name: "Sequence", + element: { + type: { + name: "String" + } + } } }, - provisioningState: { - readOnly: true, - serializedName: "properties.provisioningState", + transforms: { + serializedName: "transforms", type: { - name: "String" + name: "Sequence", + element: { + type: { + name: "String" + } + } } } } } }; -export const OriginUpdateParameters: msRest.CompositeMapper = { - serializedName: "OriginUpdateParameters", +export const DeliveryRuleRequestUriCondition: msRest.CompositeMapper = { + serializedName: "RequestUri", type: { name: "Composite", - className: "OriginUpdateParameters", + polymorphicDiscriminator: DeliveryRuleCondition.type.polymorphicDiscriminator, + uberParent: "DeliveryRuleCondition", + className: "DeliveryRuleRequestUriCondition", modelProperties: { - hostName: { - serializedName: "properties.hostName", + ...DeliveryRuleCondition.type.modelProperties, + parameters: { + required: true, + serializedName: "parameters", + defaultValue: {}, type: { - name: "String" + name: "Composite", + className: "RequestUriMatchConditionParameters" } - }, - httpPort: { - serializedName: "properties.httpPort", - constraints: { - InclusiveMaximum: 65535, - InclusiveMinimum: 1 - }, + } + } + } +}; + +export const RequestHeaderMatchConditionParameters: msRest.CompositeMapper = { + serializedName: "RequestHeaderMatchConditionParameters", + type: { + name: "Composite", + className: "RequestHeaderMatchConditionParameters", + modelProperties: { + odatatype: { + required: true, + isConstant: true, + serializedName: "@odata\\.type", + defaultValue: '#Microsoft.Azure.Cdn.Models.DeliveryRuleRequestHeaderConditionParameters', + type: { + name: "String" + } + }, + selector: { + required: true, + serializedName: "selector", + type: { + name: "String" + } + }, + operator: { + required: true, + serializedName: "operator", + type: { + name: "String" + } + }, + negateCondition: { + serializedName: "negateCondition", + type: { + name: "Boolean" + } + }, + matchValues: { + required: true, + serializedName: "matchValues", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + }, + transforms: { + serializedName: "transforms", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + } + } + } +}; + +export const DeliveryRuleRequestHeaderCondition: msRest.CompositeMapper = { + serializedName: "RequestHeader", + type: { + name: "Composite", + polymorphicDiscriminator: DeliveryRuleCondition.type.polymorphicDiscriminator, + uberParent: "DeliveryRuleCondition", + className: "DeliveryRuleRequestHeaderCondition", + modelProperties: { + ...DeliveryRuleCondition.type.modelProperties, + parameters: { + required: true, + serializedName: "parameters", + defaultValue: {}, + type: { + name: "Composite", + className: "RequestHeaderMatchConditionParameters" + } + } + } + } +}; + +export const RequestBodyMatchConditionParameters: msRest.CompositeMapper = { + serializedName: "RequestBodyMatchConditionParameters", + type: { + name: "Composite", + className: "RequestBodyMatchConditionParameters", + modelProperties: { + odatatype: { + required: true, + isConstant: true, + serializedName: "@odata\\.type", + defaultValue: '#Microsoft.Azure.Cdn.Models.DeliveryRuleRequestBodyConditionParameters', + type: { + name: "String" + } + }, + operator: { + required: true, + serializedName: "operator", + type: { + name: "String" + } + }, + negateCondition: { + serializedName: "negateCondition", + type: { + name: "Boolean" + } + }, + matchValues: { + required: true, + serializedName: "matchValues", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + }, + transforms: { + serializedName: "transforms", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + } + } + } +}; + +export const DeliveryRuleRequestBodyCondition: msRest.CompositeMapper = { + serializedName: "RequestBody", + type: { + name: "Composite", + polymorphicDiscriminator: DeliveryRuleCondition.type.polymorphicDiscriminator, + uberParent: "DeliveryRuleCondition", + className: "DeliveryRuleRequestBodyCondition", + modelProperties: { + ...DeliveryRuleCondition.type.modelProperties, + parameters: { + required: true, + serializedName: "parameters", + defaultValue: {}, + type: { + name: "Composite", + className: "RequestBodyMatchConditionParameters" + } + } + } + } +}; + +export const RequestSchemeMatchConditionParameters: msRest.CompositeMapper = { + serializedName: "RequestSchemeMatchConditionParameters", + type: { + name: "Composite", + className: "RequestSchemeMatchConditionParameters", + modelProperties: { + odatatype: { + required: true, + isConstant: true, + serializedName: "@odata\\.type", + defaultValue: '#Microsoft.Azure.Cdn.Models.DeliveryRuleRequestSchemeConditionParameters', + type: { + name: "String" + } + }, + operator: { + required: true, + isConstant: true, + serializedName: "operator", + defaultValue: 'Equal', + type: { + name: "String" + } + }, + negateCondition: { + serializedName: "negateCondition", + type: { + name: "Boolean" + } + }, + matchValues: { + required: true, + serializedName: "matchValues", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + } + } + } +}; + +export const DeliveryRuleRequestSchemeCondition: msRest.CompositeMapper = { + serializedName: "RequestScheme", + type: { + name: "Composite", + polymorphicDiscriminator: DeliveryRuleCondition.type.polymorphicDiscriminator, + uberParent: "DeliveryRuleCondition", + className: "DeliveryRuleRequestSchemeCondition", + modelProperties: { + ...DeliveryRuleCondition.type.modelProperties, + parameters: { + required: true, + serializedName: "parameters", + defaultValue: {}, + type: { + name: "Composite", + className: "RequestSchemeMatchConditionParameters" + } + } + } + } +}; + +export const UrlPathMatchConditionParameters: msRest.CompositeMapper = { + serializedName: "UrlPathMatchConditionParameters", + type: { + name: "Composite", + className: "UrlPathMatchConditionParameters", + modelProperties: { + odatatype: { + required: true, + isConstant: true, + serializedName: "@odata\\.type", + defaultValue: '#Microsoft.Azure.Cdn.Models.DeliveryRuleUrlPathMatchConditionParameters', + type: { + name: "String" + } + }, + operator: { + required: true, + serializedName: "operator", + type: { + name: "String" + } + }, + negateCondition: { + serializedName: "negateCondition", + type: { + name: "Boolean" + } + }, + matchValues: { + required: true, + serializedName: "matchValues", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + }, + transforms: { + serializedName: "transforms", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + } + } + } +}; + +export const DeliveryRuleUrlPathCondition: msRest.CompositeMapper = { + serializedName: "UrlPath", + type: { + name: "Composite", + polymorphicDiscriminator: DeliveryRuleCondition.type.polymorphicDiscriminator, + uberParent: "DeliveryRuleCondition", + className: "DeliveryRuleUrlPathCondition", + modelProperties: { + ...DeliveryRuleCondition.type.modelProperties, + parameters: { + required: true, + serializedName: "parameters", + defaultValue: {}, + type: { + name: "Composite", + className: "UrlPathMatchConditionParameters" + } + } + } + } +}; + +export const UrlFileExtensionMatchConditionParameters: msRest.CompositeMapper = { + serializedName: "UrlFileExtensionMatchConditionParameters", + type: { + name: "Composite", + className: "UrlFileExtensionMatchConditionParameters", + modelProperties: { + odatatype: { + required: true, + isConstant: true, + serializedName: "@odata\\.type", + defaultValue: '#Microsoft.Azure.Cdn.Models.DeliveryRuleUrlFileExtensionMatchConditionParameters', + type: { + name: "String" + } + }, + operator: { + required: true, + serializedName: "operator", + type: { + name: "String" + } + }, + negateCondition: { + serializedName: "negateCondition", + type: { + name: "Boolean" + } + }, + matchValues: { + required: true, + serializedName: "matchValues", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + }, + transforms: { + serializedName: "transforms", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + } + } + } +}; + +export const DeliveryRuleUrlFileExtensionCondition: msRest.CompositeMapper = { + serializedName: "UrlFileExtension", + type: { + name: "Composite", + polymorphicDiscriminator: DeliveryRuleCondition.type.polymorphicDiscriminator, + uberParent: "DeliveryRuleCondition", + className: "DeliveryRuleUrlFileExtensionCondition", + modelProperties: { + ...DeliveryRuleCondition.type.modelProperties, + parameters: { + required: true, + serializedName: "parameters", + defaultValue: {}, + type: { + name: "Composite", + className: "UrlFileExtensionMatchConditionParameters" + } + } + } + } +}; + +export const UrlFileNameMatchConditionParameters: msRest.CompositeMapper = { + serializedName: "UrlFileNameMatchConditionParameters", + type: { + name: "Composite", + className: "UrlFileNameMatchConditionParameters", + modelProperties: { + odatatype: { + required: true, + isConstant: true, + serializedName: "@odata\\.type", + defaultValue: '#Microsoft.Azure.Cdn.Models.DeliveryRuleUrlFilenameConditionParameters', + type: { + name: "String" + } + }, + operator: { + required: true, + serializedName: "operator", + type: { + name: "String" + } + }, + negateCondition: { + serializedName: "negateCondition", + type: { + name: "Boolean" + } + }, + matchValues: { + required: true, + serializedName: "matchValues", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + }, + transforms: { + serializedName: "transforms", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + } + } + } +}; + +export const DeliveryRuleUrlFileNameCondition: msRest.CompositeMapper = { + serializedName: "UrlFileName", + type: { + name: "Composite", + polymorphicDiscriminator: DeliveryRuleCondition.type.polymorphicDiscriminator, + uberParent: "DeliveryRuleCondition", + className: "DeliveryRuleUrlFileNameCondition", + modelProperties: { + ...DeliveryRuleCondition.type.modelProperties, + parameters: { + required: true, + serializedName: "parameters", + defaultValue: {}, + type: { + name: "Composite", + className: "UrlFileNameMatchConditionParameters" + } + } + } + } +}; + +export const IsDeviceMatchConditionParameters: msRest.CompositeMapper = { + serializedName: "IsDeviceMatchConditionParameters", + type: { + name: "Composite", + className: "IsDeviceMatchConditionParameters", + modelProperties: { + odatatype: { + required: true, + isConstant: true, + serializedName: "@odata\\.type", + defaultValue: '#Microsoft.Azure.Cdn.Models.DeliveryRuleIsDeviceConditionParameters', + type: { + name: "String" + } + }, + operator: { + required: true, + isConstant: true, + serializedName: "operator", + defaultValue: 'Equal', + type: { + name: "String" + } + }, + negateCondition: { + serializedName: "negateCondition", + type: { + name: "Boolean" + } + }, + matchValues: { + required: true, + serializedName: "matchValues", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + }, + transforms: { + serializedName: "transforms", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + } + } + } +}; + +export const DeliveryRuleIsDeviceCondition: msRest.CompositeMapper = { + serializedName: "IsDevice", + type: { + name: "Composite", + polymorphicDiscriminator: DeliveryRuleCondition.type.polymorphicDiscriminator, + uberParent: "DeliveryRuleCondition", + className: "DeliveryRuleIsDeviceCondition", + modelProperties: { + ...DeliveryRuleCondition.type.modelProperties, + parameters: { + required: true, + serializedName: "parameters", + defaultValue: {}, + type: { + name: "Composite", + className: "IsDeviceMatchConditionParameters" + } + } + } + } +}; + +export const UrlRedirectActionParameters: msRest.CompositeMapper = { + serializedName: "UrlRedirectActionParameters", + type: { + name: "Composite", + className: "UrlRedirectActionParameters", + modelProperties: { + odatatype: { + required: true, + isConstant: true, + serializedName: "@odata\\.type", + defaultValue: '#Microsoft.Azure.Cdn.Models.DeliveryRuleUrlRedirectActionParameters', + type: { + name: "String" + } + }, + redirectType: { + required: true, + serializedName: "redirectType", + type: { + name: "String" + } + }, + destinationProtocol: { + serializedName: "destinationProtocol", + type: { + name: "String" + } + }, + customPath: { + serializedName: "customPath", + type: { + name: "String" + } + }, + customHostname: { + serializedName: "customHostname", + type: { + name: "String" + } + }, + customQueryString: { + serializedName: "customQueryString", + type: { + name: "String" + } + }, + customFragment: { + serializedName: "customFragment", + type: { + name: "String" + } + } + } + } +}; + +export const UrlRedirectAction: msRest.CompositeMapper = { + serializedName: "UrlRedirect", + type: { + name: "Composite", + polymorphicDiscriminator: DeliveryRuleAction.type.polymorphicDiscriminator, + uberParent: "DeliveryRuleAction", + className: "UrlRedirectAction", + modelProperties: { + ...DeliveryRuleAction.type.modelProperties, + parameters: { + required: true, + serializedName: "parameters", + defaultValue: {}, + type: { + name: "Composite", + className: "UrlRedirectActionParameters" + } + } + } + } +}; + +export const HeaderActionParameters: msRest.CompositeMapper = { + serializedName: "HeaderActionParameters", + type: { + name: "Composite", + className: "HeaderActionParameters", + modelProperties: { + odatatype: { + required: true, + isConstant: true, + serializedName: "@odata\\.type", + defaultValue: '#Microsoft.Azure.Cdn.Models.DeliveryRuleHeaderActionParameters', + type: { + name: "String" + } + }, + headerAction: { + required: true, + serializedName: "headerAction", + type: { + name: "String" + } + }, + headerName: { + required: true, + serializedName: "headerName", + type: { + name: "String" + } + }, + value: { + serializedName: "value", + type: { + name: "String" + } + } + } + } +}; + +export const DeliveryRuleRequestHeaderAction: msRest.CompositeMapper = { + serializedName: "ModifyRequestHeader", + type: { + name: "Composite", + polymorphicDiscriminator: DeliveryRuleAction.type.polymorphicDiscriminator, + uberParent: "DeliveryRuleAction", + className: "DeliveryRuleRequestHeaderAction", + modelProperties: { + ...DeliveryRuleAction.type.modelProperties, + parameters: { + required: true, + serializedName: "parameters", + defaultValue: {}, + type: { + name: "Composite", + className: "HeaderActionParameters" + } + } + } + } +}; + +export const DeliveryRuleResponseHeaderAction: msRest.CompositeMapper = { + serializedName: "ModifyResponseHeader", + type: { + name: "Composite", + polymorphicDiscriminator: DeliveryRuleAction.type.polymorphicDiscriminator, + uberParent: "DeliveryRuleAction", + className: "DeliveryRuleResponseHeaderAction", + modelProperties: { + ...DeliveryRuleAction.type.modelProperties, + parameters: { + required: true, + serializedName: "parameters", + defaultValue: {}, + type: { + name: "Composite", + className: "HeaderActionParameters" + } + } + } + } +}; + +export const CacheExpirationActionParameters: msRest.CompositeMapper = { + serializedName: "CacheExpirationActionParameters", + type: { + name: "Composite", + className: "CacheExpirationActionParameters", + modelProperties: { + odatatype: { + required: true, + isConstant: true, + serializedName: "@odata\\.type", + defaultValue: '#Microsoft.Azure.Cdn.Models.DeliveryRuleCacheExpirationActionParameters', + type: { + name: "String" + } + }, + cacheBehavior: { + required: true, + serializedName: "cacheBehavior", + type: { + name: "String" + } + }, + cacheType: { + required: true, + isConstant: true, + serializedName: "cacheType", + defaultValue: 'All', + type: { + name: "String" + } + }, + cacheDuration: { + nullable: true, + serializedName: "cacheDuration", + type: { + name: "String" + } + } + } + } +}; + +export const DeliveryRuleCacheExpirationAction: msRest.CompositeMapper = { + serializedName: "CacheExpiration", + type: { + name: "Composite", + polymorphicDiscriminator: DeliveryRuleAction.type.polymorphicDiscriminator, + uberParent: "DeliveryRuleAction", + className: "DeliveryRuleCacheExpirationAction", + modelProperties: { + ...DeliveryRuleAction.type.modelProperties, + parameters: { + required: true, + serializedName: "parameters", + defaultValue: {}, + type: { + name: "Composite", + className: "CacheExpirationActionParameters" + } + } + } + } +}; + +export const PurgeParameters: msRest.CompositeMapper = { + serializedName: "PurgeParameters", + type: { + name: "Composite", + className: "PurgeParameters", + modelProperties: { + contentPaths: { + required: true, + serializedName: "contentPaths", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + } + } + } +}; + +export const LoadParameters: msRest.CompositeMapper = { + serializedName: "LoadParameters", + type: { + name: "Composite", + className: "LoadParameters", + modelProperties: { + contentPaths: { + required: true, + serializedName: "contentPaths", + type: { + name: "Sequence", + element: { + type: { + name: "String" + } + } + } + } + } + } +}; + +export const Origin: msRest.CompositeMapper = { + serializedName: "Origin", + type: { + name: "Composite", + className: "Origin", + modelProperties: { + ...TrackedResource.type.modelProperties, + hostName: { + required: true, + serializedName: "properties.hostName", + type: { + name: "String" + } + }, + httpPort: { + serializedName: "properties.httpPort", + constraints: { + InclusiveMaximum: 65535, + InclusiveMinimum: 1 + }, + type: { + name: "Number" + } + }, + httpsPort: { + serializedName: "properties.httpsPort", + constraints: { + InclusiveMaximum: 65535, + InclusiveMinimum: 1 + }, + type: { + name: "Number" + } + }, + resourceState: { + readOnly: true, + serializedName: "properties.resourceState", + type: { + name: "String" + } + }, + provisioningState: { + readOnly: true, + serializedName: "properties.provisioningState", + type: { + name: "String" + } + } + } + } +}; + +export const OriginUpdateParameters: msRest.CompositeMapper = { + serializedName: "OriginUpdateParameters", + type: { + name: "Composite", + className: "OriginUpdateParameters", + modelProperties: { + hostName: { + serializedName: "properties.hostName", + type: { + name: "String" + } + }, + httpPort: { + serializedName: "properties.httpPort", + constraints: { + InclusiveMaximum: 65535, + InclusiveMinimum: 1 + }, + type: { + name: "Number" + } + }, + httpsPort: { + serializedName: "properties.httpsPort", + constraints: { + InclusiveMaximum: 65535, + InclusiveMinimum: 1 + }, + type: { + name: "Number" + } + } + } + } +}; + +export const ProxyResource: msRest.CompositeMapper = { + serializedName: "ProxyResource", + type: { + name: "Composite", + className: "ProxyResource", + modelProperties: { + ...Resource.type.modelProperties + } + } +}; + +export const CustomDomain: msRest.CompositeMapper = { + serializedName: "CustomDomain", + type: { + name: "Composite", + className: "CustomDomain", + modelProperties: { + ...ProxyResource.type.modelProperties, + hostName: { + required: true, + serializedName: "properties.hostName", + type: { + name: "String" + } + }, + resourceState: { + readOnly: true, + serializedName: "properties.resourceState", + type: { + name: "String" + } + }, + customHttpsProvisioningState: { + readOnly: true, + serializedName: "properties.customHttpsProvisioningState", + type: { + name: "String" + } + }, + customHttpsProvisioningSubstate: { + readOnly: true, + serializedName: "properties.customHttpsProvisioningSubstate", + type: { + name: "String" + } + }, + validationData: { + serializedName: "properties.validationData", + type: { + name: "String" + } + }, + provisioningState: { + readOnly: true, + serializedName: "properties.provisioningState", + type: { + name: "String" + } + } + } + } +}; + +export const CustomDomainParameters: msRest.CompositeMapper = { + serializedName: "CustomDomainParameters", + type: { + name: "Composite", + className: "CustomDomainParameters", + modelProperties: { + hostName: { + required: true, + serializedName: "properties.hostName", + type: { + name: "String" + } + } + } + } +}; + +export const CustomDomainHttpsParameters: msRest.CompositeMapper = { + serializedName: "CustomDomainHttpsParameters", + type: { + name: "Composite", + polymorphicDiscriminator: { + serializedName: "certificateSource", + clientName: "certificateSource" + }, + uberParent: "CustomDomainHttpsParameters", + className: "CustomDomainHttpsParameters", + modelProperties: { + protocolType: { + required: true, + serializedName: "protocolType", + type: { + name: "String" + } + }, + certificateSource: { + required: true, + serializedName: "certificateSource", + type: { + name: "String" + } + } + } + } +}; + +export const CdnCertificateSourceParameters: msRest.CompositeMapper = { + serializedName: "CdnCertificateSourceParameters", + type: { + name: "Composite", + className: "CdnCertificateSourceParameters", + modelProperties: { + odatatype: { + required: true, + isConstant: true, + serializedName: "@odata\\.type", + defaultValue: '#Microsoft.Azure.Cdn.Models.CdnCertificateSourceParameters', + type: { + name: "String" + } + }, + certificateType: { + required: true, + serializedName: "certificateType", + type: { + name: "String" + } + } + } + } +}; + +export const CdnManagedHttpsParameters: msRest.CompositeMapper = { + serializedName: "Cdn", + type: { + name: "Composite", + polymorphicDiscriminator: CustomDomainHttpsParameters.type.polymorphicDiscriminator, + uberParent: "CustomDomainHttpsParameters", + className: "CdnManagedHttpsParameters", + modelProperties: { + ...CustomDomainHttpsParameters.type.modelProperties, + certificateSourceParameters: { + required: true, + serializedName: "certificateSourceParameters", + defaultValue: {}, + type: { + name: "Composite", + className: "CdnCertificateSourceParameters" + } + } + } + } +}; + +export const KeyVaultCertificateSourceParameters: msRest.CompositeMapper = { + serializedName: "KeyVaultCertificateSourceParameters", + type: { + name: "Composite", + className: "KeyVaultCertificateSourceParameters", + modelProperties: { + odatatype: { + required: true, + isConstant: true, + serializedName: "@odata\\.type", + defaultValue: '#Microsoft.Azure.Cdn.Models.KeyVaultCertificateSourceParameters', + type: { + name: "String" + } + }, + subscriptionId: { + required: true, + serializedName: "subscriptionId", + type: { + name: "String" + } + }, + resourceGroupName: { + required: true, + serializedName: "resourceGroupName", + type: { + name: "String" + } + }, + vaultNameGRAPES: { + serializedName: "vaultNameGRAPES", + type: { + name: "String" + } + }, + secretName: { + required: true, + serializedName: "secretName", + type: { + name: "String" + } + }, + secretVersion: { + required: true, + serializedName: "secretVersion", + type: { + name: "String" + } + }, + updateRule: { + required: true, + isConstant: true, + serializedName: "updateRule", + defaultValue: 'NoAction', + type: { + name: "String" + } + }, + deleteRule: { + required: true, + isConstant: true, + serializedName: "deleteRule", + defaultValue: 'NoAction', + type: { + name: "String" + } + } + } + } +}; + +export const UserManagedHttpsParameters: msRest.CompositeMapper = { + serializedName: "AzureKeyVault", + type: { + name: "Composite", + polymorphicDiscriminator: CustomDomainHttpsParameters.type.polymorphicDiscriminator, + uberParent: "CustomDomainHttpsParameters", + className: "UserManagedHttpsParameters", + modelProperties: { + ...CustomDomainHttpsParameters.type.modelProperties, + certificateSourceParameters: { + required: true, + serializedName: "certificateSourceParameters", + defaultValue: {}, + type: { + name: "Composite", + className: "KeyVaultCertificateSourceParameters" + } + } + } + } +}; + +export const ValidateCustomDomainInput: msRest.CompositeMapper = { + serializedName: "ValidateCustomDomainInput", + type: { + name: "Composite", + className: "ValidateCustomDomainInput", + modelProperties: { + hostName: { + required: true, + serializedName: "hostName", + type: { + name: "String" + } + } + } + } +}; + +export const ValidateCustomDomainOutput: msRest.CompositeMapper = { + serializedName: "ValidateCustomDomainOutput", + type: { + name: "Composite", + className: "ValidateCustomDomainOutput", + modelProperties: { + customDomainValidated: { + readOnly: true, + serializedName: "customDomainValidated", + type: { + name: "Boolean" + } + }, + reason: { + readOnly: true, + serializedName: "reason", + type: { + name: "String" + } + }, + message: { + readOnly: true, + serializedName: "message", + type: { + name: "String" + } + } + } + } +}; + +export const CheckNameAvailabilityInput: msRest.CompositeMapper = { + serializedName: "CheckNameAvailabilityInput", + type: { + name: "Composite", + className: "CheckNameAvailabilityInput", + modelProperties: { + name: { + required: true, + serializedName: "name", + type: { + name: "String" + } + }, + type: { + required: true, + isConstant: true, + serializedName: "type", + defaultValue: 'Microsoft.Cdn/Profiles/Endpoints', + type: { + name: "String" + } + } + } + } +}; + +export const CheckNameAvailabilityOutput: msRest.CompositeMapper = { + serializedName: "CheckNameAvailabilityOutput", + type: { + name: "Composite", + className: "CheckNameAvailabilityOutput", + modelProperties: { + nameAvailable: { + readOnly: true, + serializedName: "nameAvailable", + type: { + name: "Boolean" + } + }, + reason: { + readOnly: true, + serializedName: "reason", + type: { + name: "String" + } + }, + message: { + readOnly: true, + serializedName: "message", + type: { + name: "String" + } + } + } + } +}; + +export const ValidateProbeInput: msRest.CompositeMapper = { + serializedName: "ValidateProbeInput", + type: { + name: "Composite", + className: "ValidateProbeInput", + modelProperties: { + probeURL: { + required: true, + serializedName: "probeURL", + type: { + name: "String" + } + } + } + } +}; + +export const ValidateProbeOutput: msRest.CompositeMapper = { + serializedName: "ValidateProbeOutput", + type: { + name: "Composite", + className: "ValidateProbeOutput", + modelProperties: { + isValid: { + readOnly: true, + serializedName: "isValid", + type: { + name: "Boolean" + } + }, + errorCode: { + readOnly: true, + serializedName: "errorCode", + type: { + name: "String" + } + }, + message: { + readOnly: true, + serializedName: "message", + type: { + name: "String" + } + } + } + } +}; + +export const ResourceUsage: msRest.CompositeMapper = { + serializedName: "ResourceUsage", + type: { + name: "Composite", + className: "ResourceUsage", + modelProperties: { + resourceType: { + readOnly: true, + serializedName: "resourceType", + type: { + name: "String" + } + }, + unit: { + readOnly: true, + serializedName: "unit", + type: { + name: "String" + } + }, + currentValue: { + readOnly: true, + serializedName: "currentValue", type: { name: "Number" } }, - httpsPort: { - serializedName: "properties.httpsPort", - constraints: { - InclusiveMaximum: 65535, - InclusiveMinimum: 1 - }, + limit: { + readOnly: true, + serializedName: "limit", type: { name: "Number" } @@ -918,61 +2371,210 @@ export const OriginUpdateParameters: msRest.CompositeMapper = { } }; -export const ProxyResource: msRest.CompositeMapper = { - serializedName: "ProxyResource", +export const OperationDisplay: msRest.CompositeMapper = { + serializedName: "Operation_display", type: { name: "Composite", - className: "ProxyResource", + className: "OperationDisplay", modelProperties: { - ...Resource.type.modelProperties + providerGRAPES: { + readOnly: true, + serializedName: "providerGRAPES", + type: { + name: "String" + } + }, + resource: { + readOnly: true, + serializedName: "resource", + type: { + name: "String" + } + }, + operation: { + readOnly: true, + serializedName: "operation", + type: { + name: "String" + } + } } } }; -export const CustomDomain: msRest.CompositeMapper = { - serializedName: "CustomDomain", +export const Operation: msRest.CompositeMapper = { + serializedName: "Operation", type: { name: "Composite", - className: "CustomDomain", + className: "Operation", modelProperties: { - ...ProxyResource.type.modelProperties, - hostName: { - required: true, - serializedName: "properties.hostName", + name: { + readOnly: true, + serializedName: "name", type: { name: "String" } }, - resourceState: { - readOnly: true, - serializedName: "properties.resourceState", + display: { + serializedName: "display", + type: { + name: "Composite", + className: "OperationDisplay" + } + } + } + } +}; + +export const CidrIpAddress: msRest.CompositeMapper = { + serializedName: "cidrIpAddress", + type: { + name: "Composite", + className: "CidrIpAddress", + modelProperties: { + baseIpAddress: { + serializedName: "baseIpAddress", type: { name: "String" } }, - customHttpsProvisioningState: { + prefixLength: { + serializedName: "prefixLength", + type: { + name: "Number" + } + } + } + } +}; + +export const IpAddressGroup: msRest.CompositeMapper = { + serializedName: "IpAddressGroup", + type: { + name: "Composite", + className: "IpAddressGroup", + modelProperties: { + deliveryRegion: { + serializedName: "deliveryRegion", + type: { + name: "String" + } + }, + ipv4Addresses: { + serializedName: "ipv4Addresses", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "CidrIpAddress" + } + } + } + }, + ipv6Addresses: { + serializedName: "ipv6Addresses", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "CidrIpAddress" + } + } + } + } + } + } +}; + +export const EdgeNode: msRest.CompositeMapper = { + serializedName: "EdgeNode", + type: { + name: "Composite", + className: "EdgeNode", + modelProperties: { + ...ProxyResource.type.modelProperties, + ipAddressGroups: { + required: true, + serializedName: "properties.ipAddressGroups", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "IpAddressGroup" + } + } + } + } + } + } +}; + +export const ErrorResponse: msRest.CompositeMapper = { + serializedName: "ErrorResponse", + type: { + name: "Composite", + className: "ErrorResponse", + modelProperties: { + codeTHING: { readOnly: true, - serializedName: "properties.customHttpsProvisioningState", + serializedName: "codeTHING", type: { name: "String" } }, - customHttpsProvisioningSubstate: { + message: { readOnly: true, - serializedName: "properties.customHttpsProvisioningSubstate", + serializedName: "message", + type: { + name: "String" + } + } + } + } +}; + +export const PolicySettings: msRest.CompositeMapper = { + serializedName: "policySettings", + type: { + name: "Composite", + className: "PolicySettings", + modelProperties: { + enabledState: { + serializedName: "enabledState", type: { name: "String" } }, - validationData: { - serializedName: "properties.validationData", + mode: { + serializedName: "mode", + type: { + name: "String" + } + }, + defaultRedirectUrl: { + serializedName: "defaultRedirectUrl", + type: { + name: "String" + } + }, + defaultCustomBlockResponseStatusCode: { + serializedName: "defaultCustomBlockResponseStatusCode", + constraints: { + InclusiveMaximum: 599, + InclusiveMinimum: 200 + }, type: { - name: "String" + name: "Number" } }, - provisioningState: { - readOnly: true, - serializedName: "properties.provisioningState", + defaultCustomBlockResponseBody: { + serializedName: "defaultCustomBlockResponseBody", + constraints: { + Pattern: /^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=|[A-Za-z0-9+\/]{4})$/ + }, type: { name: "String" } @@ -981,164 +2583,193 @@ export const CustomDomain: msRest.CompositeMapper = { } }; -export const CustomDomainParameters: msRest.CompositeMapper = { - serializedName: "CustomDomainParameters", +export const CustomRule: msRest.CompositeMapper = { + serializedName: "CustomRule", type: { name: "Composite", - className: "CustomDomainParameters", + className: "CustomRule", modelProperties: { - hostName: { + name: { required: true, - serializedName: "properties.hostName", + serializedName: "name", type: { name: "String" } - } - } - } -}; - -export const CustomDomainHttpsParameters: msRest.CompositeMapper = { - serializedName: "CustomDomainHttpsParameters", - type: { - name: "Composite", - polymorphicDiscriminator: { - serializedName: "certificateSource", - clientName: "certificateSource" - }, - uberParent: "CustomDomainHttpsParameters", - className: "CustomDomainHttpsParameters", - modelProperties: { - protocolType: { - required: true, - serializedName: "protocolType", + }, + enabledState: { + serializedName: "enabledState", type: { name: "String" } }, - certificateSource: { + priority: { required: true, - serializedName: "certificateSource", + serializedName: "priority", type: { - name: "String" + name: "Number" + } + }, + matchConditions: { + required: true, + serializedName: "matchConditions", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "MatchCondition" + } + } + } + }, + action: { + required: true, + serializedName: "action", + type: { + name: "Composite", + className: "ActionType" } } } } }; -export const CdnCertificateSourceParameters: msRest.CompositeMapper = { - serializedName: "CdnCertificateSourceParameters", +export const RateLimitRule: msRest.CompositeMapper = { + serializedName: "RateLimitRule", type: { name: "Composite", - className: "CdnCertificateSourceParameters", + className: "RateLimitRule", modelProperties: { - odatatype: { + ...CustomRule.type.modelProperties, + rateLimitThreshold: { required: true, - isConstant: true, - serializedName: "@odata\\.type", - defaultValue: '#Microsoft.Azure.Cdn.Models.CdnCertificateSourceParameters', + serializedName: "rateLimitThreshold", + constraints: { + InclusiveMinimum: 0 + }, type: { - name: "String" + name: "Number" } }, - certificateType: { + rateLimitDurationInMinutes: { required: true, - serializedName: "certificateType", + serializedName: "rateLimitDurationInMinutes", + constraints: { + InclusiveMaximum: 60, + InclusiveMinimum: 0 + }, type: { - name: "String" + name: "Number" } } } } }; -export const CdnManagedHttpsParameters: msRest.CompositeMapper = { - serializedName: "Cdn", +export const RateLimitRuleList: msRest.CompositeMapper = { + serializedName: "RateLimitRuleList", type: { name: "Composite", - polymorphicDiscriminator: CustomDomainHttpsParameters.type.polymorphicDiscriminator, - uberParent: "CustomDomainHttpsParameters", - className: "CdnManagedHttpsParameters", + className: "RateLimitRuleList", modelProperties: { - ...CustomDomainHttpsParameters.type.modelProperties, - certificateSourceParameters: { - required: true, - serializedName: "certificateSourceParameters", - defaultValue: {}, + rules: { + serializedName: "rules", type: { - name: "Composite", - className: "CdnCertificateSourceParameters" + name: "Sequence", + element: { + type: { + name: "Composite", + className: "RateLimitRule" + } + } } } } } }; -export const KeyVaultCertificateSourceParameters: msRest.CompositeMapper = { - serializedName: "KeyVaultCertificateSourceParameters", +export const MatchCondition: msRest.CompositeMapper = { + serializedName: "MatchCondition", type: { name: "Composite", - className: "KeyVaultCertificateSourceParameters", + className: "MatchCondition", modelProperties: { - odatatype: { + matchVariable: { required: true, - isConstant: true, - serializedName: "@odata\\.type", - defaultValue: '#Microsoft.Azure.Cdn.Models.KeyVaultCertificateSourceParameters', + serializedName: "matchVariable", type: { name: "String" } }, - subscriptionId: { - required: true, - serializedName: "subscriptionId", + selector: { + serializedName: "selector", type: { name: "String" } }, - resourceGroupName: { + operator: { required: true, - serializedName: "resourceGroupName", + serializedName: "operator", type: { name: "String" } }, - vaultName: { - required: true, - serializedName: "vaultName", + negateCondition: { + serializedName: "negateCondition", type: { - name: "String" + name: "Boolean" } }, - secretName: { + matchValue: { required: true, - serializedName: "secretName", + serializedName: "matchValue", type: { - name: "String" + name: "Sequence", + element: { + type: { + name: "String" + } + } } - }, - secretVersion: { + } + } + } +}; + +export const ActionType: msRest.CompositeMapper = { + serializedName: "ActionType", + type: { + name: "Composite", + className: "ActionType", + modelProperties: { + actionType: { required: true, - serializedName: "secretVersion", + serializedName: "actionType", type: { name: "String" } }, - updateRule: { - required: true, - isConstant: true, - serializedName: "updateRule", - defaultValue: 'NoAction', + redirectUrl: { + serializedName: "redirectUrl", type: { name: "String" } }, - deleteRule: { - required: true, - isConstant: true, - serializedName: "deleteRule", - defaultValue: 'NoAction', + customBlockResponseStatusCode: { + serializedName: "customBlockResponseStatusCode", + constraints: { + InclusiveMaximum: 599, + InclusiveMinimum: 200 + }, + type: { + name: "Number" + } + }, + customBlockResponseBody: { + serializedName: "customBlockResponseBody", + constraints: { + Pattern: /^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=|[A-Za-z0-9+\/]{4})$/ + }, type: { name: "String" } @@ -1147,142 +2778,163 @@ export const KeyVaultCertificateSourceParameters: msRest.CompositeMapper = { } }; -export const UserManagedHttpsParameters: msRest.CompositeMapper = { - serializedName: "AzureKeyVault", +export const CustomRuleList: msRest.CompositeMapper = { + serializedName: "CustomRuleList", type: { name: "Composite", - polymorphicDiscriminator: CustomDomainHttpsParameters.type.polymorphicDiscriminator, - uberParent: "CustomDomainHttpsParameters", - className: "UserManagedHttpsParameters", + className: "CustomRuleList", modelProperties: { - ...CustomDomainHttpsParameters.type.modelProperties, - certificateSourceParameters: { - required: true, - serializedName: "certificateSourceParameters", - defaultValue: {}, + rules: { + serializedName: "rules", type: { - name: "Composite", - className: "KeyVaultCertificateSourceParameters" + name: "Sequence", + element: { + type: { + name: "Composite", + className: "CustomRule" + } + } } } } } }; -export const ValidateCustomDomainInput: msRest.CompositeMapper = { - serializedName: "ValidateCustomDomainInput", +export const ManagedRuleOverride: msRest.CompositeMapper = { + serializedName: "ManagedRuleOverride", type: { name: "Composite", - className: "ValidateCustomDomainInput", + className: "ManagedRuleOverride", modelProperties: { - hostName: { + ruleId: { required: true, - serializedName: "hostName", + serializedName: "ruleId", + type: { + name: "String" + } + }, + enabledState: { + serializedName: "enabledState", type: { name: "String" } + }, + action: { + serializedName: "action", + type: { + name: "Composite", + className: "ActionType" + } } } } }; -export const ValidateCustomDomainOutput: msRest.CompositeMapper = { - serializedName: "ValidateCustomDomainOutput", +export const ManagedRuleGroupOverride: msRest.CompositeMapper = { + serializedName: "ManagedRuleGroupOverride", type: { name: "Composite", - className: "ValidateCustomDomainOutput", + className: "ManagedRuleGroupOverride", modelProperties: { - customDomainValidated: { - readOnly: true, - serializedName: "customDomainValidated", - type: { - name: "Boolean" - } - }, - reason: { - readOnly: true, - serializedName: "reason", + ruleGroupName: { + required: true, + serializedName: "ruleGroupName", type: { name: "String" } }, - message: { - readOnly: true, - serializedName: "message", + rules: { + serializedName: "rules", type: { - name: "String" + name: "Sequence", + element: { + type: { + name: "Composite", + className: "ManagedRuleOverride" + } + } } } } } }; -export const CheckNameAvailabilityInput: msRest.CompositeMapper = { - serializedName: "CheckNameAvailabilityInput", +export const ManagedRuleSet: msRest.CompositeMapper = { + serializedName: "ManagedRuleSet", type: { name: "Composite", - className: "CheckNameAvailabilityInput", + className: "ManagedRuleSet", modelProperties: { - name: { + ruleSetType: { required: true, - serializedName: "name", + serializedName: "ruleSetType", type: { name: "String" } }, - type: { + ruleSetVersion: { required: true, - isConstant: true, - serializedName: "type", - defaultValue: 'Microsoft.Cdn/Profiles/Endpoints', + serializedName: "ruleSetVersion", type: { name: "String" } + }, + anomalyScore: { + serializedName: "anomalyScore", + constraints: { + InclusiveMaximum: 20, + InclusiveMinimum: 0 + }, + type: { + name: "Number" + } + }, + ruleGroupOverrides: { + serializedName: "ruleGroupOverrides", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "ManagedRuleGroupOverride" + } + } + } } } } }; -export const CheckNameAvailabilityOutput: msRest.CompositeMapper = { - serializedName: "CheckNameAvailabilityOutput", +export const ManagedRuleSetList: msRest.CompositeMapper = { + serializedName: "ManagedRuleSetList", type: { name: "Composite", - className: "CheckNameAvailabilityOutput", + className: "ManagedRuleSetList", modelProperties: { - nameAvailable: { - readOnly: true, - serializedName: "nameAvailable", - type: { - name: "Boolean" - } - }, - reason: { - readOnly: true, - serializedName: "reason", - type: { - name: "String" - } - }, - message: { - readOnly: true, - serializedName: "message", + managedRuleSets: { + serializedName: "managedRuleSets", type: { - name: "String" + name: "Sequence", + element: { + type: { + name: "Composite", + className: "ManagedRuleSet" + } + } } } } } }; -export const ValidateProbeInput: msRest.CompositeMapper = { - serializedName: "ValidateProbeInput", +export const CdnEndpoint: msRest.CompositeMapper = { + serializedName: "CdnEndpoint", type: { name: "Composite", - className: "ValidateProbeInput", + className: "CdnEndpoint", modelProperties: { - probeURL: { - required: true, - serializedName: "probeURL", + id: { + serializedName: "id", type: { name: "String" } @@ -1291,184 +2943,160 @@ export const ValidateProbeInput: msRest.CompositeMapper = { } }; -export const ValidateProbeOutput: msRest.CompositeMapper = { - serializedName: "ValidateProbeOutput", +export const CdnWebApplicationFirewallPolicy: msRest.CompositeMapper = { + serializedName: "CdnWebApplicationFirewallPolicy", type: { name: "Composite", - className: "ValidateProbeOutput", + className: "CdnWebApplicationFirewallPolicy", modelProperties: { - isValid: { - readOnly: true, - serializedName: "isValid", + ...TrackedResource.type.modelProperties, + policySettings: { + serializedName: "properties.policySettings", type: { - name: "Boolean" + name: "Composite", + className: "PolicySettings" } }, - errorCode: { - readOnly: true, - serializedName: "errorCode", + rateLimitRules: { + serializedName: "properties.rateLimitRules", type: { - name: "String" + name: "Composite", + className: "RateLimitRuleList" } }, - message: { - readOnly: true, - serializedName: "message", - type: { - name: "String" - } - } - } - } -}; - -export const ResourceUsage: msRest.CompositeMapper = { - serializedName: "ResourceUsage", - type: { - name: "Composite", - className: "ResourceUsage", - modelProperties: { - resourceType: { - readOnly: true, - serializedName: "resourceType", + customRules: { + serializedName: "properties.customRules", type: { - name: "String" + name: "Composite", + className: "CustomRuleList" } }, - unit: { - readOnly: true, - serializedName: "unit", + managedRules: { + serializedName: "properties.managedRules", type: { - name: "String" + name: "Composite", + className: "ManagedRuleSetList" } }, - currentValue: { + cdnEndpointLinks: { readOnly: true, - serializedName: "currentValue", + serializedName: "properties.cdnEndpointLinks", type: { - name: "Number" + name: "Sequence", + element: { + type: { + name: "Composite", + className: "CdnEndpoint" + } + } } }, - limit: { + provisioningState: { readOnly: true, - serializedName: "limit", + serializedName: "properties.provisioningState", type: { - name: "Number" + name: "String" } - } - } - } -}; - -export const OperationDisplay: msRest.CompositeMapper = { - serializedName: "Operation_display", - type: { - name: "Composite", - className: "OperationDisplay", - modelProperties: { - provider: { + }, + resourceState: { readOnly: true, - serializedName: "provider", + serializedName: "properties.resourceState", type: { name: "String" } }, - resource: { - readOnly: true, - serializedName: "resource", + etag: { + serializedName: "etag", type: { name: "String" } }, - operation: { - readOnly: true, - serializedName: "operation", + sku: { + required: true, + serializedName: "sku", type: { - name: "String" + name: "Composite", + className: "Sku" } } } } }; -export const Operation: msRest.CompositeMapper = { - serializedName: "Operation", +export const CdnWebApplicationFirewallPolicyPatchParameters: msRest.CompositeMapper = { + serializedName: "CdnWebApplicationFirewallPolicyPatchParameters", type: { name: "Composite", - className: "Operation", + className: "CdnWebApplicationFirewallPolicyPatchParameters", modelProperties: { - name: { - readOnly: true, - serializedName: "name", - type: { - name: "String" - } - }, - display: { - serializedName: "display", + tags: { + serializedName: "tags", type: { - name: "Composite", - className: "OperationDisplay" + name: "Dictionary", + value: { + type: { + name: "String" + } + } } } } } }; -export const CidrIpAddress: msRest.CompositeMapper = { - serializedName: "cidrIpAddress", +export const ManagedRuleDefinition: msRest.CompositeMapper = { + serializedName: "ManagedRuleDefinition", type: { name: "Composite", - className: "CidrIpAddress", + className: "ManagedRuleDefinition", modelProperties: { - baseIpAddress: { - serializedName: "baseIpAddress", + ruleId: { + readOnly: true, + serializedName: "ruleId", type: { name: "String" } }, - prefixLength: { - serializedName: "prefixLength", + description: { + readOnly: true, + serializedName: "description", type: { - name: "Number" + name: "String" } } } } }; -export const IpAddressGroup: msRest.CompositeMapper = { - serializedName: "IpAddressGroup", +export const ManagedRuleGroupDefinition: msRest.CompositeMapper = { + serializedName: "ManagedRuleGroupDefinition", type: { name: "Composite", - className: "IpAddressGroup", + className: "ManagedRuleGroupDefinition", modelProperties: { - deliveryRegion: { - serializedName: "deliveryRegion", + ruleGroupName: { + readOnly: true, + serializedName: "ruleGroupName", type: { name: "String" } }, - ipv4Addresses: { - serializedName: "ipv4Addresses", + description: { + readOnly: true, + serializedName: "description", type: { - name: "Sequence", - element: { - type: { - name: "Composite", - className: "CidrIpAddress" - } - } + name: "String" } }, - ipv6Addresses: { - serializedName: "ipv6Addresses", + rules: { + readOnly: true, + serializedName: "rules", type: { name: "Sequence", element: { type: { name: "Composite", - className: "CidrIpAddress" + className: "ManagedRuleDefinition" } } } @@ -1477,49 +3105,53 @@ export const IpAddressGroup: msRest.CompositeMapper = { } }; -export const EdgeNode: msRest.CompositeMapper = { - serializedName: "EdgeNode", +export const ManagedRuleSetDefinition: msRest.CompositeMapper = { + serializedName: "ManagedRuleSetDefinition", type: { name: "Composite", - className: "EdgeNode", + className: "ManagedRuleSetDefinition", modelProperties: { - ...ProxyResource.type.modelProperties, - ipAddressGroups: { - required: true, - serializedName: "properties.ipAddressGroups", + ...Resource.type.modelProperties, + provisioningState: { + readOnly: true, + serializedName: "properties.provisioningState", type: { - name: "Sequence", - element: { - type: { - name: "Composite", - className: "IpAddressGroup" - } - } + name: "String" } - } - } - } -}; - -export const ErrorResponse: msRest.CompositeMapper = { - serializedName: "ErrorResponse", - type: { - name: "Composite", - className: "ErrorResponse", - modelProperties: { - code: { + }, + ruleSetType: { readOnly: true, - serializedName: "code", + serializedName: "properties.ruleSetType", type: { name: "String" } }, - message: { + ruleSetVersion: { readOnly: true, - serializedName: "message", + serializedName: "properties.ruleSetVersion", type: { name: "String" } + }, + ruleGroups: { + readOnly: true, + serializedName: "properties.ruleGroups", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "ManagedRuleGroupDefinition" + } + } + } + }, + sku: { + serializedName: "sku", + type: { + name: "Composite", + className: "Sku" + } } } } @@ -1728,11 +3360,82 @@ export const EdgenodeResult: msRest.CompositeMapper = { } }; +export const CdnWebApplicationFirewallPolicyList: msRest.CompositeMapper = { + serializedName: "CdnWebApplicationFirewallPolicyList", + type: { + name: "Composite", + className: "CdnWebApplicationFirewallPolicyList", + modelProperties: { + value: { + readOnly: true, + serializedName: "", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "CdnWebApplicationFirewallPolicy" + } + } + } + }, + nextLink: { + serializedName: "nextLink", + type: { + name: "String" + } + } + } + } +}; + +export const ManagedRuleSetDefinitionList: msRest.CompositeMapper = { + serializedName: "ManagedRuleSetDefinitionList", + type: { + name: "Composite", + className: "ManagedRuleSetDefinitionList", + modelProperties: { + value: { + readOnly: true, + serializedName: "", + type: { + name: "Sequence", + element: { + type: { + name: "Composite", + className: "ManagedRuleSetDefinition" + } + } + } + }, + nextLink: { + serializedName: "nextLink", + type: { + name: "String" + } + } + } + } +}; + export const discriminators = { - 'DeliveryRuleAction' : DeliveryRuleAction, 'DeliveryRuleCondition' : DeliveryRuleCondition, + 'DeliveryRuleAction' : DeliveryRuleAction, + 'DeliveryRuleCondition.RemoteAddress' : DeliveryRuleRemoteAddressCondition, + 'DeliveryRuleCondition.RequestMethod' : DeliveryRuleRequestMethodCondition, + 'DeliveryRuleCondition.QueryString' : DeliveryRuleQueryStringCondition, + 'DeliveryRuleCondition.PostArgs' : DeliveryRulePostArgsCondition, + 'DeliveryRuleCondition.RequestUri' : DeliveryRuleRequestUriCondition, + 'DeliveryRuleCondition.RequestHeader' : DeliveryRuleRequestHeaderCondition, + 'DeliveryRuleCondition.RequestBody' : DeliveryRuleRequestBodyCondition, + 'DeliveryRuleCondition.RequestScheme' : DeliveryRuleRequestSchemeCondition, 'DeliveryRuleCondition.UrlPath' : DeliveryRuleUrlPathCondition, 'DeliveryRuleCondition.UrlFileExtension' : DeliveryRuleUrlFileExtensionCondition, + 'DeliveryRuleCondition.UrlFileName' : DeliveryRuleUrlFileNameCondition, + 'DeliveryRuleCondition.IsDevice' : DeliveryRuleIsDeviceCondition, + 'DeliveryRuleAction.UrlRedirect' : UrlRedirectAction, + 'DeliveryRuleAction.ModifyRequestHeader' : DeliveryRuleRequestHeaderAction, + 'DeliveryRuleAction.ModifyResponseHeader' : DeliveryRuleResponseHeaderAction, 'DeliveryRuleAction.CacheExpiration' : DeliveryRuleCacheExpirationAction, 'CustomDomainHttpsParameters' : CustomDomainHttpsParameters, 'CustomDomainHttpsParameters.Cdn' : CdnManagedHttpsParameters, diff --git a/sdk/cdn/arm-cdn/src/models/originsMappers.ts b/sdk/cdn/arm-cdn/src/models/originsMappers.ts index 59b2e1dfddb0..a768e4908c30 100644 --- a/sdk/cdn/arm-cdn/src/models/originsMappers.ts +++ b/sdk/cdn/arm-cdn/src/models/originsMappers.ts @@ -8,33 +8,76 @@ export { discriminators, + ActionType, BaseResource, CacheExpirationActionParameters, + CdnEndpoint, + CdnWebApplicationFirewallPolicy, + CdnWebApplicationFirewallPolicyPatchParameters, CidrIpAddress, CustomDomain, + CustomRule, + CustomRuleList, DeepCreatedOrigin, DeliveryRule, DeliveryRuleAction, DeliveryRuleCacheExpirationAction, DeliveryRuleCondition, + DeliveryRuleIsDeviceCondition, + DeliveryRulePostArgsCondition, + DeliveryRuleQueryStringCondition, + DeliveryRuleRemoteAddressCondition, + DeliveryRuleRequestBodyCondition, + DeliveryRuleRequestHeaderAction, + DeliveryRuleRequestHeaderCondition, + DeliveryRuleRequestMethodCondition, + DeliveryRuleRequestSchemeCondition, + DeliveryRuleRequestUriCondition, + DeliveryRuleResponseHeaderAction, DeliveryRuleUrlFileExtensionCondition, + DeliveryRuleUrlFileNameCondition, DeliveryRuleUrlPathCondition, EdgeNode, Endpoint, EndpointPropertiesUpdateParametersDeliveryPolicy, + EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink, EndpointUpdateParameters, ErrorResponse, GeoFilter, + HeaderActionParameters, IpAddressGroup, + IsDeviceMatchConditionParameters, + ManagedRuleDefinition, + ManagedRuleGroupDefinition, + ManagedRuleGroupOverride, + ManagedRuleOverride, + ManagedRuleSet, + ManagedRuleSetDefinition, + ManagedRuleSetList, + MatchCondition, Origin, OriginListResult, OriginUpdateParameters, + PolicySettings, + PostArgsMatchConditionParameters, Profile, ProfileUpdateParameters, ProxyResource, + QueryStringMatchConditionParameters, + RateLimitRule, + RateLimitRuleList, + RemoteAddressMatchConditionParameters, + RequestBodyMatchConditionParameters, + RequestHeaderMatchConditionParameters, + RequestMethodMatchConditionParameters, + RequestSchemeMatchConditionParameters, + RequestUriMatchConditionParameters, Resource, Sku, TrackedResource, - UrlFileExtensionConditionParameters, - UrlPathConditionParameters + UrlFileExtensionMatchConditionParameters, + UrlFileNameMatchConditionParameters, + UrlPathMatchConditionParameters, + UrlRedirectAction, + UrlRedirectActionParameters } from "../models/mappers"; diff --git a/sdk/cdn/arm-cdn/src/models/parameters.ts b/sdk/cdn/arm-cdn/src/models/parameters.ts index dea0816e4379..c756a9e405fb 100644 --- a/sdk/cdn/arm-cdn/src/models/parameters.ts +++ b/sdk/cdn/arm-cdn/src/models/parameters.ts @@ -71,6 +71,19 @@ export const originName: msRest.OperationURLParameter = { } } }; +export const policyName: msRest.OperationURLParameter = { + parameterPath: "policyName", + mapper: { + required: true, + serializedName: "policyName", + constraints: { + MaxLength: 128 + }, + type: { + name: "String" + } + } +}; export const profileName: msRest.OperationURLParameter = { parameterPath: "profileName", mapper: { @@ -81,7 +94,7 @@ export const profileName: msRest.OperationURLParameter = { } } }; -export const resourceGroupName: msRest.OperationURLParameter = { +export const resourceGroupName0: msRest.OperationURLParameter = { parameterPath: "resourceGroupName", mapper: { required: true, @@ -96,6 +109,21 @@ export const resourceGroupName: msRest.OperationURLParameter = { } } }; +export const resourceGroupName1: msRest.OperationURLParameter = { + parameterPath: "resourceGroupName", + mapper: { + required: true, + serializedName: "resourceGroupName", + constraints: { + MaxLength: 80, + MinLength: 1, + Pattern: /^[a-zA-Z0-9_\-\(\)\.]*[^\.]$/ + }, + type: { + name: "String" + } + } +}; export const subscriptionId: msRest.OperationURLParameter = { parameterPath: "subscriptionId", mapper: { diff --git a/sdk/cdn/arm-cdn/src/models/policiesMappers.ts b/sdk/cdn/arm-cdn/src/models/policiesMappers.ts new file mode 100644 index 000000000000..248905637cbc --- /dev/null +++ b/sdk/cdn/arm-cdn/src/models/policiesMappers.ts @@ -0,0 +1,84 @@ +/* + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is regenerated. + */ + +export { + discriminators, + ActionType, + BaseResource, + CacheExpirationActionParameters, + CdnEndpoint, + CdnWebApplicationFirewallPolicy, + CdnWebApplicationFirewallPolicyList, + CdnWebApplicationFirewallPolicyPatchParameters, + CidrIpAddress, + CloudError, + CustomDomain, + CustomRule, + CustomRuleList, + DeepCreatedOrigin, + DeliveryRule, + DeliveryRuleAction, + DeliveryRuleCacheExpirationAction, + DeliveryRuleCondition, + DeliveryRuleIsDeviceCondition, + DeliveryRulePostArgsCondition, + DeliveryRuleQueryStringCondition, + DeliveryRuleRemoteAddressCondition, + DeliveryRuleRequestBodyCondition, + DeliveryRuleRequestHeaderAction, + DeliveryRuleRequestHeaderCondition, + DeliveryRuleRequestMethodCondition, + DeliveryRuleRequestSchemeCondition, + DeliveryRuleRequestUriCondition, + DeliveryRuleResponseHeaderAction, + DeliveryRuleUrlFileExtensionCondition, + DeliveryRuleUrlFileNameCondition, + DeliveryRuleUrlPathCondition, + EdgeNode, + Endpoint, + EndpointPropertiesUpdateParametersDeliveryPolicy, + EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink, + EndpointUpdateParameters, + ErrorResponse, + GeoFilter, + HeaderActionParameters, + IpAddressGroup, + IsDeviceMatchConditionParameters, + ManagedRuleDefinition, + ManagedRuleGroupDefinition, + ManagedRuleGroupOverride, + ManagedRuleOverride, + ManagedRuleSet, + ManagedRuleSetDefinition, + ManagedRuleSetList, + MatchCondition, + Origin, + OriginUpdateParameters, + PolicySettings, + PostArgsMatchConditionParameters, + Profile, + ProfileUpdateParameters, + ProxyResource, + QueryStringMatchConditionParameters, + RateLimitRule, + RateLimitRuleList, + RemoteAddressMatchConditionParameters, + RequestBodyMatchConditionParameters, + RequestHeaderMatchConditionParameters, + RequestMethodMatchConditionParameters, + RequestSchemeMatchConditionParameters, + RequestUriMatchConditionParameters, + Resource, + Sku, + TrackedResource, + UrlFileExtensionMatchConditionParameters, + UrlFileNameMatchConditionParameters, + UrlPathMatchConditionParameters, + UrlRedirectAction, + UrlRedirectActionParameters +} from "../models/mappers"; diff --git a/sdk/cdn/arm-cdn/src/models/profilesMappers.ts b/sdk/cdn/arm-cdn/src/models/profilesMappers.ts index 5c6b8d00a9cb..347a6aaf8ea9 100644 --- a/sdk/cdn/arm-cdn/src/models/profilesMappers.ts +++ b/sdk/cdn/arm-cdn/src/models/profilesMappers.ts @@ -8,30 +8,70 @@ export { discriminators, + ActionType, BaseResource, CacheExpirationActionParameters, + CdnEndpoint, + CdnWebApplicationFirewallPolicy, + CdnWebApplicationFirewallPolicyPatchParameters, CidrIpAddress, CustomDomain, + CustomRule, + CustomRuleList, DeepCreatedOrigin, DeliveryRule, DeliveryRuleAction, DeliveryRuleCacheExpirationAction, DeliveryRuleCondition, + DeliveryRuleIsDeviceCondition, + DeliveryRulePostArgsCondition, + DeliveryRuleQueryStringCondition, + DeliveryRuleRemoteAddressCondition, + DeliveryRuleRequestBodyCondition, + DeliveryRuleRequestHeaderAction, + DeliveryRuleRequestHeaderCondition, + DeliveryRuleRequestMethodCondition, + DeliveryRuleRequestSchemeCondition, + DeliveryRuleRequestUriCondition, + DeliveryRuleResponseHeaderAction, DeliveryRuleUrlFileExtensionCondition, + DeliveryRuleUrlFileNameCondition, DeliveryRuleUrlPathCondition, EdgeNode, Endpoint, EndpointPropertiesUpdateParametersDeliveryPolicy, + EndpointPropertiesUpdateParametersWebApplicationFirewallPolicyLink, EndpointUpdateParameters, ErrorResponse, GeoFilter, + HeaderActionParameters, IpAddressGroup, + IsDeviceMatchConditionParameters, + ManagedRuleDefinition, + ManagedRuleGroupDefinition, + ManagedRuleGroupOverride, + ManagedRuleOverride, + ManagedRuleSet, + ManagedRuleSetDefinition, + ManagedRuleSetList, + MatchCondition, Origin, OriginUpdateParameters, + PolicySettings, + PostArgsMatchConditionParameters, Profile, ProfileListResult, ProfileUpdateParameters, ProxyResource, + QueryStringMatchConditionParameters, + RateLimitRule, + RateLimitRuleList, + RemoteAddressMatchConditionParameters, + RequestBodyMatchConditionParameters, + RequestHeaderMatchConditionParameters, + RequestMethodMatchConditionParameters, + RequestSchemeMatchConditionParameters, + RequestUriMatchConditionParameters, Resource, ResourceUsage, ResourceUsageListResult, @@ -39,6 +79,9 @@ export { SsoUri, SupportedOptimizationTypesListResult, TrackedResource, - UrlFileExtensionConditionParameters, - UrlPathConditionParameters + UrlFileExtensionMatchConditionParameters, + UrlFileNameMatchConditionParameters, + UrlPathMatchConditionParameters, + UrlRedirectAction, + UrlRedirectActionParameters } from "../models/mappers"; diff --git a/sdk/cdn/arm-cdn/src/operations/customDomains.ts b/sdk/cdn/arm-cdn/src/operations/customDomains.ts index 83415680c61c..c6745c45add9 100644 --- a/sdk/cdn/arm-cdn/src/operations/customDomains.ts +++ b/sdk/cdn/arm-cdn/src/operations/customDomains.ts @@ -293,7 +293,7 @@ const listByEndpointOperationSpec: msRest.OperationSpec = { httpMethod: "GET", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/customDomains", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.endpointName, Parameters.subscriptionId @@ -319,7 +319,7 @@ const getOperationSpec: msRest.OperationSpec = { httpMethod: "GET", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/customDomains/{customDomainName}", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.endpointName, Parameters.customDomainName, @@ -346,7 +346,7 @@ const disableCustomHttpsOperationSpec: msRest.OperationSpec = { httpMethod: "POST", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/customDomains/{customDomainName}/disableCustomHttps", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.endpointName, Parameters.customDomainName, @@ -374,7 +374,7 @@ const enableCustomHttpsOperationSpec: msRest.OperationSpec = { httpMethod: "POST", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/customDomains/{customDomainName}/enableCustomHttps", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.endpointName, Parameters.customDomainName, @@ -409,7 +409,7 @@ const beginCreateOperationSpec: msRest.OperationSpec = { httpMethod: "PUT", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/customDomains/{customDomainName}", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.endpointName, Parameters.customDomainName, @@ -451,7 +451,7 @@ const beginDeleteMethodOperationSpec: msRest.OperationSpec = { httpMethod: "DELETE", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/customDomains/{customDomainName}", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.endpointName, Parameters.customDomainName, diff --git a/sdk/cdn/arm-cdn/src/operations/endpoints.ts b/sdk/cdn/arm-cdn/src/operations/endpoints.ts index d5894f45add5..6821f5f698c9 100644 --- a/sdk/cdn/arm-cdn/src/operations/endpoints.ts +++ b/sdk/cdn/arm-cdn/src/operations/endpoints.ts @@ -492,7 +492,7 @@ const listByProfileOperationSpec: msRest.OperationSpec = { httpMethod: "GET", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.subscriptionId ], @@ -517,7 +517,7 @@ const getOperationSpec: msRest.OperationSpec = { httpMethod: "GET", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.endpointName, Parameters.subscriptionId @@ -543,7 +543,7 @@ const validateCustomDomainOperationSpec: msRest.OperationSpec = { httpMethod: "POST", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/validateCustomDomain", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.endpointName, Parameters.subscriptionId @@ -578,7 +578,7 @@ const listResourceUsageOperationSpec: msRest.OperationSpec = { httpMethod: "POST", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/checkResourceUsage", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.endpointName, Parameters.subscriptionId @@ -604,7 +604,7 @@ const beginCreateOperationSpec: msRest.OperationSpec = { httpMethod: "PUT", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.endpointName, Parameters.subscriptionId @@ -643,7 +643,7 @@ const beginUpdateOperationSpec: msRest.OperationSpec = { httpMethod: "PATCH", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.endpointName, Parameters.subscriptionId @@ -679,7 +679,7 @@ const beginDeleteMethodOperationSpec: msRest.OperationSpec = { httpMethod: "DELETE", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.endpointName, Parameters.subscriptionId @@ -704,7 +704,7 @@ const beginStartOperationSpec: msRest.OperationSpec = { httpMethod: "POST", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/start", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.endpointName, Parameters.subscriptionId @@ -733,7 +733,7 @@ const beginStopOperationSpec: msRest.OperationSpec = { httpMethod: "POST", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/stop", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.endpointName, Parameters.subscriptionId @@ -762,7 +762,7 @@ const beginPurgeContentOperationSpec: msRest.OperationSpec = { httpMethod: "POST", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/purge", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.endpointName, Parameters.subscriptionId @@ -796,7 +796,7 @@ const beginLoadContentOperationSpec: msRest.OperationSpec = { httpMethod: "POST", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/load", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.endpointName, Parameters.subscriptionId diff --git a/sdk/cdn/arm-cdn/src/operations/index.ts b/sdk/cdn/arm-cdn/src/operations/index.ts index 36365ff3eca2..f0c49f11b879 100644 --- a/sdk/cdn/arm-cdn/src/operations/index.ts +++ b/sdk/cdn/arm-cdn/src/operations/index.ts @@ -15,3 +15,5 @@ export * from "./customDomains"; export * from "./resourceUsageOperations"; export * from "./operations"; export * from "./edgeNodes"; +export * from "./policies"; +export * from "./managedRuleSets"; diff --git a/sdk/cdn/arm-cdn/src/operations/managedRuleSets.ts b/sdk/cdn/arm-cdn/src/operations/managedRuleSets.ts new file mode 100644 index 000000000000..55a5f62e5faa --- /dev/null +++ b/sdk/cdn/arm-cdn/src/operations/managedRuleSets.ts @@ -0,0 +1,126 @@ +/* + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is + * regenerated. + */ + +import * as msRest from "@azure/ms-rest-js"; +import * as Models from "../models"; +import * as Mappers from "../models/managedRuleSetsMappers"; +import * as Parameters from "../models/parameters"; +import { CdnManagementClientContext } from "../cdnManagementClientContext"; + +/** Class representing a ManagedRuleSets. */ +export class ManagedRuleSets { + private readonly client: CdnManagementClientContext; + + /** + * Create a ManagedRuleSets. + * @param {CdnManagementClientContext} client Reference to the service client. + */ + constructor(client: CdnManagementClientContext) { + this.client = client; + } + + /** + * Lists all available managed rule sets. + * @param [options] The optional parameters + * @returns Promise + */ + list(options?: msRest.RequestOptionsBase): Promise; + /** + * @param callback The callback + */ + list(callback: msRest.ServiceCallback): void; + /** + * @param options The optional parameters + * @param callback The callback + */ + list(options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + list(options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + options + }, + listOperationSpec, + callback) as Promise; + } + + /** + * Lists all available managed rule sets. + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param [options] The optional parameters + * @returns Promise + */ + listNext(nextPageLink: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param callback The callback + */ + listNext(nextPageLink: string, callback: msRest.ServiceCallback): void; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param options The optional parameters + * @param callback The callback + */ + listNext(nextPageLink: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + listNext(nextPageLink: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + nextPageLink, + options + }, + listNextOperationSpec, + callback) as Promise; + } +} + +// Operation Specifications +const serializer = new msRest.Serializer(Mappers); +const listOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + path: "subscriptions/{subscriptionId}/providers/Microsoft.Cdn/CdnWebApplicationFirewallManagedRuleSets", + urlParameters: [ + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.ManagedRuleSetDefinitionList + }, + default: { + bodyMapper: Mappers.ErrorResponse + } + }, + serializer +}; + +const listNextOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + baseUrl: "https://management.azure.com", + path: "{nextLink}", + urlParameters: [ + Parameters.nextPageLink + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.ManagedRuleSetDefinitionList + }, + default: { + bodyMapper: Mappers.ErrorResponse + } + }, + serializer +}; diff --git a/sdk/cdn/arm-cdn/src/operations/origins.ts b/sdk/cdn/arm-cdn/src/operations/origins.ts index 88d68f8f92ee..654523c82c29 100644 --- a/sdk/cdn/arm-cdn/src/operations/origins.ts +++ b/sdk/cdn/arm-cdn/src/operations/origins.ts @@ -177,7 +177,7 @@ const listByEndpointOperationSpec: msRest.OperationSpec = { httpMethod: "GET", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/origins", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.endpointName, Parameters.subscriptionId @@ -203,7 +203,7 @@ const getOperationSpec: msRest.OperationSpec = { httpMethod: "GET", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/origins/{originName}", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.endpointName, Parameters.originName, @@ -230,7 +230,7 @@ const beginUpdateOperationSpec: msRest.OperationSpec = { httpMethod: "PATCH", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/origins/{originName}", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.endpointName, Parameters.originName, diff --git a/sdk/cdn/arm-cdn/src/operations/policies.ts b/sdk/cdn/arm-cdn/src/operations/policies.ts new file mode 100644 index 000000000000..6b04506f1517 --- /dev/null +++ b/sdk/cdn/arm-cdn/src/operations/policies.ts @@ -0,0 +1,388 @@ +/* + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + * + * Code generated by Microsoft (R) AutoRest Code Generator. + * Changes may cause incorrect behavior and will be lost if the code is + * regenerated. + */ + +import * as msRest from "@azure/ms-rest-js"; +import * as msRestAzure from "@azure/ms-rest-azure-js"; +import * as Models from "../models"; +import * as Mappers from "../models/policiesMappers"; +import * as Parameters from "../models/parameters"; +import { CdnManagementClientContext } from "../cdnManagementClientContext"; + +/** Class representing a Policies. */ +export class Policies { + private readonly client: CdnManagementClientContext; + + /** + * Create a Policies. + * @param {CdnManagementClientContext} client Reference to the service client. + */ + constructor(client: CdnManagementClientContext) { + this.client = client; + } + + /** + * Lists all of the protection policies within a resource group. + * @param resourceGroupName Name of the Resource group within the Azure subscription. + * @param [options] The optional parameters + * @returns Promise + */ + list(resourceGroupName: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName Name of the Resource group within the Azure subscription. + * @param callback The callback + */ + list(resourceGroupName: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the Resource group within the Azure subscription. + * @param options The optional parameters + * @param callback The callback + */ + list(resourceGroupName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + list(resourceGroupName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + options + }, + listOperationSpec, + callback) as Promise; + } + + /** + * Retrieve protection policy with specified name within a resource group. + * @param resourceGroupName Name of the Resource group within the Azure subscription. + * @param policyName The name of the CdnWebApplicationFirewallPolicy. + * @param [options] The optional parameters + * @returns Promise + */ + get(resourceGroupName: string, policyName: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName Name of the Resource group within the Azure subscription. + * @param policyName The name of the CdnWebApplicationFirewallPolicy. + * @param callback The callback + */ + get(resourceGroupName: string, policyName: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the Resource group within the Azure subscription. + * @param policyName The name of the CdnWebApplicationFirewallPolicy. + * @param options The optional parameters + * @param callback The callback + */ + get(resourceGroupName: string, policyName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + get(resourceGroupName: string, policyName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + policyName, + options + }, + getOperationSpec, + callback) as Promise; + } + + /** + * Create or update policy with specified rule set name within a resource group. + * @param resourceGroupName Name of the Resource group within the Azure subscription. + * @param policyName The name of the CdnWebApplicationFirewallPolicy. + * @param cdnWebApplicationFirewallPolicy Policy to be created. + * @param [options] The optional parameters + * @returns Promise + */ + createOrUpdate(resourceGroupName: string, policyName: string, cdnWebApplicationFirewallPolicy: Models.CdnWebApplicationFirewallPolicy, options?: msRest.RequestOptionsBase): Promise { + return this.beginCreateOrUpdate(resourceGroupName,policyName,cdnWebApplicationFirewallPolicy,options) + .then(lroPoller => lroPoller.pollUntilFinished()) as Promise; + } + + /** + * Update an existing CdnWebApplicationFirewallPolicy with the specified policy name under the + * specified subscription and resource group + * @param resourceGroupName Name of the Resource group within the Azure subscription. + * @param policyName The name of the CdnWebApplicationFirewallPolicy. + * @param [options] The optional parameters + * @returns Promise + */ + update(resourceGroupName: string, policyName: string, options?: Models.PoliciesUpdateOptionalParams): Promise { + return this.beginUpdate(resourceGroupName,policyName,options) + .then(lroPoller => lroPoller.pollUntilFinished()) as Promise; + } + + /** + * Deletes Policy + * @param resourceGroupName Name of the Resource group within the Azure subscription. + * @param policyName The name of the CdnWebApplicationFirewallPolicy. + * @param [options] The optional parameters + * @returns Promise + */ + deleteMethod(resourceGroupName: string, policyName: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param resourceGroupName Name of the Resource group within the Azure subscription. + * @param policyName The name of the CdnWebApplicationFirewallPolicy. + * @param callback The callback + */ + deleteMethod(resourceGroupName: string, policyName: string, callback: msRest.ServiceCallback): void; + /** + * @param resourceGroupName Name of the Resource group within the Azure subscription. + * @param policyName The name of the CdnWebApplicationFirewallPolicy. + * @param options The optional parameters + * @param callback The callback + */ + deleteMethod(resourceGroupName: string, policyName: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + deleteMethod(resourceGroupName: string, policyName: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + resourceGroupName, + policyName, + options + }, + deleteMethodOperationSpec, + callback); + } + + /** + * Create or update policy with specified rule set name within a resource group. + * @param resourceGroupName Name of the Resource group within the Azure subscription. + * @param policyName The name of the CdnWebApplicationFirewallPolicy. + * @param cdnWebApplicationFirewallPolicy Policy to be created. + * @param [options] The optional parameters + * @returns Promise + */ + beginCreateOrUpdate(resourceGroupName: string, policyName: string, cdnWebApplicationFirewallPolicy: Models.CdnWebApplicationFirewallPolicy, options?: msRest.RequestOptionsBase): Promise { + return this.client.sendLRORequest( + { + resourceGroupName, + policyName, + cdnWebApplicationFirewallPolicy, + options + }, + beginCreateOrUpdateOperationSpec, + options); + } + + /** + * Update an existing CdnWebApplicationFirewallPolicy with the specified policy name under the + * specified subscription and resource group + * @param resourceGroupName Name of the Resource group within the Azure subscription. + * @param policyName The name of the CdnWebApplicationFirewallPolicy. + * @param [options] The optional parameters + * @returns Promise + */ + beginUpdate(resourceGroupName: string, policyName: string, options?: Models.PoliciesBeginUpdateOptionalParams): Promise { + return this.client.sendLRORequest( + { + resourceGroupName, + policyName, + options + }, + beginUpdateOperationSpec, + options); + } + + /** + * Lists all of the protection policies within a resource group. + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param [options] The optional parameters + * @returns Promise + */ + listNext(nextPageLink: string, options?: msRest.RequestOptionsBase): Promise; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param callback The callback + */ + listNext(nextPageLink: string, callback: msRest.ServiceCallback): void; + /** + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param options The optional parameters + * @param callback The callback + */ + listNext(nextPageLink: string, options: msRest.RequestOptionsBase, callback: msRest.ServiceCallback): void; + listNext(nextPageLink: string, options?: msRest.RequestOptionsBase | msRest.ServiceCallback, callback?: msRest.ServiceCallback): Promise { + return this.client.sendOperationRequest( + { + nextPageLink, + options + }, + listNextOperationSpec, + callback) as Promise; + } +} + +// Operation Specifications +const serializer = new msRest.Serializer(Mappers); +const listOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/CdnWebApplicationFirewallPolicies", + urlParameters: [ + Parameters.resourceGroupName1, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.CdnWebApplicationFirewallPolicyList + }, + default: { + bodyMapper: Mappers.ErrorResponse + } + }, + serializer +}; + +const getOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/CdnWebApplicationFirewallPolicies/{policyName}", + urlParameters: [ + Parameters.resourceGroupName1, + Parameters.policyName, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.CdnWebApplicationFirewallPolicy + }, + default: { + bodyMapper: Mappers.ErrorResponse + } + }, + serializer +}; + +const deleteMethodOperationSpec: msRest.OperationSpec = { + httpMethod: "DELETE", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/CdnWebApplicationFirewallPolicies/{policyName}", + urlParameters: [ + Parameters.resourceGroupName1, + Parameters.policyName, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: {}, + 204: {}, + default: { + bodyMapper: Mappers.CloudError + } + }, + serializer +}; + +const beginCreateOrUpdateOperationSpec: msRest.OperationSpec = { + httpMethod: "PUT", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/CdnWebApplicationFirewallPolicies/{policyName}", + urlParameters: [ + Parameters.resourceGroupName1, + Parameters.policyName, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + requestBody: { + parameterPath: "cdnWebApplicationFirewallPolicy", + mapper: { + ...Mappers.CdnWebApplicationFirewallPolicy, + required: true + } + }, + responses: { + 200: { + bodyMapper: Mappers.CdnWebApplicationFirewallPolicy + }, + 201: { + bodyMapper: Mappers.CdnWebApplicationFirewallPolicy + }, + 202: { + bodyMapper: Mappers.CdnWebApplicationFirewallPolicy + }, + default: { + bodyMapper: Mappers.ErrorResponse + } + }, + serializer +}; + +const beginUpdateOperationSpec: msRest.OperationSpec = { + httpMethod: "PATCH", + path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/CdnWebApplicationFirewallPolicies/{policyName}", + urlParameters: [ + Parameters.resourceGroupName1, + Parameters.policyName, + Parameters.subscriptionId + ], + queryParameters: [ + Parameters.apiVersion + ], + headerParameters: [ + Parameters.acceptLanguage + ], + requestBody: { + parameterPath: { + tags: [ + "options", + "tags" + ] + }, + mapper: { + ...Mappers.CdnWebApplicationFirewallPolicyPatchParameters, + required: true + } + }, + responses: { + 200: { + bodyMapper: Mappers.CdnWebApplicationFirewallPolicy + }, + 202: { + bodyMapper: Mappers.CdnWebApplicationFirewallPolicy + }, + default: { + bodyMapper: Mappers.ErrorResponse + } + }, + serializer +}; + +const listNextOperationSpec: msRest.OperationSpec = { + httpMethod: "GET", + baseUrl: "https://management.azure.com", + path: "{nextLink}", + urlParameters: [ + Parameters.nextPageLink + ], + headerParameters: [ + Parameters.acceptLanguage + ], + responses: { + 200: { + bodyMapper: Mappers.CdnWebApplicationFirewallPolicyList + }, + default: { + bodyMapper: Mappers.ErrorResponse + } + }, + serializer +}; diff --git a/sdk/cdn/arm-cdn/src/operations/profiles.ts b/sdk/cdn/arm-cdn/src/operations/profiles.ts index cda521b7a1d0..2df7bbfa3ffa 100644 --- a/sdk/cdn/arm-cdn/src/operations/profiles.ts +++ b/sdk/cdn/arm-cdn/src/operations/profiles.ts @@ -426,7 +426,7 @@ const listByResourceGroupOperationSpec: msRest.OperationSpec = { httpMethod: "GET", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.subscriptionId ], queryParameters: [ @@ -450,7 +450,7 @@ const getOperationSpec: msRest.OperationSpec = { httpMethod: "GET", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.subscriptionId ], @@ -475,7 +475,7 @@ const generateSsoUriOperationSpec: msRest.OperationSpec = { httpMethod: "POST", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/generateSsoUri", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.subscriptionId ], @@ -500,7 +500,7 @@ const listSupportedOptimizationTypesOperationSpec: msRest.OperationSpec = { httpMethod: "POST", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/getSupportedOptimizationTypes", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.subscriptionId ], @@ -525,7 +525,7 @@ const listResourceUsageOperationSpec: msRest.OperationSpec = { httpMethod: "POST", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/checkResourceUsage", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.subscriptionId ], @@ -550,7 +550,7 @@ const beginCreateOperationSpec: msRest.OperationSpec = { httpMethod: "PUT", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.subscriptionId ], @@ -588,7 +588,7 @@ const beginUpdateOperationSpec: msRest.OperationSpec = { httpMethod: "PATCH", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.subscriptionId ], @@ -628,7 +628,7 @@ const beginDeleteMethodOperationSpec: msRest.OperationSpec = { httpMethod: "DELETE", path: "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}", urlParameters: [ - Parameters.resourceGroupName, + Parameters.resourceGroupName0, Parameters.profileName, Parameters.subscriptionId ],